Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
The proposed three-dimensional data encoding method addresses the challenge of correctly decoding attribute information by selecting prediction modes and using fixed values, enhancing data representation and transmission efficiency.
Patent Information
- Application Number
- JP2025085569
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2018-06-15
- Filing Date
- 2025-05-22
- Publication Date
- 2025-08-01
- Estimated Expiration
- 2039-06-14
AI Technical Summary
Existing three-dimensional data encoding methods struggle with correctly decoding attribute information, leading to inefficiencies in data representation and transmission.
A method for three-dimensional data encoding that selects a prediction mode from multiple modes based on conditions, generates a bitstream with prediction residuals, and assigns a predetermined fixed value when necessary to ensure accurate decoding of attribute information.
Enables correct decoding of attribute information in three-dimensional data, improving data representation and transmission efficiency by ensuring accurate calculation of prediction values.
Smart Images

Figure 2025113403000001_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding apparatus, and a three-dimensional data decoding apparatus.
Background Art
[0002] In the future, the spread of devices or services that utilize three-dimensional data is expected in a wide range of fields such as computer vision, map information, monitoring, infrastructure inspection, or video distribution for autonomous operation of automobiles or robots. Three-dimensional data is acquired by various methods such as a distance sensor such as a range finder, a stereo camera, or a combination of a plurality of monocular cameras.
[0003] As one of the representation methods of three-dimensional data, there is a representation method called point cloud that represents the shape of a three-dimensional structure by a point group in a three-dimensional space. In the point cloud, the position and color of the point group are stored. Although the point cloud is expected to become the mainstream as a representation method of three-dimensional data, the point group has a very large data volume. Therefore, in the accumulation or transmission of three-dimensional data, similar to two-dimensional moving images (for example, MPEG-4 AVC or HEVC standardized by MPEG), compression of the data volume by encoding is essential.
[0004] In addition, regarding the compression of the point cloud, it is partially supported by a public library (Point Cloud Library) that performs point cloud-related processing.
[0005] In addition, a technique for searching for and displaying facilities located around a vehicle using three-dimensional map data is known (see, for example, Patent Document 1).
Prior Art Documents
Patent Documents
[0006]
Patent Document 1
Summary of the Invention
Problems to be Solved by the Invention
[0007] In the decoding of three-dimensional data, it is desired that attribute information can be correctly decoded.
[0008] The present disclosure aims to provide a three-dimensional data encoding method and the like that can correctly decode attribute information in the decoding of three-dimensional data.
Means for Solving the Problems
[0009] A three-dimensional data encoding method according to an aspect of the present disclosure is a three-dimensional data encoding method for encoding three-dimensional points, which includes selecting a prediction mode to be used in a prediction process for calculating a predicted value of attribute information of the three-dimensional points from a plurality of prediction modes, wherein each of the plurality of prediction modes has conditions set for executing a prediction process based on the prediction mode, generating a bitstream including information indicating the selected prediction mode, and among the plurality of prediction modes, a prediction process based on a prediction mode that does not satisfy the conditions is not executed.
[0010] A three-dimensional data decoding method according to an aspect of the present disclosure includes obtaining information indicating a prediction mode by obtaining a bitstream, selecting the prediction mode indicated by the obtained information as a prediction mode to be used in a prediction process for calculating a predicted value of attribute information of three-dimensional points among a plurality of prediction modes, wherein each of the plurality of prediction modes has conditions set for executing the prediction mode, and among the plurality of prediction modes, a prediction process based on a prediction mode that does not satisfy the conditions is not executed.
[0011] A three-dimensional data encoding method according to an aspect of the present disclosure calculates a predicted value of prediction target information based on a first prediction mode selected from two or more prediction modes, where (i) for each of the two or more prediction modes, the number of one or more reference values used for calculating the predicted value is predetermined, and (ii) the number of reference values predetermined for the first prediction mode is less than or equal to the number of one or more reference values that can be used for calculating the predicted value. A prediction residual, which is the difference between the prediction target information and the calculated predicted value, is calculated, and a bit stream including the first prediction mode and the prediction residual is generated.
[0012] A three-dimensional data decoding method according to an aspect of the present disclosure acquires a first prediction mode and a prediction residual included in two or more prediction modes used for predicting prediction target information by acquiring a bit stream, calculates a predicted value of the prediction target information based on the acquired first prediction mode, where (i) for each of the two or more prediction modes, the number of one or more reference values used for calculating the predicted value is predetermined, and (ii) the number of reference values predetermined for the first prediction mode is less than or equal to the number of one or more reference values that can be used for calculating the predicted value. The prediction target information is calculated by adding the predicted value and the prediction residual.
[0013] A three-dimensional data encoding method according to an aspect of the present disclosure is a three-dimensional data encoding method for encoding a plurality of three-dimensional points. Using the attribute information of one or more second three-dimensional points around a first three-dimensional point, one prediction mode is selected from two or more prediction modes for calculating a predicted value of the attribute information of the first three-dimensional point, the predicted value of the selected prediction mode is calculated, a prediction residual, which is the difference between the attribute information of the first three-dimensional point and the calculated predicted value, is calculated, and a bit stream including the prediction mode and the prediction residual is generated. In calculating the predicted value, when a predicted value based on the attribute information of the second three-dimensional point is not assigned to the selected prediction mode, a predetermined fixed value is assigned as the predicted value of the prediction mode.
[0014] A 3D data decoding method according to an aspect of the present disclosure is a 3D data decoding method for decoding a plurality of 3D points. The method includes obtaining a bitstream to acquire a prediction mode and a prediction residual of a first 3D point among the plurality of 3D points, calculating a predicted value of the obtained prediction mode, and calculating attribute information of the first 3D point by adding the predicted value and the prediction residual. In calculating the predicted value, when a predicted value based on attribute information of a second 3D point around the first 3D point is not assigned to the obtained prediction mode, a predetermined fixed value is assigned as the predicted value of the prediction mode.
Advantages of the Invention
[0015] The present disclosure can provide a 3D data encoding method or a 3D data decoding method capable of correctly decoding attribute information in 3D data decoding.
Brief Description of the Drawings
[0016]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Figure 13
Figure 14
Figure 15
Figure 16
Figure 17
Figure 18
Figure 19
Figure 20
Figure 21
Figure 22
Figure 23
Figure 24
Figure 25
Figure 26
Figure 27
Figure 28
Figure 29
Figure 30
Figure 31
Figure 32
Figure 33
Figure 34
Figure 35
Figure 36
Figure 37
Figure 38
Figure 39
Figure 40
Figure 41
Figure 42
Figure 43
Figure 44
Figure 45
Figure 46
Figure 47
Figure 48
Figure 49
Figure 5O
Figure 51
Figure 52
Figure 53
Figure 54
Figure 55
Figure 56
Figure 57
Figure 58
Figure 59
Figure 60
Figure 61
Figure 62
Figure 63
Figure 64
Figure 65
Figure 66
Figure 67
Figure 68
Figure 69
Figure 70
Figure 71
Figure 72
Figure 73
Figure 74
Figure 75
Figure 76
Figure 77
Figure 78
Figure 79
Figure 80
Figure 81
Figure 82
Figure 83
Figure 84
Figure 85
Figure 86
Figure 87
Figure 88
Figure 89
Figure 90
Figure 91
Figure 92
Figure 93
Figure 94
Figure 95
Figure 96
Figure 97
Figure 98
Figure 99
Figure 100
Figure 101
Figure 102
Figure 103
Figure 104
Figure 105
Figure 106
Figure 107
Figure 108
Figure 109
Figure 110
Figure 111
Figure 112
Figure 113
Figure 114
Figure 115
Figure 116
Figure 117
Figure 118
Figure 119
Figure 120
Figure 121
Figure 122
Figure 123
Figure 124
Figure 125
Figure 126
Figure 127
Figure 128
[0017] A three-dimensional data encoding method according to an aspect of the present disclosure is a three-dimensional data encoding method for encoding a plurality of three-dimensional points, and uses attribute information of one or more second three-dimensional points around a first three-dimensional point to select one prediction mode out of two or more prediction modes for calculating a predicted value of the attribute information of the first three-dimensional point, calculates the predicted value of the selected prediction mode, calculates a prediction residual which is a difference between the attribute information of the first three-dimensional point and the calculated predicted value, generates a bit stream including the prediction mode and the prediction residual, and in the calculation of the predicted value, when a predicted value based on the attribute information of the second three-dimensional point is not assigned to the selected prediction mode, assigns a predetermined fixed value as the predicted value of the prediction mode.
[0018] According to this, a predetermined fixed value is assigned as the predicted value to a prediction mode to which one or more predicted values are not assigned. For this reason, the generated bit stream includes a prediction residual calculated according to the predicted value of the selected prediction mode, and includes the prediction mode and the prediction residual. Therefore, when the three-dimensional data decoding apparatus decodes the attribute information of the three-dimensional point to be processed from the acquired bit stream, in the same manner as the three-dimensional data encoding method, a predetermined fixed value is assigned as the predicted value to a prediction mode to which one or more predicted values are not assigned, so that a predicted value that matches the predicted value calculated at the time of encoding can be calculated. Therefore, the three-dimensional data decoding apparatus can correctly decode the attribute information of the three-dimensional point to be processed.
[0019] In addition, in the calculation of the predicted value, when the predicted value based on the attribute information of the second three-dimensional point cannot be assigned to the selected prediction mode, it may be the case where the number of the second three-dimensional points is equal to or less than a predetermined number and the predicted value cannot be assigned to the prediction mode.
[0020] In addition, the predetermined fixed value may be an initial value.
[0021] In addition, the predetermined fixed value may be 0.
[0022] In addition, in the calculation of the predicted value, in the first prediction mode among the two or more prediction modes, the average of the attribute information of the one or more second three-dimensional points may be calculated as the predicted value, and in the second prediction mode among the two or more prediction modes, the attribute information of the second three-dimensional point may be calculated as the predicted value.
[0023] In addition, the two or more prediction modes are each indicated by prediction mode values of different values, and the prediction mode value indicating the prediction mode to which the average is assigned as the predicted value may be smaller than the prediction mode value indicating the prediction mode to which the attribute information of the one or more second three-dimensional points is assigned as the predicted value.
[0024] In addition, the two or more prediction modes are each indicated by prediction mode values of different values, and the prediction mode value indicating the prediction mode to which the attribute information of one second three-dimensional point is assigned as the predicted value may be smaller than the prediction mode value indicating the prediction mode to which the attribute information of another second three-dimensional point located at a position farther from the first three-dimensional point than the one second three-dimensional point is assigned as the predicted value.
[0025] A 3D data decoding method according to one aspect of the present disclosure is a 3D data decoding method for decoding a plurality of 3D points, which acquires a prediction mode and a prediction residual of a first 3D point among the plurality of 3D points by acquiring a bitstream, calculates a predicted value of the acquired prediction mode, and calculates attribute information of the first 3D point by adding the predicted value and the prediction residual. In the calculation of the predicted value, when a predicted value based on the attribute information of a second 3D point around the first 3D point is not assigned to the acquired prediction mode, a predetermined fixed value is assigned as the predicted value of the prediction mode.
[0026] According to this, when decoding the attribute information of the 3D point to be processed from the acquired bitstream, similar to the 3D data encoding method, a predetermined fixed value is assigned as the predicted value to a prediction mode to which one or more predicted values are not assigned. Therefore, a predicted value that matches the predicted value calculated at the time of encoding can be calculated. Thus, the attribute information of the 3D point to be processed can be correctly decoded.
[0027] In addition, in the calculation of the predicted value, the case where a predicted value based on the attribute information of the second 3D point is not assigned to the selected prediction mode may be the case where the number of the second 3D points is equal to or less than a predetermined number and the predicted value is not assigned to the prediction mode.
[0028] In addition, the predetermined fixed value may be an initial value.
[0029] In addition, the predetermined fixed value may be 0.
[0030] In addition, in the calculation of the predicted value, in a first prediction mode among two or more prediction modes, an average of the attribute information of one or more of the second 3D points may be calculated as the predicted value, and in a second prediction mode among the two or more prediction modes, the attribute information of the second 3D point may be calculated as the predicted value.
[0031] Further, each of the two or more prediction modes is indicated by a prediction mode value having a different value, and the prediction mode value indicating the prediction mode in which the average is assigned as the predicted value may be smaller than the prediction mode value indicating the prediction mode in which the attribute information of the one or more second three-dimensional points is assigned as the predicted value.
[0032] Further, each of the two or more prediction modes is indicated by a prediction mode value having a different value, and the prediction mode value indicating the prediction mode in which the attribute information of one second three-dimensional point is assigned as the predicted value may be smaller than the prediction mode value indicating the prediction mode in which the attribute information of another second three-dimensional point located at a position farther from the first three-dimensional point than the one second three-dimensional point is assigned as the predicted value.
[0033] Moreover, a three-dimensional data encoding device according to an aspect of the present disclosure is a three-dimensional data encoding device that encodes a plurality of three-dimensional points, and includes a processor and a memory. The processor uses the memory to select one of two or more prediction modes for calculating a predicted value of the attribute information of the first three-dimensional point using the attribute information of one or more second three-dimensional points around the first three-dimensional point, calculates the predicted value of the selected prediction mode, calculates a prediction residual that is a difference between the attribute information of the first three-dimensional point and the calculated predicted value, generates a bit stream including the prediction mode and the prediction residual, and in the calculation of the predicted value, when the predicted value based on the attribute information of the second three-dimensional point is not assigned to the selected prediction mode, assigns a predetermined fixed value as the predicted value of the prediction mode.
[0034] According to this, a predetermined fixed value is assigned as a prediction value to a prediction mode to which one or more prediction values are not assigned. For this reason, in the generated bit stream, a prediction residual is calculated according to the prediction value of the selected prediction mode, and the prediction mode and the prediction residual are included. Therefore, when the three-dimensional data decoding device decodes the attribute information of the three-dimensional point to be processed from the acquired bit stream, in the same manner as the three-dimensional data encoding method, a predetermined fixed value is assigned as the prediction value to the prediction mode to which one or more prediction values are not assigned, so that a prediction value that matches the prediction value calculated during encoding can be calculated. Thus, the three-dimensional data decoding device can correctly decode the attribute information of the three-dimensional point to be processed.
[0035] Moreover, a three-dimensional data decoding device according to an aspect of the present disclosure is a three-dimensional data decoding device that decodes a plurality of three-dimensional points, and includes a processor and a memory. The processor uses the memory to acquire the prediction mode and the prediction residual of a first three-dimensional point among the plurality of three-dimensional points by acquiring a bit stream, calculates a prediction value of the acquired prediction mode, and adds the prediction value and the prediction residual to calculate the attribute information of the first three-dimensional point. In the calculation of the prediction value, when a prediction value based on the attribute information of a second three-dimensional point around the first three-dimensional point is not assigned to the acquired prediction mode, a predetermined fixed value is assigned as the prediction value of the prediction mode.
[0036] According to this, when decoding the attribute information of the three-dimensional point to be processed from the acquired bit stream, in the same manner as the three-dimensional data encoding method, a predetermined fixed value is assigned as the prediction value to the prediction mode to which one or more prediction values are not assigned, so that a prediction value that matches the prediction value calculated during encoding can be calculated. Thus, the attribute information of the three-dimensional point to be processed can be correctly decoded.
[0037] Note that these general or specific aspects may be implemented in a system, method, integrated circuit, computer program, or a recording medium such as a computer-readable CD-ROM, or may be implemented in any combination of a system, method, integrated circuit, computer program, and recording medium.
[0038] Hereinafter, embodiments will be specifically described with reference to the drawings. Note that the embodiments described below are all specific examples of the present disclosure. The numerical values, shapes, materials, components, arrangement positions and connection forms of the components, steps, order of steps, etc. shown in the following embodiments are merely examples and are not intended to limit the present disclosure. In addition, among the components in the following embodiments, components not described in the independent claims indicating the most general concept are described as optional components.
[0039] (Embodiment 1) First, the data structure of the encoded three-dimensional data (hereinafter also referred to as encoded data) according to the present embodiment will be described. FIG. 1 is a diagram showing the configuration of the encoded three-dimensional data according to the present embodiment.
[0040] In the present embodiment, the three-dimensional space is divided into spaces (SPC) corresponding to pictures in the encoding of moving images, and three-dimensional data is encoded in units of spaces. The space is further divided into volumes (VLM) corresponding to macroblocks etc. in moving image encoding, and prediction and conversion are performed in units of VLM. A volume includes a plurality of voxels (VXL) which are the smallest units to which position coordinates are associated. Note that prediction is, similar to the prediction performed on a two-dimensional image, to generate predicted three-dimensional data similar to the processing unit to be processed by referring to other processing units, and to encode the difference between the predicted three-dimensional data and the processing unit to be processed. Also, this prediction includes not only spatial prediction referring to other prediction units at the same time but also temporal prediction referring to prediction units at different times.
[0041] 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 plurality of points included in a voxel according to the size of the voxel. If the voxel is subdivided, the three-dimensional shape of the point cloud can be expressed with high precision, and if the size of the voxel is increased, the three-dimensional shape of the point cloud can be expressed roughly.
[0042] Note that, hereinafter, the case where the three-dimensional data is point cloud data will be described as an example, but the three-dimensional data is not limited to point cloud data and may be three-dimensional data in any format.
[0043] Also, hierarchical voxels may be used. In this case, in the n-th hierarchy, it may be sequentially indicated whether there are sample points in the hierarchies below the (n - 1)-th hierarchy (the lower layer of the n-th hierarchy). For example, when decoding only the n-th hierarchy, if there are sample points in the hierarchies below the (n - 1)-th hierarchy, it can be decoded assuming that there are sample points at the center of the voxels in the n-th hierarchy.
[0044] Also, the encoding device acquires point cloud data using a distance sensor, a stereo camera, a monocular camera, a gyro, or an inertial sensor, etc.
[0045] Space is classified into at least one of at least three prediction structures including an Intra-Space (I-SPC) that can be decoded independently, a Predictive-Space (P-SPC) that allows only unidirectional reference, and a Bi-Directional-Space (B-SPC) that allows bidirectional reference, similar to the encoding of moving images. Also, space has two types of time information, decoding time and display time.
[0046] Also, as shown in FIG. 1, there is a GOS (Group Of Space) which is a random access unit as a processing unit including a plurality of spaces. Further, there is a WORLD (WLD) as a processing unit including a plurality of GOSs.
[0047] The space area occupied by the WORLD is associated with an absolute position on the earth by means of 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.
[0048] Also, within the GOS, all SPCs may be three-dimensionally adjacent to each other, or there may be SPCs that are not three-dimensionally adjacent to other SPCs.
[0049] Note that hereinafter, the processing such as encoding, decoding, or referencing of three-dimensional data included in a processing unit such as GOS, SPC, or VLM is also simply described as encoding, decoding, or referencing the processing unit, etc. Further, the three-dimensional data included in the processing unit includes, for example, at least one set of a spatial position such as three-dimensional coordinates and a characteristic value such as color information.
[0050] Next, the prediction structure of SPCs in the GOS will be described. A plurality of SPCs within the same GOS, or a plurality of VLMs within the same SPC, occupy different spaces from each other but have the same time information (decoding time and display time).
[0051] Also, the SPC that is the first in the decoding order within the GOS is the I-SPC. Also, there are two types of GOSs: a closed GOS and an open GOS. A closed GOS is a GOS in which all SPCs within the GOS can be decoded when starting decoding from the first I-SPC. In an open GOS, some SPCs whose display time is earlier than that of the first I-SPC within the GOS refer to different GOSs, and decoding cannot be performed only with this GOS.
[0052] Note that in encoded data such as map information, the WLD may be decoded from the direction opposite to the encoding order, and reverse playback is difficult if there is a dependency between GOSs. Therefore, in such a case, basically a closed GOS is used.
[0053] Also, the GOS has a layer structure in the height direction, and encoding or decoding is performed in order from the SPCs in the lower layer.
[0054] FIG. 2 is a diagram showing an example of a prediction structure between SPCs belonging to the lowest layer of GOS. FIG. 3 is a diagram showing an example of a prediction structure between layers.
[0055] There is one or more I-SPCs in GOS. In the three-dimensional space, there are objects such as humans, animals, cars, bicycles, signals, or buildings serving as landmarks. In particular, objects with a small size are effectively encoded as I-SPCs. For example, when a three-dimensional data decoder (hereinafter also referred to as a decoder) decodes GOS with a low processing amount or at high speed, it decodes only the I-SPCs in GOS.
[0056] Also, the encoding device may switch the encoding interval or the appearance frequency of I-SPCs according to the coarseness of the objects in the WLD.
[0057] Also, in the configuration shown in FIG. 3, the encoding device or the decoding device encodes or decodes a plurality of layers in order from the lower layer (layer 1). Thereby, for example, the priority of data near the ground with a larger amount of information can be increased for an autonomous vehicle or the like.
[0058] Note that in the encoded data used in a drone or the like, encoding or decoding may be performed in order from the SPC of the upper layer in the height direction within GOS.
[0059] Also, the encoding device or the decoding device may encode or decode a plurality of layers so that the decoding device can roughly grasp GOS and gradually increase the resolution. For example, the encoding device or the decoding device may encode or decode in the order of layer 3, 8, 1, 9,....
[0060] Next, the handling methods of static objects and dynamic objects will be described.
[0061] In a three-dimensional space, there are static objects or scenes such as buildings or roads (hereinafter collectively referred to as static objects), and dynamic objects such as cars or humans (hereinafter referred to as dynamic objects). Detection of an object is separately performed by extracting feature points from data of a point cloud or camera images such as a stereo camera. Here, an example of an encoding method for a dynamic object will be described.
[0062] The first method is a method of encoding without distinguishing between a static object and a dynamic object. The second method is a method of distinguishing between a static object and a dynamic object by identification information.
[0063] For example, GOS is used as an identification unit. In this case, a GOS including SPCs constituting a static object and a GOS including SPCs constituting a dynamic object are distinguished by identification information stored separately from the encoded data or within the encoded data.
[0064] Alternatively, SPC may be used as an identification unit. In this case, an SPC including VLMs constituting a static object and an SPC including VLMs constituting a dynamic object are distinguished by the above identification information.
[0065] Alternatively, VLM or VXL may be used as an identification unit. In this case, a VLM or VXL including a static object and a VLM or VXL including a dynamic object are distinguished by the above identification information.
[0066] Further, the encoding device may encode a dynamic object as one or more VLMs or SPCs, and encode an SPC or VLM including a static object and an SPC including a dynamic object as different GOSs. Also, when the size of the GOS is variable according to the size of the dynamic object, the encoding device stores the size of the GOS separately as meta information.
[0067] Further, the encoding device may encode static objects and dynamic objects independently of each other, and may superimpose dynamic objects on a world composed of static objects. At this time, the dynamic object is composed of one or more SPCs, and each SPC is associated with one or more SPCs that make up the static object on which the SPC is superimposed. Note that the dynamic object may be represented by one or more VLMs or VXLs instead of SPCs.
[0068] Further, the encoding device may encode the static object and the dynamic object as different streams.
[0069] Further, the encoding device may generate a GOS including one or more SPCs that make up the dynamic object. Furthermore, the encoding device may set the GOS (GOS_M) including the dynamic object and the GOS of the static object corresponding to the spatial region of GOS_M to the same size (occupying the same spatial region). Thereby, the superimposition process can be performed in units of GOS.
[0070] The P-SPC or B-SPC constituting the dynamic object may refer to SPCs included in different encoded GOSs. In a case where the position of the dynamic object changes over time and the same dynamic object is encoded as GOSs at different times, cross-GOS reference is effective from the viewpoint of compression rate.
[0071] Further, depending on the use of the encoded data, the above first method and second method may be switched. For example, when using the encoded three-dimensional data as a map, it is desirable to be able to separate the dynamic object, 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 a sport, the encoding device uses the first method if there is no need to separate the dynamic object.
[0072] Also, the decoding time and display time of GOS or SPC can be stored in the encoded data or as meta information. Also, all the time information of static objects may be the same. At this time, the actual decoding time and display time may be determined by the decoding device. Alternatively, different values may be assigned for each GOS or SPC as the decoding time, and the same value may be assigned for all as the display time. Furthermore, a model may be introduced that, like the decoder model in video encoding such as HEVC's HRD (Hypothetical Reference Decoder), guarantees that the decoder has a buffer of a predetermined size and can decode without failure by reading the bitstream at a predetermined bit rate according to the decoding time.
[0073] Next, the arrangement of GOS in the world will be described. The coordinates of the three-dimensional space in the world are represented by three mutually orthogonal coordinate axes (x-axis, y-axis, z-axis). By providing a predetermined rule in the encoding order of GOS, encoding can be performed so that spatially adjacent GOS are continuous in the encoded data. For example, in the example shown in FIG. 4, the GOS in the xz plane is encoded continuously. After encoding all the GOS in a certain xz plane, the value of the y-axis is updated. That is, as the encoding progresses, the world extends in the y-axis direction. Also, the index number of GOS is set in the encoding order.
[0074] Here, the three-dimensional space of the world is associated one-to-one with geographical absolute coordinates such as GPS or latitude and longitude. Alternatively, the three-dimensional space may be represented by the relative position from a preset reference position. The directions of the x-axis, y-axis, and z-axis of the three-dimensional space are represented as direction vectors determined based on latitude and longitude, etc., and the direction vectors are stored as meta information together with the encoded data.
[0075] Also, the size of the GOS is fixed, and the encoding device stores the size as meta-information. Further, the size of the GOS may be switched according to, for example, whether it is an urban area or whether it is indoor or outdoor. That is, the size of the GOS may be switched according to the amount or nature of the objects that are valuable as information. Alternatively, the encoding device may adaptively switch the size of the GOS or the interval of the I-SPCs within the GOS according to, for example, the density of the objects in the same world. For example, the higher the density of the objects, the smaller the size of the GOS and the shorter the interval of the I-SPCs within the GOS.
[0076] In the example of FIG. 5, in the regions of the 3rd to 10th GOSs, since the density of the objects is high, the GOS is subdivided to realize random access with a fine granularity. Note that the 7th to 10th GOSs are respectively located behind the 3rd to 6th GOSs.
[0077] Next, the configuration and operation flow of the three-dimensional data encoding device according to the present embodiment will be described. FIG. 6 is a block diagram of the three-dimensional data encoding device 100 according to the present embodiment. FIG. 7 is a flowchart showing an operation example of the three-dimensional data encoding device 100.
[0078] The three-dimensional data encoding device 100 shown in FIG. 6 generates encoded three-dimensional data 112 by encoding three-dimensional data 111. This three-dimensional data encoding device 100 includes an acquisition unit 101, an encoding region determination unit 102, a division unit 103, and an encoding unit 104.
[0079] As shown in FIG. 7, first, the acquisition unit 101 acquires three-dimensional data 111 which is point cloud data (S101).
[0080] Next, the encoding region determination unit 102 determines a region to be encoded among the spatial regions corresponding to the acquired point cloud data (S102). For example, the encoding region determination unit 102 determines the spatial region around the position as the region to be encoded according to the position of the user or the vehicle.
[0081] Next, the division unit 103 divides the point cloud data included in the area to be encoded into each processing unit. Here, the processing unit is the above-described GOS, SPC, etc. Also, the area to be encoded corresponds to, for example, the above-described world. Specifically, the division unit 103 divides the point cloud data into processing units based on a preset GOS size, or the presence or size of a dynamic object (S103). Also, the division unit 103 determines the start position of the SPC that is the head in the encoding order in each GOS.
[0082] Next, the encoding unit 104 generates encoded three-dimensional data 112 by sequentially encoding a plurality of SPCs within each GOS (S104).
[0083] Here, an example in which the area to be encoded is divided into GOS and SPC and then each GOS is encoded is shown, but the processing procedure is not limited to the above. For example, after determining the configuration of one GOS, that GOS may be encoded, and then procedures such as determining the configuration of the next GOS may be used.
[0084] In this way, the three-dimensional data encoding device 100 generates encoded three-dimensional data 112 by encoding three-dimensional data 111. Specifically, the three-dimensional data encoding device 100 divides the three-dimensional data into first processing units (GOS) that are random access units and each of which is associated with three-dimensional coordinates, divides the first processing units (GOS) into a plurality of second processing units (SPC), and divides the second processing units (SPC) into a plurality of third processing units (VLM). Also, the third processing unit (VLM) includes one or more voxels (VXL) that are the minimum units to which position information is associated.
[0085] Next, the three-dimensional data encoding device 100 generates encoded three-dimensional data 112 by encoding each of a plurality of first processing units (GOS). Specifically, the three-dimensional data encoding device 100 encodes each of a plurality of second processing units (SPC) in each first processing unit (GOS). Further, the three-dimensional data encoding device 100 encodes each of a plurality of third processing units (VLM) in each second processing unit (SPC).
[0086] For example, when the first processing unit (GOS) to be processed is a closed GOS, the three-dimensional data encoding device 100 encodes the second processing unit (SPC) to be processed included in the first processing unit (GOS) to be processed, with reference to other second processing units (SPC) included in the first processing unit (GOS) to be processed. That is, the three-dimensional data encoding device 100 does not refer to the second processing units (SPC) included in a first processing unit (GOS) different from the first processing unit (GOS) to be processed.
[0087] On the other hand, when the first processing unit (GOS) to be processed is an open GOS, the three-dimensional data encoding device 100 encodes the second processing unit (SPC) to be processed included in the first processing unit (GOS) to be processed, with reference to other second processing units (SPC) included in the first processing unit (GOS) to be processed, or second processing units (SPC) included in a first processing unit (GOS) different from the first processing unit (GOS) to be processed.
[0088] Further, the three-dimensional data encoding device 100 selects any one of a first type (I-SPC) that does not refer to other second processing units (SPC), a second type (P-SPC) that refers to one other second processing unit (SPC), and a third type that refers to two other second processing units (SPC) as the type of the second processing unit (SPC) to be processed, and encodes the second processing unit (SPC) to be processed according to the selected type.
[0089] Next, the configuration and operation flow of the three-dimensional data decoding device according to this embodiment will be described. FIG. 8 is a block diagram of the blocks of the three-dimensional data decoding device 200 according to this embodiment. FIG. 9 is a flowchart showing an operation example of the three-dimensional data decoding device 200.
[0090] The three-dimensional data decoding device 200 shown in FIG. 8 generates decoded three-dimensional data 212 by decoding the encoded three-dimensional data 211. Here, the encoded three-dimensional data 211 is, for example, the encoded three-dimensional data 112 generated by the three-dimensional data encoding device 100. This three-dimensional data decoding device 200 includes an acquisition unit 201, a decoding start GOS determination unit 202, a decoding SPC determination unit 203, and a decoding unit 204.
[0091] First, the acquisition unit 201 acquires the encoded three-dimensional data 211 (S201). Next, the decoding start GOS determination unit 202 determines the GOS to be decoded (S202). Specifically, the decoding start GOS determination unit 202 refers to the meta information stored within the encoded three-dimensional data 211 or separately from the encoded three-dimensional data, and determines the GOS including the SPC corresponding to the spatial position, object, or time at which decoding starts as the GOS to be decoded.
[0092] Next, the decoding SPC determination unit 203 determines the type (I, P, B) of the SPC to be decoded within the GOS (S203). For example, the decoding SPC determination unit 203 determines whether to decode (1) only I-SPCs, (2) I-SPCs and P-SPCs, or (3) all types. Note that if the type of the SPC to be decoded, such as decoding all SPCs, has been determined in advance, this step may not be performed.
[0093] Next, the decoding unit 204 acquires the address position at which the first SPC in decoding order (the same as the encoding order) within the GOS starts in the encoded three-dimensional data 211, acquires the encoded data of the first SPC from the address position, and sequentially decodes each SPC in order from the first SPC (S204). Note that the above address position is stored in meta information or the like.
[0094] In this way, the three-dimensional data decoder 200 decodes the decoded three-dimensional data 212. Specifically, the three-dimensional data decoder 200 decodes each of the encoded three-dimensional data 211 of the first processing units (GOS), which are random access units and each associated with three-dimensional coordinates, to generate the decoded three-dimensional data 212 of the first processing units (GOS). More specifically, the three-dimensional data decoder 200 decodes each of the plurality of second processing units (SPC) in each first processing unit (GOS). Also, the three-dimensional data decoder 200 decodes each of the plurality of third processing units (VLM) in each second processing unit (SPC).
[0095] Next, the meta information for random access will be described. This meta information is generated by the three-dimensional data encoder 100 and is included in the encoded three-dimensional data 112 (211).
[0096] In the random access in conventional two-dimensional moving images, decoding starts from the first frame of the random access unit near the specified time. On the other hand, in the world, random access with respect to space (coordinates or objects, etc.) in addition to time is assumed.
[0097] Therefore, in order to realize random access to at least three elements of coordinates, objects, and time, a table is prepared that associates each element with the index number of the GOS. Further, the index number of the GOS is associated with the address of the I-SPC that is the start of the GOS. FIG. 10 is a diagram showing an example of the table included in the meta information. Note that not all the tables shown in FIG. 10 need to be used, and at least one table may be used.
[0098] Hereinafter, as an example, random access starting from coordinates will be described. When accessing the coordinates (x2, y2, z2), first, by referring to the coordinate-GOS table, it can be known that the point with the coordinates (x2, y2, z2) is included in the second GOS. Next, by referring to the GOS address table, since it is found that the address of the first I-SPC in the second GOS is addr(2), the decoding unit 204 starts decoding by acquiring data from this address.
[0099] Note that the address may be an address in the logical format or a physical address of the HDD or memory. Also, information specifying a file segment may be used instead of the address. For example, a file segment is a unit obtained by segmenting one or more GOSs and the like.
[0100] Also, when an object spans multiple GOSs, in the object-GOS table, multiple GOSs to which the object belongs may be indicated. If the multiple GOSs are closed GOSs, the encoding device and the decoding device can perform encoding or decoding in parallel. On the other hand, if the multiple GOSs are open GOSs, the compression efficiency can be improved by the multiple GOSs referring to each other.
[0101] Examples of objects include humans, animals, vehicles, bicycles, signals, or landmark buildings. For example, the three-dimensional data encoding device 100 can extract feature points unique to an object from three-dimensional point clouds or the like during world encoding, detect the object based on the feature points, and set the detected object as a random access point.
[0102] In this way, the three-dimensional data encoding device 100 generates first information indicating a plurality of first processing units (GOS) and three-dimensional coordinates associated with each of the plurality of first processing units (GOS). Further, the encoded three-dimensional data 112(211) includes this first information. Further, the first information further indicates at least one of an object, a time, and a data storage destination associated with each of the plurality of first processing units (GOS).
[0103] The three-dimensional data decoding device 200 acquires the first information from the encoded three-dimensional data 211, and uses the first information to identify the encoded three-dimensional data 211 of the first processing unit corresponding to the specified three-dimensional coordinates, object, or time, and decodes the encoded three-dimensional data 211.
[0104] Hereinafter, examples of other meta information will be described. In addition to the meta information for random access, the three-dimensional data encoding device 100 may generate and store the following meta information. Further, the three-dimensional data decoding device 200 may use this meta information at the time of decoding.
[0105] When using three-dimensional data as map information, etc., a profile is defined according to the application, and information indicating the profile may be included in the meta information. For example, profiles for urban areas or suburbs, or for flying objects are defined, and the maximum or minimum sizes of the world, SPC, or VLM are defined in each case. For example, for urban areas, more detailed information is required than for suburbs, so the minimum size of the VLM is set small.
[0106] The meta information may include a tag value indicating the type of object. This tag value is associated with the VLM, SPC, or GOS that constitutes the object. For example, the tag value "0" indicates "person", the tag value "1" indicates "car", the tag value "2" indicates "traffic signal", etc., and the tag value may be set for each type of object. Alternatively, when the type of object is difficult to determine or there is no need to determine it, a tag value indicating a property such as size or whether it is a dynamic object or a static object may be used.
[0107] Further, the meta information may include information indicating the range of the spatial area occupied by the world.
[0108] Further, the meta information may store the size of the SPC or VXL as the header information common to a plurality of SPCs such as the entire stream of encoded data or the SPC within the GOS.
[0109] Further, the meta information may include identification information such as a distance sensor or a camera used for generating the point cloud, or information indicating the positional accuracy of the point group within the point cloud.
[0110] Further, the meta information may include information indicating whether the world is composed of only static objects or includes dynamic objects.
[0111] Hereinafter, modifications of the present embodiment will be described.
[0112] The encoding device or the decoding device may encode or decode two or more different SPCs or GOSs in parallel. The GOSs to be encoded or decoded in parallel can be determined based on meta information indicating the spatial position of the GOSs.
[0113] In a case where the three-dimensional data is used as a spatial map when a vehicle or a flying object moves, or such a spatial map is generated, the encoding device or the decoding device may encode or decode the GOS or SPC included in the space specified based on GPS, route information, or zoom ratio.
[0114] Further, the decoding device may perform decoding in order from the space close to its own position or the traveling route. The encoding device or the decoding device may encode or decode the space far from its own position or the traveling route with a lower priority than the space close thereto. Here, lowering the priority means lowering the processing order, lowering the resolution (subsampling for processing), or lowering the image quality (increasing the encoding efficiency. For example, increasing the quantization step).
[0115] Also, when decoding encoded data hierarchically encoded in space, the decoding device may decode only the lower layer.
[0116] Also, the decoding device may preferentially decode from the lower layer according to the zoom ratio or use of the map.
[0117] Also, in applications such as self-position estimation or object recognition performed during autonomous driving of a vehicle or a robot, the encoding device or the decoding device may reduce the resolution and perform encoding or decoding outside the area within a specific height from the road surface (the area where recognition is performed).
[0118] Also, the encoding device may separately encode point clouds representing the spatial shapes of the indoor and outdoor spaces. For example, by separating the GOS representing the indoor (indoor GOS) and the GOS representing the outdoor (outdoor GOS), the decoding device can select the GOS to be decoded according to the viewpoint position when using the encoded data.
[0119] Also, the encoding device may encode the indoor GOS and the outdoor GOS with close coordinates so that they are adjacent in the encoding stream. For example, the encoding device associates the identifiers of both and stores information indicating the associated identifiers in the encoding stream or in separately stored meta information. Thereby, the decoding device can identify the indoor GOS and the outdoor GOS with close coordinates by referring to the information in the meta information.
[0120] Also, the encoding device may switch the size of the GOS or SPC between the indoor GOS and the outdoor GOS. For example, the encoding device sets the size of the GOS smaller indoors than outdoors. Also, the encoding device may change the accuracy when extracting feature points from the point cloud or the accuracy of object detection, etc. between the indoor GOS and the outdoor GOS.
[0121] In addition, the encoding device may add information for the decoding device to distinguish and display dynamic objects from static objects to the encoded data. Thereby, the decoding device can display the dynamic object together with a red frame or explanatory characters. Note that the decoding device may display only a red frame or explanatory characters instead of the dynamic object. Further, the decoding device may display more detailed object types. For example, a red frame may be used for a vehicle, and a yellow frame may be used for a human.
[0122] In addition, the encoding device or the decoding device may determine whether to encode or decode a dynamic object and a static object as different SPCs or GOSs according to the appearance frequency of the dynamic object or the ratio between the static object and the dynamic object. For example, when the appearance frequency or ratio of the dynamic object exceeds a threshold, an SPC or GOS in which the dynamic object and the static object coexist is allowed, and when the appearance frequency or ratio of the dynamic object does not exceed the threshold, an SPC or GOS in which the dynamic object and the static object coexist is not allowed.
[0123] When detecting a dynamic object from two-dimensional image information of a camera instead of point cloud, the encoding device may separately obtain information (such as a frame or characters) for identifying the detection result and the object position, and encode these information as a part of three-dimensional encoded data. In this case, the decoding device superimposes and displays auxiliary information (a frame or characters) indicating the dynamic object on the decoding result of the static object.
[0124] In addition, the encoding device may change the coarseness of VXL or VLM in SPC according to the complexity of the shape of the static object. For example, the encoding device sets VXL or VLM more densely as the shape of the static object is more complex. Further, the encoding device may determine quantization steps when quantizing spatial position or color information according to the coarseness of VXL or VLM. For example, the encoding device sets a smaller quantization step as VXL or VLM is denser.
[0125] As described above, the encoding device or decoding device according to the present embodiment performs spatial encoding or decoding in space units having coordinate information.
[0126] Further, the encoding device and the decoding device perform encoding or decoding in volume units within the space. A volume includes voxels which are the smallest units to which position information is associated.
[0127] Further, the encoding device and the decoding device perform encoding or decoding by associating any elements with each other using a table that associates each element of spatial information including coordinates, objects, time, etc. and GOP, or a table that associates between each element. Further, the decoding device determines coordinates using the value of the selected element, specifies a volume, voxel or space from the coordinates, and decodes the space including the volume or voxel, or the specified space.
[0128] Further, the encoding device determines a volume, voxel or space that can be selected by an element by feature point extraction or object recognition, and encodes it as a volume, voxel or space that can be randomly accessed.
[0129] Spaces are classified into three types: I-SPC that can be encoded or decoded by the space alone, P-SPC that is encoded or decoded with reference to any one processed space, and B-SPC that is encoded or decoded with reference to any two processed spaces.
[0130] One or more volumes correspond to static objects or dynamic objects. The space including the static object and the space including the dynamic object are encoded or decoded as different GOSs. That is, the SPC including the static object and the SPC including the dynamic object are assigned to different GOSs.
[0131] Dynamic objects are encoded or decoded for each object and associated with one or more spaces including static objects. That is, a plurality of dynamic objects are individually encoded, and the encoded data of the obtained plurality of dynamic objects is associated with an SPC including static objects.
[0132] The encoding device and the decoding device perform encoding or decoding by increasing the priority of the I-SPC in the GOS. For example, the encoding device performs encoding so that the degradation of the I-SPC is reduced (so that the original three-dimensional data is more faithfully reproduced after decoding). Also, the decoding device decodes, for example, only the I-SPC.
[0133] The encoding device may perform encoding by changing the frequency of using the I-SPC according to the density or number (quantity) of objects in the world. That is, the encoding device changes the frequency of selecting the I-SPC according to the number or density of objects included in the three-dimensional data. For example, the encoding device increases the frequency of using the I-space as the objects in the world are denser.
[0134] Also, the encoding device sets a random access point in units of GOS and stores information indicating the spatial region corresponding to the GOS in the header information.
[0135] The encoding device uses, for example, a default value as the spatial size of the GOS. Note that the encoding device may change the size of the GOS according to the number (quantity) or density of objects or dynamic objects. For example, the encoding device reduces the spatial size of the GOS as the objects or dynamic objects are denser or the number is larger.
[0136] Also, the space or volume includes a feature point group derived using information obtained by sensors such as a depth sensor, a gyro, or a camera. The coordinates of the feature points are set at the center positions of the voxels. Also, high-precision position information can be realized by subdividing the voxels.
[0137] The feature point group is derived using a plurality of pictures. The plurality of pictures have at least two types of time information, namely actual time information and the same time information (e.g., the encoding time used for rate control, etc.) in a plurality of pictures associated with space.
[0138] Also, encoding or decoding is performed in GOS units including one or more spaces.
[0139] The encoding device and the decoding device predict the P space or B space in the GOS to be processed by referring to the spaces in the processed GOS.
[0140] Alternatively, the encoding device and the decoding device predict the P space or B space in the GOS to be processed without referring to different GOSs, but by using the processed spaces in the GOS to be processed.
[0141] Also, the encoding device and the decoding device transmit or receive an encoding stream in a world unit including one or more GOSs.
[0142] Also, the GOS has at least a one-way layer structure within the world, and the encoding device and the decoding device perform encoding or decoding from the lower layer. For example, a randomly accessible GOS belongs to the lowest layer. A GOS belonging to a higher layer refers to a GOS belonging to the same layer or lower layers. That is, the GOS is spatially divided in a predetermined direction and includes a plurality of layers each containing one or more SPCs. The encoding device and the decoding device encode or decode each SPC by referring to the SPCs contained in the same layer or lower layers than the SPC.
[0143] Also, the encoding device and the decoding device continuously encode or decode GOSs within a world unit including a plurality of GOSs. The encoding device and the decoding device write or read information indicating the order (direction) of encoding or decoding as metadata. That is, the encoded data includes information indicating the encoding order of a plurality of GOSs.
[0144] Also, the encoding device and the decoding device encode or decode two or more different spaces or GOSs in parallel.
[0145] Also, the encoding device and the decoding device encode or decode the spatial information (coordinates, size, etc.) of the space or GOS.
[0146] Also, the encoding device and the decoding device encode or decode the space or GOS included in a specific space specified based on external information such as GPS, route information, or magnification regarding their own position or / and the area size.
[0147] The encoding device or the decoding device encodes or decodes a space far from its own position with a lower priority compared to a nearby space.
[0148] The encoding device sets one direction of the world according to the magnification or application, and encodes a GOS having a layer structure in that direction. Also, the decoding device preferentially decodes a GOS having a layer structure in one direction of the world set according to the magnification or application from the lower layer.
[0149] The encoding device changes the feature point extraction, object recognition accuracy, or space area size included in the space between indoors and outdoors. However, the encoding device and the decoding device encode or decode an indoor GOS and an outdoor GOS with adjacent coordinates in the world adjacent to each other, and also encode or decode their identifiers in association with each other.
[0150] (Embodiment 2) When using the encoded data of the point cloud in an actual device or service, it is desirable to transmit and receive necessary information according to the application in order to suppress the network bandwidth. However, until now, such a function has not existed in the encoding structure of three-dimensional data, and there has been no encoding method therefor.
[0151] In this embodiment, a three-dimensional data encoding method, a three-dimensional data encoding apparatus for providing a function of transmitting and receiving only necessary information according to the application in the encoded data of three-dimensional point cloud, and a three-dimensional data decoding method and a three-dimensional data decoding apparatus for decoding the encoded data will be described.
[0152] A voxel (VXL) having a feature amount equal to or more than a certain value is defined as a feature voxel (FVXL), and a world (WLD) composed of FVXLs is defined as a sparse world (SWLD). FIG. 11 is a diagram showing a configuration example of the sparse world and the world. The SWLD includes a FGOS that is a GOS composed of FVXLs, an FSPC that is an SPC composed of FVXLs, and an FVLM that is a VLM composed of FVXLs. The data structure and prediction structure of the FGOS, FSPC, and FVLM may be the same as those of the GOS, SPC, and VLM.
[0153] The feature amount is a feature amount representing the three-dimensional position information of the VXL or the visible light information of the VXL position, and is a feature amount particularly frequently detected at corners and edges of three-dimensional objects. Specifically, this feature amount is a three-dimensional feature amount or a visible light feature amount as follows, but any feature amount representing the position, luminance, or color information of the VXL may be used.
[0154] As the three-dimensional feature amount, a SHOT feature amount (Signature of Histograms of OrienTations), a PFH feature amount (Point Feature Histograms), or a PPF feature amount (Point Pair Feature) is used.
[0155] The SHOT feature amount is obtained by dividing the periphery of the VXL, calculating the inner product of the reference point and the normal vector of the divided region, and histogramming. This SHOT feature amount has the characteristics of high dimensionality and high feature representation ability.
[0156] The PFH feature quantity is obtained by selecting a large number of point pairs near the VXL, calculating the normal vector and the like from the two points, and then creating a histogram. Since this PFH feature quantity is a histogram feature, it has robustness against some disturbances and has the feature of high feature representation ability.
[0157] The PPF feature quantity is a feature quantity calculated using the normal vector and the like for each pair of two VXL points. Since all VXLs are used for this PPF feature quantity, it has robustness against occlusion.
[0158] Also, as feature quantities of visible light, SIFT (Scale-Invariant Feature Transform), SURF (Speeded Up Robust Features), or HOG (Histogram of Oriented Gradients), etc., using information such as the luminance gradient information of the image can be used.
[0159] The SWLD is generated by calculating the above feature quantities from each VXL of the WLD and extracting the FVXL. Here, the SWLD may be updated every time the WLD is updated, or it may be updated periodically after a certain period of time regardless of the update timing of the WLD.
[0160] The SWLD may be generated for each feature quantity. For example, separate SWLDs may be generated for each feature quantity, such as SWLD1 based on the SHOT feature quantity and SWLD2 based on the SIFT feature quantity, and the SWLDs may be used appropriately according to the application. Also, the feature quantities of each calculated FVXL may be held in each FVXL as feature quantity information.
[0161] Next, the usage method of the sparse world (SWLD) will be described. Since the SWLD only includes feature voxels (FVXL), it generally has a smaller data size compared to the WLD that includes all VXLs.
[0162] In an application that achieves some purpose using feature amounts, by using the information of SWLD instead of WLD, it is possible to suppress the read time from the hard disk and the bandwidth and transfer time during network transfer. For example, as map information, both WLD and SWLD are held in the server, and by switching the map information to be transmitted to WLD or SWLD according to the request from the client, the network bandwidth and transfer time can be suppressed. Hereinafter, specific examples will be shown.
[0163] FIGS. 12 and 13 are diagrams showing usage examples of SWLD and WLD. As shown in FIG. 12, when the in-vehicle device client 1 needs map information for self-position determination, the client 1 sends a request to the server to acquire map data for self-position estimation (S301). The server transmits the SWLD to the client 1 in response to the acquisition request (S302). The client 1 performs self-position determination using the received SWLD (S303). At this time, the client 1 acquires VXL information around the client 1 by various methods such as a distance sensor such as a range finder, a stereo camera, or a combination of a plurality of monocular cameras, and estimates the self-position information from the obtained VXL information and the SWLD. Here, the self-position information includes the three-dimensional position information and orientation of the client 1.
[0164] As shown in FIG. 13, when the in-vehicle device client 2 needs map information for map drawing such as a three-dimensional map, the client 2 sends a request to the server to acquire map data for map drawing (S311). The server transmits the WLD to the client 2 in response to the acquisition request (S312). The client 2 performs map drawing using the received WLD (S313). At this time, the client 2 creates a rendering image using, for example, an image captured by its own visible light camera or the like and the WLD acquired from the server, and draws the created image on a screen such as a car navigation system.
[0165] As described above, the server transmits the SWLD to the client for applications that mainly require feature quantities of each VXL such as self-position estimation, and transmits the WLD to the client when detailed VXL information is required such as map drawing. This enables efficient transmission and reception of map data.
[0166] Note that the client may determine which of the SWLD and WLD is required by itself and request the server to transmit the SWLD or WLD. Also, the server may determine which of the SWLD or WLD should be transmitted according to the situation of the client or the network.
[0167] Next, a method for switching the transmission and reception between the sparse world (SWLD) and the world (WLD) will be described.
[0168] It may be possible to switch whether to receive the WLD or the SWLD according to the network bandwidth. FIG. 14 is a diagram showing an operation example in this case. For example, when a low-speed network with limited available network bandwidth such as in an LTE (Long Term Evolution) environment is used, the client accesses the server via the low-speed network (S321) and acquires the SWLD as map information from the server (S322). On the other hand, when a high-speed network with sufficient network bandwidth such as in a Wi-Fi (registered trademark) environment is used, the client accesses the server via the high-speed network (S323) and acquires the WLD from the server (S324). Thereby, the client can acquire appropriate map information according to the network bandwidth of the client.
[0169] Specifically, the client receives the SWLD via LTE outdoors and acquires the WLD via Wi-Fi (registered trademark) when entering indoors such as in a facility. Thereby, the client can acquire more detailed map information indoors.
[0170] In this way, the client may request the WLD or SWLD from the server according to the bandwidth of the network it uses. Alternatively, the client may send information indicating the bandwidth of the network it uses to the server, and the server may send data (WLD or SWLD) suitable for the client according to the information. Alternatively, the server may determine the network bandwidth of the client and send data (WLD or SWLD) suitable for the client.
[0171] Also, it may be possible to switch whether to receive the WLD or SWLD according to the moving speed. FIG. 15 is a diagram showing an operation example in this case. For example, when the client is moving at high speed (S331), the client receives the SWLD from the server (S332). On the other hand, when the client is moving at low speed (S333), the client receives the WLD from the server (S334). Thereby, the client can obtain map information suitable for the speed while suppressing the network bandwidth. Specifically, while driving on a highway, the client can update the rough map information at an appropriate speed by receiving the SWLD with a small data amount. On the other hand, while driving on a general road, the client can obtain more detailed map information by receiving the WLD.
[0172] In this way, the client may request the WLD or SWLD from the server according to its own moving speed. Alternatively, the client may send information indicating its own moving speed to the server, and the server may send data (WLD or SWLD) suitable for the client according to the information. Alternatively, the server may determine the moving speed of the client and send data (WLD or SWLD) suitable for the client.
[0173] Also, the client may first obtain the SWLD from the server and then obtain the WLD of important areas therein. For example, when obtaining map data, the client first obtains general map information using the SWLD, then narrows down the areas where features such as buildings, signs, or people appear frequently, and obtains the WLD of the narrowed-down areas later. This enables the client to obtain detailed information on the necessary areas while suppressing the amount of data received from the server.
[0174] In addition, the server may create separate SWLDs for each object from the WLD, and the client may receive each of them according to the application. This can suppress the network bandwidth. For example, the server recognizes people or vehicles in advance from the WLD and creates the SWLD for people and the SWLD for vehicles. When the client wants to obtain information about the surrounding people, it receives the SWLD for people, and when it wants to obtain information about vehicles, it receives the SWLD for vehicles. Also, such types of SWLDs may be distinguished by information (such as flags or types) added to the header or the like.
[0175] Next, the configuration and operation flow of the three-dimensional data encoding device (for example, a server) according to this embodiment will be described. FIG. 16 is a block diagram of the three-dimensional data encoding device 400 according to this embodiment. FIG. 17 is a flowchart of the three-dimensional data encoding process by the three-dimensional data encoding device 400.
[0176] The three-dimensional data encoding device 400 shown in FIG. 16 generates encoded three-dimensional data 413 and 414, which are encoded streams, by encoding the input three-dimensional data 411. Here, the encoded three-dimensional data 413 is the encoded three-dimensional data corresponding to the WLD, and the encoded three-dimensional data 414 is the encoded three-dimensional data corresponding to the SWLD. This three-dimensional data encoding device 400 includes an acquisition unit 401, an encoding area determination unit 402, an SWLD extraction unit 403, a WLD encoding unit 404, and an SWLD encoding unit 405.
[0177] As shown in FIG. 17, first, the acquisition unit 401 acquires input three-dimensional data 411 which is point cloud data in a three-dimensional space (S401).
[0178] Next, the encoding region determination unit 402 determines a spatial region to be encoded based on the spatial region where the point cloud data exists (S402).
[0179] Next, the SWLD extraction unit 403 defines the spatial region to be encoded as the WLD, and calculates feature amounts from each VXL included in the WLD. Then, the SWLD extraction unit 403 extracts VXLs whose feature amounts are equal to or greater than a predetermined threshold value, defines the extracted VXLs as FVXLs, and generates extracted three-dimensional data 412 by adding the FVXLs to the SWLD. That is, the extracted three-dimensional data 412 whose feature amounts are equal to or greater than the threshold value is extracted from the input three-dimensional data 411.
[0180] Next, the WLD encoding unit 404 generates encoded three-dimensional data 413 corresponding to the WLD by encoding the input three-dimensional data 411 corresponding to the WLD (S404). At this time, the WLD encoding unit 404 adds information for distinguishing that the encoded three-dimensional data 413 is a stream including the WLD to the header of the encoded three-dimensional data 413.
[0181] Also, the SWLD encoding unit 405 generates encoded three-dimensional data 414 corresponding to the SWLD by encoding the extracted three-dimensional data 412 corresponding to the SWLD (S405). At this time, the SWLD encoding unit 405 adds information for distinguishing that the encoded three-dimensional data 414 is a stream including the SWLD to the header of the encoded three-dimensional data 414.
[0182] Note that the processing order of the process of generating the encoded three-dimensional data 413 and the process of generating the encoded three-dimensional data 414 may be reversed from the above. Also, part or all of these processes may be performed in parallel.
[0183] As information attached to the headers of the encoded three-dimensional data 413 and 414, for example, a parameter called "world_type" is defined. When world_type = 0, it indicates that the stream includes WLD, and when world_type = 1, it indicates that the stream includes SWLD. When defining a number of other types, the numerical value assigned like world_type = 2 can be increased as well. Also, a specific flag may be included in one of the encoded three-dimensional data 413 and 414. For example, a flag indicating that the stream includes SWLD may be attached to the encoded three-dimensional data 414. In this case, the decoding device can determine whether the stream includes WLD or SWLD based on the presence or absence of the flag.
[0184] Also, the encoding method used when the WLD encoding unit 404 encodes WLD and the encoding method used when the SWLD encoding unit 405 encodes SWLD may be different.
[0185] For example, since data is decimated in SWLD, the correlation with surrounding data may be lower than that in WLD. Therefore, in the encoding method used for SWLD, inter prediction among intra prediction and inter prediction may be prioritized over the encoding method used for WLD.
[0186] Also, the method of expressing the three-dimensional position may be different between the encoding method used for SWLD and the encoding method used for WLD. For example, in SWLD, the three-dimensional position of FVXL may be expressed by three-dimensional coordinates, and in WLD, the three-dimensional position may be expressed by an octree described later, or vice versa.
[0187] Also, the SWLD encoding unit 405 performs encoding so that the data size of the encoded three-dimensional data 414 of SWLD is smaller than the data size of the encoded three-dimensional data 413 of WLD. For example, as described above, SWLD may have a lower correlation between data compared to WLD. As a result, the encoding efficiency decreases, and the data size of the encoded three-dimensional data 414 may become larger than the data size of the encoded three-dimensional data 413 of WLD. Therefore, when the data size of the obtained encoded three-dimensional data 414 is larger than the data size of the encoded three-dimensional data 413 of WLD, the SWLD encoding unit 405 regenerates the encoded three-dimensional data 414 with a reduced data size by performing re-encoding.
[0188] For example, the SWLD extraction unit 403 regenerates the extracted three-dimensional data 412 with a reduced number of feature points to be extracted, and the SWLD encoding unit 405 encodes the extracted three-dimensional data 412. Alternatively, the degree of quantization in the SWLD encoding unit 405 may be made coarser. For example, in the octree structure described later, the degree of quantization can be made coarser by rounding the data in the bottom layer.
[0189] Also, when the SWLD encoding unit 405 cannot make the data size of the encoded three-dimensional data 414 of SWLD smaller than the data size of the encoded three-dimensional data 413 of WLD, it may not be necessary to generate the encoded three-dimensional data 414 of SWLD. Alternatively, the encoded three-dimensional data 413 of WLD may be copied to the encoded three-dimensional data 414 of SWLD. That is, the encoded three-dimensional data 413 of WLD may be used as it is as the encoded three-dimensional data 414 of SWLD.
[0190] Next, the configuration and operation flow of the three-dimensional data decoding device (for example, a client) according to the present embodiment will be described. FIG. 18 is a block diagram of the three-dimensional data decoding device 500 according to the present embodiment. FIG. 19 is a flowchart of the three-dimensional data decoding process by the three-dimensional data decoding device 500.
[0191] The three-dimensional data decoding device 500 shown in FIG. 18 generates decoded three-dimensional data 512 or 513 by decoding the encoded three-dimensional data 511. Here, the encoded three-dimensional data 511 is, for example, the encoded three-dimensional data 413 or 414 generated by the three-dimensional data encoding device 400.
[0192] This three-dimensional data decoding device 500 includes an acquisition unit 501, a header analysis unit 502, a WLD decoding unit 503, and a SWLD decoding unit 504.
[0193] As shown in FIG. 19, first, the acquisition unit 501 acquires the encoded three-dimensional data 511 (S501). Next, the header analysis unit 502 analyzes the header of the encoded three-dimensional data 511 to determine whether the encoded three-dimensional data 511 is a stream including WLD or a stream including SWLD (S502). For example, the above-described parameter of world_type is referred to for determination.
[0194] When the encoded three-dimensional data 511 is a stream including WLD (Yes in S503), the WLD decoding unit 503 generates the decoded three-dimensional data 512 of WLD by decoding the encoded three-dimensional data 511 (S504). On the other hand, when the encoded three-dimensional data 511 is a stream including SWLD (No in S503), the SWLD decoding unit 504 generates the decoded three-dimensional data 513 of SWLD by decoding the encoded three-dimensional data 511 (S505).
[0195] Also, similar to the encoding device, the decoding method used when the WLD decoding unit 503 decodes WLD and the decoding method used when the SWLD decoding unit 504 decodes SWLD may be different. For example, in the decoding method used for SWLD, inter prediction among intra prediction and inter prediction may be prioritized over the decoding method used for WLD.
[0196] Also, the method of decoding used for SWLD and the method of decoding used for WLD may differ in the method of expressing the three-dimensional position. For example, in SWLD, the three-dimensional position of FVXL may be expressed by three-dimensional coordinates, and in WLD, the three-dimensional position may be expressed by an octree described later, or vice versa.
[0197] Next, the octree representation, which is a method of expressing the three-dimensional position, will be described. The VXL data included in the three-dimensional data is converted into an octree structure and then encoded. FIG. 20 is a diagram showing an example of VXL of WLD. FIG. 21 is a diagram showing the octree structure of the WLD shown in FIG. 20. In the example shown in FIG. 20, there are three VXLs 1 to 3 that are VXLs (hereinafter, valid VXLs) including a point cloud. As shown in FIG. 21, the octree structure is composed of nodes and leaves. Each node has a maximum of eight nodes or leaves. Each leaf has VXL information. Here, among the leaves shown in FIG. 21, leaves 1, 2, and 3 represent VXL1, VXL2, and VXL3 shown in FIG. 20, respectively.
[0198] Specifically, each node and leaf correspond to a three-dimensional position. Node 1 corresponds to the entire block shown in FIG. 20. The block corresponding to Node 1 is divided into eight blocks. Among the eight blocks, the blocks including valid VXL are set as nodes, and the other blocks are set as leaves. The block corresponding to the node is further divided into eight nodes or leaves, and this process is repeated for each layer of the tree structure. Also, all the blocks in the bottom layer are set as leaves.
[0199] Further, FIG. 22 is a diagram showing an example of an SWLD generated from the WLD shown in FIG. 20. VXL1 and VXL2 shown in FIG. 20 are determined as FVXL1 and FVXL2 as a result of feature extraction and are added to the SWLD. On the other hand, VXL3 is not determined as FVXL and is not included in the SWLD. FIG. 23 is a diagram showing the octree structure of the SWLD shown in FIG. 22. In the octree structure shown in FIG. 23, leaf 3 corresponding to VXL3 shown in FIG. 21 is deleted. As a result, node 3 shown in FIG. 21 no longer has valid VXLs and is changed to a leaf. Generally, the number of leaves of the SWLD is thus smaller than the number of leaves of the WLD, and the encoded three-dimensional data of the SWLD is also smaller than the encoded three-dimensional data of the WLD.
[0200] Hereinafter, modifications of the present embodiment will be described.
[0201] For example, when a client such as an in-vehicle device performs self-position estimation, it receives the SWLD from the server and performs self-position estimation using the SWLD. When performing obstacle detection, the client may perform obstacle detection based on three-dimensional information of the surroundings obtained by itself using various methods such as a distance sensor such as a range finder, a stereo camera, or a combination of a plurality of monocular cameras.
[0202] Also, generally, the VXL data of flat areas is unlikely to be included in the SWLD. Therefore, the server may hold a sub-sampled world (subWLD) obtained by sub-sampling the WLD for detecting static obstacles, and transmit the SWLD and the subWLD to the client. Thereby, while suppressing the network bandwidth, self-position estimation and obstacle detection can be performed on the client side.
[0203] Also, when a client rapidly renders three-dimensional map data, it may be more convenient if the map information has a mesh structure. Therefore, the server may generate a mesh from the WLD and retain it in advance as a Mesh World (MWLD). For example, when the client requires rough three-dimensional rendering, it receives the MWLD, and when it requires detailed three-dimensional rendering, it receives the WLD. Thereby, the network bandwidth can be suppressed.
[0204] Also, among each VXL, the server has set the VXL whose feature amount is equal to or greater than the threshold as the FVXL, but the FVXL may be calculated by a different method. For example, the server may determine that the VXL, VLM, SPC, or GOS that constitutes a signal or an intersection, etc. is necessary for self-position estimation, driving assistance, or autonomous driving, etc., and include it in the SWLD as the FVXL, FVLM, FSPC, FGOS. Further, the above determination may be made manually. In addition, the FVXL etc. obtained by the above method may be added to the FVXL etc. set based on the feature amount. That is, the SWLD extraction unit 403 may further extract, as the extracted three-dimensional data 412, data corresponding to an object having a predetermined attribute from the input three-dimensional data 411.
[0205] Also, it may be labeled separately from the feature amount that it is necessary for those applications. Further, the server may separately retain the FVXL necessary for self-position estimation, driving assistance, or autonomous driving, etc. of signals or intersections, etc. as the upper layer (for example, lane world) of the SWLD.
[0206] Also, the server may add an attribute to the VXL in the WLD for each random access unit or predetermined unit. The attribute includes, for example, information indicating whether it is necessary or unnecessary for self-position estimation, or information indicating whether it is important as traffic information such as a signal or an intersection. Further, the attribute may include the correspondence relationship with the Feature (such as an intersection or a road) in the lane information (such as GDF:Geographic Data Files).
[0207] Also, the following methods may be used as the method for updating the WLD or SWLD.
[0208] Update information indicating changes in people, construction work, or trees (for trucks), etc. is uploaded to the server as point clouds or metadata. Based on the upload, the server updates the WLD, and then updates the SWLD using the updated WLD.
[0209] Also, when the client detects an inconsistency between the three-dimensional information generated by itself during self-position estimation and the three-dimensional information received from the server, the client may send the three-dimensional information generated by itself to the server together with an update notification. In this case, the server updates the SWLD using the WLD. If the SWLD is not updated, the server determines that the WLD itself is old.
[0210] Also, although information distinguishing between the WLD and the SWLD is added as the header information of the encoded stream, for example, when there are multiple types of worlds such as a mesh world or a lane world, information for distinguishing them may be added to the header information. Also, when there are a large number of SWLDs with different feature amounts, information for distinguishing each of them may be added to the header information.
[0211] Also, although the SWLD is assumed to be composed of FVXLs, it may include VXLs that are not determined to be FVXLs. For example, the SWLD may include adjacent VXLs used when calculating the feature amounts of the FVXLs. Thereby, even when feature amount information is not added to each FVXL of the SWLD, the client can calculate the feature amounts of the FVXLs when receiving the SWLD. In that case, the SWLD may include information for distinguishing whether each VXL is an FVXL or a VXL.
[0212] As described above, the three-dimensional data encoding device 400 extracts the extracted three-dimensional data 412 (second three-dimensional data) with a feature amount equal to or greater than the threshold from the input three-dimensional data 411 (first three-dimensional data), and encodes the extracted three-dimensional data 412 to generate the encoded three-dimensional data 414 (first encoded three-dimensional data).
[0213] According to this, the three-dimensional data encoding device 400 generates the encoded three-dimensional data 414 obtained by encoding the data with a feature amount equal to or greater than the threshold. Thereby, the data amount can be reduced as compared with the case of directly encoding the input three-dimensional data 411. Therefore, the three-dimensional data encoding device 400 can reduce the data amount to be transmitted.
[0214] In addition, the three-dimensional data encoding device 400 further generates encoded three-dimensional data 413 (second encoded three-dimensional data) by encoding the input three-dimensional data 411.
[0215] According to this, the three-dimensional data encoding device 400 can selectively transmit the encoded three-dimensional data 413 and the encoded three-dimensional data 414 according to, for example, the usage purpose.
[0216] In addition, the extracted three-dimensional data 412 is encoded by the first encoding method, and the input three-dimensional data 411 is encoded by a second encoding method different from the first encoding method.
[0217] According to this, the three-dimensional data encoding device 400 can use encoding methods suitable for the input three-dimensional data 411 and the extracted three-dimensional data 412, respectively.
[0218] In addition, in the first encoding method, inter prediction is prioritized over intra prediction among the first encoding method and the second encoding method.
[0219] According to this, the three-dimensional data encoding device 400 can increase the priority of inter prediction for the extracted three-dimensional data 412 in which the correlation between adjacent data is likely to be low.
[0220] Also, in the first encoding method and the second encoding method, the expression method of the three-dimensional position is different. For example, in the second encoding method, the three-dimensional position is expressed by an octree, and in the first encoding method, the three-dimensional position is expressed by three-dimensional coordinates.
[0221] According to this, the three-dimensional data encoding device 400 can use a more suitable expression method of the three-dimensional position for three-dimensional data with different numbers of data (the number of VXLs or FVXLs).
[0222] Further, at least one of the encoded three-dimensional data 413 and 414 includes an identifier indicating whether the encoded three-dimensional data is the encoded three-dimensional data obtained by encoding the input three-dimensional data 411 or the encoded three-dimensional data obtained by encoding a part of the input three-dimensional data 411. That is, the identifier indicates whether the encoded three-dimensional data is the encoded three-dimensional data 413 of the WLD or the encoded three-dimensional data 414 of the SWLD.
[0223] According to this, the decoding device can easily determine whether the acquired encoded three-dimensional data is the encoded three-dimensional data 413 or the encoded three-dimensional data 414.
[0224] Also, the three-dimensional data encoding device 400 encodes the extracted three-dimensional data 412 so that the data amount of the encoded three-dimensional data 414 is smaller than the data amount of the encoded three-dimensional data 413.
[0225] According to this, the three-dimensional data encoding device 400 can make the data amount of the encoded three-dimensional data 414 smaller than the data amount of the encoded three-dimensional data 413.
[0226] Also, the three-dimensional data encoding device 400 further extracts, as the extracted three-dimensional data 412, data corresponding to an object having a predetermined attribute from the input three-dimensional data 411. For example, an object having a predetermined attribute is an object necessary for self-position estimation, driving assistance, or autonomous driving, such as a signal or an intersection.
[0227] According to this, the three-dimensional data encoding device 400 can generate encoded three-dimensional data 414 including data required by the decoding device.
[0228] In addition, the three-dimensional data encoding device 400 (server) further transmits one of the encoded three-dimensional data 413 and 414 to the client according to the state of the client.
[0229] According to this, the three-dimensional data encoding device 400 can transmit appropriate data according to the state of the client.
[0230] In addition, the state of the client includes the communication status of the client (for example, network bandwidth) or the moving speed of the client.
[0231] In addition, the three-dimensional data encoding device 400 further transmits one of the encoded three-dimensional data 413 and 414 to the client according to the request of the client.
[0232] According to this, the three-dimensional data encoding device 400 can transmit appropriate data according to the request of the client.
[0233] In addition, the three-dimensional data decoding device 500 according to the present embodiment decodes the encoded three-dimensional data 413 or 414 generated by the three-dimensional data encoding device 400.
[0234] That is, the three-dimensional data decoding device 500 decodes the encoded three-dimensional data 414 obtained by encoding the extracted three-dimensional data 412 whose feature amount extracted from the input three-dimensional data 411 is equal to or greater than the threshold value by the first decoding method. In addition, the three-dimensional data decoding device 500 decodes the encoded three-dimensional data 413 obtained by encoding the input three-dimensional data 411 by a second decoding method different from the first decoding method.
[0235] According to this, the three-dimensional data decoding device 500 can selectively receive the encoded three-dimensional data 414 obtained by encoding data with a feature amount equal to or greater than a threshold value and the encoded three-dimensional data 413, for example, according to the usage purpose or the like. Thereby, the three-dimensional data decoding device 500 can reduce the amount of data to be transmitted. Further, the three-dimensional data decoding device 500 can use decoding methods suitable for the input three-dimensional data 411 and the extracted three-dimensional data 412, respectively.
[0236] Also, in the first decoding method, inter prediction among intra prediction and inter prediction is prioritized over the second decoding method.
[0237] According to this, the three-dimensional data decoding device 500 can increase the priority of inter prediction for the extracted three-dimensional data in which the correlation between adjacent data is likely to be low.
[0238] Also, in the first decoding method and the second decoding method, the expression methods of three-dimensional positions are different. For example, in the second decoding method, the three-dimensional position is expressed by an octree, and in the first decoding method, the three-dimensional position is expressed by three-dimensional coordinates.
[0239] According to this, the three-dimensional data decoding device 500 can use a more suitable expression method for three-dimensional positions for three-dimensional data with different numbers of data (the number of VXLs or FVXLs).
[0240] Further, at least one of the encoded three-dimensional data 413 and 414 includes an identifier indicating whether the encoded three-dimensional data is the encoded three-dimensional data obtained by encoding the input three-dimensional data 411 or the encoded three-dimensional data obtained by encoding a part of the input three-dimensional data 411. The three-dimensional data decoding device 500 identifies the encoded three-dimensional data 413 and 414 with reference to the identifier.
[0241] According to this, the three-dimensional data decoding device 500 can easily determine whether the acquired encoded three-dimensional data is the encoded three-dimensional data 413 or the encoded three-dimensional data 414.
[0242] In addition, the three-dimensional data decoding device 500 further notifies the server of the state of the client (the three-dimensional data decoding device 500). The three-dimensional data decoding device 500 receives one of the encoded three-dimensional data 413 and 414 transmitted from the server according to the state of the client.
[0243] According to this, the three-dimensional data decoding device 500 can receive appropriate data according to the state of the client.
[0244] In addition, the state of the client includes the communication status of the client (for example, network bandwidth) or the moving speed of the client.
[0245] In addition, the three-dimensional data decoding device 500 further requests one of the encoded three-dimensional data 413 and 414 from the server, and receives one of the encoded three-dimensional data 413 and 414 transmitted from the server in response to the request.
[0246] According to this, the three-dimensional data decoding device 500 can receive appropriate data according to the application.
[0247] (Embodiment 3) In this embodiment, a method for transmitting and receiving three-dimensional data between vehicles will be described. For example, transmission and reception of three-dimensional data between the host vehicle and surrounding vehicles are performed.
[0248] FIG. 24 is a block diagram of a three-dimensional data creation device 620 according to this embodiment. This three-dimensional data creation device 620 is included in, for example, the host vehicle, and creates denser third three-dimensional data 636 by synthesizing the received second three-dimensional data 635 with the first three-dimensional data 632 created by the three-dimensional data creation device 620.
[0249] This three-dimensional data creation device 620 includes a three-dimensional data creation unit 621, a request range determination unit 622, a search unit 623, a reception unit 624, a decoding unit 625, and a synthesis unit 626.
[0250] First, the three-dimensional data creation unit 621 creates first three-dimensional data 632 using sensor information 631 detected by sensors included in the host vehicle. Next, the required range determination unit 622 determines a required range, which is a three-dimensional space range lacking data, from among the created first three-dimensional data 632.
[0251] Next, the search unit 623 searches for surrounding vehicles that own three-dimensional data within the required range, and transmits required range information 633 indicating the required range to the surrounding vehicles identified by the search. Next, the reception unit 624 receives encoded three-dimensional data 634, which is an encoded stream of the required range, from the surrounding vehicles (S624). Note that the search unit 623 may issue requests indiscriminately to all vehicles existing within a specific range, and receive the encoded three-dimensional data 634 from the party that responded. Further, the search unit 623 may issue requests not only to vehicles but also to objects such as traffic signals or signs, and receive the encoded three-dimensional data 634 from the object.
[0252] Next, the decoding unit 625 acquires second three-dimensional data 635 by decoding the received encoded three-dimensional data 634. Next, the synthesis unit 626 creates denser third three-dimensional data 636 by synthesizing the first three-dimensional data 632 and the second three-dimensional data 635.
[0253] Next, the configuration and operation of the three-dimensional data transmission device 640 according to the present embodiment will be described. FIG. 25 is a block diagram of the three-dimensional data transmission device 640.
[0254] The three-dimensional data transmission device 640 is included in, for example, the surrounding vehicles described above, processes fifth three-dimensional data 652 created by the surrounding vehicles into sixth three-dimensional data 654 required by the host vehicle, generates encoded three-dimensional data 634 by encoding the sixth three-dimensional data 654, and transmits the encoded three-dimensional data 634 to the host vehicle.
[0255] The three-dimensional data transmission device 640 includes a three-dimensional data creation unit 641, a reception unit 642, an extraction unit 643, an encoding unit 644, and a transmission unit 645.
[0256] First, the three-dimensional data creation unit 641 creates fifth three-dimensional data 652 using the sensor information 651 detected by the sensors provided in the surrounding vehicles. Next, the reception unit 642 receives the requested range information 633 transmitted from the host vehicle.
[0257] Next, the extraction unit 643 processes the fifth three-dimensional data 652 into sixth three-dimensional data 654 by extracting the three-dimensional data within the requested range indicated by the requested range information 633 from the fifth three-dimensional data 652. Next, the encoding unit 644 encodes the sixth three-dimensional data 654 to generate encoded three-dimensional data 634 which is an encoded stream. Then, the transmission unit 645 transmits the encoded three-dimensional data 634 to the host vehicle.
[0258] Here, an example is described in which the host vehicle includes a three-dimensional data creation device 620 and the surrounding vehicles include a three-dimensional data transmission device 640. However, each vehicle may have the functions of the three-dimensional data creation device 620 and the three-dimensional data transmission device 640.
[0259] (Embodiment 4) In this embodiment, an abnormal operation in self-position estimation based on a three-dimensional map will be described.
[0260] It is expected that applications such as automatic driving of vehicles, or autonomous movement of moving bodies such as robots or flying objects such as drones will expand in the future. As an example of a means for realizing such autonomous movement, there is a method in which a moving body travels according to a map while estimating its own position (self-position estimation) within a three-dimensional map.
[0261] Self-position estimation can be realized by matching a three-dimensional map with three-dimensional information around the host vehicle (hereinafter, host vehicle detection three-dimensional data) acquired by sensors such as a range finder (such as LiDAR) or a stereo camera mounted on the host vehicle, and estimating the position of the host vehicle within the three-dimensional map.
[0262] The three-dimensional map may include not only three-dimensional point clouds, but also two-dimensional map data such as the shape information of roads and intersections, or information that changes in real time such as traffic jams and accidents, like the HD map proposed by HERE. The three-dimensional map is composed of multiple layers such as three-dimensional data, two-dimensional data, and metadata that changes in real time, and the device can also acquire or refer to only the necessary data.
[0263] The data of the point cloud may be the above-mentioned SWLD, or may include point cloud data that is not feature points. In addition, the transmission and reception of the data of the point cloud are performed based on one or a plurality of random access units.
[0264] The following method can be used as a method for matching the three-dimensional map and the three-dimensional data of the host vehicle detection. For example, the device compares the shape of the point cloud in the respective point clouds and determines that the part with a high similarity between the feature points is the same position. In addition, when the three-dimensional map is composed of SWLD, the device performs matching by comparing the feature points constituting the SWLD and the three-dimensional feature points extracted from the three-dimensional data of the host vehicle detection.
[0265] Here, in order to perform highly accurate self-position estimation, it is necessary that (A) the three-dimensional map and the three-dimensional data of the host vehicle detection can be acquired, and (B) their accuracy satisfies a predetermined standard. However, in the following abnormal cases, (A) or (B) cannot be satisfied.
[0266] (1) The three-dimensional map cannot be acquired via communication.
[0267] (2) The three-dimensional map does not exist, or although the three-dimensional map has been acquired, it is damaged.
[0268] (3) The sensor of the host vehicle is malfunctioning, or due to bad weather, the generation accuracy of the three-dimensional data of the host vehicle detection is not sufficient.
[0269] The operations for handling these abnormal cases will be described below. In the following, the operations will be described by taking a vehicle as an example, but the following method can be applied to all moving objects that move autonomously, such as robots or drones.
[0270] Next, the configuration and operation of the three-dimensional information processing apparatus according to the present embodiment for coping with abnormal cases in the three-dimensional map or the ego-vehicle detection three-dimensional data will be described. FIG. 26 is a block diagram showing a configuration example of the three-dimensional information processing apparatus 700 according to the present embodiment.
[0271] The three-dimensional information processing apparatus 700 is mounted on a moving object such as an automobile, for example. As shown in FIG. 26, the three-dimensional information processing apparatus 700 includes a three-dimensional map acquisition unit 701, an ego-vehicle detection data acquisition unit 702, an abnormal case determination unit 703, a coping operation determination unit 704, and an operation control unit 705.
[0272] Note that the three-dimensional information processing apparatus 700 may include a two-dimensional or one-dimensional sensor (not shown) for detecting structures or moving objects around the ego-vehicle, such as a camera that acquires two-dimensional images, or a one-dimensional data sensor using ultrasonic waves or lasers. Further, the three-dimensional information processing apparatus 700 may include a communication unit (not shown) for acquiring the three-dimensional map via a mobile communication network such as 4G or 5G, or vehicle-to-vehicle communication or road-to-vehicle communication.
[0273] The three-dimensional map acquisition unit 701 acquires a three-dimensional map 711 in the vicinity of the travel route. For example, the three-dimensional map acquisition unit 701 acquires the three-dimensional map 711 via a mobile communication network, or vehicle-to-vehicle communication or road-to-vehicle communication.
[0274] Next, the ego-vehicle detection data acquisition unit 702 acquires ego-vehicle detection three-dimensional data 712 based on the sensor information. For example, the ego-vehicle detection data acquisition unit 702 generates ego-vehicle detection three-dimensional data 712 based on the sensor information acquired by the sensors provided in the ego-vehicle.
[0275] Next, the abnormal case determination unit 703 detects an abnormal case by performing a predetermined check on at least one of the acquired three-dimensional map 711 and the host vehicle detection three-dimensional data 712. That is, the abnormal case determination unit 703 determines whether at least one of the acquired three-dimensional map 711 and the host vehicle detection three-dimensional data 712 is abnormal.
[0276] When an abnormal case is detected, the countermeasure operation determination unit 704 determines a countermeasure operation for the abnormal case. Next, the operation control unit 705 controls the operations of each processing unit necessary for implementing the countermeasure operation, such as the three-dimensional map acquisition unit 701.
[0277] On the other hand, when no abnormal case is detected, the three-dimensional information processing device 700 ends the processing.
[0278] In addition, the three-dimensional information processing device 700 estimates the self-position of the vehicle having the three-dimensional information processing device 700 using the three-dimensional map 711 and the host vehicle detection three-dimensional data 712. Next, the three-dimensional information processing device 700 automatically drives the vehicle using the result of the self-position estimation.
[0279] In this way, the three-dimensional information processing device 700 acquires map data (three-dimensional map 711) including the first three-dimensional position information via a communication path. For example, the first three-dimensional position information is encoded with a partial space having three-dimensional coordinate information as a unit, each is an aggregate of one or more partial spaces, and includes a plurality of random access units that can be independently decoded. For example, the first three-dimensional position information is data (SWLD) in which feature points where three-dimensional feature amounts are equal to or greater than a predetermined threshold are encoded.
[0280] In addition, the three-dimensional information processing device 700 generates second three-dimensional position information (host vehicle detection three-dimensional data 712) from the information detected by the sensor. Next, the three-dimensional information processing device 700 determines whether the first three-dimensional position information or the second three-dimensional position information is abnormal by performing an abnormality determination process on the first three-dimensional position information or the second three-dimensional position information.
[0281] When it is determined that the first three-dimensional position information or the second three-dimensional position information is abnormal, the three-dimensional information processing apparatus 700 determines a coping operation for the abnormality. Next, the three-dimensional information processing apparatus 700 performs control necessary for the execution of the coping operation.
[0282] Thereby, the three-dimensional information processing apparatus 700 can detect an abnormality in the first three-dimensional position information or the second three-dimensional position information and perform a coping operation.
[0283] (Embodiment 5) In the present embodiment, a method for transmitting three-dimensional data to a following vehicle and the like will be described.
[0284] FIG. 27 is a block diagram showing a configuration example of a three-dimensional data creation apparatus 810 according to the present embodiment. This three-dimensional data creation apparatus 810 is mounted on a vehicle, for example. The three-dimensional data creation apparatus 810 transmits and receives three-dimensional data to and from an external traffic monitoring cloud, a preceding vehicle, or a following vehicle, and creates and stores three-dimensional data.
[0285] The three-dimensional data creation apparatus 810 includes a data reception unit 811, a communication unit 812, a reception control unit 813, a format conversion unit 814, a plurality of sensors 815, a three-dimensional data creation unit 816, a three-dimensional data synthesis unit 817, a three-dimensional data storage unit 818, a communication unit 819, a transmission control unit 820, a format conversion unit 821, and a data transmission unit 822.
[0286] The data reception unit 811 receives three-dimensional data 831 from a traffic monitoring cloud or a preceding vehicle. The three-dimensional data 831 includes information such as point cloud, visible light video, depth information, sensor position information, or speed information, which includes areas that cannot be detected by the sensors 815 of the host vehicle, for example.
[0287] The communication unit 812 communicates with a traffic monitoring cloud or a preceding vehicle and transmits a data transmission request or the like to the traffic monitoring cloud or the preceding vehicle.
[0288] The reception control unit 813 exchanges information such as the corresponding format with the communication destination via the communication unit 812 and establishes communication with the communication destination.
[0289] The format conversion unit 814 generates three-dimensional data 832 by performing format conversion and the like on the three-dimensional data 831 received by the data reception unit 811. Further, when the three-dimensional data 831 is compressed or encoded, the format conversion unit 814 performs decompression or decoding processing.
[0290] The plurality of sensors 815 are a group of sensors that acquire information outside the vehicle, such as a LiDAR, a visible light camera, or an infrared camera, and generate sensor information 833. For example, when the sensor 815 is a laser sensor such as a LiDAR, the sensor information 833 is three-dimensional data such as a point cloud (point group data). Note that the number of sensors 815 may not be plural.
[0291] The three-dimensional data creation unit 816 generates three-dimensional data 834 from the sensor information 833. The three-dimensional data 834 includes information such as, for example, a point cloud, a visible light video, depth information, sensor position information, or speed information.
[0292] The three-dimensional data synthesis unit 817 synthesizes the three-dimensional data 832 created by the traffic monitoring cloud or the vehicle in front, etc., with the three-dimensional data 834 created based on the sensor information 833 of the host vehicle, thereby constructing three-dimensional data 835 that includes the space in front of the vehicle in front that cannot be detected by the sensors 815 of the host vehicle.
[0293] The three-dimensional data storage unit 818 stores the generated three-dimensional data 835 and the like.
[0294] The communication unit 819 communicates with the traffic monitoring cloud or the following vehicle and transmits a data transmission request or the like to the traffic monitoring cloud or the following vehicle.
[0295] The transmission control unit 820 exchanges information such as the corresponding format with the communication destination via the communication unit 819 and establishes communication with the communication destination. Further, the transmission control unit 820 determines a transmission area, which is the space of the three-dimensional data to be transmitted, based on the three-dimensional data construction information of the three-dimensional data 832 generated by the three-dimensional data synthesis unit 817 and the data transmission request from the communication destination.
[0296] Specifically, the transmission control unit 820 determines a transmission area that includes the space in front of the host vehicle that cannot be detected by the sensors of the following vehicle in response to a data transmission request from the traffic monitoring cloud or the following vehicle. Further, the transmission control unit 820 determines the transmission area by determining whether there is an update to the space that can be transmitted or the transmitted space based on the three-dimensional data construction information. For example, the transmission control unit 820 determines as the transmission area the area specified in the data transmission request and in which the corresponding three-dimensional data 835 exists. Then, the transmission control unit 820 notifies the format conversion unit 821 of the format corresponding to the communication destination and the transmission area.
[0297] The format conversion unit 821 generates the three-dimensional data 837 by converting the three-dimensional data 836 in the transmission area among the three-dimensional data 835 stored in the three-dimensional data storage unit 818 into the format corresponding to the receiving side. Note that the format conversion unit 821 may reduce the data amount by compressing or encoding the three-dimensional data 837.
[0298] The data transmission unit 822 transmits the three-dimensional data 837 to the traffic monitoring cloud or the following vehicle. This three-dimensional data 837 includes information such as point cloud in front of the host vehicle, visible light video, depth information, or sensor position information, which includes areas that are blind spots for the following vehicle.
[0299] Here, an example in which format conversion and the like are performed by the format conversion units 814 and 821 has been described, but format conversion may not be performed.
[0300] With such a configuration, the three-dimensional data creation device 810 acquires three-dimensional data 831 of an area that cannot be detected by the sensors 815 of the host vehicle from the outside, and generates three-dimensional data 835 by synthesizing the three-dimensional data 831 and three-dimensional data 834 based on the sensor information 833 detected by the sensors 815 of the host vehicle. Thereby, the three-dimensional data creation device 810 can generate three-dimensional data in a range that cannot be detected by the sensors 815 of the host vehicle.
[0301] In addition, the three-dimensional data creation device 810 can transmit three-dimensional data including the space in front of the host vehicle that cannot be detected by the sensors of the following vehicle to the traffic monitoring cloud or the following vehicle, etc. in response to a data transmission request from the traffic monitoring cloud or the following vehicle.
[0302] (Embodiment 6) In Embodiment 5, an example in which a client device such as a vehicle transmits three-dimensional data to a server such as another vehicle or a traffic monitoring cloud has been described. In this embodiment, the client device transmits sensor information obtained by sensors to a server or another client device.
[0303] First, the configuration of the system according to this embodiment will be described. FIG. 28 is a diagram showing the configuration of a three-dimensional map and sensor information transmission / reception system according to this embodiment. This system includes a server 901 and client devices 902A and 902B. When the client devices 902A and 902B are not particularly distinguished, they are also referred to as the client device 902.
[0304] The client device 902 is, for example, in-vehicle equipment mounted on a moving body such as a vehicle. The server 901 is, for example, a traffic monitoring cloud or the like, and can communicate with a plurality of client devices 902.
[0305] The server 901 transmits a three-dimensional map composed of point clouds to the client device 902. Note that the configuration of the three-dimensional map is not limited to point clouds, and other three-dimensional data such as a mesh structure may be represented.
[0306] The client device 902 transmits the 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, visible light image, infrared image, depth image, sensor position information, and speed information.
[0307] The data transmitted and received between the server 901 and the client device 902 may be compressed for data reduction, or may remain uncompressed to maintain the accuracy of the data. When compressing the data, for example, a three-dimensional compression method based on an octree structure can be used for the point cloud. Also, a two-dimensional image compression method can be used for the visible light image, infrared image, and depth image. The two-dimensional image compression method is, for example, MPEG-4 AVC or HEVC standardized by MPEG.
[0308] Also, 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 located in a predetermined space. Also, the server 901 may transmit a three-dimensional map suitable for the position of the client device 902 to the client device 902 that has received the transmission request at regular intervals. Also, the server 901 may transmit the three-dimensional map to the client device 902 each time the three-dimensional map managed by the server 901 is updated.
[0309] The client device 902 issues a transmission request for the three-dimensional map to the server 901. For example, when the client device 902 wants to perform self-position estimation during driving, the client device 902 transmits a transmission request for the three-dimensional map to the server 901.
[0310] In addition, in the following cases, the client device 902 may send a request to the server 901 to transmit the three-dimensional map. When the three-dimensional map held by the client device 902 is old, the client device 902 may send a request to the server 901 to transmit the three-dimensional map. For example, when a certain period of time has elapsed since the client device 902 acquired the three-dimensional map, the client device 902 may send a request to the server 901 to transmit the three-dimensional map.
[0311] Before a certain time when the client device 902 exits from the space shown by the three-dimensional map held by the client device 902, the client device 902 may send a request to the server 901 to transmit the three-dimensional map. For example, when the client device 902 exists within a predetermined distance from the boundary of the space shown by the three-dimensional map held by the client device 902, the client device 902 may send a request to the server 901 to transmit the three-dimensional map. Also, when the movement path and movement speed of the client device 902 can be grasped, based on these, the time when the client device 902 exits from the space shown by the three-dimensional map held by the client device 902 may be predicted.
[0312] When the error during alignment between the three-dimensional data created by the client device 902 from the sensor information and the three-dimensional map is equal to or greater than a certain value, the client device 902 may send a request to the server 901 to transmit the three-dimensional map.
[0313] In response to a transmission request for sensor information sent from the server 901, the client device 902 transmits the sensor information to the server 901. Note that the client device 902 may also send the sensor information to the server 901 without waiting for a transmission request for sensor information from the server 901. For example, when the client device 902 once obtains a transmission request for sensor information from the server 901, it may periodically transmit the sensor information to the server 901 for a certain period of time. Also, when the error at the time of alignment between the three-dimensional data created by the client device 902 based on the sensor information and the three-dimensional map obtained from the server 901 is equal to or greater than a certain level, the client device 902 determines that there may be a change in the three-dimensional map around the client device 902, and may transmit that fact and the sensor information to the server 901.
[0314] The server 901 issues a transmission request for sensor information to the client device 902. For example, the server 901 receives position information of the client device 902 such as GPS from the client device 902. When the server 901 determines, based on the position 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, the server 901 issues a transmission request for sensor information to the client device 902 in order to generate a new three-dimensional map. Also, when the server 901 wants to update the three-dimensional map, when it wants to check the road conditions such as during snowfall or a disaster, or when it wants to check the traffic congestion situation, or an accident or incident situation, etc., it may issue a transmission request for sensor information.
[0315] Also, the client device 902 may set the data volume of the sensor information to be transmitted to the server 901 according to the communication state or bandwidth at the time of receiving a transmission request for sensor information received from the server 901. Setting the data volume of the sensor information to be transmitted to the server 901 means, for example, increasing or decreasing the data itself, or appropriately selecting a compression method.
[0316] FIG. 29 is a block diagram showing a configuration example of the 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 its own position of the client device 902 from the three-dimensional data created based on the sensor information of the client device 902. Further, the client device 902 transmits the acquired sensor information to the server 901.
[0317] The client device 902 includes a data reception unit 1011, a communication unit 1012, a reception control unit 1013, a format conversion unit 1014, a plurality of 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.
[0318] The data reception 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 WLD or SWLD. The three-dimensional map 1031 may include either compressed data or uncompressed data.
[0319] The communication unit 1012 communicates with the server 901 and transmits a data transmission request (for example, a transmission request for a three-dimensional map) to the server 901.
[0320] The reception control unit 1013 exchanges information such as a corresponding format with the communication destination via the communication unit 1012 and establishes communication with the communication destination.
[0321] The format conversion unit 1014 generates a three-dimensional map 1032 by performing format conversion or the like on the three-dimensional map 1031 received by the data reception unit 1011. Further, when the three-dimensional map 1031 is compressed or encoded, the format conversion unit 1014 performs decompression or decoding processing. Note that the format conversion unit 1014 does not perform decompression or decoding processing if the three-dimensional map 1031 is uncompressed data.
[0322] The plurality of sensors 1015 are a group of sensors that acquire information outside the vehicle on which the client device 902 is mounted, such as LiDAR, a visible light camera, an infrared camera, or a depth sensor, 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 point cloud (point group data). Note that the number of sensors 1015 does not have to be plural.
[0323] The three-dimensional data creation unit 1016 creates three-dimensional data 1034 around the host vehicle based on the sensor information 1033. For example, the three-dimensional data creation unit 1016 creates point cloud data with color information around the host vehicle using the information acquired by LiDAR and the visible light video obtained by the visible light camera.
[0324] The three-dimensional image processing unit 1017 performs self-position estimation processing of the host vehicle using the received three-dimensional map 1032 such as point cloud and the three-dimensional data 1034 around the host vehicle generated from the sensor information 1033. Note that the three-dimensional image processing unit 1017 may create three-dimensional data 1035 around the host vehicle by synthesizing the three-dimensional map 1032 and the three-dimensional data 1034, and perform self-position estimation processing using the created three-dimensional data 1035.
[0325] The three-dimensional data storage unit 1018 stores the three-dimensional map 1032, the three-dimensional data 1034, the three-dimensional data 1035, and the like.
[0326] The format conversion unit 1019 generates sensor information 1037 by converting the sensor information 1033 into a format supported by the receiving side. Note that the format conversion unit 1019 may reduce the data amount by compressing or encoding the sensor information 1037. Further, the format conversion unit 1019 may omit the process when format conversion is not necessary. Further, the format conversion unit 1019 may control the data amount to be transmitted according to the specification of the transmission range.
[0327] The communication unit 1020 communicates with the server 901 and receives from the server 901 a data transmission request (a request for transmitting sensor information) and the like.
[0328] The transmission control unit 1021 exchanges information such as the corresponding format with the communication destination via the communication unit 1020 and establishes communication.
[0329] The data transmission unit 1022 transmits the sensor information 1037 to the server 901. The sensor information 1037 includes information obtained by a plurality of sensors 1015 such as, for example, information acquired by 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.
[0330] Next, the configuration of the server 901 will be described. FIG. 30 is a block diagram showing a configuration example 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 updates a three-dimensional map managed by the server 901 using the created three-dimensional data. Further, 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.
[0331] The server 901 includes a data reception unit 1111, a communication unit 1112, a reception 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.
[0332] The data reception unit 1111 receives the sensor information 1037 from the client device 902. The sensor information 1037 includes, for example, information acquired by 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.
[0333] The communication unit 1112 communicates with the client device 902 and transmits a data transmission request (e.g., a request to transmit sensor information) to the client device 902.
[0334] The reception control unit 1113 exchanges information such as the corresponding format with the communication destination via the communication unit 1112 to establish communication.
[0335] When the received sensor information 1037 is compressed or encoded, the format conversion unit 1114 generates the sensor information 1132 by performing decompression or decoding processing. Note that if the sensor information 1037 is uncompressed data, the format conversion unit 1114 does not perform decompression or decoding processing.
[0336] The three-dimensional data creation unit 1116 creates three-dimensional data 1134 around 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 around the client device 902 using the information acquired by LiDAR and the visible light video obtained by the visible light camera.
[0337] The three-dimensional data synthesis unit 1117 updates the three-dimensional map 1135 by synthesizing the three-dimensional data 1134 created based on the sensor information 1132 into the three-dimensional map 1135 managed by the server 901.
[0338] The three-dimensional data storage unit 1118 stores the three-dimensional map 1135 and the like.
[0339] 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. Note that the format conversion unit 1119 may reduce the data amount by compressing or encoding the three-dimensional map 1135. Also, if there is no need to perform format conversion, the format conversion unit 1119 may omit the processing. Further, the format conversion unit 1119 may control the data amount to be transmitted according to the specification of the transmission range.
[0340] The communication unit 1120 communicates with the client device 902 and receives from the client device 902 a data transmission request (a request for transmitting a three-dimensional map) or the like.
[0341] The transmission control unit 1121 exchanges information such as a corresponding format with the communication destination via the communication unit 1120 to establish communication.
[0342] 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 an SWLD. The three-dimensional map 1031 may include either compressed data or uncompressed data.
[0343] Next, the operation flow of the client device 902 will be described. FIG. 31 is a flowchart showing the operation when the client device 902 acquires a three-dimensional map.
[0344] First, the client device 902 requests the server 901 to transmit a three-dimensional map (point cloud, etc.) (S1001). At this time, the client device 902 may request the server 901 to transmit a three-dimensional map related to the position information by transmitting the position information of the client device 902 obtained by GPS or the like together.
[0345] Next, the client device 902 receives a three-dimensional map from the server 901 (S1002). If the received three-dimensional map is compressed data, the client device 902 decrypts the received three-dimensional map to generate an uncompressed three-dimensional map (S1003).
[0346] Next, the client device 902 creates three-dimensional data 1034 around the client device 902 from the sensor information 1033 obtained by the plurality of 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).
[0347] FIG. 32 is a flowchart showing the operation when the client device 902 transmits sensor information. First, the client device 902 receives a sensor information transmission request from the server 901 (S1011). The client device 902 that has received the transmission request transmits the sensor information 1037 to the server 901 (S1012). Note that when the sensor information 1033 includes a plurality of pieces of information obtained by the 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.
[0348] Next, the operation flow of the server 901 will be described. FIG. 33 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).
[0349] FIG. 34 is a flowchart showing the operation when the server 901 transmits a three-dimensional map. First, the server 901 receives a transmission request for a three-dimensional map from the client device 902 (S1031). The server 901 that has received the transmission request for the three-dimensional map transmits the three-dimensional map 1031 to the client device 902 (S1032). At this time, the server 901 may extract the three-dimensional map in the vicinity according to the position information of the client device 902 and transmit the extracted three-dimensional map. Further, the server 901 may compress the three-dimensional map composed of the point cloud using, for example, a compression method based on an octree structure, and transmit the compressed three-dimensional map.
[0350] Hereinafter, a modification example of the present embodiment will be described.
[0351] The server 901 creates three-dimensional data 1134 near 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 performing matching between the created three-dimensional data 1134 and the three-dimensional map 1135 of the same area managed by the server 901. When the difference is equal to or greater than a predetermined threshold, the server 901 determines that some abnormality has occurred around the client device 902. For example, a large difference may occur between the three-dimensional map 1135 managed by the server 901 and the three-dimensional data 1134 created based on the sensor information 1037 when ground subsidence or the like occurs due to a natural disaster such as an earthquake.
[0352] The sensor information 1037 may include information indicating at least one of the type of the sensor, the performance of the sensor, and the model number of the sensor. Further, a class ID or the like corresponding 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 conceivable to assign an identifier to the performance of the sensor such that a sensor capable of acquiring information with an accuracy of several millimeters is class 1, a sensor capable of acquiring information with an accuracy of several centimeters is class 2, and a sensor capable of acquiring information with an accuracy of several meters is class 3. Also, 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 specification information of the sensor from the vehicle type of the vehicle. In this case, the server 901 may have acquired the information on the vehicle type of the vehicle in advance, or the information may be included in the sensor information. Further, 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 correct the three-dimensional data 1134. When the sensor performance is low accuracy (class 3), the server 901 applies correction corresponding to the accuracy of the sensor to the three-dimensional data 1134. For example, the server 901 increases the degree (intensity) of correction as the accuracy of the sensor decreases.
[0353] The server 901 may simultaneously issue a transmission request for sensor information to a plurality of client devices 902 in a certain space. When the server 901 receives a plurality of sensor information from the plurality of client devices 902, it is not necessary to use all the sensor information for creating the three-dimensional data 1134. For example, the server 901 may select the sensor information to be used according to the performance of the sensor. For example, when updating the three-dimensional map 1135, the server 901 may select high-accuracy sensor information (class 1) from among the plurality of received sensor information and create the three-dimensional data 1134 using the selected sensor information.
[0354] The server 901 is not limited to only servers such as traffic monitoring clouds, and may be other client devices (in-vehicle). FIG. 35 is a diagram showing the system configuration in this case.
[0355] For example, the client device 902C sends a transmission request for sensor information to the client device 902A nearby and acquires the sensor information from the client device 902A. Then, the client device 902C creates three-dimensional data using the acquired sensor information of the client device 902A and updates the three-dimensional map of the client device 902C. As a result, the client device 902C can generate a three-dimensional map of the space that can be acquired from the client device 902A, taking advantage of the performance of the client device 902C. For example, such a case is considered to occur when the performance of the client device 902C is high.
[0356] Also, in this case, the client device 902A that provided the sensor information is given the right to acquire the high-precision three-dimensional map generated by the client device 902C. The client device 902A receives the high-precision three-dimensional map from the client device 902C according to that right.
[0357] Also, the client device 902C may send a transmission request for sensor information to a plurality of nearby client devices 902 (client device 902A and client device 902B). When the sensors of the client device 902A or the client device 902B are high-performance, the client device 902C can create three-dimensional data using the sensor information obtained by this high-performance sensor.
[0358] FIG. 36 is a block diagram showing the functional configuration of the server 901 and the client device 902. The server 901 includes, for example, a three-dimensional map compression / decompression processing unit 1201 that compresses and decompresses a three-dimensional map, and a sensor information compression / decompression processing unit 1202 that compresses and decompresses sensor information.
[0359] 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 the encoded data of the compressed three-dimensional map, decodes the encoded data, and acquires 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 hold inside a processing unit (device or LSI) that performs the process of decoding a three-dimensional map (such as a point cloud), and does not need to hold inside a processing unit that performs the process of compressing the three-dimensional data of the three-dimensional map (such as a point cloud). Thereby, the cost, power consumption, etc. of the client device 902 can be suppressed.
[0360] As described above, the client device 902 according to the present embodiment is mounted on a moving body, and creates three-dimensional data 1034 around the moving body from sensor information 1033 indicating the surrounding situation of the moving body obtained by the sensor 1015 mounted on the moving body. The client device 902 estimates its own 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.
[0361] According to this, the client device 902 transmits the sensor information 1033 to the server 901 or the like. Thereby, there is a possibility that the data amount of the transmitted data can be reduced as compared with the case of transmitting three-dimensional data. In addition, since there is no need for the client device 902 to perform processes such as compression or encoding of three-dimensional data, the processing amount of the client device 902 can be reduced. Therefore, the client device 902 can achieve reduction of the data amount to be transmitted or simplification of the device configuration.
[0362] Further, the client device 902 further transmits a request to send a three-dimensional map to the server 901 and receives the three-dimensional map 1031 from the server 901. The client device 902 estimates its own position using the three-dimensional data 1034 and the three-dimensional map 1032 in the estimation of its own position.
[0363] Also, 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.
[0364] Also, the sensor information 1033 includes information indicating the performance of the sensor.
[0365] Also, 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 moving body 902 in the transmission of the sensor information. According to this, the client device 902 can reduce the amount of data to be transmitted.
[0366] For example, the client device 902 includes a processor and a memory, and the processor performs the above processing using the memory.
[0367] Also, the server 901 according to the present embodiment is communicable with the client device 902 mounted on the moving body, and receives the sensor information 1037 indicating the surrounding situation of the moving body obtained by the sensor 1015 mounted on the moving body from the client device 902. The server 901 creates three-dimensional data 1134 around the moving body from the received sensor information 1037.
[0368] According to this, the server 901 creates three-dimensional data 1134 using the sensor information 1037 transmitted from the client device 902. Thereby, there is a possibility that the amount of data to be transmitted can be reduced compared to the case where the client device 902 transmits three-dimensional data. Also, since it is not necessary for the client device 902 to perform processing such as compression or encoding of the three-dimensional data, the processing amount of the client device 902 can be reduced. Therefore, the server 901 can achieve a reduction in the amount of data to be transmitted or a simplification of the device configuration.
[0369] In addition, the server 901 further transmits a transmission request for sensor information to the client device 902.
[0370] In addition, the server 901 further updates the 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.
[0371] Also, 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.
[0372] Also, the sensor information 1037 includes information indicating the performance of the sensor.
[0373] In addition, the server 901 further corrects the three-dimensional data according to the performance of the sensor. According to this, the three-dimensional data creation method can improve the quality of the three-dimensional data.
[0374] In addition, when receiving the sensor information, the server 901 receives a plurality 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 information indicating the performance of the sensors included in the plurality of sensor information 1037. According to this, the server 901 can improve the quality of the three-dimensional data 1134.
[0375] In addition, the server 901 decrypts or decompresses the received sensor information 1037, and creates three-dimensional data 1134 from the decrypted or decompressed sensor information 1132. According to this, the server 901 can reduce the amount of data to be transmitted.
[0376] For example, the server 901 includes a processor and a memory, and the processor performs the above processing using the memory.
[0377] (Embodiment 7) In the present embodiment, a method for encoding and decoding three-dimensional data using inter prediction processing will be described.
[0378] FIG. 37 is a block diagram of a three-dimensional data encoding apparatus 1300 according to the present embodiment. This three-dimensional data encoding apparatus 1300 generates an encoded bit stream (hereinafter, also simply referred to as a bit stream), which is an encoded signal, by encoding three-dimensional data. As shown in FIG. 37, the three-dimensional data encoding apparatus 1300 includes a division unit 1301, a subtraction unit 1302, a conversion unit 1303, a quantization unit 1304, an inverse quantization unit 1305, an inverse conversion unit 1306, an addition unit 1307, a reference volume memory 1308, an intra prediction unit 1309, a reference space memory 1310, an inter prediction unit 1311, a prediction control unit 1312, and an entropy encoding unit 1313.
[0379] The division unit 1301 divides each space (SPC) included in the three-dimensional data into a plurality of volumes (VLM) that are encoding units. In addition, the division unit 1301 octree-expresses (Octree-expresses) the voxels within each volume. Note that the division unit 1301 may set the space and the volume to the same size and octree-express the space. Further, the division unit 1301 may add information (such as depth information) necessary for octree conversion to the header of the bit stream or the like.
[0380] The subtraction unit 1302 calculates the difference between the volume (the volume to be encoded) output from the division unit 1301 and the predicted volume generated by intra prediction or inter prediction, which will be described later, and outputs the calculated difference to the conversion unit 1303 as the prediction residual. FIG. 38 is a diagram showing an example of calculating the prediction residual. Note that the bit sequences of the volume to be encoded and the predicted volume shown here are, for example, position information indicating the positions of three-dimensional points (for example, point clouds) included in the volume.
[0381] Hereinafter, the octree representation and the voxel scan order will be described. After the volume is converted into an octree structure (octree conversion), it is 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. 39 is a diagram showing an example of the structure of a volume including a plurality of voxels. FIG. 40 is a diagram showing an example of converting the volume shown in FIG. 39 into an octree structure. Here, among the leaves shown in FIG. 40, leaves 1, 2, and 3 represent voxels VXL1, VXL2, and VXL3 shown in FIG. 39, respectively, and represent VXLs (hereinafter, valid VXLs) including point clouds.
[0382] The octree is represented by, for example, a binary sequence of 0 and 1. For example, if the node or the valid VXL is set to value 1 and the others are set to value 0, the binary sequences shown in FIG. 40 are assigned to each node and leaf. Then, according to the breadth-first or depth-first scan order, this binary sequence is scanned. For example, when scanned in breadth-first order, the binary sequence shown in A of FIG. 41 is obtained. When scanned in depth-first order, the binary sequence shown in B of FIG. 41 is obtained. The binary sequence obtained by this scan is encoded by entropy encoding to reduce the amount of information.
[0383] Next, the depth information in the octree representation will be described. The depth in the octree representation is used to control to what granularity the point cloud information contained in the volume is retained. When the depth is set large, the point cloud information can be reproduced to a finer level, but the amount of data for representing nodes and leaves increases. Conversely, when the depth is set small, the amount of data decreases, but since point cloud information at a plurality of different positions and with different colors is regarded as being at the same position and having the same color, the information possessed by the original point cloud information is lost.
[0384] For example, FIG. 42 is a diagram showing an example in which the octree with a depth of 2 shown in FIG. 40 is represented by an octree with a depth of 1. The octree shown in FIG. 42 has a smaller amount of data than the octree shown in FIG. 40. That is, the octree shown in FIG. 42 has a smaller number of bits after binary serialization than the octree shown in FIG. 42. Here, leaf 1 and leaf 2 shown in FIG. 40 will be represented by leaf 1 shown in FIG. 41. That is, the information that leaf 1 and leaf 2 shown in FIG. 40 are at different positions is lost.
[0385] FIG. 43 is a diagram showing the volume corresponding to the octree shown in FIG. 42. VXL1 and VXL2 shown in FIG. 39 correspond to VXL12 shown in FIG. 43. In this case, the three-dimensional data encoding device 1300 generates the color information of VXL12 shown in FIG. 43 from the color information of VXL1 and VXL2 shown in FIG. 39. For example, the three-dimensional data encoding device 1300 calculates the average value, median value, weighted average value, etc. of the color information of VXL1 and VXL2 as the color information of VXL12. In this way, the three-dimensional data encoding device 1300 may control the reduction of the amount of data by changing the depth of the octree.
[0386] The three-dimensional data encoding device 1300 may set the depth information of the octree in any unit of world unit, space unit, or volume unit. Also, in this case, the three-dimensional data encoding device 1300 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 for the depth information in all worlds, spaces, and volumes with different times. In this case, the three-dimensional data encoding device 1300 may add the depth information to the header information that manages the worlds of all times.
[0387] When the voxel contains color information, the conversion unit 1303 applies a frequency conversion such as an orthogonal conversion to the prediction residual of the color information of the voxels in the volume. For example, the conversion unit 1303 creates a one-dimensional array by scanning the prediction residuals in a certain scan order. Then, the conversion unit 1303 converts the created one-dimensional array into the frequency domain by applying a one-dimensional orthogonal conversion to the one-dimensional array. As a result, when the values of the prediction residuals in the volume are close, the values of the low-frequency components become large and the values of the high-frequency components become small. Therefore, the quantization unit 1304 can more efficiently reduce the amount of code.
[0388] Also, the conversion unit 1303 may use an orthogonal conversion of two or more dimensions instead of one dimension. For example, the conversion unit 1303 maps the prediction residuals to a two-dimensional array in a certain scan order and applies a two-dimensional orthogonal conversion to the obtained two-dimensional array. Also, the conversion unit 1303 may select the orthogonal conversion method to be used from a plurality of orthogonal conversion methods. In this case, the three-dimensional data encoding device 1300 adds information indicating which orthogonal conversion method is used to the bitstream. Also, the conversion unit 1303 may select the orthogonal conversion method to be used from a plurality of orthogonal conversion methods of different dimensions. In this case, the three-dimensional data encoding device 1300 adds to the bitstream which dimensional orthogonal conversion method is used.
[0389] For example, the conversion unit 1303 aligns the scan order of the prediction residual with the scan order (such as breadth-first or depth-first) in the octree within the volume. Thereby, since it is not necessary to add information indicating the scan order of the prediction residual to the bitstream, overhead can be reduced. Further, the conversion unit 1303 may apply a scan order different from the scan order of the octree. In this case, the three-dimensional data encoding device 1300 adds information indicating the scan order of the prediction residual to the bitstream. Thereby, the three-dimensional data encoding device 1300 can efficiently encode the prediction residual. Further, the three-dimensional data encoding device 1300 may add information (such as a flag) indicating whether to apply the scan order of the octree to the bitstream, and when not applying the scan order of the octree, add information indicating the scan order of the prediction residual to the bitstream.
[0390] The conversion unit 1303 may convert not only the prediction residual of the color information but also other attribute information that the voxel has. For example, the conversion unit 1303 may convert and encode information such as reflectance obtained when acquiring a point cloud with LiDAR or the like.
[0391] When the space does not have attribute information such as color information, the conversion unit 1303 may skip the process. Further, the three-dimensional data encoding device 1300 may add information (flag) indicating whether to skip the process of the conversion unit 1303 to the bitstream.
[0392] The quantization unit 1304 generates quantization coefficients by performing quantization on the frequency components of the prediction residual generated by the conversion unit 1303 using quantization control parameters. As a result, the amount of information is reduced. The generated quantization coefficients are output to the entropy encoding unit 1313. The quantization unit 1304 may control the quantization control parameters in units of world, space, or volume. In that case, the three-dimensional data encoding device 1300 adds the quantization control parameters to respective header information and the like. Further, the quantization unit 1304 may perform quantization control with different weights for each frequency component of the prediction residual. For example, the quantization unit 1304 may perform fine quantization on low-frequency components and coarse quantization on high-frequency components. In this case, the three-dimensional data encoding device 1300 may add a parameter representing the weight of each frequency component to the header.
[0393] When the space does not have attribute information such as color information, the quantization unit 1304 may skip the process. Further, the three-dimensional data encoding device 1300 may add information (flag) indicating whether to skip the process of the quantization unit 1304 to the bit stream.
[0394] The inverse quantization unit 1305 generates inverse quantization coefficients of the prediction residual by performing inverse quantization on the quantization coefficients generated by the quantization unit 1304 using quantization control parameters, and outputs the generated inverse quantization coefficients to the inverse conversion unit 1306.
[0395] The inverse conversion unit 1306 generates a prediction residual after inverse conversion application by applying inverse conversion to the inverse quantization coefficients generated by the inverse quantization unit 1305. Since this prediction residual after inverse conversion application is the prediction residual generated after quantization, it does not necessarily completely match the prediction residual output by the conversion unit 1303.
[0396] The addition unit 1307 adds the inverse-transformed prediction residual generated by the inverse transformation unit 1306 and the prediction volume generated by intra prediction or inter prediction (to be described later) used for generating the prediction residual before quantization to generate a reconstructed volume. This reconstructed volume is stored in the reference volume memory 1308 or the reference space memory 1310.
[0397] The intra prediction unit 1309 generates a prediction volume of the volume to be encoded using the attribute information of the adjacent volume stored in the reference volume memory 1308. The attribute information includes the color information or reflectance of the voxel. The intra prediction unit 1309 generates a predicted value of the color information or reflectance of the volume to be encoded.
[0398] FIG. 44 is a diagram for explaining the operation of the intra prediction unit 1309. For example, the intra prediction unit 1309 generates a predicted volume of the volume to be encoded (volume idx = 3) shown in FIG. 44 from an adjacent volume (volume idx = 0). Here, the volume idx is identifier information added to the volume in the space, and different values are assigned to each volume. The assignment order of the volume idx may be the same as the encoding order or different from the encoding order. For example, the intra prediction unit 1309 uses the average value of the color information of the voxels included in the adjacent volume volume idx = 0 as the predicted value of the color information of the volume to be encoded shown in FIG. 44. In this case, a prediction residual is generated by subtracting the predicted value of the color information from the color information of each voxel included in the volume to be encoded. The processing after the conversion unit 1303 is performed on this prediction residual. Also, in this case, the three-dimensional data encoding device 1300 adds adjacent volume information and prediction mode information to the bitstream. Here, the adjacent volume information is information indicating the adjacent volume used for prediction, for example, indicating the volume idx of the adjacent volume used for prediction. Also, the prediction mode information indicates the mode used for generating the predicted volume. The mode is, for example, an average value mode for generating a predicted value from the average value of the voxels in the adjacent volume, or an intermediate value mode for generating a predicted value from the intermediate value of the voxels in the adjacent volume, etc.
[0399] The intra prediction unit 1309 may generate a predicted volume from a plurality of adjacent volumes. For example, in the configuration shown in FIG. 44, the intra prediction unit 1309 generates a predicted volume 0 from the volume of volume idx = 0 and generates a predicted volume 1 from the volume of volume idx = 1. Then, the intra prediction unit 1309 generates the average of the predicted volume 0 and the predicted volume 1 as the final predicted volume. In this case, the three-dimensional data encoding device 1300 may add the plurality of volume idxs of the plurality of volumes used for generating the predicted volume to the bitstream.
[0400] FIG. 45 is a diagram schematically showing the inter prediction process according to the present embodiment. The inter prediction unit 1311 encodes (inter predicts) the space (SPC) at a certain time T_Cur using the encoded spaces at different times T_LX. In this case, the inter prediction unit 1311 performs the encoding process by applying rotation and translation processes to the encoded spaces at different times T_LX.
[0401] Further, the three-dimensional data encoding device 1300 adds RT information related to the rotation and translation processes applied to the spaces at different times T_LX to the bit stream. The different times T_LX are, for example, the time T_L0 before the certain time T_Cur. At this time, the three-dimensional data encoding device 1300 may add the RT information RT_L0 related to the rotation and translation processes applied to the space at time T_L0 to the bit stream.
[0402] Or, the different times T_LX are, for example, the time T_L1 after the certain time T_Cur. At this time, the three-dimensional data encoding device 1300 may add the RT information RT_L1 related to the rotation and translation processes applied to the space at time T_L1 to the bit stream.
[0403] Or, the inter prediction unit 1311 performs encoding (dual prediction) by referring to the spaces at both different times T_L0 and T_L1. In this case, the three-dimensional data encoding device 1300 may add both the RT information RT_L0 and RT_L1 related to the rotation and translation applied to each space to the bit stream.
[0404] Note that in the above, T_L0 is the time before T_Cur and T_L1 is the time after T_Cur, but it is not necessarily limited to this. For example, both T_L0 and T_L1 may be times before T_Cur. Or, both T_L0 and T_L1 may be times after T_Cur.
[0405] In addition, when the three-dimensional data encoding device 1300 performs encoding with reference to spaces at a plurality of different times, RT information related to rotation and translation applied to each space may be added to the bit stream. For example, the three-dimensional data encoding device 1300 manages a plurality of encoded spaces to be referenced with two reference lists (L0 list and L1 list). When the first reference space in the L0 list is L0R0, the second reference space in the L0 list is L0R1, the first reference space in the L1 list is L1R0, and the second reference space in the L1 list is L1R1, the three-dimensional data encoding device 1300 adds the RT information RT_L0R0 of L0R0, the RT information RT_L0R1 of L0R1, the RT information RT_L1R0 of L1R0, and the RT information RT_L1R1 of L1R1 to the bit stream. For example, the three-dimensional data encoding device 1300 adds these RT information to the header of the bit stream or the like.
[0406] In addition, when the three-dimensional data encoding device 1300 performs encoding with reference to reference spaces at a plurality of different times, it determines whether to apply rotation and translation for each reference space. At that time, the three-dimensional data encoding device 1300 may add information (such as an RT application flag) indicating whether rotation and translation have been applied for each reference space to the header information of the bit stream or the like. For example, the three-dimensional data encoding device 1300 calculates RT information and an ICP error value for each reference space referenced from the space to be encoded using the ICP (Interactive Closest Point) algorithm. When the ICP error value is equal to or less than a predetermined constant value, the three-dimensional data encoding device 1300 determines that there is no need to perform rotation and translation and sets the RT application flag to off. On the other hand, when the ICP error value is greater than the above constant value, the three-dimensional data encoding device 1300 sets the RT application flag to on and adds the RT information to the bit stream.
[0407] FIG. 46 is a diagram showing a syntax example for adding RT information and an RT application flag to a header. Note that the number of bits assigned to each syntax may be determined within the range that the syntax can take. For example, if the number of reference spaces included in the reference list L0 is 8, 3 bits may be assigned to MaxRefSpc_l0. The number of bits to be assigned may be variable according to the values that each syntax can take, or may be fixed regardless of the values that can be taken. When the number of bits to be assigned is fixed, the three-dimensional data encoding device 1300 may add the fixed number of bits to other header information.
[0408] Here, as shown in FIG. 46, MaxRefSpc_l0 indicates the number of reference spaces included in the reference list L0. RT_flag_l0[i] is the RT application flag for the reference space i in the reference list L0. When RT_flag_l0[i] is 1, rotation and translation are applied to the reference space i. When RT_flag_l0[i] is 0, rotation and translation are not applied to the reference space i.
[0409] R_l0[i] and T_l0[i] are the RT information for the reference space i in the reference list L0. R_l0[i] is the rotation information for the reference space i in the reference list L0. The rotation information indicates the content of the applied rotation process, and is, for example, a rotation matrix or a quaternion. T_l0[i] is the translation information for the reference space i in the reference list L0. The translation information indicates the content of the applied translation process, and is, for example, a translation vector.
[0410] MaxRefSpc_l1 indicates the number of reference spaces included in the reference list L1. RT_flag_l1[i] is the RT application flag for the reference space i in the reference list L1. When RT_flag_l1[i] is 1, rotation and translation are applied to the reference space i. When RT_flag_l1[i] is 0, rotation and translation are not applied to the reference space i.
[0411] R_l1[i] and T_l1[i] are the RT information of reference space i in reference list L1. R_l1[i] is the rotation information of reference space i in reference list L1. The rotation information indicates the content of the applied rotation process, for example, a rotation matrix, or a quaternion, etc. T_l1[i] is the translation information of reference space i in reference list L1. The translation information indicates the content of the applied translation process, for example, a translation vector, etc.
[0412] The inter prediction unit 1311 generates a predicted volume of the volume to be encoded using the information of the encoded reference space stored in the reference space memory 1310. As described above, before generating the predicted volume of the volume to be encoded, the inter prediction unit 1311 obtains RT information using the ICP (Interactive Closest Point) algorithm in the encoding target space and the reference space in order to approximate the overall positional relationship between the encoding target space and the reference space. Then, the inter prediction unit 1311 obtains reference space B by applying rotation and translation processes to the reference space using the obtained RT information. After that, the inter prediction unit 1311 generates the predicted volume of the volume to be encoded in the encoding target space using the information in reference space B. Here, the three-dimensional data encoding device 1300 adds the RT information used to obtain reference space B to the header information of the encoding target space, etc.
[0413] In this way, the inter prediction unit 1311 can improve the accuracy of the prediction volume by applying rotation and translation processing to the reference space to approximate the overall positional relationship between the encoding target space and the reference space, and then generating the prediction volume using the information of the reference space. In addition, since the prediction residual can be suppressed, the amount of code can be reduced. Here, an example of performing ICP using the encoding target space and the reference space is shown, but it is not necessarily limited to this. For example, in order to reduce the processing amount, the inter prediction unit 1311 may obtain the RT information by performing ICP using at least one of the encoding target space with the voxel or point cloud number decimated and the reference space with the voxel or point cloud number decimated.
[0414] Further, when the ICP error value obtained as a result of ICP by the inter prediction unit 1311 is smaller than a predetermined first threshold value, that is, for example, when the positional relationship between the encoding target space and the reference space is close, the inter prediction unit 1311 determines that rotation and translation processing are not necessary and may not perform rotation and translation. In this case, the three-dimensional data encoding device 1300 may suppress the overhead by not adding the RT information to the bit stream.
[0415] Further, when the ICP error value is larger than a predetermined second threshold value, the inter prediction unit 1311 determines that the shape change between the spaces is large, and may apply intra prediction to all volumes of the encoding target space. Hereinafter, the space to which intra prediction is applied is referred to as an intra space. The second threshold value is a value larger than the first threshold value. Further, any method may be applied as long as it is a method for obtaining RT information from two voxel sets or two point cloud sets, not limited to ICP.
[0416] Also, when the three-dimensional data includes attribute information such as shape or color, the inter-prediction unit 1311 searches for, as the prediction volume of the encoding target volume within the encoding target space, for example, the volume within the reference space that has the closest attribute information such as shape or color to the encoding target volume. Also, this reference space is, for example, the reference space after the above-described rotation and translation processes have been performed. The inter-prediction unit 1311 generates a prediction volume from the volume (reference volume) obtained by the search. FIG. 47 is a diagram for explaining the operation of generating the prediction volume. When the inter-prediction unit 1311 encodes the encoding target volume (volume idx = 0) shown in FIG. 47 using inter-prediction, while sequentially scanning the reference volumes within the reference space, it searches for the volume with the smallest prediction residual, which is the difference between the encoding target volume and the reference volume. The inter-prediction unit 1311 selects the volume with the smallest prediction residual as the prediction volume. The prediction residual between the encoding target volume and the prediction volume is encoded by the processing after the conversion unit 1303. Here, the prediction residual is the difference between the attribute information of the encoding target volume and the attribute information of the prediction volume. Also, the three-dimensional data encoding device 1300 adds the volume idx of the reference volume within the reference space referred to as the prediction volume to the header of the bit stream or the like.
[0417] In the example shown in FIG. 47, the reference volume with volume idx = 4 in the reference space L0R0 is selected as the prediction volume of the encoding target volume. Then, the prediction residual between the encoding target volume and the reference volume, and the reference volume idx = 4 are encoded and added to the bit stream.
[0418] Note that, although an example of generating a prediction volume for attribute information has been described here, the same processing may be performed for the prediction volume of position information.
[0419] The prediction control unit 1312 controls whether to encode the volume to be encoded using intra prediction or inter prediction. Here, a mode including intra prediction and inter prediction is called a prediction mode. For example, the prediction control unit 1312 calculates, as evaluation values, the prediction residual when the volume to be encoded is predicted by intra prediction and the prediction residual when it is predicted by inter prediction, and selects the prediction mode with the smaller evaluation value. Note that the prediction control unit 1312 may calculate the actual code amount by applying orthogonal transformation, quantization, and entropy encoding to the prediction residual of intra prediction and the prediction residual of inter prediction, respectively, and select the prediction mode using the calculated code amount as the evaluation value. Also, overhead information other than the prediction residual (such as reference volume idx information) may be added to the evaluation value. Further, if it is determined in advance that the encoding target space is encoded in the intra space, the prediction control unit 1312 may always select intra prediction.
[0420] The entropy encoding unit 1313 generates an encoded signal (encoded bit stream) by performing variable length encoding on the quantized coefficients that are the input from the quantization unit 1304. Specifically, the entropy encoding unit 1313, for example, binarizes the quantized coefficients and performs arithmetic encoding on the obtained binary signal.
[0421] Next, a three-dimensional data decoding device that decodes the encoded signal generated by the three-dimensional data encoding device 1300 will be described. FIG. 48 is a block diagram of the three-dimensional data decoding device 1400 according to the present embodiment. This three-dimensional data decoding device 1400 includes an entropy decoding unit 1401, an inverse quantization unit 1402, an inverse transformation unit 1403, an addition unit 1404, a reference volume memory 1405, an intra prediction unit 1406, a reference space memory 1407, an inter prediction unit 1408, and a prediction control unit 1409.
[0422] The entropy decoding unit 1401 performs variable length decoding on the encoded signal (encoded bit stream). For example, the entropy decoding unit 1401 performs arithmetic decoding on the encoded signal to generate a binary signal, and generates quantized coefficients from the generated binary signal.
[0423] The inverse quantization unit 1402 generates inverse quantization coefficients by inverse quantizing the quantization coefficients input from the entropy decoding unit 1401 using the quantization parameters added to a bit stream or the like.
[0424] The inverse transform unit 1403 generates a prediction residual by inversely transforming the inverse quantization coefficients input from the inverse quantization unit 1402. For example, the inverse transform unit 1403 generates a prediction residual by inversely orthogonally transforming the inverse quantization coefficients based on the information added to the bit stream.
[0425] The addition unit 1404 adds the prediction residual generated by the inverse transform unit 1403 and the predicted volume generated by intra prediction or inter prediction to generate a reconstructed volume. This reconstructed volume is output as decoded three-dimensional data and stored in the reference volume memory 1405 or the reference space memory 1407.
[0426] The intra prediction unit 1406 generates a predicted volume by intra prediction using the reference volume in the reference volume memory 1405 and the information added to the bit stream. Specifically, the intra prediction unit 1406 acquires the adjacent volume information (for example, volume idx) added to the bit stream and the prediction mode information, and generates a predicted volume in the mode indicated by the prediction mode information using the adjacent volume indicated by the adjacent volume information. Note that the details of these processes are the same as the processes by the intra prediction unit 1309 described above, except that the information given to the bit stream is used.
[0427] The inter prediction unit 1408 generates a prediction volume by inter prediction using the reference space in the reference space memory 1407 and the information added to the bitstream. Specifically, the inter prediction unit 1408 applies rotation and translation processing to the reference space using the RT information for each reference space added to the bitstream, and generates a prediction volume using the reference space after the application. When the RT application flag for each reference space exists in the bitstream, the inter prediction unit 1408 applies rotation and translation processing to the reference space according to the RT application flag. The details of these processes are the same as those by the inter prediction unit 1311 described above, except that the information given to the bitstream is used.
[0428] The prediction control unit 1409 controls whether to decode the volume to be decoded by intra prediction or inter prediction. For example, the prediction control unit 1409 selects intra prediction or inter prediction according to the information indicating the prediction mode to be used, which is added to the bitstream. When it is determined in advance that the space to be decoded is decoded in the intra space, the prediction control unit 1409 may always select intra prediction.
[0429] Hereinafter, modifications of this embodiment will be described. In this embodiment, an example in which rotation and translation are applied in space units has been described, but rotation and translation may be applied in finer units. For example, the three-dimensional data encoding device 1300 may divide the space into sub-spaces and apply rotation and translation in sub-space units. In this case, the three-dimensional data encoding device 1300 generates RT information for each sub-space and adds the generated RT information to the header of the bit stream or the like. Further, the three-dimensional data encoding device 1300 may apply rotation and translation in volume units which are encoding units. In this case, the three-dimensional data encoding device 1300 generates RT information in encoding volume units and adds the generated RT information to the header of the bit stream or the like. Furthermore, the above may be combined. That is, the three-dimensional data encoding device 1300 may apply rotation and translation in large units and then apply rotation and translation in finer units. For example, the three-dimensional data encoding device 1300 may apply rotation and translation in space units and apply different rotations and translations to each of a plurality of volumes included in the obtained space.
[0430] Also, in this embodiment, an example in which rotation and translation are applied to the reference space has been described, but it is not necessarily limited to this. For example, the three-dimensional data encoding device 1300 may apply, for example, scale processing to change the size of the three-dimensional data. Further, the three-dimensional data encoding device 1300 may apply any one or two of rotation, translation, and scale. Also, when applying processing in different units in multiple stages as described above, the types of processing applied to each unit may be different. For example, rotation and translation may be applied in space units, and translation may be applied in volume units.
[0431] Note that these modifications can be similarly applied to the three-dimensional data decoding device 1400.
[0432] As described above, the three-dimensional data encoding device 1300 according to the present embodiment performs the following processes. FIG. 48 is a flowchart of the inter-prediction process by the three-dimensional data encoding device 1300.
[0433] First, the three-dimensional data encoding device 1300 generates prediction position information (e.g., a prediction volume) using the position information of the three-dimensional points included in the reference three-dimensional data (e.g., a reference space) at a time different from the target three-dimensional data (e.g., an encoding target space) (S1301). Specifically, the three-dimensional data encoding device 1300 generates the prediction position information by applying rotation and translation processes to the position information of the three-dimensional points included in the reference three-dimensional data.
[0434] Note that the three-dimensional data encoding device 1300 may perform the rotation and translation processes in a first unit (e.g., a space) and generate the prediction position information in a second unit (e.g., a volume) finer than the first unit. For example, the three-dimensional data encoding device 1300 searches for a volume in the plurality of volumes included in the reference space after the rotation and translation processes, where the difference in position information from the encoding target volume included in the encoding target space is minimized, and uses the obtained volume as the prediction volume. Note that the three-dimensional data encoding device 1300 may perform the rotation and translation processes and the generation of the prediction position information in the same unit.
[0435] Further, the three-dimensional data encoding device 1300 may apply a first rotation and translation process to the position information of the three-dimensional points included in the reference three-dimensional data in a first unit (e.g., a space), and apply a second rotation and translation process to the position information of the three-dimensional points obtained by the first rotation and translation process in a second unit (e.g., a volume) finer than the first unit to generate the prediction position information.
[0436] Here, the position information and predicted position information of the three-dimensional points are represented in an octree structure, for example, as shown in FIG. 41. For example, the position information and predicted position information of the three-dimensional points are represented in a scan order that prioritizes the width among the depth and width in the octree structure. Alternatively, the position information and predicted position information of the three-dimensional points are represented in a scan order that prioritizes the depth among the depth and width in the octree structure.
[0437] Also, as shown in FIG. 46, the three-dimensional data encoding device 1300 encodes an RT application flag indicating whether to apply rotation and translation processing to the position information of the three-dimensional points included in the reference three-dimensional data. That is, the three-dimensional data encoding device 1300 generates an encoded signal (encoded bit stream) including the RT application flag. Further, the three-dimensional data encoding device 1300 encodes RT information indicating the details of the rotation and translation processing. That is, the three-dimensional data encoding device 1300 generates an encoded signal (encoded bit stream) including the RT information. Note that the three-dimensional data encoding device 1300 encodes the RT information when it is indicated by the RT application flag that rotation and translation processing are to be applied, and may not encode the RT information when it is indicated by the RT application flag that rotation and translation processing are not to be applied.
[0438] Also, the three-dimensional data includes, for example, the position information of the three-dimensional points and the attribute information (such as color information) of each three-dimensional point. The three-dimensional data encoding device 1300 generates predicted attribute information using the attribute information of the three-dimensional points included in the reference three-dimensional data (S1302).
[0439] Next, the three-dimensional data encoding device 1300 encodes the position information of the three-dimensional points included in the target three-dimensional data using the predicted position information. For example, as shown in FIG. 38, the three-dimensional data encoding device 1300 calculates differential position information that is the difference between the position information of the three-dimensional points included in the target three-dimensional data and the predicted position information (S1303).
[0440] Further, the three-dimensional data encoding device 1300 encodes the attribute information of the three-dimensional points included in the target three-dimensional data using the predicted attribute information. For example, the three-dimensional data encoding device 1300 calculates the differential attribute information that is the difference between the attribute information of the three-dimensional points included in the target three-dimensional data and the predicted attribute information (S1304). Next, the three-dimensional data encoding device 1300 performs conversion and quantization on the calculated differential attribute information (S1305).
[0441] Finally, the three-dimensional data encoding device 1300 encodes the differential position information and the quantized differential attribute information (e.g., entropy encoding) (S1306). That is, the three-dimensional data encoding device 1300 generates an encoded signal (encoded bit stream) including the differential position information and the differential attribute information.
[0442] Note that when the attribute information is not included in the three-dimensional data, the three-dimensional data encoding device 1300 does not have to perform steps S1302, S1304, and S1305. Further, the three-dimensional data encoding device 1300 may perform only one of the encoding of the position information of the three-dimensional points and the encoding of the attribute information of the three-dimensional points.
[0443] Also, the order of the processes shown in FIG. 49 is an example and is not limited thereto. For example, since the processes for the position information (S1301, S1303) and the processes for the attribute information (S1302, S1304, S1305) are independent of each other, they may be performed in any order or a part of them may be processed in parallel.
[0444] As described above, the three-dimensional data encoding device 1300 in the present embodiment generates predicted position information using the position information of the three-dimensional points included in the reference three-dimensional data at a time different from the target three-dimensional data, and encodes the differential position information that is the difference between the position information of the three-dimensional points included in the target three-dimensional data and the predicted position information. Thereby, the data amount of the encoded signal can be reduced, and thus the encoding efficiency can be improved.
[0445] In addition, the three-dimensional data encoding device 1300 according to the present embodiment generates predicted attribute information using the attribute information of the three-dimensional points included in the reference three-dimensional data, and encodes the differential attribute information, which is the difference between the attribute information of the three-dimensional points included in the target three-dimensional data and the predicted attribute information. As a result, the data amount of the encoded signal can be reduced, so the encoding efficiency can be improved.
[0446] For example, the three-dimensional data encoding device 1300 includes a processor and a memory, and the processor performs the above processing using the memory.
[0447] FIG. 48 is a flowchart of the inter prediction process by the three-dimensional data decoding device 1400.
[0448] First, the three-dimensional data decoding device 1400 decodes (for example, entropy decodes) the differential position information and the differential attribute information from the encoded signal (encoded bit stream) (S1401).
[0449] In addition, the three-dimensional data decoding device 1400 decodes an RT application flag indicating whether to apply rotation and translation processing to the position information of the three-dimensional points included in the reference three-dimensional data from the encoded signal. Further, the three-dimensional data decoding device 1400 decodes RT information indicating the content of the rotation and translation processing. Note that the three-dimensional data decoding device 1400 may decode the RT information when it is indicated by the RT application flag that the rotation and translation processing is to be applied, and may not decode the RT information when it is indicated by the RT application flag that the rotation and translation processing is not to be applied.
[0450] Next, the three-dimensional data decoding device 1400 performs inverse quantization and inverse transformation on the decoded differential attribute information (S1402).
[0451] Next, the three-dimensional data decoding device 1400 generates predicted position information (e.g., a predicted volume) using the position information of three-dimensional points included in reference three-dimensional data (e.g., a reference space) at a time different from the target three-dimensional data (e.g., a decoding target space) (S1403). Specifically, the three-dimensional data decoding device 1400 generates the predicted position information by applying rotation and translation processing to the position information of the three-dimensional points included in the reference three-dimensional data.
[0452] More specifically, when it is indicated by the RT application flag that rotation and translation processing are to be applied, the three-dimensional data decoding device 1400 applies rotation and translation processing to the position information of the three-dimensional points included in the reference three-dimensional data indicated by the RT information. On the other hand, when it is indicated by the RT application flag that rotation and translation processing are not to be applied, the three-dimensional data decoding device 1400 does not apply rotation and translation processing to the position information of the three-dimensional points included in the reference three-dimensional data.
[0453] Note that the three-dimensional data decoding device 1400 may perform rotation and translation processing in a first unit (e.g., a space) and generate the predicted position information in a second unit (e.g., a volume) finer than the first unit. Note that the three-dimensional data decoding device 1400 may perform rotation and translation processing and generation of the predicted position information in the same unit.
[0454] Also, the three-dimensional data decoding device 1400 may apply first rotation and translation processing to the position information of the three-dimensional points included in the reference three-dimensional data in a first unit (e.g., a space), and apply second rotation and translation processing to the position information of the three-dimensional points obtained by the first rotation and translation processing in a second unit (e.g., a volume) finer than the first unit to generate the predicted position information.
[0455] Here, the position information and predicted position information of the three-dimensional points are represented in an octree structure, for example, as shown in FIG. 41. For example, the position information and predicted position information of the three-dimensional points are represented in a scan order that prioritizes the width among the depth and width in the octree structure. Alternatively, the position information and predicted position information of the three-dimensional points are represented in a scan order that prioritizes the depth among the depth and width in the octree structure.
[0456] The three-dimensional data decoding device 1400 generates predicted attribute information using the attribute information of the three-dimensional points included in the reference three-dimensional data (S1404).
[0457] Next, the three-dimensional data decoding device 1400 restores the position information of the three-dimensional points included in the target three-dimensional data by decoding the encoded position information included in the encoded signal using the predicted position information. Here, the encoded position information is, for example, differential position information, and the three-dimensional data decoding device 1400 restores the position information of the three-dimensional points included in the target three-dimensional data by adding the differential position information and the predicted position information (S1405).
[0458] Further, the three-dimensional data decoding device 1400 restores the attribute information of the three-dimensional points included in the target three-dimensional data by decoding the encoded attribute information included in the encoded signal using the predicted attribute information. Here, the encoded attribute information is, for example, differential attribute information, and the three-dimensional data decoding device 1400 restores the attribute information of the three-dimensional points included in the target three-dimensional data by adding the differential attribute information and the predicted attribute information (S1406).
[0459] Note that when the attribute information is not included in the three-dimensional data, the three-dimensional data decoding device 1400 may not perform steps S1402, S1404, and S1406. Further, the three-dimensional data decoding device 1400 may perform only one of the decoding of the position information of the three-dimensional points and the decoding of the attribute information of the three-dimensional points.
[0460] Also, the order of the processes shown in FIG. 50 is an example and is not limited thereto. For example, since the processes for position information (S1403, S1405) and the processes for attribute information (S1402, S1404, S1406) are independent of each other, they may be performed in any order or some of them may be processed in parallel.
[0461] (Embodiment 8) The information of the three-dimensional point cloud includes position information (geometry) and attribute information (attribute). The position information includes coordinates (x coordinate, y coordinate, z coordinate) with respect to a certain point. When encoding the position information, instead of directly encoding the coordinates of each three-dimensional point, a method is used in which the position of each three-dimensional point is represented in a quadtree representation and the information of the quadtree is encoded to reduce the amount of code.
[0462] On the other hand, the attribute information includes information indicating color information (RGB, YUV, etc.), reflectance, and normal vector of each three-dimensional point. For example, the three-dimensional data encoding device can encode the attribute information using an encoding method different from that for the position information.
[0463] In this embodiment, an encoding method for the attribute information will be described. In this embodiment, an integer value is used as the value of the attribute information for description. For example, when each color component of the color information RGB or YUV has 8-bit accuracy, each color component takes an integer value from 0 to 255. When the value of the reflectance has 10-bit accuracy, the value of the reflectance takes an integer value from 0 to 1023. Note that when the bit accuracy of the attribute information is fractional accuracy in the three-dimensional data encoding device, the value may be multiplied by a scale value and then rounded to an integer value so that the value of the attribute information becomes an integer value. Note that the three-dimensional data encoding device may add this scale value to the header of the bit stream or the like.
[0464] As a method for encoding the attribute information of three-dimensional points, it is conceivable to calculate the predicted value of the attribute information of the three-dimensional points and encode the difference (prediction residual) between the value of the original attribute information and the predicted value. For example, when the value of the attribute information of the three-dimensional point p is Ap and the predicted value is Pp, the three-dimensional data encoding device encodes the absolute value of the difference Diffp = |Ap - Pp|. In this case, if the predicted value Pp can be generated with high precision, the value of the absolute value of the difference Diffp becomes small. Therefore, for example, the amount of code can be reduced by entropy-encoding the absolute value of the difference Diffp using a coding table in which the smaller the value, the smaller the number of generated bits.
[0465] As a method for generating the predicted value of the attribute information, it is conceivable to use the attribute information of a reference three-dimensional point, which is another three-dimensional point around the target three-dimensional point to be encoded. Here, the reference three-dimensional point is a three-dimensional point within a predetermined distance range from the target three-dimensional point. For example, when there exist a target three-dimensional point p = (x1, y1, z1) and a three-dimensional point q = (x2, y2, z2), the three-dimensional data encoding device calculates the Euclidean distance d(p, q) between the three-dimensional point p and the three-dimensional point q shown in (Equation A1).
[0466]
Equation
[0467] When the Euclidean distance d(p, q) is smaller than a predetermined threshold THd, the three-dimensional data encoding device determines that the position of the three-dimensional point q is close to the position of the target three-dimensional point p, and determines to use the value of the attribute information of the three-dimensional point q to generate the predicted value of the attribute information of the target three-dimensional point p. Note that the distance calculation method may be another method, for example, the Mahalanobis distance or the like may be used. Also, the three-dimensional data encoding device may determine not to use three-dimensional points outside a predetermined distance range from the target three-dimensional point for the prediction process. For example, when there is a three-dimensional point r and the distance d(p, r) between the target three-dimensional p and the three-dimensional point r is equal to or greater than the threshold THd, the three-dimensional data encoding device may determine not to use the three-dimensional point r for the prediction. Note that the three-dimensional data encoding device may add information indicating the threshold THd to the header of the bit stream or the like.
[0468] FIG. 51 is a diagram showing an example of three-dimensional points. In this example, the distance d(p, q) between the target three-dimensional point p and the three-dimensional point q is smaller than the threshold THd. Therefore, the three-dimensional data encoding device determines that the three-dimensional point q is the reference three-dimensional point of the target three-dimensional point p, and determines to use the value of the attribute information Aq of the three-dimensional point q to generate the predicted value Pp of the attribute information Ap of the target three-dimensional p.
[0469] On the other hand, the distance d(p, r) between the target three-dimensional point p and the three-dimensional point r is equal to or greater than the threshold THd. Therefore, the three-dimensional data encoding device determines that the three-dimensional point r is not the reference three-dimensional point of the target three-dimensional point p, and determines not to use the value of the attribute information Ar of the three-dimensional point r to generate the predicted value Pp of the attribute information Ap of the target three-dimensional point p.
[0470] Also, when the three-dimensional data encoding device encodes the attribute information of the target three-dimensional point using the predicted value, it uses the three-dimensional point whose attribute information has already been encoded and decoded as the reference three-dimensional point. Similarly, when the three-dimensional data decoding device decodes the attribute information of the target three-dimensional point to be decoded using the predicted value, it uses the three-dimensional point whose attribute information has already been decoded as the reference three-dimensional point. Thereby, the same predicted value can 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.
[0471] Also, when encoding the attribute information of three-dimensional points, it is conceivable to classify each three-dimensional point into a plurality of levels using the position information of the three-dimensional points and then perform encoding. Here, each classified level is called LoD (Level of Detail). The method for generating LoD will be described with reference to FIG. 52.
[0472] 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 a point a1 whose distance from the point a0 is greater than the threshold Thres_LoD[0] of LoD0 and assigns it to LoD0. Next, the three-dimensional data encoding device extracts a point a2 whose distance from the point a1 is greater than the threshold Thres_LoD[0] of LoD0 and assigns it to LoD0. In this way, the three-dimensional data encoding device constructs LoD0 such that the distance between each point within LoD0 is greater than the threshold Thres_LoD[0].
[0473] Next, the three-dimensional data encoding device selects a point b0 for which LoD has not yet been assigned and assigns it to LoD1. Next, the three-dimensional data encoding device extracts a point b1 whose distance from the point b0 is greater than the threshold Thres_LoD[1] of LoD1 and for which LoD has not yet been assigned and assigns it to LoD1. Next, the three-dimensional data encoding device extracts a point b2 whose distance from the point b1 is greater than the threshold Thres_LoD[1] of LoD1 and for which LoD has not yet been assigned and assigns it to LoD1. In this way, the three-dimensional data encoding device constructs LoD1 such that the distance between each point within LoD1 is greater than the threshold Thres_LoD[1].
[0474] Next, the three-dimensional data encoding device selects a point c0 for which the LoD has not yet been assigned and assigns it to LoD2. Next, the three-dimensional data encoding device extracts a point c1 whose distance from the point c0 is greater than the threshold Thres_LoD[2] of LoD2 and for which the LoD has not been assigned, and assigns it to LoD2. Next, the three-dimensional data encoding device extracts a point c2 whose distance from the point c1 is greater than the threshold Thres_LoD[2] of LoD2 and for which the LoD has not been assigned, and assigns it to LoD2. In this way, the three-dimensional data encoding device constructs LoD2 such that the distance between each point within LoD2 is greater than the threshold Thres_LoD[2]. For example, as shown in FIG. 53, the thresholds Thres_LoD[0], Thres_LoD[1], and Thres_LoD[2] for each LoD are set.
[0475] Also, the three-dimensional data encoding device may add information indicating the threshold of each LoD to the header of the bit stream or the like. For example, in the case of the example shown in FIG. 53, the three-dimensional data encoding device may add the thresholds Thres_LoD[0], Thres_LoD[1], and Thres_LoD[2] to the header.
[0476] Also, the three-dimensional data encoding device may assign all the three-dimensional points for which the LoD has not been assigned to the bottom layer of the LoD. In this case, the three-dimensional data encoding device can reduce the amount of code in the header by not adding the threshold of the bottom layer of the LoD to the header. For example, in the case of the example shown in FIG. 53, the three-dimensional data encoding device adds the thresholds Thres_LoD[0] and Thres_LoD[1] to the header and does not add Thres_LoD[2] to the header. In this case, the three-dimensional data decoding device may estimate the value of Thres_LoD[2] to be 0. Also, the three-dimensional data encoding device may add the number of layers of the LoD to the header. Thereby, the three-dimensional data decoding device can determine the bottom layer LoD using the number of layers of the LoD.
[0477] Also, by setting the threshold values of each layer of LoD to be larger for higher layers as shown in FIG. 53, the higher layer (the layer closer to LoD0) becomes a sparse point group with a larger distance between three-dimensional points, and the lower layer becomes a dense point group with a shorter distance between three-dimensional points. In the example shown in FIG. 53, LoD0 is the topmost layer.
[0478] Also, the method of selecting the initial three-dimensional points when setting each LoD may depend on the encoding order during position information encoding. For example, the three-dimensional data encoding device selects the three-dimensional point that was first encoded during position information encoding as the initial point a0 of LoD0, and based on the initial point a0, selects points a1 and a2 to form LoD0. Then, the three-dimensional data encoding device may select, as the initial point b0 of LoD1, the three-dimensional point among the three-dimensional points not belonging to LoD0 for which the position information was encoded earliest. That is, the three-dimensional data encoding device may select, as the initial point n0 of LoDn, the three-dimensional point among the three-dimensional points not belonging to the upper layer (LoD0 to LoDn - 1) of LoDn for which the position information was encoded earliest. Thereby, the three-dimensional data decoding device can configure the same LoD as during encoding by using the same initial point selection method during decoding, and thus can appropriately decode the bit stream. Specifically, the three-dimensional data decoding device selects, as the initial point n0 of LoDn, the three-dimensional point among the three-dimensional points not belonging to the upper layer of LoDn for which the position information was decoded earliest.
[0479] Hereinafter, a method of generating a predicted value of the attribute information of three-dimensional points using LoD information will be described. For example, when the three-dimensional data encoding device encodes in order from the three-dimensional points included in LoD0, it generates the target three-dimensional points included in LoD1 using the encoded and decoded (hereinafter, also simply referred to as "encoded") attribute information included in LoD0 and LoD1. In this way, the three-dimensional data encoding device generates a predicted value of the attribute information of the three-dimensional points included in LoDn using the encoded attribute information included in LoDn' (n' <= n). That is, the three-dimensional data encoding device does not use the attribute information of the three-dimensional points included in the lower layer of LoDn to calculate the predicted value of the attribute information of the three-dimensional points included in LoDn.
[0480] For example, the three-dimensional data encoding device generates a predicted value of the attribute information of a three-dimensional point by calculating the average of the attribute values of N or fewer three-dimensional points among the encoded three-dimensional points around the target three-dimensional point to be encoded. Further, the three-dimensional data encoding device may add the value of N to the header of the bitstream or the like. Note that the three-dimensional data encoding device may change the value of N for each three-dimensional point and add the value of N for each three-dimensional point. Thereby, since an appropriate N can be selected for each three-dimensional point, the accuracy of the predicted value can be improved. Thus, the prediction residual can be reduced. Further, the three-dimensional data encoding device may add the value of N to the header of the bitstream and fix the value of N within the bitstream. Thereby, since it is not necessary to encode or decode the value of N for each three-dimensional point, the processing amount can be reduced. Further, the three-dimensional data encoding device may separately encode the value of N for each LoD. Thereby, the encoding efficiency can be improved by selecting an appropriate N for each LoD.
[0481] Alternatively, the three-dimensional data encoding device may calculate a predicted value of the attribute information of a three-dimensional point by a weighted average value of the attribute information of N surrounding encoded three-dimensional points. For example, the three-dimensional data encoding device calculates weights using the distance information between the target three-dimensional point and each of the N surrounding three-dimensional points.
[0482] When the three-dimensional data encoding device separately encodes the value of N for each LoD, for example, the value of N is set larger for the upper layer of the LoD and smaller for the lower layer of the LoD. Since the distance between the three-dimensional points belonging to the upper layer of the LoD is farther, there is a possibility that the prediction accuracy can be improved by setting a larger value of N and selecting and averaging a plurality of surrounding three-dimensional points. Also, since the distance between the three-dimensional points belonging to the lower layer of the LoD is close, it is possible to perform efficient prediction while suppressing the processing amount of averaging by setting a smaller value of N.
[0483] FIG. 54 is a diagram showing an example of attribute information used for prediction values. As described above, the predicted value of the point P included in LoDN is generated using the encoded surrounding points P' included in LoDN’ (N’<=N). Here, the surrounding point P' is selected based on the distance from the point P. For example, the predicted value of the attribute information of the point b2 shown in FIG. 54 is generated using the attribute information of the points a0, a1, a2, b0, and b1.
[0484] According to the value of N described above, the selected surrounding points change. For example, when N = 5, a0, a1, a2, b0, and b1 are selected as the surrounding points of the point b2. When N = 4, a0, a1, a2, and b1 are selected based on the distance information.
[0485] The predicted value is calculated by a distance-dependent weighted average. For example, in the example shown in FIG. 54, the predicted value a2p of the point a2 is calculated by the weighted average of the attribute information of the points a0 and a1, as shown in (Equation A2) and (Equation A3). Note that Ai is the value of the attribute information of the point ai.
[0486]
Equation
[0487] Also, the predicted value b2p of the point b2 is calculated by the weighted average of the attribute information of the points a0, a1, a2, b0, and b1, as shown in (Equation A4) to (Equation A6). Note that Bi is the value of the attribute information of the point bi.
[0488]
Equation
[0489] Further, the three-dimensional data encoding device may calculate a difference value (prediction residual) between the value of the attribute information of the three-dimensional point and the predicted value generated from the surrounding points, and quantize the calculated prediction residual. For example, the three-dimensional data encoding device performs quantization by dividing the prediction residual by a quantization scale (also referred to as a quantization step). In this case, the smaller the quantization scale, the smaller the error (quantization error) that may occur due to quantization. Conversely, the larger the quantization scale, the larger the quantization error.
[0490] Note that the three-dimensional data encoding device may change the quantization scale used for each LoD. For example, the three-dimensional data encoding device makes the quantization scale smaller for higher layers and larger for lower layers. Since the value of the attribute information of the three-dimensional points belonging to the upper layer may be used as the predicted value of the attribute information of the three-dimensional points belonging to the lower layer, by making the quantization scale of the upper layer smaller and suppressing the quantization error that may occur in the upper layer, and improving the accuracy of the predicted value, the encoding efficiency can be improved. Note that the three-dimensional data encoding device may add the quantization scale used for each LoD to a header or the like. Thereby, the three-dimensional data decoding device can correctly decode the quantization scale, so that the bitstream can be appropriately decoded.
[0491] Further, the three-dimensional data encoding device may convert the signed integer value (signed quantization value), which is the predicted residual after quantization, into an unsigned integer value (unsigned quantization value). Thereby, when entropy encoding the prediction residual, it is not necessary to consider the occurrence of negative integers. Note that the three-dimensional data encoding device does not necessarily need to convert the signed integer value into an unsigned integer value. For example, the sign bit may be entropy encoded separately.
[0492] The prediction residual is calculated by subtracting the predicted value from the original value. For example, the prediction residual a2r of point a2 is calculated by subtracting the predicted value a2p of point a2 from the value A2 of the attribute information of point a2, as shown in (Equation A7). The prediction residual b2r of point b2 is calculated by subtracting the predicted value b2p of point b2 from the value B2 of the attribute information of point b2, as shown in (Equation A8).
[0493] a2r = A2 - a2p ···(Equation A7)
[0494] b2r = B2 - b2p ···(Equation A8)
[0495] Also, the prediction residual is quantized by being divided by QS (Quantization Step). For example, the quantized value a2q of point a2 is calculated by (Equation 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.
[0496] a2q = a2r / QS_LoD0 ···(Equation A9)
[0497] b2q = b2r / QS_LoD1 ···(Equation A10)
[0498] Also, the three-dimensional data encoding device converts the signed integer value, which is the above quantized value, into an unsigned integer value as follows. When the signed integer value a2q is less than 0, the three-dimensional data encoding device sets the unsigned integer value a2u to -1 - (2 × a2q). When the signed integer value a2q is 0 or more, the three-dimensional data encoding device sets the unsigned integer value a2u to 2 × a2q.
[0499] Similarly, when the signed integer value b2q is less than 0, the three-dimensional data encoding device sets the unsigned integer value b2u to -1 - (2 × b2q). When the signed integer value b2q is 0 or more, the three-dimensional data encoding device sets the unsigned integer value b2u to 2 × b2q.
[0500] Also, the three-dimensional data encoding device may encode the quantized prediction residual (unsigned integer value) by entropy encoding. For example, after binarizing the unsigned integer value, binary arithmetic coding may be applied.
[0501] In this case, the three-dimensional data encoding device may switch the binarization method according to the value of the prediction residual. For example, when the prediction residual pu is smaller than the threshold R_TH, the three-dimensional data encoding device binarizes the prediction residual pu with the number of fixed bits required to represent the threshold R_TH. Also, when the prediction residual pu is greater than or equal to the threshold R_TH, the three-dimensional data encoding device binarizes the binarized data of the threshold R_TH and the value (pu - R_TH) using, for example, Exponential-Golomb.
[0502] For example, when the threshold R_TH is 63 and the prediction residual pu is smaller than 63, the three-dimensional data encoding device binarizes the prediction residual pu with 6 bits. Also, when the prediction residual pu is 63 or more, the three-dimensional data encoding device performs arithmetic coding by binarizing the binary data (111111) of the threshold R_TH and (pu - 63) using Exponential-Golomb.
[0503] In a more specific example, when the prediction residual pu is 32, the three-dimensional data encoding device generates 6-bit binary data (100000) and arithmetic-codes this bit sequence. Also, when the prediction residual pu is 66, the three-dimensional data encoding device generates the binary data (111111) of the threshold R_TH and the bit sequence (00100) representing the value 3 (66 - 63) in Exponential-Golomb, and arithmetic-codes this bit sequence (111111 + 00100).
[0504] In this way, by switching the binarization method according to the magnitude of the prediction residual, the three-dimensional data encoding device can perform encoding while suppressing a sharp increase in the number of binarized bits when the prediction residual becomes large. Note that the three-dimensional data encoding device may add the threshold R_TH to the header of the bit stream or the like.
[0505] 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, so the prediction residual may not increase significantly. Therefore, in this case, the three-dimensional data encoding device sets the threshold R_TH to a large value. As a result, the possibility of encoding the binary data of the threshold R_TH becomes low, and the encoding efficiency is improved. Conversely, when encoding is performed at a low bit rate, that is, when the quantization scale is large, the quantization error is large and the prediction accuracy is poor, so the prediction residual may increase significantly. Therefore, in this case, the three-dimensional data encoding device sets the threshold R_TH to a small value. This can prevent a rapid increase in the bit length of the binary data.
[0506] In addition, the three-dimensional data encoding device may switch the threshold R_TH for each LoD and add the threshold R_TH for each LoD to a header or the like. That is, the three-dimensional data encoding device may switch the binary method for each LoD. For example, since the distance between three-dimensional points is far in the upper layer, the prediction accuracy may be poor and the prediction residual may increase as a result. Therefore, the three-dimensional data encoding device sets the threshold R_TH to a small value for the upper layer to prevent a rapid increase in the bit length of the binary data. 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 to a large value for the lower layer.
[0507] FIG. 55 is a diagram showing an example of an exponential Golomb code, and is a diagram showing the relationship between the value before binarization (multi-value) and the bit after binarization (code). Note that 0 and 1 shown in FIG. 55 may be inverted.
[0508] In addition, the three-dimensional data encoding device applies arithmetic encoding to the binarized data of the prediction residual. This can improve the encoding efficiency. When applying arithmetic encoding, among the binarized data, the n-bit code, which is the part binarized with n bits, and the remaining code, which is the part binarized using exponential Golomb, may have different tendencies in the occurrence probabilities of 0 and 1 for each bit. Therefore, the three-dimensional data encoding device may switch the method of applying arithmetic encoding between the n-bit code and the remaining code.
[0509] For example, for the n-bit code, the three-dimensional data encoding device performs arithmetic encoding using a different encoding table (probability table) for each bit. At this time, the three-dimensional data encoding device may change the number of encoding tables used for each bit. For example, for the leading bit b0 of the n-bit code, the three-dimensional data encoding device performs arithmetic encoding using one encoding table. Also, for the next bit b1, the three-dimensional data encoding device uses two encoding tables. Further, the three-dimensional data encoding device switches the encoding table used for the arithmetic encoding of bit b1 according to the value (0 or 1) of b0. Similarly, for the next bit b2, the three-dimensional data encoding device uses four encoding tables. Also, the three-dimensional data encoding device switches the encoding table used for the arithmetic encoding of bit b2 according to the values (0 to 3) of b0 and b1.
[0510] In this way, when the three-dimensional data encoding device arithmetically encodes each bit bn-1 of the n-bit code, it uses 2n-1 encoding tables. Also, the three-dimensional data encoding device switches the encoding table to be used according to the values (occurrence patterns) of the bits before bn-1. Thereby, since the three-dimensional data encoding device can use an appropriate encoding table for each bit, the encoding efficiency can be improved.
[0511] 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 2m encoding tables according to the values (occurrence patterns) of the m bits (m < n-1) before bn-1. Thereby, while suppressing the number of encoding tables used for each bit, the encoding efficiency can be improved. 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. Thereby, the number of updates of the occurrence probability can be suppressed, so the processing amount can be reduced.
[0512] For example, when the n-bit code is b0b1b2…bn-1, the number of encoding tables for b0 is 1 (CTb0). The number of encoding tables for b1 is 2 (CTb10, CTb11). Also, the encoding table to be used is switched according to the value (0 to 1) of b0. The number of encoding tables for b2 is 4 (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 number of encoding tables for bn-1 is 2n-1 (CTbn0, CTbn1, …, CTbn(2n-1-1)). Also, the encoding table to be used is switched according to the values (0 to 2n-1-1) of b0b1…bn-2.
[0513] Note that the three-dimensional data encoding device may apply arithmetic encoding (m = 2n) of setting values from 0 to 2n-1 without binarization to the n-bit code. Also, when the three-dimensional data encoding device arithmetic-encodes the n-bit code in m-ary, the three-dimensional data decoding device may also restore the n-bit code by m-ary arithmetic decoding.
[0514] FIG. 56 is a diagram for explaining the processing when the remaining code is an exponential Golomb code, for example. The remaining code, which is the binarized part using the exponential Golomb code, includes a prefix part and a suffix part as shown in FIG. 56. 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.
[0515] 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. Alternatively, the three-dimensional data encoding device may fix the occurrence probabilities of 0 and 1 in either one of the encoding tables. Thereby, the number of update times of the occurrence probability can be suppressed, so the processing amount can be reduced. For example, the three-dimensional data encoding device may update the occurrence probability for the prefix part and fix the occurrence probability for the suffix part.
[0516] In addition, the three-dimensional data encoding device decodes the quantized prediction residual by inverse quantization and reconstruction, and uses the decoded value, which is the decoded prediction residual, for prediction after the three-dimensional point to be encoded. Specifically, the three-dimensional data encoding device calculates the inverse quantization value by multiplying the quantized prediction residual (quantized value) by the quantization scale, and obtains the decoded value (reconstructed value) by adding the inverse quantization value and the predicted value.
[0517] 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.
[0518] a2iq = a2q × QS_LoD0 ···(Equation A11)
[0519] b2iq = b2q × QS_LoD1 ···(Equation A12)
[0520] 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).
[0521] a2rec = a2iq + a2p ···(Equation A13)
[0522] b2rec = b2iq + b2p ···(Equation A14)
[0523] Hereinafter, a syntax example of the bit stream according to the present embodiment will be described. FIG. 57 is a diagram showing a syntax example of an attribute header according to the present embodiment. The attribute header is header information of attribute information. As shown in FIG. 57, the attribute header includes the number of levels information (NumLoD), the three-dimensional point number information (NumOfPoint[i]), the level threshold (Thres_Lod[i]), the surrounding point number information (NumNeighorPoint[i]), the prediction threshold (THd[i]), the quantization scale (QS[i]), and the binarization threshold (R_TH[i]).
[0524] The number of levels information (NumLoD) indicates the number of levels of LoD used.
[0525] The three-dimensional point number information (NumOfPoint[i]) indicates the number of three-dimensional points belonging to level i. Note that the three-dimensional data encoding device may add the total three-dimensional point number information (AllNumOfPoint) indicating the total number of three-dimensional points to another header. In this case, the three-dimensional data encoding device does not have to add NumOfPoint[NumLoD - 1] indicating the number of three-dimensional points belonging to the lowest layer to the header. In this case, the three-dimensional data decoding device can calculate NumOfPoint[NumLoD - 1] according to (Equation A15). Thereby, the amount of code of the header can be reduced.
[0526]
Number
[0527] 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 for the header can be reduced.
[0528] 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.
[0529] 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.
[0530] The quantization scale (QS[i]) indicates the quantization scale used for quantization and inverse quantization of layer i.
[0531] The binary threshold (R_TH[i]) is a threshold for switching the binary method of the prediction residuals of the three-dimensional points belonging to hierarchy i. For example, when the prediction residual is smaller than the threshold R_TH, the three-dimensional data encoding device binary-encodes the prediction residual pu with a fixed number of bits, and when the prediction residual is greater than or equal to the threshold R_TH, it binary-encodes the binary data of the threshold R_TH and the value of (pu - R_TH) using exponential Golomb. Note that when it is not necessary to switch the value of R_TH[i] at each LoD, the three-dimensional data encoding device may add one binary threshold (R_TH) used for all LoDs to the header.
[0532] Note that R_TH[i] may be the maximum value that can be represented by nbit. For example, when n is 6 bits, R_TH is 63, and when n is 8 bits, R_TH is 255. Also, instead of encoding the maximum value that can be represented by nbit as the binary threshold, the three-dimensional data encoding device may encode the number of bits. For example, when R_TH[i] = 63, the three-dimensional data encoding device may add the value 6 to the header, and when R_TH[i] = 255, it may add the value 8 to the header. Further, the three-dimensional data encoding device may define the minimum value (minimum number of bits) of the number of bits representing R_TH[i] and add the relative number of bits from the minimum value to the header. For example, when R_TH[i] = 63 and the minimum number of bits is 6, the three-dimensional data encoding device may add the value 0 to the header, and when R_TH[i] = 255 and the minimum number of bits is 6, it may add the value 2 to the header.
[0533] Also, the three-dimensional data encoding device may entropy-encode at least one of NumLoD, Thres_Lod[i], NumNeighborPoint[i], THd[i], QS[i], and R_TH[i] and add it to the header. For example, the three-dimensional data encoding device may binary-encode each value and then perform arithmetic encoding. Also, the three-dimensional data encoding device may encode each value with a fixed length in order to reduce the processing amount.
[0534] Also, the three-dimensional data encoding device may not add at least one of NumLoD, Thres_Lod[i], NumNeighborPoint[i], THd[i], QS[i], and R_TH[i] to the header. For example, at least one of these values may be defined by a profile such as a standard or a level. This can reduce the bit amount of the header.
[0535] FIG. 58 is a diagram showing a syntax example of attribute data according to the present embodiment. This attribute data includes encoded data of attribute information of a plurality of three-dimensional points. As shown in FIG. 58, the attribute data includes an n-bit code and a remaining code.
[0536] The n-bit code is encoded data of the prediction residual of the value of the attribute information or a part thereof. The bit length of the n-bit code depends on the value of R_TH[i]. For example, when the value indicated by R_TH[i] is 63, the n-bit code is 6 bits, and when the value indicated by R_TH[i] is 255, the n-bit code is 8 bits.
[0537] The remaining code is encoded data encoded by exponential Golomb among the encoded data of the prediction residual of the value of the attribute information. This remaining code is encoded or decoded when the n-bit code is the same as R_TH[i]. Also, the three-dimensional data decoding device adds the value of the n-bit code and the value of the remaining code to decode the prediction residual. Note that when the n-bit code is not the same value as R_TH[i], the remaining code may not be encoded or decoded.
[0538] Hereinafter, the processing flow in the three-dimensional data encoding device will be described. FIG. 59 is a flowchart of three-dimensional data encoding processing by the three-dimensional data encoding device.
[0539] First, the three-dimensional data encoding device encodes the position information (geometry) (S3001). For example, the three-dimensional data encoding is performed using an octree representation.
[0540] After encoding the position information, when the position of the three-dimensional point changes due to quantization or the like, the three-dimensional data encoding device reassigns 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 position. For example, the three-dimensional data encoding device detects N three-dimensional points before the change that are close to the three-dimensional position after the change, and calculates the weighted average of the values of the attribute information of the N three-dimensional points. For example, in the weighted average, the three-dimensional data encoding device determines the weight based on the distance from the three-dimensional position after the change to each of the N three-dimensional points. Then, the three-dimensional data encoding device determines the value obtained by the weighted average as the value of the attribute information of the three-dimensional point after the change. Also, when two or more three-dimensional points change to the same three-dimensional position due to quantization or the like, the three-dimensional data encoding device may assign the average value of the attribute information of the two or more three-dimensional points before the change as the value of the attribute information of the three-dimensional point after the change.
[0541] Next, the three-dimensional data encoding device encodes the reallocated attribute information (Attribute) (S3003). For example, when encoding a plurality of types of attribute information, the three-dimensional data encoding device may encode the plurality of 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 bitstream in which the encoding result of the reflectance is added after the encoding result of the color. Note that the order of the plurality of encoding results of the attribute information added to the bitstream is not limited to this order, and any order may be used.
[0542] In addition, 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. As a result, the three-dimensional data decoding device can selectively decode the attribute information that needs to be decoded, so that the decoding process of the attribute information that does not need to be decoded can be omitted. Therefore, the processing amount of the three-dimensional data decoding device can be reduced. Further, the three-dimensional data encoding device may encode a plurality of types of attribute information in parallel and integrate the encoding results into one bit stream. Thereby, the three-dimensional data encoding device can encode a plurality of types of attribute information at high speed.
[0543] FIG. 60 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.
[0544] Next, the three-dimensional data encoding device starts a loop for each LoD (S3012). That is, the three-dimensional data encoding device repeatedly performs the processes of steps S3013 to S3021 for each LoD.
[0545] 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.
[0546] First, the three-dimensional data encoding device searches for a plurality of surrounding points, which are three-dimensional points existing around the target three-dimensional point, to be used for calculating the predicted value of the target three-dimensional point to be processed (S3014). Next, the three-dimensional data encoding 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 (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 quantization value by quantizing the prediction residual (S3017). Next, the three-dimensional data encoding device arithmetic-encodes the quantization value (S3018).
[0547] Further, the three-dimensional data encoding device calculates an inverse quantization value by inverse quantizing the quantization value (S3019). Next, the three-dimensional data encoding device generates a decoded value by adding a predicted value to the inverse quantization value (S3020). Next, the three-dimensional data encoding device ends the loop for each three-dimensional point (S3021). Also, the three-dimensional data encoding device ends the loop for each LoD (S3022).
[0548] Next, the three-dimensional data decoding process in the three-dimensional data decoding device that decodes the bitstream generated by the above three-dimensional data encoding device will be described.
[0549] The three-dimensional data decoding device generates decoded binary data by arithmetically decoding the binary data of the attribute information in the bitstream 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 exponential Golomb (remaining code), the three-dimensional data decoding device performs decoding accordingly when applying arithmetic decoding.
[0550] For example, in the arithmetic decoding method of the n-bit code, the three-dimensional data decoding device performs arithmetic decoding using a different coding table (decoding table) for each bit. At this time, the three-dimensional data decoding device may change the number of coding tables used for each bit. For example, for the leading bit b0 of the n-bit code, arithmetic decoding is performed using one coding table. Also, the three-dimensional data decoding device uses two coding tables for the next bit b1. Also, the three-dimensional data decoding device switches the coding table used for the arithmetic decoding of bit b1 according to the value (0 or 1) of b0. Similarly, the three-dimensional data decoding device uses four coding tables for the next bit b2. Also, the three-dimensional data decoding device switches the coding table used for the arithmetic decoding of bit b2 according to the values (0 to 3) of b0 and b1.
[0551] In this way, when the three-dimensional data decoding device arithmetically decodes each bit bn-1 of the n-bit code, it uses 2n-1 encoding tables. Also, the three-dimensional data decoding device switches the encoding table to be used according to the value (generation pattern) 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.
[0552] 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 2m encoding tables according to the value (generation pattern) 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 value 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 probability can be suppressed, so the processing amount can be reduced.
[0553] For example, when the n-bit code is b0b1b2…bn-1, the number of encoding tables for b0 is 1 (CTb0). The number of encoding tables for b1 is 2 (CTb10, CTb11). Also, the encoding table is switched according to the value (0 to 1) of b0. The number of encoding tables for b2 is 4 (CTb20, CTb21, CTb22, CTb23). Also, the encoding table is switched according to the values (0 to 3) of b0 and b1. The number of encoding tables for bn-1 is 2n-1 (CTbn0, CTbn1, …, CTbn(2n-1-1)). Also, the encoding table is switched according to the values (0 to 2n-1-1) of b0b1…bn-2.
[0554] FIG. 61 is a diagram for explaining the process when the remaining code is an exponential Golomb code. The portion (remaining code) binarized and encoded by the three-dimensional data encoding device using the exponential Golomb includes a prefix part and a suffix part as shown in FIG. 61. 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.
[0555] Note that the three-dimensional data decoding device may update the occurrence probabilities of 0 and 1 in each encoding table according to the value of the binarized data generated during decoding. Alternatively, the three-dimensional data decoding device may fix the occurrence probabilities of 0 and 1 in either encoding table. Thereby, the number of update times of the occurrence probability can be suppressed, so the processing amount can be reduced. For example, the three-dimensional data decoding device may update the occurrence probability for the prefix part and fix the occurrence probability for the suffix part.
[0556] Also, the three-dimensional data decoding device decodes the quantized prediction residual (unsigned integer value) by multivaluing the binarized data of the arithmetically decoded prediction residual according to the encoding method used by the three-dimensional data encoding device. The three-dimensional data decoding device first calculates the value of the n-bit code decoded by arithmetically decoding the binarized data of the n-bit code. Next, the three-dimensional data decoding device compares the value of the n-bit code with the value of R_TH.
[0557] When the value of the n-bit code matches the value of R_TH, the three-dimensional data decoding device determines that the bits encoded by exponential Golomb exist next, and arithmetically decodes the remaining codes that are the binarized data encoded by exponential Golomb. Then, the three-dimensional data decoding device calculates the value of the remaining codes using an inverse lookup table that shows the relationship between the remaining codes and their values from the decoded remaining codes. FIG. 62 is a diagram showing an example of an inverse lookup table that shows the relationship between the remaining codes and their values. Next, the three-dimensional data decoding device obtains the quantized prediction residual after multi-valued conversion by adding the value of the obtained remaining codes to R_TH.
[0558] On the other hand, when the value of the n-bit code does not match the value of R_TH (the value is smaller than R_TH), the three-dimensional data decoding device determines the value of the n-bit code as it is for the multi-valued quantized prediction residual. Thereby, the three-dimensional data decoding device can appropriately decode the bit stream generated by switching the binarization method according to the value of the prediction residual in the three-dimensional data encoding device.
[0559] Note that 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 value of the threshold value R_TH. Further, when the threshold value R_TH is added to the header or the like for each LoD, the three-dimensional data decoding device switches the decoding method using the threshold value R_TH decoded for each LoD.
[0560] 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 codes by decoding the remaining codes by exponential Golomb. For example, in the example shown in FIG. 62, the remaining code is 00100, and 3 is obtained as the value of the remaining code. Next, the three-dimensional data decoding device obtains the value 66 of the prediction residual by adding the value 63 of the threshold value R_TH and the value 3 of the remaining code.
[0561] Also, when the value of the decoded n-bit code is 32, the three-dimensional data decoding device sets the value 32 of the n-bit code as the value of the prediction residual.
[0562] Further, the three-dimensional data decoder converts the decoded post-quantization prediction residual into a signed integer value from an unsigned integer value, for example, by a process reverse to that in the three-dimensional data encoder. Thereby, when the three-dimensional data decoder entropy-codes the prediction residual, it can appropriately decode the bit stream generated without considering the occurrence of negative integers. Note that the three-dimensional data decoder does not necessarily have to convert an unsigned integer value into a signed integer value. For example, when decoding a bit stream generated by separately entropy-coding sign bits, the sign bits may be decoded.
[0563] The three-dimensional data decoder generates a decoded value by decoding the post-quantization prediction residual converted into a signed integer value through inverse quantization and reconstruction. Also, the three-dimensional data decoder uses the generated decoded value for prediction after the three-dimensional point to be decoded. Specifically, the three-dimensional data decoder calculates an inverse quantization value by multiplying the post-quantization prediction residual by the decoded quantization scale, and obtains a decoded value by adding the inverse quantization value and the prediction value.
[0564] The decoded unsigned integer value (unsigned quantization value) is converted into a signed integer value by the following process. When the least significant bit (LSB) of the decoded unsigned integer value a2u is 1, the three-dimensional data decoder sets the signed integer value a2q to -((a2u + 1) >> 1). When the LSB of the unsigned integer value a2u is not 1, the three-dimensional data decoder sets the signed integer value a2q to (a2u >> 1).
[0565] Similarly, when the LSB of the decoded unsigned integer value b2u is 1, the three-dimensional data decoder sets the signed integer value b2q to -((b2u + 1) >> 1). When the LSB of the unsigned integer value n2u is not 1, the three-dimensional data decoder sets the signed integer value b2q to (b2u >> 1).
[0566] Also, the details of the inverse quantization and reconstruction process by the three-dimensional data decoder are the same as those of the inverse quantization and reconstruction process in the three-dimensional data encoder.
[0567] Next, the flow of processing in the three-dimensional data decoding apparatus will be described. FIG. 63 is a flowchart of the three-dimensional data decoding process by the three-dimensional data decoding apparatus. First, the three-dimensional data decoding apparatus decodes position information (geometry) from the bitstream (S3031). For example, the three-dimensional data decoding apparatus performs decoding using an octree representation.
[0568] Next, the three-dimensional data decoding apparatus decodes attribute information (Attribute) from the bitstream (S3032). For example, when the three-dimensional data decoding apparatus decodes a plurality of types of attribute information, it may decode the plurality of types of attribute information in order. For example, when the three-dimensional data decoding apparatus decodes color and reflectance as attribute information, it decodes the encoding result of the color and the encoding result of the reflectance in the order added to the bitstream. For example, in the bitstream, when the encoding result of the reflectance is added after the encoding result of the color, the three-dimensional data decoding apparatus decodes the encoding result of the color and then decodes the encoding result of the reflectance. Note that the three-dimensional data decoding apparatus may decode the encoding results of the attribute information added to the bitstream in any order.
[0569] Also, the three-dimensional data decoding apparatus may obtain information indicating the start location of the encoded data of each attribute information in the bitstream by decoding a header or the like. Thereby, the three-dimensional data decoding apparatus can selectively decode the attribute information that needs to be decoded, so that the decoding process of the attribute information that does not need to be decoded can be omitted. Therefore, the processing amount of the three-dimensional data decoding apparatus can be reduced. Also, the three-dimensional data decoding apparatus may decode a plurality of types of attribute information in parallel and integrate the decoding results into one three-dimensional point cloud. Thereby, the three-dimensional data decoding apparatus can decode a plurality of types of attribute information at high speed.
[0570] FIG. 64 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 plurality of three-dimensional points having the decoded position information to one of the plurality of LoDs. For example, this assignment method is the same as the assignment method used in the three-dimensional data encoding device.
[0571] Next, the three-dimensional data decoding device starts a loop for each LoD (S3042). That is, the three-dimensional data decoding device repeatedly performs the processes of steps S3043 to S3049 for each LoD.
[0572] 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.
[0573] 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 the predicted value of the target three-dimensional point (S3044). Next, the three-dimensional data decoding device calculates the weighted average of the values of the attribute information of the plurality of surrounding points, and sets the obtained value as the predicted value P (S3045). Note that these processes are the same as the processes in the three-dimensional data encoding device.
[0574] Next, the three-dimensional data decoding device arithmetically decodes the quantization value from the bitstream (S3046). Also, the three-dimensional data decoding device calculates the inverse quantization value by inverse quantizing the decoded quantization value (S3047). Next, the three-dimensional data decoding device generates the decoded value by adding the predicted value to the inverse quantization value (S3048). Next, the three-dimensional data decoding device ends the loop for each three-dimensional point (S3049). Also, the three-dimensional data decoding device ends the loop for each LoD (S3050).
[0575] Next, the configurations of the three-dimensional data encoding device and the three-dimensional data decoding device according to the present embodiment will be described. FIG. 65 is a block diagram showing the configuration of the three-dimensional data encoding device 3000 according to the present 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.
[0576] The attribute information encoding unit 3003 encodes the position information (geometry) of a plurality of three-dimensional points included in the input point cloud. The attribute information reallocation unit 3002 reallocates the values of the attribute information of a plurality of three-dimensional points included in the input point cloud by using the encoding and decoding results of the position information. The attribute information encoding unit 3003 encodes the reallocated attribute information (attribute). Further, the three-dimensional data encoding device 3000 generates a bit stream including the encoded position information and the encoded attribute information.
[0577] FIG. 66 is a block diagram showing the configuration of the three-dimensional data decoding device 3010 according to the present embodiment. This three-dimensional data decoding device 3010 includes a position information decoding unit 3011 and an attribute information decoding unit 3012.
[0578] The position information decoding unit 3011 decodes the position information (geometry) of a plurality of three-dimensional points from the bit stream. The attribute information decoding unit 3012 decodes the attribute information (attribute) of a plurality of three-dimensional points from the bit stream. Further, the three-dimensional data decoding device 3010 generates an output point cloud by combining the decoded position information and the decoded attribute information.
[0579] As described above, the three-dimensional data encoding device according to the present embodiment performs the processing shown in FIG. 67. The three-dimensional data encoding device encodes three-dimensional points having attribute information. First, the three-dimensional data encoding device calculates a predicted value of the attribute information of the three-dimensional points (S3061). Next, the three-dimensional data encoding device calculates a prediction residual, which is the difference between the attribute information of the three-dimensional points and the predicted value (S3062). Next, the three-dimensional data encoding device generates binary data by binarizing the prediction residual (S3063). Next, the three-dimensional data encoding device arithmetic-encodes the binary data (S3064).
[0580] According to this, the three-dimensional data encoding device can calculate the prediction residual of the attribute information, and further reduce the code amount of the encoded data of the attribute information by binarizing and arithmetic-encoding the prediction residual.
[0581] For example, in the arithmetic encoding (S3064), the three-dimensional data encoding device uses different encoding tables for each bit of the binary data. According to this, the three-dimensional data encoding device can improve the encoding efficiency.
[0582] For example, in the arithmetic encoding (S3064), the larger the number of lower bits of the binary data, the larger the number of encoding tables used.
[0583] For example, in the arithmetic encoding (S3064), the three-dimensional data encoding device selects an encoding table used for the arithmetic encoding of the target bit according to the value of the upper bit of the target bit included in the binary data. According to this, the three-dimensional data encoding device can select an encoding table according to the value of the upper bit, so that the encoding efficiency can be improved.
[0584] For example, in binarization (S3063), when the prediction residual is smaller than the threshold value (R_TH), the three-dimensional data encoding device generates binary data by binarizing the prediction residual with a fixed number of bits. When the prediction residual is equal to or greater than the threshold value (R_TH), the three-dimensional data encoding device generates binary data including a first code (n-bit code) with a fixed number of bits indicating the threshold value (R_TH) and a second code (remaining code) obtained by binarizing, with exponential Golomb, the value obtained by subtracting the threshold value (R_TH) from the prediction residual. In arithmetic coding (S3064), the three-dimensional data encoding device uses different arithmetic coding methods for the first code and the second code.
[0585] According to this, the three-dimensional data encoding device can arithmetic-code the first code and the second code by an arithmetic coding method suitable for each of the first code and the second code, for example, so that the coding efficiency can be improved.
[0586] For example, the three-dimensional data encoding device quantizes the prediction residual and, in binarization (S3063), binarizes the quantized prediction residual. The threshold value (R_TH) is changed according to the quantization scale in quantization. According to this, the three-dimensional data encoding device can use an appropriate threshold value according to the quantization scale, so that the coding efficiency can be improved.
[0587] For example, the second code includes a prefix part and a suffix part. In arithmetic coding (S3064), the three-dimensional data encoding device uses different coding tables for the prefix part and the suffix part. According to this, the three-dimensional data encoding device can improve the coding efficiency.
[0588] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor performs the above-described processing using the memory.
[0589] In addition, the three-dimensional data decoding device according to the present embodiment performs the processing shown in FIG. 68. The three-dimensional data decoding device decodes three-dimensional points having attribute information. First, the three-dimensional data decoding device calculates a predicted value of the attribute information of the three-dimensional point (S3071). Next, the three-dimensional data decoding device generates binary data by arithmetically decoding the encoded data included in the bit stream (S3072). Next, the three-dimensional data decoding device generates a prediction residual by converting the binary data into multiple values (S3073). Next, the three-dimensional data decoding device calculates a decoded value of the attribute information of the three-dimensional point by adding the predicted value and the prediction residual (S3074).
[0590] According to this, the three-dimensional data decoding device can appropriately decode the bit stream of the attribute information by calculating the prediction residual of the attribute information and further binarizing and arithmetically encoding the prediction residual.
[0591] For example, in arithmetic decoding (S3072), the three-dimensional data decoding device uses different encoding tables for each bit of the binary data. According to this, the three-dimensional data decoding device can appropriately decode the bit stream with improved encoding efficiency.
[0592] For example, in arithmetic decoding (S3072), the lower the least significant bit of the binary data, the larger the number of encoding tables used.
[0593] For example, in arithmetic decoding (S3072), the three-dimensional data decoding device selects an encoding table used for arithmetic decoding of the target bit according to the value of the most significant bit of the target bit included in the binary data. According to this, the three-dimensional data decoding device can appropriately decode the bit stream with improved encoding efficiency.
[0594] For example, in the multi-valuing (S3073), the three-dimensional data decoding device generates a first value by multi-valuing a first code (n-bit code) with a fixed number of bits included in the binary data. When the first value is smaller than a threshold value (R_TH), the three-dimensional data decoding device determines the first value as a prediction residual. When the first value is equal to or greater than the threshold value (R_TH), the three-dimensional data decoding device generates a second value by multi-valuing a second code (remaining code), which is an exponential Golomb code included in the binary data, and generates a prediction residual by adding the first value and the second value. In the arithmetic decoding (S3072), the three-dimensional data decoding device uses different arithmetic decoding methods for the first code and the second code.
[0595] According to this, the three-dimensional data decoding device can appropriately decode a bit stream with improved encoding efficiency.
[0596] For example, the three-dimensional data decoding device inverse-quantizes the prediction residual, and in the addition (S3074), adds the predicted value and the inverse-quantized prediction residual. The threshold value (R_TH) is changed according to the quantization scale in the inverse quantization. According to this, the three-dimensional data decoding device can appropriately decode a bit stream with improved encoding efficiency.
[0597] For example, the second code includes a prefix part and a suffix part. In the arithmetic decoding (S3072), the three-dimensional data decoding device uses different encoding tables for the prefix part and the suffix part. According to this, the three-dimensional data decoding device can appropriately decode a bit stream with improved encoding efficiency.
[0598] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0599] (Embodiment 9) A predicted value may be generated by a method different from that of Embodiment 8. Hereinafter, the three-dimensional point to be encoded may be referred to as a first three-dimensional point, and the three-dimensional points around it may be referred to as second three-dimensional points.
[0600] For example, in generating the predicted value of the attribute information of a three-dimensional point, among the encoded and decoded surrounding three-dimensional points of the three-dimensional point to be encoded, the attribute value of the three-dimensional point with the closest distance may be directly generated as the predicted value. Also, in generating the predicted value, prediction mode information (PredMode) may be added for each three-dimensional point, and one predicted value may be selected from a plurality of predicted values to generate the predicted value. That is, for example, in a total of M prediction modes, the average value is assigned to prediction mode 0, the attribute value of three-dimensional point A is assigned to prediction mode 1, ···, and the attribute value of three-dimensional point Z is assigned to prediction mode M - 1, and the prediction mode used for prediction may be added to the bit stream for each three-dimensional point. In this way, the first prediction mode value indicating the first prediction mode in which the average of the attribute information of the surrounding three-dimensional points is calculated as the predicted value may be smaller than the second prediction mode value indicating the second prediction mode in which the attribute information of the surrounding three-dimensional points itself is calculated as the predicted value. Here, the "average value" which is the predicted value calculated in prediction mode 0 is the average value of the attribute values of the three-dimensional points surrounding the three-dimensional point to be encoded.
[0601] FIG. 69 is a diagram showing a first example of a table indicating the predicted values calculated in each prediction mode according to Embodiment 9. FIG. 70 is a diagram showing an example of the attribute information used for the predicted value according to Embodiment 9. FIG. 71 is a diagram showing a second example of a table indicating the predicted values calculated in each prediction mode according to Embodiment 9.
[0602] The number of prediction modes M may be added to the bit stream. Also, the number of prediction modes M may be defined by values in the profile, level, etc. of the standard without being added to the bit stream. Also, the number of prediction modes M may be a value calculated from the number of three-dimensional points N used for prediction. For example, the number of prediction modes M may be calculated by M = N + 1.
[0603] Note that the table shown in FIG. 69 is an example in the case where the three-dimensional point number N used for prediction is 4 and the number of prediction modes M is 5. The predicted value of the attribute information of point b2 can be generated using the attribute information of points a0, a1, a2, and b1. When selecting one prediction mode from a plurality of prediction modes, a prediction mode that generates the attribute values of points a0, a1, a2, and b1 as predicted values based on the distance information from point b2 to each of points a0, a1, a2, and b1 may be selected. The prediction mode is added for each three-dimensional point to be encoded. The predicted value is calculated according to the value corresponding to the added prediction mode.
[0604] The table shown in FIG. 71 is an example in the case where the three-dimensional point number N used for prediction is 4 and the number of prediction modes M is 5, similar to FIG. 69. The predicted value of the attribute information of point a2 can be generated using the attribute information of points a0 and a1. When selecting one prediction mode from a plurality of prediction modes, a prediction mode that generates the attribute values of points a0 and a1 as predicted values based on the distance information from point a2 to each of points a0 and a1 may be selected. The prediction mode is added for each three-dimensional point to be encoded. The predicted value is calculated according to the value corresponding to the added prediction mode.
[0605] Note that when the number of adjacent points, that is, the number of surrounding three-dimensional points N, is less than 4 as in the case of point a2 above, a prediction mode for which the predicted value is not assigned in the table may be set as not available.
[0606] Note that the assignment of the prediction mode values may be determined in the order of the distances from the three-dimensional points to be encoded. For example, the prediction mode values indicating a plurality of prediction modes are smaller as the distance from the three-dimensional point to be encoded to the surrounding three-dimensional points having the attribute information to be used as the predicted value is shorter. In the example of FIG. 69, it is shown that the distances to the point b2, which is the three-dimensional point to be encoded, are in the order of the points b1, a2, a1, and a0. For example, in the calculation of the predicted value, the attribute information of the point b1 is calculated as the predicted value in the prediction mode in which the prediction mode value among two or more prediction modes is indicated by "1", and the attribute information of the point a2 is calculated as the predicted value in the prediction mode in which the prediction mode value is indicated by "2". In this way, the prediction mode value indicating the prediction mode for calculating the attribute information of the point b1 as the predicted value is smaller than the prediction mode value indicating the prediction mode for calculating the attribute information of the point a2, which is located at a position farther from the point b2 than the point b1, as the predicted value.
[0607] Accordingly, a small prediction mode value can be assigned to a point that is likely to be selected because the prediction is likely to be correct due to the short distance, and the number of bits for encoding the prediction mode value can be reduced. Also, a small prediction mode value may be preferentially assigned to the three-dimensional points belonging to the same LoD as the three-dimensional point to be encoded.
[0608] FIG. 72 is a diagram showing a third example of a table indicating the predicted values calculated in each prediction mode according to Embodiment 9. Specifically, the third example is an example in the case where the attribute information used for the predicted value is a value based on the color information (YUV) of the surrounding three-dimensional points. Thus, the attribute information used for the predicted value may be color information indicating the color of the three-dimensional points.
[0609] As shown in FIG. 72, in the prediction mode where the predicted mode value is indicated by "0", the predicted value calculated is the average of each component of YUV that defines the YUV color space. Specifically, the predicted value includes the weighted average Yave of Yb1, Ya2, Ya1, Ya0, which are the values of the Y component corresponding to points b1, a2, a1, a0 respectively; the weighted average Uave of Ub1, Ua2, Ua1, Ua0, which are the values of the U component corresponding to points b1, a2, a1, a0 respectively; and the weighted average Vave of Vb1, Va2, Va1, Va0, which are the values of the V component corresponding to points b1, a2, a1, a0 respectively. Also, the predicted values calculated in the prediction modes where the predicted mode values are indicated by "1" to "4" each include the color information of the surrounding three-dimensional points b1, a2, a1, a0. The color information is indicated by a combination of the values of the Y component, U component, and V component.
[0610] Note that in FIG. 72, the color information is indicated by values defined in the YUV color space, but it may be indicated by values defined not only in the YUV color space but also in the RGB color space or values defined in other color spaces.
[0611] Thus, in calculating the predicted value, as the predicted value of the prediction mode, two or more averages or attribute information may be calculated. Also, each of the two or more averages or attribute information may indicate the values of two or more components that define the color space.
[0612] Note that, for example, when the prediction mode indicated by the predicted mode value "2" is selected in the table of FIG. 72, the Y component, U component, and V component of the attribute value of the three-dimensional point to be encoded may be used as the predicted values Ya2, Ua2, Va2 respectively for encoding. In this case, "2" as the predicted mode value is added to the bit stream.
[0613] FIG. 73 is a diagram showing a fourth example of a table indicating the predicted values calculated in each prediction mode according to Embodiment 9. Specifically, the fourth example is an example where the attribute information used for the predicted value is a value based on the reflectance information of the surrounding three-dimensional points. The reflectance information is, for example, information indicating the reflectance R.
[0614] As shown in FIG. 73, in the prediction mode where the prediction mode value is indicated by "0", the predicted value calculated is the weighted average Rave of the reflectances Rb1, Ra2, Ra1, Ra0 corresponding to points b1, a2, a1, a0, respectively. Also, in the prediction modes where the prediction mode values are indicated by "1" to "4", the predicted values calculated are the reflectances Rb1, Ra2, Ra1, Ra0 of the surrounding three-dimensional points b1, a2, a1, a0, respectively.
[0615] For example, when the prediction mode indicated by the prediction mode value "3" in the table of FIG. 73 is selected, the reflectance of the attribute value of the three-dimensional point to be encoded may be used as the predicted value Ra1 for encoding. In this case, "3" as the prediction mode value is added to the bit stream.
[0616] As shown in FIGS. 72 and 73, the attribute information may include first attribute information and second attribute information of a type different from the first attribute information. The first attribute information is, for example, color information. The second attribute information is, for example, reflectance information. In calculating the predicted value, a first predicted value may be calculated using the first attribute information, and a second predicted value may be calculated using the second attribute information.
[0617] When the attribute information has a plurality of components, such as color information in the YUV color space, RGB color space, etc., the predicted value may be calculated in a prediction mode divided for each component. For example, in the case of the YUV space, each of the predicted values using the Y component, U component, and V component may be calculated in the prediction mode selected for each component. For example, in each of the prediction mode Y for calculating the predicted value using the Y component, the prediction mode U for calculating the predicted value using the U component, and the prediction mode V for calculating the predicted value using the V component, the prediction mode value may be selected. In this case, the values in the tables of FIGS. 74 to 76 described later are used as the prediction mode values indicating the prediction mode for each component, and these prediction mode values may be added to the bit stream, respectively. Note that although the YUV color space has been described above, the same can be applied to the RGB color space.
[0618] Also, prediction values including two or more components among a plurality of components of attribute information may be calculated in a common prediction mode. For example, in the case of the YUV color space, in each of a prediction mode Y for calculating a prediction value using the Y component and a prediction mode UV for calculating a prediction value using the UV components, a prediction mode value may be selected. In this case, as the prediction mode values indicating the prediction mode of each component, the...
Claims
1. A three-dimensional data encoding method for encoding a plurality of three-dimensional points, comprising: selecting one prediction mode out of two or more prediction modes for calculating a predicted value of the attribute information of the first three-dimensional point, using the attribute information of one or more second three-dimensional points around the first three-dimensional point; calculating the predicted value of the selected prediction mode; calculating a prediction residual, which is the difference between the attribute information of the first three-dimensional point and the calculated predicted value; generating a bit stream including the prediction mode and the prediction residual; in the calculation of the predicted value, when a predicted value based on the attribute information of the one or more second three-dimensional points is not assigned to the selected prediction mode, a predetermined fixed value is assigned as the predicted value of the prediction mode A three-dimensional data encoding method.
2. In the calculation of the predicted value, the case where a predicted value based on the attribute information of the one or more second three-dimensional points is not assigned to the selected prediction mode means that the number of the one or more second three-dimensional points is less than or equal to a predetermined number, and thus the predicted value is not assigned to the prediction mode. The three-dimensional data encoding method according to Claim 1.
3. The predetermined fixed value is an initial value. The three-dimensional data encoding method according to Claim 1 or 2.
4. The predetermined fixed value is 0. The three-dimensional data encoding method according to any one of Claims 1 to 3.
5. In the calculation of the predicted value: in the first prediction mode among the two or more prediction modes, calculating the average of the attribute information of the one or more second three-dimensional points as the predicted value; in the second prediction mode among the two or more prediction modes, calculating the attribute information of the one or more second three-dimensional points as the predicted value. The three-dimensional data encoding method according to any one of Claims 1 to 4.
6. The two or more prediction modes are each indicated by a prediction mode value of a different value. The prediction mode value indicating the prediction mode to which the average is assigned as the predicted value is smaller than the prediction mode value indicating the prediction mode to which the attribute information of the one or more second three-dimensional points is assigned as the predicted value. The three-dimensional data encoding method according to Claim 5.
7. The two or more prediction modes are each indicated by a prediction mode value of a different value. The prediction mode value indicating the prediction mode in which the attribute information of one second three-dimensional point is assigned as a predicted value is smaller than the prediction mode value indicating the prediction mode in which the attribute information of another second three-dimensional point located at a position farther from the first three-dimensional point than the one second three-dimensional point is assigned as a predicted value. The three-dimensional data encoding method according to any one of claims 1 to 6.
8. A three-dimensional data decoding method for decoding a plurality of three-dimensional points, acquiring the prediction mode and prediction residual of a first three-dimensional point among the plurality of three-dimensional points by acquiring a bit stream, calculating a predicted value of the acquired prediction mode, calculating the attribute information of the first three-dimensional point by adding the predicted value and the prediction residual, In the calculation of the predicted value, when a predicted value based on the attribute information of one or more second three-dimensional points around the first three-dimensional point is not assigned to the acquired prediction mode, a predetermined fixed value is assigned as the predicted value of the prediction mode. Three-dimensional data decoding method.
9. In the calculation of the predicted value, the case where a predicted value based on the attribute information of the one or more second three-dimensional points is not assigned to the selected prediction mode means the case where the number of the one or more second three-dimensional points is equal to or less than a predetermined number and the predicted value is not assigned to the prediction mode. The three-dimensional data decoding method according to claim 8.
10. The predetermined fixed value is an initial value. The three-dimensional data decoding method according to claim 8 or 9.
11. The predetermined fixed value is 0. The three-dimensional data decoding method according to any one of claims 8 to 10.
12. In the calculation of the predicted value, in a first prediction mode among two or more prediction modes, calculating an average of the attribute information of the one or more second three-dimensional points as the predicted value, in a second prediction mode among the two or more prediction modes, calculating the attribute information of the one or more second three-dimensional points as the predicted value. The three-dimensional data decoding method according to any one of claims 8 to 11.
13. The two or more prediction modes are each indicated by a prediction mode value of a different value, The prediction mode value indicating the prediction mode to which the average is assigned as the predicted value is smaller than the prediction mode value indicating the prediction mode to which the attribute information of the one or more second three-dimensional points is assigned as the predicted value. The three-dimensional data decoding method according to claim 12.
14. The two or more prediction modes are each indicated by a prediction mode value of a different value, The prediction mode value indicating the prediction mode in which the attribute information of one second three-dimensional point is assigned as a predicted value is smaller than the prediction mode value indicating the prediction mode in which the attribute information of another second three-dimensional point located at a position where the distance from the first three-dimensional point is farther than the one second three-dimensional point is assigned as a predicted value. The three-dimensional data decoding method according to any one of claims 8 to 13.
15. A three-dimensional data encoding device for encoding a plurality of three-dimensional points, a processor, and a memory, wherein the processor uses the memory to select one prediction mode out of two or more prediction modes for calculating a predicted value of the attribute information of the first three-dimensional point by using the attribute information of one or more second three-dimensional points around the first three-dimensional point, calculate the predicted value of the selected prediction mode, calculate a prediction residual that is the difference between the attribute information of the first three-dimensional point and the calculated predicted value, generate a bit stream including the prediction mode and the prediction residual, and in the calculation of the predicted value, when a predicted value based on the attribute information of the one or more second three-dimensional points is not assigned to the selected prediction mode, assign a predetermined fixed value as the predicted value of the prediction mode. Three-dimensional data encoding device.
16. A three-dimensional data decoding device for decoding a plurality of three-dimensional points, a processor, and a memory, wherein the processor uses the memory to obtain the prediction mode and the prediction residual of the first three-dimensional point among the plurality of three-dimensional points by obtaining a bit stream, calculate the predicted value of the obtained prediction mode, calculate the attribute information of the first three-dimensional point by adding the predicted value and the prediction residual, and in the calculation of the predicted value, when a predicted value based on the attribute information of one or more second three-dimensional points around the first three-dimensional point is not assigned to the obtained prediction mode, assign a predetermined fixed value as the predicted value of the prediction mode. Three-dimensional data decoding device.
Citation Information
Patent Citations
Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
JP7167147B2
Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
JP7245244B2
Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
JP7330962B2
Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
JP7513815B2
Three-dimensional data encoding method and three-dimensional data decoding method
JP7688206B2