Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
Patent Information
- Application Number
- JP2023188298
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2018-02-14
- Filing Date
- 2023-11-02
- Publication Date
- 2025-02-14
- Estimated Expiration
- 2039-02-13
Smart Images

Figure 0007629970000001 
Figure 0007629970000002 
Figure 0007629970000003
Abstract
Description
[Technical field]
[0001] The present disclosure relates to a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding device, and a three-dimensional data decoding device. [Background technology]
[0002] In the future, devices and services that utilize 3D data are expected to become widespread in a wide range of fields, such as computer vision for autonomous operation of automobiles or robots, map information, monitoring, infrastructure inspection, video distribution, etc. 3D data is acquired in various ways, such as distance sensors such as range finders, stereo cameras, or a combination of multiple monocular cameras.
[0003] One method of expressing three-dimensional data is a method called a point cloud, which represents the shape of a three-dimensional structure using a group of points in a three-dimensional space. In a point cloud, the positions and colors of the points are stored. Point clouds are expected to become the mainstream method of expressing three-dimensional data, but point clouds have a very large amount of data. Therefore, when storing or transmitting three-dimensional data, it is essential to compress the amount of data by encoding, just like two-dimensional video images (examples include MPEG-4 AVC or HEVC standardized by MPEG).
[0004] In addition, compression of point clouds is partially supported by public libraries (Point Cloud Library) that perform point cloud-related processing.
[0005] Furthermore, a technique is known that uses three-dimensional map data to search for and display facilities located around a vehicle (see, for example, Patent Document 1). [Prior art documents] [Patent documents]
[0006] [Patent Document 1] International Publication No. 2014 / 020663 Summary of the Invention [Problem to be solved by the invention]
[0007] It is desirable to be able to improve the coding efficiency in coding three-dimensional data.
[0008] An object of the present disclosure is to provide a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding device, or a three-dimensional data decoding device that can improve encoding efficiency. [Means for solving the problem]
[0009] A three-dimensional data encoding method according to an embodiment of the present disclosure encodes a plurality of three-dimensional points included in three-dimensional data using an N-ary tree structure (N is an integer equal to or greater than 2). , No. 1 information is added to the bit stream , Li Encodes information indicating the number of 3D points contained in the field. In this case, the first information indicates a first value, and No information indicating the number of 3D points contained in the leaf is encoded. the first information indicates a second value .
[0010] A three-dimensional data decoding method according to an embodiment of the present disclosure decodes information on a plurality of three-dimensional points represented by an N-ary tree structure included in three-dimensional data (N is an integer equal to or greater than 2). , No. 1 information from the bitstream acquisition The first information If indicates the first value, then when decoding the leaf, Decoding information indicating the number of three-dimensional points included in the leaf, If indicates the second value, then when decoding the leaf, The information indicating the number of 3D points contained in the leaf is not decoded. Effect of the Invention
[0011] The present disclosure can provide a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding device, or a three-dimensional data decoding device that can improve encoding efficiency. [Brief description of the drawings]
[0012] [Figure 1]FIG. 1 is a diagram showing a structure of encoded three-dimensional data according to the first embodiment. [Diagram 2] FIG. 2 is a diagram showing an example of a prediction structure between SPCs belonging to the lowest layer of a GOS according to the first embodiment. [Diagram 3] FIG. 3 is a diagram showing an example of an inter-layer prediction structure according to the first embodiment. [Figure 4] FIG. 4 is a diagram showing an example of the coding order of GOS according to the first embodiment. [Diagram 5] FIG. 5 is a diagram showing an example of the coding order of GOS according to the first embodiment. [Figure 6] FIG. 6 is a block diagram of the three-dimensional data encoding device according to the first embodiment. [Figure 7] FIG. 7 is a flowchart of the encoding process according to the first embodiment. [Figure 8] FIG. 8 is a block diagram of the three-dimensional data decoding device according to the first embodiment. [Figure 9] FIG. 9 is a flowchart of the decoding process according to the first embodiment. [Figure 10] FIG. 10 is a diagram illustrating an example of meta information according to the first embodiment. [Figure 11] FIG. 11 is a diagram illustrating an example of a configuration of an SWLD according to the second embodiment. [Figure 12] FIG. 12 is a diagram illustrating an example of the operation of the server and the client according to the second embodiment. [Figure 13] FIG. 13 is a diagram illustrating an example of the operation of the server and the client according to the second embodiment. [Figure 14] FIG. 14 is a diagram illustrating an example of the operation of the server and the client according to the second embodiment. [Figure 15] FIG. 15 is a diagram illustrating an example of the operation of the server and the client according to the second embodiment. [Figure 16] FIG. 16 is a block diagram of a three-dimensional data encoding device according to the second embodiment. [Figure 17] FIG. 17 is a flowchart of the encoding process according to the second embodiment. [Figure 18] FIG. 18 is a block diagram of a three-dimensional data decoding device according to the second embodiment. [Figure 19] FIG. 19 is a flowchart of the decoding process according to the second embodiment. [Figure 20] FIG. 20 is a diagram illustrating an example of a configuration of a WLD according to the second embodiment. [Figure 21] FIG. 21 is a diagram illustrating an example of an octree structure of a WLD according to the second embodiment. [Figure 22] FIG. 22 is a diagram illustrating an example of a configuration of an SWLD according to the second embodiment. [Figure 23] FIG. 23 is a diagram illustrating an example of an octree structure of the SWLD according to the second embodiment. [Figure 24] FIG. 24 is a block diagram of a three-dimensional data creation device according to the third embodiment. [Diagram 25] FIG. 25 is a block diagram of a three-dimensional data transmission device according to the third embodiment. [Figure 26] FIG. 26 is a block diagram of a three-dimensional information processing device according to the fourth embodiment. [Figure 27] FIG. 27 is a block diagram of a three-dimensional data creation device according to the fifth embodiment. [Figure 28] FIG. 28 is a diagram showing a configuration of a system according to the sixth embodiment. [Figure 29] FIG. 29 is a block diagram of a client device according to the sixth embodiment. [Diagram 30] FIG. 30 is a block diagram of a server according to the sixth embodiment. [Diagram 31] FIG. 31 is a flowchart of three-dimensional data creation processing by a client device according to the sixth embodiment. [Diagram 32] FIG. 32 is a flowchart of a sensor information transmission process by a client device according to the sixth embodiment. [Diagram 33] FIG. 33 is a flowchart of three-dimensional data creation processing by the server according to the sixth embodiment. [Diagram 34]FIG. 34 is a flowchart of a 3D map transmission process performed by the server according to the sixth embodiment. [Diagram 35] FIG. 35 is a diagram showing a configuration of a modified example of the system according to the sixth embodiment. In FIG. [Diagram 36] FIG. 36 is a diagram showing configurations of a server and a client device according to the sixth embodiment. In FIG. [Figure 37] FIG. 37 is a block diagram of a three-dimensional data encoding device according to the seventh embodiment. [Figure 38] FIG. 38 is a diagram showing an example of a prediction residual according to the seventh embodiment. In FIG. [Figure 39] FIG. 39 is a diagram illustrating an example of a volume according to the seventh embodiment. [Diagram 40] FIG. 40 is a diagram showing an example of an octree representation of a volume according to the seventh embodiment. [Diagram 41] FIG. 41 is a diagram showing an example of a bit string of a volume according to the seventh embodiment. [Diagram 42] FIG. 42 is a diagram showing an example of an octree representation of a volume according to the seventh embodiment. [Diagram 43] FIG. 43 is a diagram illustrating an example of a volume according to the seventh embodiment. [Diagram 44] FIG. 44 is a diagram for explaining the intra prediction process according to the seventh embodiment. [Diagram 45] FIG. 45 is a diagram for explaining the rotation and translation processing according to the seventh embodiment. In FIG. [Figure 46] FIG. 46 is a diagram showing an example of the syntax of the RT application flag and the RT information according to the seventh embodiment. [Figure 47] FIG. 47 is a diagram for explaining the inter prediction process according to the seventh embodiment. [Figure 48] FIG. 48 is a block diagram of a three-dimensional data decoding device according to the seventh embodiment. [Figure 49] FIG. 49 is a flowchart of three-dimensional data encoding processing by the three-dimensional data encoding device according to the seventh embodiment. [Figure 50]FIG. 50 is a flowchart of three-dimensional data decoding processing by the three-dimensional data decoding device according to the seventh embodiment. [Figure 51] FIG. 51 is a diagram illustrating a configuration of a distribution system according to the eighth embodiment. In FIG. [Figure 52] FIG. 52 is a diagram showing an example of a configuration of a bit stream of an encoded 3D map according to the eighth embodiment. [Figure 53] FIG. 53 is a diagram for explaining an improvement effect of coding efficiency according to the eighth embodiment. In FIG. [Figure 54] FIG. 54 is a flowchart of a process performed by the server according to the eighth embodiment. [Figure 55] FIG. 55 is a flowchart of processing by a client according to the eighth embodiment. [Figure 56] FIG. 56 is a diagram illustrating an example of the syntax of a submap according to the eighth embodiment. [Figure 57] FIG. 57 is a diagram illustrating a coding type switching process according to the eighth embodiment. In FIG. [Figure 58] FIG. 58 is a diagram illustrating an example of the syntax of a submap according to the eighth embodiment. [Figure 59] FIG. 59 is a flowchart of three-dimensional data encoding processing according to the eighth embodiment. [Figure 60] FIG. 60 is a flowchart of three-dimensional data decoding processing according to the eighth embodiment. [Figure 61] FIG. 61 is a diagram illustrating an example of an operation of a modification of the coding type switching process according to the eighth embodiment. In FIG. [Figure 62] FIG. 62 is a diagram illustrating an example of an operation of a modification of the coding type switching process according to the eighth embodiment. In FIG. [Figure 63] FIG. 63 is a diagram illustrating an example of an operation of a modification of the coding type switching process according to the eighth embodiment. In FIG. [Figure 64] FIG. 64 is a diagram illustrating an example of an operation of a variation of the difference value calculation process according to the eighth embodiment. In FIG. [Figure 65]FIG. 65 is a diagram illustrating an example of the operation of a variation of the difference value calculation process according to the eighth embodiment. In FIG. [Figure 66] FIG. 66 is a diagram illustrating an example of the operation of a variation of the difference value calculation process according to the eighth embodiment. In FIG. [Figure 67] FIG. 67 is a diagram illustrating an example of the operation of a variation of the difference value calculation process according to the eighth embodiment. In FIG. [Figure 68] FIG. 68 is a diagram illustrating an example of the syntax of a volume according to the eighth embodiment. [Figure 69] FIG. 69 is a diagram showing an example of an important region according to the ninth embodiment. [Figure 70] FIG. 70 is a diagram showing an example of an occupancy code according to the ninth embodiment. In FIG. [Figure 71] FIG. 71 is a diagram showing an example of a quadtree structure according to the ninth embodiment. [Figure 72] FIG. 72 is a diagram showing an example of an occupancy code and a location code according to the ninth embodiment. In FIG. [Figure 73] FIG. 73 is a diagram showing an example of three-dimensional points obtained by the LiDAR according to the ninth embodiment. [Figure 74] FIG. 74 is a diagram showing an example of an octree structure according to the ninth embodiment. [Figure 75] FIG. 75 is a diagram showing an example of hybrid coding according to the ninth embodiment. [Figure 76] FIG. 76 is a diagram for explaining a method of switching between location coding and occupancy coding according to the ninth embodiment. In FIG. [Figure 77] FIG. 77 is a diagram showing an example of a location coding bit stream according to the ninth embodiment. [Figure 78] FIG. 78 is a diagram showing an example of a bit stream for hybrid coding according to the ninth embodiment. [Figure 79] FIG. 79 is a diagram showing a tree structure of an occupancy code of an important 3D point according to the ninth embodiment. [Figure 80]FIG. 80 is a diagram showing a tree structure of an occupancy code of a non-important 3D point according to the ninth embodiment. [Figure 81] FIG. 81 is a diagram showing an example of a bit stream for hybrid coding according to the ninth embodiment. [Figure 82] FIG. 82 is a diagram showing an example of a bit stream including coding mode information according to the ninth embodiment. [Figure 83] FIG. 83 is a diagram illustrating an example of syntax according to the ninth embodiment. [Figure 84] FIG. 84 is a flowchart of the encoding process according to the ninth embodiment. [Figure 85] FIG. 85 is a flowchart of a node encoding process according to the ninth embodiment. [Figure 86] FIG. 86 is a flowchart of the decoding process according to the ninth embodiment. [Figure 87] FIG. 87 is a flowchart of a node decryption process according to the ninth embodiment. [Figure 88] FIG. 88 is a diagram showing an example of a tree structure according to the tenth embodiment. [Figure 89] FIG. 89 is a diagram illustrating an example of the number of effective leaves that each branch has according to the tenth embodiment. [Figure 90] FIG. 90 is a diagram showing an application example of the coding method according to the tenth embodiment. [Figure 91] FIG. 91 is a diagram showing an example of a dense branch region according to the tenth embodiment. [Figure 92] FIG. 92 is a diagram illustrating an example of a dense 3D point cloud according to the tenth embodiment. [Figure 93] FIG. 93 is a diagram illustrating an example of a sparse 3D point cloud according to the tenth embodiment. [Figure 94] FIG. 94 is a flowchart of the encoding process according to the tenth embodiment. [Figure 95] FIG. 95 is a flowchart of the decoding process according to the tenth embodiment. [Figure 96] FIG. 96 is a flowchart of the encoding process according to the tenth embodiment. [Figure 97] FIG. 97 is a flowchart of the decoding process according to the tenth embodiment. [Figure 98] FIG. 98 is a flowchart of the encoding process according to the tenth embodiment. [Figure 99] FIG. 99 is a flowchart of the decoding process according to the tenth embodiment. [Figure 100] FIG. 100 is a flowchart of a 3D point separation process according to the tenth embodiment. [Figure 101] FIG. 101 is a diagram illustrating an example of syntax according to the tenth embodiment. [Figure 102] FIG. 102 is a diagram illustrating an example of dense branches according to the tenth embodiment. [Figure 103] FIG. 103 is a diagram illustrating an example of sparse branches according to the tenth embodiment. [Figure 104] FIG. 104 is a flowchart of the encoding process according to the modification of the tenth embodiment. [Figure 105] FIG. 105 is a flowchart of a decoding process according to a modification of the tenth embodiment. [Fig. 106] FIG. 106 is a flowchart of a 3D point separation process according to a modification of the tenth embodiment. [Figure 107] FIG. 107 is a diagram illustrating an example of syntax according to a modification of the tenth embodiment. [Figure 108] FIG. 108 is a flowchart of the encoding process according to the tenth embodiment. [Figure 109] FIG. 109 is a flowchart of the decoding process according to the tenth embodiment. [Figure 110] FIG. 110 is a diagram showing an example of a tree structure according to the eleventh embodiment. [Figure 111] FIG. 111 is a diagram showing an example of an occupancy code according to the eleventh embodiment. [Figure 112] FIG. 112 is a diagram illustrating an example of the operation of the three-dimensional data encoding device according to the eleventh embodiment. [Figure 113] FIG. 113 is a diagram showing an example of geometric information according to the eleventh embodiment. In FIG. [Fig. 114] FIG. 114 is a diagram showing an example of selection of a coding table using geometric information according to the eleventh embodiment. In FIG. [Figure 115] FIG. 115 is a diagram showing an example of selection of a coding table using structure information according to the eleventh embodiment. In FIG. [Fig. 116] FIG. 116 is a diagram showing an example of selection of a coding table using attribute information according to the eleventh embodiment. In FIG. [Figure 117] FIG. 117 is a diagram showing an example of selection of a coding table using attribute information according to the eleventh embodiment. In FIG. [Fig. 118] FIG. 118 is a diagram showing an example of a configuration of a bit stream according to the eleventh embodiment. [Figure 119] FIG. 119 is a diagram showing an example of a coding table according to the eleventh embodiment. In FIG. [Figure 120] FIG. 120 is a diagram showing an example of a coding table according to the eleventh embodiment. [Figure 121] FIG. 121 is a diagram showing an example of a bitstream configuration according to the eleventh embodiment. [Figure 122] FIG. 122 is a diagram showing an example of a coding table according to the eleventh embodiment. In FIG. [Figure 123] FIG. 123 is a diagram showing an example of a coding table according to the eleventh embodiment. In FIG. [Figure 124] FIG. 124 is a diagram showing an example of bit numbers of an occupancy code according to the eleventh embodiment. In FIG. [Fig. 125] FIG. 125 is a flowchart of the encoding process using geometric information according to the eleventh embodiment. [Fig. 126] FIG. 126 is a flowchart of a decoding process using geometric information according to the eleventh embodiment. [Figure 127] FIG. 127 is a flowchart of the encoding process using the structure information according to the eleventh embodiment. [Figure 128] FIG. 128 is a flowchart of a decoding process using structure information according to the eleventh embodiment. [Figure 129]FIG. 129 is a flowchart of the encoding process using attribute information according to the eleventh embodiment. [Fig. 130] FIG. 130 is a flowchart of a decoding process using attribute information according to the eleventh embodiment. [Fig. 131] FIG. 131 is a flowchart of a coding table selection process using geometric information according to the eleventh embodiment. [Fig. 132] FIG. 132 is a flowchart of a coding table selection process using structure information according to the eleventh embodiment. [Fig. 133] FIG. 133 is a flowchart of a coding table selection process using attribute information according to the eleventh embodiment. [Fig. 134] FIG. 134 is a block diagram of a three-dimensional data encoding device according to the eleventh embodiment. [Fig. 135] FIG. 135 is a block diagram of a three-dimensional data decoding device according to the eleventh embodiment. [Fig. 136] FIG. 136 is a diagram showing a reference relationship in an octree structure according to the twelfth embodiment. [Fig. 137] FIG. 137 is a diagram showing a reference relationship in the spatial domain according to the twelfth embodiment. [Fig. 138] FIG. 138 is a diagram showing an example of an adjacent reference node according to the twelfth embodiment. [Fig. 139] FIG. 139 is a diagram showing the relationship between a parent node and a node according to the twelfth embodiment. [Fig. 140] FIG. 140 is a diagram showing an example of an occupancy code of a parent node according to the twelfth embodiment. [Fig. 141] FIG. 141 is a block diagram of a three-dimensional data encoding device according to the twelfth embodiment. [Fig. 142] FIG. 142 is a block diagram of a three-dimensional data decoding device according to the twelfth embodiment. [Fig. 143] FIG. 143 is a flowchart of three-dimensional data encoding processing according to the twelfth embodiment. [Fig. 144]FIG. 144 is a flowchart of three-dimensional data decoding processing according to the twelfth embodiment. [Fig. 145] FIG. 145 is a diagram showing an example of switching of the coding table according to the twelfth embodiment. In FIG. [Fig. 146] FIG. 146 is a diagram showing a reference relationship in the spatial domain according to the first modification of the twelfth embodiment. In FIG. [Fig. 147] FIG. 147 is a diagram illustrating an example of the syntax of the header information according to the first modification of the twelfth embodiment. [Fig. 148] FIG. 148 is a diagram illustrating an example of the syntax of the header information according to the first modification of the twelfth embodiment. [Figure 149] FIG. 149 is a diagram showing an example of an adjacent reference node according to the second modification of the twelfth embodiment. In FIG. [Fig. 150] FIG. 150 is a diagram illustrating an example of a target node and adjacent nodes according to the second modification of the twelfth embodiment. In FIG. [Fig. 151] FIG. 151 is a diagram showing a reference relationship in an octree structure according to the third modification of the twelfth embodiment. [Fig. 152] FIG. 152 is a diagram showing a reference relationship in the spatial domain according to the third modification of the twelfth embodiment. In FIG. [Fig. 153] FIG. 153 is a diagram illustrating an example of the syntax of header information according to the thirteenth embodiment. [Fig. 154] FIG. 154 is a diagram showing an example of an octree configuration when the mode information in the thirteenth embodiment is 1. [Fig. 155] FIG. 155 is a diagram showing an example of an octree configuration when the mode information in the thirteenth embodiment is 0. [Fig. 156] FIG. 156 is a diagram illustrating an example of the syntax of node information according to the thirteenth embodiment. [Fig. 157] FIG. 157 is a flowchart of three-dimensional data encoding processing according to the thirteenth embodiment. [Fig. 158] FIG. 158 is a flowchart of three-dimensional data decoding processing according to the thirteenth embodiment. [Fig. 159]FIG. 159 is a block diagram of a three-dimensional data encoding device according to the thirteenth embodiment. [Fig. 160] FIG. 160 is a block diagram of a three-dimensional data decoding device according to the thirteenth embodiment. [Fig. 161] FIG. 161 is a flowchart of three-dimensional data encoding processing according to the thirteenth embodiment. [Fig. 162] FIG. 162 is a flowchart of three-dimensional data decoding processing according to the thirteenth embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0013] A three-dimensional data encoding method according to one embodiment of the present disclosure adds first information to a bit stream indicating whether a leaf included in an N-ary tree structure of multiple three-dimensional points included in three-dimensional data includes one three-dimensional point or two or more three-dimensional points, and if the first information indicates that the leaf includes one three-dimensional point, generates an N-ary tree structure such that the leaf includes one three-dimensional point and encodes the N-ary tree structure, and if the first information indicates that the leaf includes two or more three-dimensional points, generates an N-ary tree structure such that the leaf includes two or more three-dimensional points and encodes the N-ary tree structure.
[0014] According to this, the three-dimensional data encoding method can selectively use a tree structure whose leaves include one three-dimensional point and a tree structure whose leaves include two or more three-dimensional points, thereby improving the encoding efficiency of the three-dimensional data encoding method.
[0015] For example, if the first information indicates that the leaf includes two or more 3D points, second information regarding the leaf may be added to the bitstream, and if the first information indicates that the leaf includes one 3D point, the leaf information may not be added to the bitstream.
[0016] According to this, the three-dimensional data encoding method can improve encoding efficiency by not adding the second information to the bit stream when a leaf includes one three-dimensional point.
[0017] For example, the second information may indicate the number of 3D points included in the leaf.
[0018] For example, the first information may indicate whether the multiple leaves included in the N-ary tree structure include one three-dimensional point or two or more three-dimensional points, and when the first information indicates that the multiple leaves include one three-dimensional point, an N-ary tree structure may be generated such that the multiple leaves include one three-dimensional point and the N-ary tree structure may be encoded, and when the first information indicates that the multiple leaves include two or more three-dimensional points, an N-ary tree structure may be generated such that the multiple leaves include two or more three-dimensional points and the N-ary tree structure may be encoded.
[0019] According to this, the three-dimensional data encoding method can improve encoding efficiency since the formats of a plurality of leaves can be controlled by a single piece of first information.
[0020] For example, two or more three-dimensional points included in the leaf may have different spatial coordinates.
[0021] For example, two or more three-dimensional points included in the leaf may have the same spatial coordinates but different attribute information.
[0022] For example, each of the two or more three-dimensional points included in the leaf may have coordinate information and attribute information.
[0023] A three-dimensional data decoding method according to one embodiment of the present disclosure decodes, from a bit stream, first information indicating whether a leaf included in an N-ary tree structure of multiple three-dimensional points included in three-dimensional data includes one three-dimensional point or two or more three-dimensional points, and if the first information indicates that the leaf includes one three-dimensional point, decodes the N-ary tree structure so that the leaf includes one three-dimensional point, and if the first information indicates that the leaf includes two or more three-dimensional points, decodes the N-ary tree structure so that the leaf includes two or more three-dimensional points.
[0024] According to this, the three-dimensional data decoding method can selectively use a tree structure whose leaf includes one three-dimensional point and a tree structure whose leaf includes two or more three-dimensional points, thereby improving the coding efficiency of the three-dimensional data decoding method.
[0025] For example, if the first information indicates that the leaf includes two or more 3D points, second information regarding the leaf may be decoded from the bitstream, and if the first information indicates that the leaf includes one 3D point, the leaf information may not be decoded from the bitstream.
[0026] According to this, when a leaf includes one 3D point, the second information does not need to be added to the bit stream, thereby improving coding efficiency.
[0027] For example, the second information may indicate the number of 3D points included in the leaf.
[0028] For example, the first information may indicate whether multiple leaves included in the N-ary tree structure include one three-dimensional point or two or more three-dimensional points, and when the first information indicates that the multiple leaves include one three-dimensional point, the N-ary tree structure may be decoded so that the multiple leaves include one three-dimensional point, and when the first information indicates that the multiple leaves include two or more three-dimensional points, the N-ary tree structure may be decoded so that the multiple leaves include two or more three-dimensional points.
[0029] According to this, the three-dimensional data decoding method can improve the encoding efficiency since the formats of a plurality of leaves can be controlled by a single piece of first information.
[0030] For example, two or more three-dimensional points included in the leaf may have different spatial coordinates.
[0031] For example, two or more three-dimensional points included in the leaf may have the same spatial coordinates but different attribute information.
[0032] For example, each of the two or more three-dimensional points included in the leaf may have coordinate information and attribute information.
[0033] Moreover, a three-dimensional data encoding device according to one embodiment of the present disclosure includes a processor and a memory, and the processor uses the memory to add first information to a bit stream indicating whether a leaf included in an N-ary tree structure of a plurality of three-dimensional points included in the three-dimensional data includes one three-dimensional point or two or more three-dimensional points, and when the first information indicates that the leaf includes one three-dimensional point, generates an N-ary tree structure such that the leaf includes one three-dimensional point and encodes the N-ary tree structure, and when the first information indicates that the leaf includes two or more three-dimensional points, generates an N-ary tree structure such that the leaf includes two or more three-dimensional points and encodes the N-ary tree structure.
[0034] According to this, the three-dimensional data encoding device can selectively use a tree structure whose leaves include one three-dimensional point and a tree structure whose leaves include two or more three-dimensional points, thereby improving the encoding efficiency of the three-dimensional data encoding device.
[0035] Moreover, a three-dimensional data decoding device according to one embodiment of the present disclosure includes a processor and a memory, and the processor uses the memory to decode, from a bit stream, first information indicating whether a leaf included in an N-ary tree structure of multiple three-dimensional points included in the three-dimensional data includes one three-dimensional point or two or more three-dimensional points, and if the first information indicates that the leaf includes one three-dimensional point, decodes the N-ary tree structure so that the leaf includes one three-dimensional point, and if the first information indicates that the leaf includes two or more three-dimensional points, decodes the N-ary tree structure so that the leaf includes two or more three-dimensional points.
[0036] According to this, the three-dimensional data decoding device can selectively use a tree structure whose leaves include one three-dimensional point and a tree structure whose leaves include two or more three-dimensional points, thereby improving the encoding efficiency of the three-dimensional data decoding device.
[0037] These comprehensive or specific aspects may be realized as a system, a method, an integrated circuit, a computer program, or a recording medium such as a computer-readable CD-ROM, or may be realized as any combination of a system, a method, an integrated circuit, a computer program, and a recording medium.
[0038] Hereinafter, the embodiments will be described in detail with reference to the drawings. Note that each of the embodiments described below shows a specific example of the present disclosure. The numerical values, shapes, materials, components, arrangement and connection forms of the components, steps, and order of steps shown in the following embodiments are merely examples and are not intended to limit the present disclosure. In addition, among the components in the following embodiments, components that are not described in an independent claim showing a top concept are described as optional components.
[0039] (Embodiment 1) First, the data structure of encoded three-dimensional data (hereinafter, also referred to as encoded data) according to this embodiment will be described. Fig. 1 is a diagram showing the structure of encoded three-dimensional data according to this embodiment.
[0040] In this embodiment, the three-dimensional space is divided into spaces (SPC) corresponding to pictures in video coding, and the three-dimensional data is coded using the spaces as units. The space is further divided into volumes (VLM) corresponding to macroblocks in video coding, and prediction and conversion are performed using the VLM as units. The volume includes a plurality of voxels (VXL), which are the smallest units to which position coordinates are associated. Note that prediction refers to, as with prediction performed on two-dimensional images, generating predicted three-dimensional data similar to the processing unit to be processed by referring to other processing units, and coding the difference between the predicted three-dimensional data and the processing unit to be processed. In addition, this prediction includes not only spatial prediction that refers to other prediction units at the same time, but also temporal prediction that refers to prediction units at different times.
[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 group of points contained in a voxel according to the size of the voxel. By subdividing the voxel, the three-dimensional shape of the point cloud can be expressed with high accuracy, and by increasing the size of the voxel, the three-dimensional shape of the point cloud can be expressed roughly.
[0042] In the following, an example will be described in which the three-dimensional data is a point cloud; however, the three-dimensional data is not limited to a point cloud, and may be three-dimensional data in any format.
[0043] Also, voxels with a hierarchical structure may be used. In this case, in the nth layer, it may be indicated in order whether a sample point exists in the n-1th or lower layer (a layer below the nth layer). For example, when decoding only the nth layer, if a sample point exists in the n-1th or lower layer, the sample point can be decoded by considering it to exist at the center of the voxel in the nth layer.
[0044] In addition, the encoding device acquires the point cloud data using a distance sensor, a stereo camera, a monocular camera, a gyro, an inertial sensor, or the like.
[0045] As in video coding, the space is classified into at least three prediction structures, including an independently decodable intra space (I-SPC), a unidirectionally referable predictive space (P-SPC), and a bidirectionally referable bidirectional space (B-SPC). The space also has two types of time information: the decoding time and the display time.
[0046] As shown in Fig. 1, there is a random access unit called a Group Of Space (GOS) which is a processing unit including multiple spaces. Furthermore, there is a World (WLD) which is a processing unit including multiple GOS.
[0047] The spatial region that the world occupies is associated with an absolute position on the earth by GPS or latitude and longitude information, etc. This position information is stored as meta information. Note that the meta information may be included in the encoded data or may be transmitted separately from the encoded data.
[0048] Furthermore, within a GOS, all SPCs may be three-dimensionally adjacent, or there may be SPCs that are not three-dimensionally adjacent to other SPCs.
[0049] In the following, the process of encoding, decoding, referencing, etc. of three-dimensional data included in a processing unit such as a GOS, SPC, or VLM will also be simply referred to as encoding, decoding, referencing, etc. of a processing unit. Also, the three-dimensional data included in a processing unit includes at least one pair of a spatial position such as three-dimensional coordinates and a characteristic value such as color information.
[0050] Next, the prediction structure of SPCs in a GOS will be described. Multiple SPCs in the same GOS, or multiple VLMs in the same SPC, occupy different spaces from each other, but have the same time information (decoding time and display time).
[0051] In addition, the first SPC in a GOS in decoding order is the I-SPC. There are two types of GOS: closed GOS and open GOS. A closed GOS is a GOS in which all SPCs in the GOS can be decoded when decoding starts from the first I-SPC. In an open GOS, some SPCs in the GOS whose display time precedes the first I-SPC refer to a different GOS, and cannot be decoded using only that GOS.
[0052] In addition, in coded data such as map information, the WLD may be decoded in the reverse order from the coding order, and if there is a dependency between the GOS, reverse playback is difficult. Therefore, in such cases, closed GOS is basically used.
[0053] Furthermore, the GOS has a layer structure in the height direction, and encoding or decoding is performed in order starting from the SPC in the lower layer.
[0054] Fig. 2 is a diagram showing an example of a prediction structure between SPCs belonging to the lowest layer of a GOS, and Fig. 3 is a diagram showing an example of a prediction structure between layers.
[0055] There are one or more I-SPCs in a GOS. Objects such as humans, animals, cars, bicycles, traffic lights, and landmark buildings exist in a three-dimensional space, and it is effective to encode small objects as I-SPCs. For example, a three-dimensional data decoding device (hereinafter also referred to as a decoding device) decodes only the I-SPCs in the GOS when decoding the GOS with low processing load or at high speed.
[0056] Furthermore, the encoding device may switch the encoding interval or occurrence frequency of I-SPC depending on the density of objects in the WLD.
[0057] In addition, in the configuration shown in Fig. 3, the encoding device or decoding device encodes or decodes multiple layers in order from the lower layer (layer 1). This allows, for example, an autonomous vehicle to increase the priority of data near the ground, which contains more information.
[0058] In addition, in the case of encoded data used by drones, etc., encoding or decoded may be performed in order from the SPC of the upper layer in the height direction within the GOS.
[0059] Alternatively, the encoding device or decoding device may encode or decode multiple layers so that the decoding device can roughly grasp the GOS and gradually increase the resolution. For example, the encoding device or decoding device may encode or decode layers 3, 8, 1, 9, etc. in that order.
[0060] Next, how to handle static and dynamic objects will be described.
[0061] In a three-dimensional space, there exist static objects or scenes such as buildings or roads (hereinafter collectively referred to as static objects), and dynamic objects such as cars or people (hereinafter referred to as dynamic objects). Object detection is performed separately by extracting feature points from point cloud data or camera images such as a stereo camera. Here, an example of a method for encoding dynamic objects will be described.
[0062] The first method is to encode the static objects without distinguishing between the static objects and the dynamic objects, and the second method is to distinguish between the static objects and the dynamic objects by using identification information.
[0063] For example, a GOS is used as an identification unit. In this case, a GOS including SPCs constituting static objects and a GOS including SPCs constituting dynamic objects are distinguished by identification information stored in the coded data or separately from the coded data.
[0064] Alternatively, the SPC may be used as the identification unit. In this case, the SPC including the VLM constituting the static object and the SPC including the VLM constituting the dynamic object are distinguished by the above-mentioned identification information.
[0065] Alternatively, the VLM or VXL may be used as the identification unit. In this case, the VLM or VXL including a static object is distinguished from the VLM or VXL including a dynamic object by the above-mentioned identification information.
[0066] The encoding device may also encode a dynamic object as one or more VLMs or SPCs, and encode a VLM or SPC including a static object and an SPC including a dynamic object as different GOSs. In addition, when the size of the GOS varies depending on the size of the dynamic object, the encoding device stores the size of the GOS separately as meta information.
[0067] The encoding device may also encode the static object and the dynamic object independently of each other, and overlay the dynamic object on the world composed of the static objects. In this case, the dynamic object is composed of one or more SPCs, and each SPC is associated with one or more SPCs constituting the static object on which the SPC is overlaid. Note that the dynamic object may be represented by one or more VLMs or VXLs instead of SPCs.
[0068] The encoding device may also encode static objects and dynamic objects as different streams.
[0069] The encoding device may also generate a GOS including one or more SPCs that constitute a dynamic object. Furthermore, the encoding device may set the GOS including the dynamic object (GOS_M) and the GOS of the static object corresponding to the spatial area of GOS_M to the same size (occupy the same spatial area). This allows the superimposition process to be performed on a GOS-by-GOS basis.
[0070] A P-SPC or B-SPC constituting a dynamic object may refer to an SPC included in a different encoded GOS. In cases where the position of a dynamic object changes over time and the same dynamic object is encoded as a GOS at a different time, referencing across GOS is effective in terms of compression ratio.
[0071] Also, the first method and the second method may be switched depending on the use of the encoded data. For example, when the encoded three-dimensional data is used as a map, it is desirable to be able to separate dynamic objects, so the encoding device uses the second method. On the other hand, when encoding three-dimensional data of an event such as a concert or sporting event, if there is no need to separate dynamic objects, the encoding device uses the first method.
[0072] Furthermore, the decode time and display time of the GOS or SPC can be stored in the encoded data or as meta information. Furthermore, all time information of static objects may be the same. In this case, the actual decode time and display time may be determined by the decoding device. Alternatively, a different value may be assigned as the decode time for each GOS or SPC, and the same value may be assigned as the display time for all. Furthermore, a model may be introduced in which the decoder has a buffer of a predetermined size, and guarantees that decoding can be performed without failure if a bitstream is read at a predetermined bit rate according to the decode time, as in a decoder model in video coding such as the HRD (Hypothetical Reference Decoder) of HEVC.
[0073] Next, the arrangement of GOS in the world will be described. The coordinates of the three-dimensional space in the world are expressed by three mutually orthogonal coordinate axes (x-axis, y-axis, z-axis). By setting a predetermined rule for the coding order of GOS, coding can be performed so that spatially adjacent GOS are continuous in the coded data. For example, in the example shown in FIG. 4, GOS in the xz plane are coded continuously. After coding of all GOS in a certain xz plane is completed, the value of the y axis is updated. In other words, as coding progresses, the world extends in the y axis direction. Also, the index numbers of GOS are set in the coding order.
[0074] Here, the three-dimensional space of the world is associated one-to-one with absolute geographical coordinates such as GPS or latitude and longitude. Alternatively, the three-dimensional space may be expressed by a relative position from a preset reference position. The directions of the x-axis, y-axis, and z-axis of the three-dimensional space are expressed as direction vectors determined based on the latitude and longitude, and the direction vectors are stored as meta information together with the encoded data.
[0075] Moreover, the size of the GOS is fixed, and the encoding device stores the size as meta information. The size of the GOS may be switched depending on, for example, whether it is an urban area or not, or whether it is indoors or outdoors. That is, the size of the GOS may be switched depending on the amount or nature of objects that have information value. Alternatively, the encoding device may adaptively switch the size of the GOS or the interval of I-SPCs in the GOS depending on the density of objects within the same world. For example, the higher the density of objects, the smaller the size of the GOS and the shorter the interval of I-SPCs in the GOS.
[0076] In the example of Figure 5, the third to tenth GOS areas have a high density of objects, so the GOS are subdivided to achieve fine-grained random access. Note that the seventh to tenth GOS are located behind the third to sixth GOS, respectively.
[0077] Next, the configuration and operation flow of the three-dimensional data encoding device according to this embodiment will be described. Fig. 6 is a block diagram of the three-dimensional data encoding device 100 according to this embodiment. Fig. 7 is a flowchart showing an example of the operation of the three-dimensional data encoding device 100.
[0078] 6 generates encoded three-dimensional data 112 by encoding three-dimensional data 111. The 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 coding region determination unit 102 determines a region to be coded from among the spatial regions corresponding to the acquired point cloud data (S102). For example, the coding region determination unit 102 determines a spatial region around a position of a user or a vehicle as a region to be coded, depending on the position of the user or the vehicle.
[0081] Next, the division unit 103 divides the point cloud data included in the region to be coded into each processing unit. Here, the processing units are the above-mentioned GOS and SPC, etc. Furthermore, this region to be coded corresponds to, for example, the above-mentioned world. Specifically, the division unit 103 divides the point cloud data into processing units based on a preset size of the GOS, or the presence or absence or size of a dynamic object (S103). Furthermore, the division unit 103 determines the start position of the SPC that is the first in the coding order in each GOS.
[0082] Next, the encoding unit 104 generates encoded three-dimensional data 112 by sequentially encoding a plurality of SPCs in each GOS (S104).
[0083] In this example, the area to be coded is divided into GOS and SPC, and then each GOS is coded, but the processing procedure is not limited to the above. For example, a procedure may be used in which the configuration of one GOS is determined, the GOS is coded, and then the configuration of the next GOS is determined.
[0084] In this way, the three-dimensional data encoding device 100 generates encoded three-dimensional data 112 by encoding the three-dimensional data 111. Specifically, the three-dimensional data encoding device 100 divides the three-dimensional data into first processing units (GOS), which are random access units and each of which corresponds to a three-dimensional coordinate, 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). Furthermore, the third processing units (VLM) include one or more voxels (VXL), which are the smallest units to which position information corresponds.
[0085] Next, the three-dimensional data encoding device 100 generates encoded three-dimensional data 112 by encoding each of the multiple first processing units (GOS). Specifically, the three-dimensional data encoding device 100 encodes each of the multiple second processing units (SPC) in each first processing unit (GOS). Also, the three-dimensional data encoding device 100 encodes each of the multiple 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 by referring to other second processing units (SPC) included in the first processing unit (GOS) to be processed. In other words, the three-dimensional data encoding device 100 does not refer to the second processing unit (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 second processing unit (SPC) to be processed included in the first processing unit (GOS) to be processed is encoded by referring to other second processing units (SPC) included in the first processing unit (GOS) to be processed, or a second processing unit (SPC) included in a first processing unit (GOS) different from the first processing unit (GOS) to be processed.
[0088] In addition, the three-dimensional data encoding device 100 selects, as the type of the second processing unit (SPC) to be processed, one of a first type (I-SPC) that does not reference other second processing units (SPCs), a second type (P-SPC) that references one other second processing unit (SPC), and a third type that references two other second processing units (SPCs), 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 three-dimensional data decoding device 200 according to this embodiment. Fig. 9 is a flowchart showing an example of the operation of the three-dimensional data decoding device 200.
[0090] 8 generates decoded three-dimensional data 212 by decoding 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 3D data 211 (S201). Next, the decoding start GOS determination unit 202 determines a GOS to be decoded (S202). Specifically, the decoding start GOS determination unit 202 refers to meta information stored in the encoded 3D data 211 or separately from the encoded 3D data, and determines a GOS including an SPC corresponding to a spatial position, object, or time at which decoding starts as a GOS to be decoded.
[0092] Next, the decoding SPC determination unit 203 determines the type (I, P, B) of the SPC to be decoded in the GOS (S203). For example, the decoding SPC determination unit 203 determines whether to (1) decode only the I-SPC, (2) decode the I-SPC and P-SPC, or (3) decode all types. Note that if the type of SPC to be decoded has been determined in advance, such as when all SPCs are to be decoded, this step does not need to be performed.
[0093] Next, the decoding unit 204 obtains the address position at which the first SPC in the GOS in decoding order (the same as the encoding order) starts in the encoded 3D data 211, obtains the encoded data of the first SPC from the address position, and sequentially decodes each SPC in order starting from the first SPC (S204). Note that the address position is stored in meta information or the like.
[0094] In this manner, the three-dimensional data decoding device 200 decodes the decoded three-dimensional data 212. Specifically, the three-dimensional data decoding device 200 generates the decoded three-dimensional data 212 of the first processing unit (GOS) by decoding each of the encoded three-dimensional data 211 of the first processing unit (GOS), which is a random access unit and corresponds to a three-dimensional coordinate. More specifically, the three-dimensional data decoding device 200 decodes each of the multiple second processing units (SPC) in each first processing unit (GOS). Also, the three-dimensional data decoding device 200 decodes each of the multiple third processing units (VLM) in each second processing unit (SPC).
[0095] The meta information for random access will be described below. This meta information is generated by the three-dimensional data encoding device 100 and is included in the encoded three-dimensional data 112 (211).
[0096] In conventional random access for two-dimensional video, decoding is started from the first frame of a random access unit that is close to a specified time. On the other hand, in the world, random access to space (coordinates, objects, etc.) is assumed in addition to time.
[0097] Therefore, in order to realize random access to at least three elements, coordinates, object, and time, a table is prepared that associates each element with a GOS index number. Furthermore, the GOS index number is associated with the address of the I-SPC at the beginning of the GOS. FIG. 10 is a diagram showing an example of a table included in the meta information. Note that it is not necessary to use all of the tables shown in FIG. 10, and it is sufficient to use at least one table.
[0098] Hereinafter, as an example, random access starting from coordinates will be described. When accessing coordinates (x2, y2, z2), first, the coordinate-GOS table is referenced and it is found that the point with coordinates (x2, y2, z2) is included in the second GOS. Next, the GOS address table is referenced and it is found that the address of the first I-SPC in the second GOS is addr(2), so the decoding unit 204 obtains data from this address and starts decoding.
[0099] The address may be an address in a logical format or a physical address of a HDD or memory. Information that identifies a file segment may be used instead of the address. For example, a file segment is a unit obtained by segmenting one or more GOS.
[0100] In addition, if an object spans multiple GOSs, the object-GOS table may indicate multiple GOSs to which the object belongs. 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 multiple GOSs can refer to each other to improve compression efficiency.
[0101] Examples of objects include humans, animals, cars, bicycles, traffic lights, landmark buildings, etc. For example, the three-dimensional data encoding device 100 can extract feature points specific to objects from a three-dimensional point cloud or the like when encoding a world, detect objects based on the feature points, and set the detected objects as random access points.
[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). The encoded three-dimensional data 112 (211) includes this first information. 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 first information from the encoded three-dimensional data 211, and uses the first information to identify the encoded three-dimensional data 211 of a first processing unit corresponding to a specified three-dimensional coordinate, object or time, and decodes the encoded three-dimensional data 211.
[0104] Other examples of meta information will be described below. In addition to the meta information for random access, the three-dimensional data encoding device 100 may generate and store the following meta information. Furthermore, the three-dimensional data decoding device 200 may use this meta information during decoding.
[0105] When using three-dimensional data as map information, a profile may be defined according to the application, and information indicating the profile may be included in the meta information. For example, a profile for urban areas or suburban areas, or for flying objects may be defined, and the maximum or minimum size of the world, SPC, or VLM may be defined for each. For example, the minimum size of the VLM is set to be smaller for urban areas, since more detailed information is required than for suburban areas.
[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, a tag value may be set for each type of object, such as a tag value of "0" indicating a "person," a tag value of "1" indicating a "car," and a tag value of "2" indicating a "traffic light." Alternatively, when it is difficult to determine the type of object or there is no need to determine it, a tag value indicating a property such as size or whether the object is a dynamic or static object may be used.
[0107] The meta information may also include information indicating the extent of the spatial region that the world occupies.
[0108] The meta information may also store the size of an SPC or VXL as header information common to a plurality of SPCs, such as an SPC in an entire stream of encoded data or a GOS.
[0109] The meta information may also include identification information for the range sensor or camera used to generate the point cloud, or information indicating the positional accuracy of the points in the point cloud.
[0110] The meta information may also include information indicating whether the world is made up of only static objects or whether it also includes dynamic objects.
[0111] A modification of this embodiment will now 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 positions of the GOSs.
[0113] In cases where three-dimensional data is used as a spatial map for the movement of a vehicle or flying object, or where such a spatial map is to be generated, the encoding device or decoding device may encode or decode a GOS or SPC contained in a space identified based on a GPS, route information, zoom magnification, etc.
[0114] The decoding device may also decode spaces in order from the closest to the self-location or the driving route. The encoding device or decoding device may code or decode spaces farther from the self-location or the driving route by lowering the priority compared to closer spaces. Here, lowering the priority means lowering the processing order, lowering the resolution (thinning out the data before processing), or lowering the image quality (increasing the encoding efficiency, for example, by increasing the quantization step), etc.
[0115] Furthermore, when decoding encoded data that has been hierarchically encoded in space, the decoding device may decode only the lower hierarchical layers.
[0116] The decoding device may also give priority to decoding from the lower layers depending on the zoom factor or purpose of the map.
[0117] In addition, for applications such as self-position estimation or object recognition performed when a car or robot is driving autonomously, the encoding device or decoding device may perform encoding or decoding with reduced resolution except for areas within a specific height from the road surface (area where recognition is performed).
[0118] The encoding device may also encode point clouds that represent the spatial shapes of the interior and exterior of a room separately. For example, by separating the GOS that represent the interior of a room (indoor GOS) from the GOS that represent the exterior of a room (outdoor GOS), the decoding device can select the GOS to be decoded according to the viewpoint position when using the encoded data.
[0119] The encoding device may also encode the indoor GOS and the outdoor GOS that are close to each other in the encoded stream so that they are adjacent to each other. For example, the encoding device may associate identifiers of the two and store information indicating the associated identifiers in the encoded stream or in meta information stored separately. This allows the decoding device to identify the indoor GOS and the outdoor GOS that are close to each other by referring to the information in the meta information.
[0120] The encoding device may also switch the size of the GOS or SPC between the indoor GOS and the outdoor GOS. For example, the encoding device may set the size of the GOS smaller indoors than outdoors. The encoding device may also change the accuracy of extracting feature points from the point cloud or the accuracy of object detection between the indoor GOS and the outdoor GOS.
[0121] The encoding device may also add information to the encoded data that allows the decoding device to distinguish dynamic objects from static objects. This allows the decoding device to display dynamic objects together with red frames or explanatory text. The decoding device may display only red frames or explanatory text instead of dynamic objects. The decoding device may also display more specific object types. For example, a red frame may be used for cars and a yellow frame for people.
[0122] Furthermore, the encoding device or decoding device may determine whether to encode or decode dynamic objects and static objects as different SPCs or GOSs, depending on the frequency of appearance of the dynamic objects, or the ratio of static objects to dynamic objects, etc. For example, if the frequency of appearance or the ratio of dynamic objects exceeds a threshold, an SPC or GOS in which dynamic objects and static objects are mixed is permitted, and if the frequency of appearance or the ratio of dynamic objects does not exceed the threshold, an SPC or GOS in which dynamic objects and static objects are mixed is not permitted.
[0123] When detecting a dynamic object from two-dimensional image information from a camera, rather than from a point cloud, the encoding device may separately obtain information for identifying the detection result (such as a frame or text) and the object position, and encode this information as part of the three-dimensional encoded data. In this case, the decoding device displays auxiliary information (a frame or text) indicating the dynamic object by superimposing it on the decoding result of the static object.
[0124] The encoding device may also change the density of the VXL or VLM in the SPC depending on the complexity of the shape of the static object, etc. For example, the encoding device sets the VXL or VLM to be denser as the shape of the static object becomes more complex. Furthermore, the encoding device may determine the quantization step, etc., when quantizing spatial position or color information, depending on the density of the VXL or VLM. For example, the encoding device sets the quantization step to be smaller as the VXL or VLM becomes denser.
[0125] As described above, the encoding device or decoding device according to this embodiment performs spatial encoding or decoding in units of spaces having coordinate information.
[0126] Furthermore, the encoding device and the decoding device perform encoding and decoding in units of volumes within a space. A volume includes voxels, which are the smallest units to which position information can be associated.
[0127] 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, and time with a GOP, or a table that associates each element with each other. The decoding device determines coordinates using the value of a selected element, identifies a volume, voxel, or space from the coordinates, and decodes the space including the volume or voxel, or the identified space.
[0128] The encoding device also determines volumes, voxels, or spaces that can be selected by elements by feature point extraction or object recognition, and encodes them as randomly accessible volumes, voxels, or spaces.
[0129] Spaces are classified into three types: I-SPC, which can be encoded or decoded by itself; P-SPC, which is encoded or decoded by reference to any one processed space; and B-SPC, which is encoded or decoded by reference to any two processed spaces.
[0130] One or more volumes correspond to static objects or dynamic objects. The space containing the static objects and the space containing the dynamic objects are encoded or decoded as different GOS. That is, the SPC containing the static objects and the SPC containing the dynamic objects are assigned to different GOS.
[0131] Dynamic objects are encoded or decoded on an object-by-object basis and associated with one or more spaces containing static objects, i.e., multiple dynamic objects are encoded individually and the resulting encoded data for the multiple dynamic objects are associated with an SPC containing the static objects.
[0132] The encoding device and the decoding device increase the priority of the I-SPC in the GOS and perform encoding or decoding. For example, the encoding device performs encoding so as to reduce degradation of the I-SPC (so that the original three-dimensional data is reproduced more faithfully after decoding). Also, the decoding device decodes only the I-SPC, for example.
[0133] The encoding device may perform encoding by changing the frequency of using I-SPC depending on the density or number (amount) of objects in the world. In other words, the encoding device changes the frequency of selecting I-SPC depending on the number or density of objects included in the three-dimensional data. For example, the encoding device increases the frequency of using I-space as the density of objects in the world increases.
[0134] Furthermore, the encoding device sets random access points in units of GOS, and stores information indicating a 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. The encoding device may change the size of the GOS depending on 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 become denser or the number of objects or dynamic objects becomes greater.
[0136] The space or volume may also include a set of feature points 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. Furthermore, the position information can be highly accurate by subdividing the voxels.
[0137] The feature points are derived using a plurality of pictures having at least two types of time information: actual time information and time information that is the same for a plurality of pictures associated with the space (e.g., encoding time used for rate control, etc.).
[0138] Moreover, encoding or decoding is performed in units of GOS including one or more spaces.
[0139] The encoding device and the decoding device refer to spaces in a GOS that have already been processed to predict a P space or a B space in a GOS to be processed.
[0140] Alternatively, the encoding device and the decoding device predict the P space or the B space in the GOS to be processed by using a processed space in the GOS to be processed, without referring to a different GOS.
[0141] Furthermore, the encoding device and the decoding device transmit or receive an encoded stream in units of worlds, each world including one or more GOSs.
[0142] Furthermore, the GOS has a layer structure in at least one direction within a world, and the encoding device and decoding device encode or decode 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. In other words, the GOS is spatially divided in a predetermined direction and includes multiple layers, each of which includes one or more SPCs. The encoding device and decoding device encode or decode each SPC by referring to an SPC included in the same layer as the SPC or in a layer lower than the SPC.
[0143] In addition, the encoding device and the decoding device encode or decode the GOSs continuously within a world unit including multiple GOSs. The encoding device and the decoding device write or read information indicating the order (direction) of encoding or decoding as metadata. In other words, the encoded data includes information indicating the encoding order of multiple GOSs.
[0144] Furthermore, the encoding device and the decoding device encode or decode two or more different spaces or GOS in parallel.
[0145] In addition, the encoding device and the decoding device encode and decode spatial information (coordinates, size, etc.) of the space or GOS.
[0146] In addition, the encoding device and the decoding device encode or decode a space or GOS included in a specific space that is identified based on external information related to its own position and / or area size, such as GPS, route information, or magnification.
[0147] The encoding device or decoding device encodes or decodes a space far from its own position with a lower priority than a space close to its own position.
[0148] The encoding device sets one direction in a world according to a magnification or a use, and encodes a GOS having a layer structure in the direction. The decoding device decodes the GOS having a layer structure in one direction in a world set according to a magnification or a use, preferentially from a lower layer.
[0149] The encoding device changes the feature point extraction, object recognition accuracy, or spatial region size included in the indoor and outdoor spaces. However, the encoding device and the decoding device encode or decode the indoor GOS and the outdoor GOS that are close in coordinates as adjacent in the world, and also encode or decode their identifiers in association with each other.
[0150] (Embodiment 2) When using the encoded data of a point cloud in an actual device or service, it is desirable to transmit and receive the necessary information according to the purpose in order to reduce the network bandwidth. However, until now, such a function has not existed in the encoding structure of three-dimensional data, and there has been no encoding method for this purpose.
[0151] In this embodiment, we describe a three-dimensional data encoding method and a three-dimensional data encoding device that provide the function of transmitting and receiving only the information necessary depending on the application in encoded data of a three-dimensional point cloud, as well as a three-dimensional data decoding method and a three-dimensional data decoding device that decodes the encoded data.
[0152] A voxel (VXL) having a certain amount of features or more is defined as a feature voxel (FVXL), and a world (WLD) composed of FVXL is defined as a sparse world (SWLD). FIG. 11 is a diagram showing an example of the configuration of a sparse world and a world. SWLD includes FGOS, which is a GOS composed of FVXL, FSPC, which is an SPC composed of FVXL, and FVLM, which is a VLM composed of FVXL. The data structures and prediction structures of FGOS, FSPC, and FVLM may be the same as those of GOS, SPC, and VLM.
[0153] The feature amount is a feature amount that expresses three-dimensional position information of the VXL or visible light information of the VXL position, and is a feature amount that is often detected especially at corners and edges of a three-dimensional object. Specifically, this feature amount is a three-dimensional feature amount or visible light feature amount as described below, but any feature amount that expresses the position, brightness, or color information of the VXL, etc., may be used.
[0154] As the three-dimensional features, SHOT features (Signature of Histograms of OrienTations), PFH features (Point Feature Histograms), or PPF features (Point Pair Feature) are used.
[0155] The SHOT feature is obtained by dividing the VXL area, calculating the inner product of the reference point and the normal vector of the divided area, and forming a histogram. This SHOT feature has a high dimensionality and is characterized by its high expressiveness.
[0156] The PFH feature is obtained by selecting many pairs of two points near the VXL, calculating normal vectors from those two points, and creating a histogram. Since the PFH feature is a histogram feature, it is robust against some disturbances and has high feature expression power.
[0157] The PPF feature is calculated using normal vectors for each of two VXL points. Since the entire VXL is used for the PPF feature, it is robust against occlusion.
[0158] In addition, as a feature of visible light, Scale-Invariant Feature Transform (SIFT), Speeded Up Robust Features (SURF), Histogram of Oriented Gradients (HOG), or the like, which uses information such as luminance gradient information of an image, can be used.
[0159] The SWLD is generated by calculating the above feature amount from each VXL of the WLD and extracting the FVXL. Here, the SWLD may be updated every time the WLD is updated, or may be updated periodically after a certain period of time has elapsed, regardless of the timing of updating the WLD.
[0160] A SWLD may be generated for each feature. For example, a separate SWLD may be generated for each feature, such as SWLD1 based on SHOT features and SWLD2 based on SIFT features, and the SWLDs may be used according to the purpose. Also, the calculated feature of each FVXL may be stored in each FVXL as feature information.
[0161] Next, we explain how to use sparse world learning (SWLD). SWLDs contain only feature voxels (FVXL), so their data size is generally smaller than WLDs that contain all VXL.
[0162] In applications that use features to achieve some purpose, the time required to read from a hard disk, as well as the bandwidth and transfer time required for network transfer, can be reduced by using SWLD information instead of WLD information. For example, by storing WLD and SWLD as map information on a server and switching the map information to be sent to WLD or SWLD in response to a request from a client, the network bandwidth and transfer time can be reduced. A specific example is shown below.
[0163] 12 and 13 are diagrams showing examples of using SWLD and WLD. As shown in FIG. 12, when a client 1, which is an in-vehicle device, needs map information for self-location determination, the client 1 sends a request for map data for self-location estimation to the server (S301). The server transmits an SWLD to the client 1 in response to the request (S302). The client 1 performs self-location determination using the received SWLD (S303). At this time, the client 1 obtains VXL information around the client 1 using various methods such as a distance sensor such as a range finder, a stereo camera, or a combination of multiple monocular cameras, and estimates self-location information from the obtained VXL information and SWLD. Here, the self-location information includes three-dimensional position information and orientation of the client 1.
[0164] As shown in Fig. 13, when the client 2, which is an in-vehicle device, needs map information for the purpose of drawing a map such as a three-dimensional map, the client 2 sends a request to the server to obtain map data for map drawing (S311). The server transmits a WLD to the client 2 in response to the request (S312). The client 2 uses the received WLD to draw the map (S313). At this time, the client 2 creates a rendering image using, for example, an image captured by itself using a visible light camera or the like and the WLD obtained from the server, and draws the created image on the screen of a car navigation system or the like.
[0165] As described above, the server transmits SWLD to the client for applications that mainly require the feature values of each VXL, such as self-location estimation, and transmits WLD to the client for applications that require detailed VXL information, such as map drawing. This makes it possible to transmit and receive map data efficiently.
[0166] The client may determine whether it needs a SWLD or a WLD and request the server to send either a SWLD or a WLD. The server may determine whether it should send a SWLD or a WLD depending on the client or network conditions.
[0167] Next, we will explain how to switch between sending and receiving data in the sparse world (SWLD) and the world (WLD).
[0168] It is also possible to switch between receiving the WLD or the SWLD depending on the network bandwidth. Fig. 14 is a diagram showing an example of operation in this case. For example, when a low-speed network with a limited available network bandwidth such as 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 ample network bandwidth such as 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). This allows the client to acquire appropriate map information depending on the network bandwidth of the client.
[0169] Specifically, the client receives SWLD via LTE when outdoors, and obtains WLD via Wi-Fi (registered trademark) when inside a facility, etc. This enables the client to obtain more detailed map information about the indoor area.
[0170] In this way, the client may request a WLD or SWLD from the server depending on the bandwidth of the network that the client uses. Alternatively, the client may send information indicating the bandwidth of the network that the client uses to the server, and the server may send data (WLD or SWLD) suitable for the client depending on 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, whether to receive the WLD or SWLD may be switched depending on the moving speed. FIG. 15 is a diagram showing an example of the operation 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). This allows the client to obtain map information suited to the speed while suppressing the network bandwidth. Specifically, the client can update rough map information at an appropriate speed by receiving SWLD with a small amount of data while traveling on a highway. On the other hand, the client can obtain more detailed map information by receiving WLD while traveling on an ordinary road.
[0172] In this way, the client may request the server for the WLD or SWLD depending on its own moving speed. Alternatively, the client may transmit information indicating its own moving speed to the server, and the server may transmit data (WLD or SWLD) suitable for the client depending on the information. Alternatively, the server may determine the moving speed of the client and transmit data (WLD or SWLD) suitable for the client.
[0173] Alternatively, the client may first obtain SWLD from the server, and then obtain WLD for important areas from that. For example, when obtaining map data, the client may first obtain rough map information in SWLD, narrow down the map information to areas where buildings, signs, people, or other features appear frequently, and obtain WLD for the narrowed down area later. This allows the client to obtain detailed information for the required area while suppressing the amount of data received from the server.
[0174] Also, the server may create separate SWLDs for each object from the WLD, and the client may receive each according to the purpose. This can reduce network bandwidth. For example, the server may recognize people or cars from the WLD in advance, and create SWLDs for people and SWLDs for cars. The client receives SWLDs for people when it wants to obtain information about people in the vicinity, and SWLDs for cars when it wants to obtain information about cars. Also, the types of SWLDs may be distinguished by information (flags, types, etc.) added to the header, etc.
[0175] Next, the configuration and operation flow of a three-dimensional data encoding device (e.g., a server) according to this embodiment will be described. Fig. 16 is a block diagram of a three-dimensional data encoding device 400 according to this embodiment. Fig. 17 is a flowchart of a three-dimensional data encoding process by the three-dimensional data encoding device 400.
[0176] 16 generates encoded three-dimensional data 413 and 414, which are encoded streams, by encoding input three-dimensional data 411. Here, the encoded three-dimensional data 413 is encoded three-dimensional data corresponding to a WLD, and the encoded three-dimensional data 414 is encoded three-dimensional data corresponding to a SWLD. This three-dimensional data encoding device 400 includes an acquisition unit 401, an encoding region 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 coding region determination unit 402 determines a spatial region to be coded based on the spatial region in which the point cloud data exists (S402).
[0179] Next, the SWLD extraction unit 403 defines the spatial region to be encoded as a WLD, and calculates a feature amount from each VXL included in the WLD.The SWLD extraction unit 403 then extracts VXLs whose feature amount is equal to or greater than a predetermined threshold, defines the extracted VXLs as FVXLs, and adds the FVXLs to the SWLD to generate extracted three-dimensional data 412 (S403).That is, extracted three-dimensional data 412 whose feature amount is equal to or greater than a threshold is extracted from the input three-dimensional data 411.
[0180] Next, the WLD encoding unit 404 generates encoded 3D data 413 corresponding to the WLD by encoding the input 3D data 411 corresponding to the WLD (S404). At this time, the WLD encoding unit 404 adds information to the header of the encoded 3D data 413 for distinguishing that the encoded 3D data 413 is a stream including a WLD.
[0181] Furthermore, 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 to the header of the encoded three-dimensional data 414 for distinguishing that the encoded three-dimensional data 414 is a stream including a SWLD.
[0182] The order of the process for generating the encoded three-dimensional data 413 and the process for generating the encoded three-dimensional data 414 may be reversed. Also, some or all of these processes may be performed in parallel.
[0183] For example, a parameter "world_type" is defined as information to be added to the headers of the encoded 3D data 413 and 414. When world_type=0, it indicates that the stream includes a WLD, and when world_type=1, it indicates that the stream includes a SWLD. When defining many other types, the assigned numerical value may be increased, such as world_type=2. Also, a specific flag may be included in one of the encoded 3D data 413 and 414. For example, a flag indicating that the stream includes a SWLD may be added to the encoded 3D data 414. In this case, the decoding device can determine whether the stream includes a WLD or a SWLD depending on the presence or absence of the flag.
[0184] Furthermore, the encoding method used by the WLD encoding unit 404 when encoding the WLD may be different from the encoding method used by the SWLD encoding unit 405 when encoding the SWLD.
[0185] For example, in SWLD, data is thinned, so that the correlation with surrounding data may be lower than in WLD. Therefore, in the encoding method used in SWLD, among intra prediction and inter prediction, inter prediction may be prioritized over the encoding method used in WLD.
[0186] In addition, the coding method used for SWLD and the coding method used for WLD may differ in the way of expressing three-dimensional positions. 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, which will be described later, or vice versa.
[0187] Furthermore, 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, the correlation between data of SWLD may be lower than that of WLD. This may result in a decrease in encoding efficiency, and the data size of the encoded three-dimensional data 414 may be 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 extracted feature points, 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 an octree structure described later, the degree of quantization can be made coarser by rounding the data in the lowest layer.
[0189] Furthermore, if the data size of the encoded three-dimensional data 414 of SWLD cannot be made smaller than the data size of the encoded three-dimensional data 413 of WLD, the SWLD encoding unit 405 may not 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. In other words, 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 a three-dimensional data decoding device (e.g., a client) according to this embodiment will be described. Fig. 18 is a block diagram of a three-dimensional data decoding device 500 according to this embodiment. Fig. 19 is a flowchart of three-dimensional data decoding processing by the three-dimensional data decoding device 500.
[0191] 18 generates decoded three-dimensional data 512 or 513 by decoding 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] 19, first, an acquisition unit 501 acquires encoded 3D data 511 (S501). Next, a header analysis unit 502 analyzes the header of the encoded 3D data 511 and determines whether the encoded 3D data 511 is a stream including a WLD or a stream including a SWLD (S502). For example, the above-mentioned world_type parameter is referenced to perform the determination.
[0194] If the encoded three-dimensional data 511 is a stream including a WLD (Yes in S503), the WLD decoding unit 503 generates decoded three-dimensional data 512 of the WLD by decoding the encoded three-dimensional data 511 (S504). On the other hand, if the encoded three-dimensional data 511 is a stream including a SWLD (No in S503), the SWLD decoding unit 504 generates decoded three-dimensional data 513 of the SWLD by decoding the encoded three-dimensional data 511 (S505).
[0195] Also, similarly to the encoding device, the decoding method used by the WLD decoding unit 503 when decoding the WLD may be different from the decoding method used by the SWLD decoding unit 504 when decoding the SWLD. For example, in the decoding method used for the SWLD, inter prediction may be prioritized over the decoding method used for the WLD, out of intra prediction and inter prediction.
[0196] In addition, the decoding method used for SWLD and the decoding method used for WLD may use different methods for expressing three-dimensional positions. 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 octet tree, which will be described later, or vice versa.
[0197] Next, an octree representation, which is a method of representing a 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 a VXL in a 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 VXL1 to 3 that are VXLs (hereinafter, valid VXLs) that include point groups. 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 respectively represent VXL1, VXL2, and VXL3 shown in FIG. 20.
[0198] Specifically, each node and leaf corresponds 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, and among the eight blocks, the block containing a valid VXL is set as a node, 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 the number of layers of the tree structure. Also, all the blocks in the lowest layer are set as leaves.
[0199] FIG. 22 is a diagram showing an example of a SWLD generated from the WLD shown in FIG. 20. As a result of feature extraction, VXL1 and VXL2 shown in FIG. 20 are determined to be FVXL1 and FVXL2, and are added to the SWLD. On the other hand, VXL3 is not determined to be FVXL, and is not included in the SWLD. FIG. 23 is a diagram showing an 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 a valid VXL, and is changed to a leaf. In this way, the number of leaves in the SWLD is generally smaller than the number of leaves in the WLD, and the encoded three-dimensional data of the SWLD is also smaller than the encoded three-dimensional data of the WLD.
[0200] A modification of this embodiment will now be described.
[0201] For example, when a client such as an in-vehicle device estimates its own location, it receives an SWLD from a server and estimates its own location using the SWLD. When performing obstacle detection, the client may perform obstacle detection based on three-dimensional information of the surrounding area that it has acquired using various methods such as a distance sensor such as a range finder, a stereo camera, or a combination of multiple monocular cameras.
[0202] In addition, SWLDs generally do not include VXL data for flat areas. Therefore, the server may hold a subsampled world (subWLD) that is a subsample of WLD for static obstacle detection, and transmit SWLD and subWLD to the client. This allows the client to perform self-location estimation and obstacle detection while suppressing network bandwidth.
[0203] Also, when a client wants to quickly draw 3D map data, it may be more convenient for the map information to have a mesh structure. Therefore, the server may generate a mesh from the WLD and store it in advance as a mesh world (MWLD). For example, a client receives an MWLD when it needs a rough 3D drawing, and receives a WLD when it needs a detailed 3D drawing. This can reduce the network bandwidth.
[0204] In addition, the server sets the VXL whose feature amount is equal to or greater than the threshold value as the FVXL among the VXLs, but the FVXL may be calculated by a different method. For example, the server may determine that the VXL, VLM, SPC, or GOS constituting a signal or an intersection is necessary for self-location estimation, driving assistance, or automatic driving, and may include the VXL, VLM, FSPC, or GOS in the SWLD. The above determination may be performed manually. 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 data corresponding to an object having a predetermined attribute from the input three-dimensional data 411 as the extracted three-dimensional data 412.
[0205] In addition, the fact that it is necessary for those uses may be labeled separately from the feature. In addition, the server may separately hold FVXL necessary for self-location estimation at signals or intersections, driving assistance, autonomous driving, etc., as a higher layer (e.g., lane world) of SWLD.
[0206] The server may also add attributes to the VXL in the WLD for each random access unit or for each predetermined unit. The attributes include, for example, information indicating whether it is necessary or unnecessary for self-location estimation, or information indicating whether it is important as traffic information such as a signal or an intersection. The attributes may also include a correspondence relationship with a feature (such as an intersection or a road) in lane information (such as GDF: Geographic Data Files).
[0207] In addition, the following method may be used as a method for updating the WLD or SWLD.
[0208] Updates, such as changes in people, construction, or tree-lined streets (for trucks), are uploaded to the server as point clouds or metadata. The server updates the WLD based on the upload, and then updates the SWLD with the updated WLD.
[0209] In addition, when the client detects an inconsistency between the 3D information generated by itself during self-location estimation and the 3D information received from the server, the client may transmit the 3D information generated by itself together with an update notification to the server. 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 out of date.
[0210] In addition, although information for distinguishing between WLD and SWLD is added as header information of the encoded stream, when there are many kinds of worlds, such as mesh world and lane world, information for distinguishing them may be added to the header information. In addition, when there are many SWLDs with different features, information for distinguishing them may be added to the header information.
[0211] Although the SWLD is described as being composed of FVXL, it may include VXL that is not determined to be FVXL. For example, the SWLD may include adjacent VXL used when calculating the feature amount of FVXL. This allows the client to calculate the feature amount of FVXL when receiving the SWLD, even if feature amount information is not added to each FVXL in the SWLD. In this case, the SWLD may include information for distinguishing whether each VXL is FVXL or VXL.
[0212] As described above, the three-dimensional data encoding device 400 extracts extracted three-dimensional data 412 (second three-dimensional data) whose features are greater than or equal to a threshold value from the input three-dimensional data 411 (first three-dimensional data), and generates encoded three-dimensional data 414 (first encoded three-dimensional data) by encoding the extracted three-dimensional data 412.
[0213] According to this, the three-dimensional data encoding device 400 generates encoded three-dimensional data 414 by encoding data whose feature amount is equal to or greater than a threshold value. This makes it possible to reduce the amount of data compared to when the input three-dimensional data 411 is encoded as is. Therefore, the three-dimensional data encoding device 400 can reduce the amount of data to be transmitted.
[0214] Moreover, the three-dimensional data encoding device 400 further encodes the input three-dimensional data 411 to generate encoded three-dimensional data 413 (second encoded three-dimensional data).
[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 depending on, for example, the intended use.
[0216] Moreover, the extracted three-dimensional data 412 is encoded by a first encoding method, and the input three-dimensional data 411 is encoded by a second encoding method different from the first encoding method.
[0217] This allows the three-dimensional data encoding device 400 to use an encoding method suitable for each of the input three-dimensional data 411 and the extracted three-dimensional data 412.
[0218] Furthermore, in the first encoding method, of intra prediction and inter prediction, inter prediction is given priority over the second encoding method.
[0219] This allows the 3D data encoding device 400 to increase the priority of inter prediction for the extracted 3D data 412 in which the correlation between adjacent data is likely to be low.
[0220] In addition, the first and second encoding methods differ in the way they represent three-dimensional positions. For example, the second encoding method represents three-dimensional positions using an octree, whereas the first encoding method represents three-dimensional positions using three-dimensional coordinates.
[0221] This enables the three-dimensional data encoding device 400 to use a more suitable three-dimensional position expression method for three-dimensional data having a different number of pieces of data (the number of VXLs or FVXLs).
[0222] Furthermore, at least one of the encoded three-dimensional data 413 and 414 includes an identifier indicating whether the encoded three-dimensional data is encoded three-dimensional data obtained by encoding the input three-dimensional data 411, or encoded three-dimensional data obtained by encoding a portion of the input three-dimensional data 411. In other words, the identifier indicates whether the encoded three-dimensional data is encoded three-dimensional data 413 of WLD or encoded three-dimensional data 414 of SWLD.
[0223] This allows the decoding device to easily determine whether the acquired encoded three-dimensional data is encoded three-dimensional data 413 or encoded three-dimensional data 414.
[0224] Furthermore, the three-dimensional data encoding device 400 encodes the extracted three-dimensional data 412 so that the amount of encoded three-dimensional data 414 is smaller than the amount of encoded three-dimensional data 413 .
[0225] According to this, the three-dimensional data encoding device 400 can make the amount of encoded three-dimensional data 414 smaller than the amount of encoded three-dimensional data 413 .
[0226] Moreover, the three-dimensional data encoding device 400 further extracts data corresponding to an object having a predetermined attribute from the input three-dimensional data 411 as extracted three-dimensional data 412. For example, the object having the predetermined attribute is an object necessary for self-location estimation, driving assistance, automatic driving, or the like, such as a traffic light or an intersection.
[0227] This allows the three-dimensional data encoding device 400 to generate encoded three-dimensional data 414 that includes data required by the decoding device.
[0228] Moreover, the three-dimensional data encoding device 400 (server) further transmits one of the encoded three-dimensional data 413 and 414 to the client depending on the state of the client.
[0229] This allows the three-dimensional data encoding device 400 to transmit appropriate data depending on the state of the client.
[0230] The state of the client also includes the communication status of the client (eg, network bandwidth) or the movement speed of the client.
[0231] Moreover, the three-dimensional data encoding device 400 further transmits one of the encoded three-dimensional data 413 and 414 to the client in response to a request from the client.
[0232] This allows the three-dimensional data encoding device 400 to transmit appropriate data in response to a request from a client.
[0233] Moreover, the three-dimensional data decoding device 500 according to this embodiment decodes the encoded three-dimensional data 413 or 414 generated by the three-dimensional data encoding device 400 described above.
[0234] That is, the three-dimensional data decoding device 500 decodes, by a first decoding method, the encoded three-dimensional data 414 obtained by encoding the extracted three-dimensional data 412, the feature amount of which is equal to or greater than a threshold value, extracted from the input three-dimensional data 411. Also, the three-dimensional data decoding device 500 decodes, by a second decoding method different from the first decoding method, the encoded three-dimensional data 413 obtained by encoding the input three-dimensional data 411.
[0235] According to this, the three-dimensional data decoding device 500 can selectively receive the encoded three-dimensional data 414, which is obtained by encoding data whose feature amount is equal to or greater than a threshold value, and the encoded three-dimensional data 413, depending on, for example, the intended use. This allows the three-dimensional data decoding device 500 to reduce the amount of data to be transmitted. Furthermore, the three-dimensional data decoding device 500 can use a decoding method suitable for each of the input three-dimensional data 411 and the extracted three-dimensional data 412.
[0236] Furthermore, in the first decoding method, of intra prediction and inter prediction, inter prediction is given priority over the second decoding method.
[0237] This allows the 3D data decoding device 500 to increase the priority of inter prediction for extracted 3D data in which the correlation between adjacent data is likely to be low.
[0238] In addition, the first and second decoding methods have different methods of expressing three-dimensional positions. For example, in the second decoding method, a three-dimensional position is expressed by an octree, whereas in the first decoding method, a three-dimensional position is expressed by three-dimensional coordinates.
[0239] This allows the three-dimensional data decoding device 500 to use a more suitable three-dimensional position expression method for three-dimensional data with different numbers of data (numbers of VXLs or FVXLs).
[0240] Furthermore, at least one of the encoded three-dimensional data 413 and 414 includes an identifier indicating whether the encoded three-dimensional data is encoded three-dimensional data obtained by encoding the input three-dimensional data 411, or encoded three-dimensional data obtained by encoding a portion of the input three-dimensional data 411. The three-dimensional data decoding device 500 identifies the encoded three-dimensional data 413 and 414 by referring to the identifier.
[0241] This allows the three-dimensional data decoding device 500 to easily determine whether the acquired encoded three-dimensional data is the encoded three-dimensional data 413 or the encoded three-dimensional data 414.
[0242] Furthermore, 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 depending on the state of the client.
[0243] This allows the three-dimensional data decoding device 500 to receive appropriate data depending on the state of the client.
[0244] The state of the client also includes the communication status of the client (eg, network bandwidth) or the movement speed of the client.
[0245] Moreover, 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] This allows the three-dimensional data decoding device 500 to 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, three-dimensional data is transmitted and received between a vehicle and a surrounding vehicle.
[0248] 24 is a block diagram of a three-dimensional data creation device 620 according to this embodiment. The three-dimensional data creation device 620 is included in, for example, a vehicle, and creates a more detailed third three-dimensional data 636 by synthesizing a first three-dimensional data 632 created by the three-dimensional data creation device 620 with a second three-dimensional data 635 received.
[0249] This three-dimensional data creation device 620 includes a three-dimensional data creation unit 621 , a requested range determination unit 622 , a search unit 623 , a reception unit 624 , a decoding unit 625 , and a synthesis unit 626 .
[0250] First, a three-dimensional data creation unit 621 creates first three-dimensional data 632 using sensor information 631 detected by a sensor equipped in the vehicle. Next, a required range determination unit 622 determines a required range, which is a three-dimensional spatial range in which data is insufficient in the created first three-dimensional data 632.
[0251] Next, the search unit 623 searches for nearby vehicles that have three-dimensional data in the requested range, and transmits requested range information 633 indicating the requested range to the nearby vehicles identified by the search. Next, the receiving unit 624 receives encoded three-dimensional data 634, which is an encoded stream of the requested range, from the nearby vehicles (S624). Note that the search unit 623 may indiscriminately issue a request to all vehicles present in a specific range, and receive the encoded three-dimensional data 634 from those that respond. Also, the search unit 623 may issue a request to an object, such as a traffic light or a sign, in addition to a vehicle, and receive the encoded three-dimensional data 634 from the object.
[0252] Next, the decoding unit 625 obtains second three-dimensional data 635 by decoding the received encoded three-dimensional data 634. Next, the synthesis unit 626 creates third three-dimensional data 636, which is denser, by synthesizing the first three-dimensional data 632 and the second three-dimensional data 635.
[0253] Next, a configuration and operation of three-dimensional data transmission device 640 according to this embodiment will be described.
[0254] The three-dimensional data transmission device 640 is, for example, included in the surrounding vehicle described above, processes the fifth three-dimensional data 652 created by the surrounding vehicle into sixth three-dimensional data 654 requested by the host vehicle, encodes the sixth three-dimensional data 654 to generate encoded three-dimensional data 634, 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 receiving unit 642 , an extracting unit 643 , an encoding unit 644 , and a transmitting unit 645 .
[0256] First, the three-dimensional data creation unit 641 creates fifth three-dimensional data 652 using sensor information 651 detected by a sensor equipped in the surrounding vehicle. Next, the receiving unit 642 receives the requested range information 633 transmitted from the host vehicle.
[0257] Next, the extraction unit 643 extracts three-dimensional data of the requested range indicated by the requested range information 633 from the fifth three-dimensional data 652, thereby processing the fifth three-dimensional data 652 into sixth three-dimensional data 654. 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 vehicle itself is equipped with a three-dimensional data creation device 620 and the surrounding vehicles are equipped with a three-dimensional data transmission device 640, but each vehicle may have the functions of both the three-dimensional data creation device 620 and the three-dimensional data transmission device 640.
[0259] (Embodiment 4) In this embodiment, the operation of an abnormality system in self-location estimation based on a three-dimensional map will be described.
[0260] It is expected that applications such as self-driving cars, or autonomous movement of mobile objects such as robots or flying objects such as drones will expand in the future. One example of a means for realizing such autonomous movement is a method in which a mobile object estimates its own position within a three-dimensional map (self-location estimation) and travels according to the map.
[0261] Self-location estimation can be achieved by matching a 3D map with 3D information about the surroundings of the vehicle (hereinafter referred to as vehicle-detected 3D data) obtained by sensors such as a range finder (such as LiDAR) or a stereo camera mounted on the vehicle, and estimating the vehicle's position within the 3D map.
[0262] A 3D map, such as the HD map proposed by HERE, may include not only a 3D point cloud, but also 2D map data such as shape information of roads and intersections, or information that changes in real time such as traffic jams and accidents. A 3D map is made up of multiple layers such as 3D data, 2D data, and metadata that changes in real time, and a device can obtain or refer to only the necessary data.
[0263] The point cloud data may be the above-mentioned SWLD, or may include point group data other than feature points. Furthermore, the transmission and reception of the point cloud data is performed on a basis of one or multiple random access units.
[0264] The following methods can be used as a method for matching the 3D map with the vehicle-detected 3D data. For example, the device compares the shapes of the point groups in each point cloud, and determines that parts with high similarity between feature points are in the same position. In addition, when the 3D map is composed of SWLDs, the device performs matching by comparing the feature points that compose the SWLDs with the 3D feature points extracted from the vehicle-detected 3D data.
[0265] Here, to estimate the vehicle's position with high accuracy, (A) it is necessary to acquire a 3D map and 3D vehicle detection data, and (B) the accuracy of these must satisfy a predetermined standard. However, in the following abnormal cases, (A) or (B) cannot be satisfied.
[0266] (1) 3D maps cannot be obtained via communication.
[0267] (2) The 3D map does not exist, or the 3D map has been acquired but is corrupted.
[0268] (3) The vehicle's sensor is out of order or the weather is bad, so the accuracy of generating the vehicle-detected 3D data is insufficient.
[0269] The operation for dealing with these abnormal cases will be described below. Although the operation will be described below using a car as an example, the following method can be applied to any autonomously moving animal, such as a robot or a drone.
[0270] The configuration and operation of a three-dimensional information processing device according to this embodiment for dealing with abnormal cases in a three-dimensional map or vehicle-detected three-dimensional data will be described below. Fig. 26 is a block diagram showing an example of the configuration of a three-dimensional information processing device 700 according to this embodiment.
[0271] The three-dimensional information processing device 700 is mounted on a moving object such as an automobile. As shown in FIG. 26 , the three-dimensional information processing device 700 includes a three-dimensional map acquisition unit 701, a host vehicle detection data acquisition unit 702, an abnormality case determination unit 703, a countermeasure operation decision unit 704, and an operation control unit 705.
[0272] The three-dimensional information processing device 700 may include a two-dimensional or one-dimensional sensor (not shown) for detecting structures or animals around the vehicle, such as a camera for acquiring a two-dimensional image, or a sensor for one-dimensional data using ultrasonic waves or a laser. The three-dimensional information processing device 700 may also include a communication unit (not shown) for acquiring a three-dimensional map through a mobile communication network such as 4G or 5G, or through vehicle-to-vehicle communication or road-to-vehicle communication.
[0273] The three-dimensional map acquisition unit 701 acquires a three-dimensional map 711 of the vicinity of the travel route. For example, the three-dimensional map acquisition unit 701 acquires the three-dimensional map 711 through a mobile communication network, or through vehicle-to-vehicle communication or road-to-vehicle communication.
[0274] Next, the host vehicle detection data acquisition unit 702 acquires host vehicle detection three-dimensional data 712 based on the sensor information. For example, the host vehicle detection data acquisition unit 702 generates the host vehicle detection three-dimensional data 712 based on sensor information acquired by a sensor equipped in the host vehicle.
[0275] Next, the abnormality case determination unit 703 detects an abnormality case by performing a predetermined check on at least one of the acquired three-dimensional map 711 and the host vehicle detected three-dimensional data 712. In other words, the abnormality case determination unit 703 determines whether at least one of the acquired three-dimensional map 711 and the host vehicle detected three-dimensional data 712 is abnormal.
[0276] When an abnormal case is detected, a countermeasure action decision unit 704 decides a countermeasure action for the abnormal case. Next, an action control unit 705 controls the operation of each processing unit required for carrying out the countermeasure action, such as the three-dimensional map acquisition unit 701.
[0277] On the other hand, if no abnormal case is detected, the three-dimensional information processing apparatus 700 ends the process.
[0278] Furthermore, the three-dimensional information processing device 700 uses the three-dimensional map 711 and the vehicle-detected three-dimensional data 712 to estimate the self-position of the vehicle having the three-dimensional information processing device 700. 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 in units of subspaces having three-dimensional coordinate information, and each is a collection of one or more subspaces, 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 whose three-dimensional feature amount is equal to or greater than a predetermined threshold value are encoded.
[0280] Furthermore, the three-dimensional information processing device 700 generates second three-dimensional position information (vehicle-detected three-dimensional data 712) from information detected by the sensor. Next, the three-dimensional information processing device 700 performs an abnormality determination process on the first three-dimensional position information or the second three-dimensional position information to determine whether the first three-dimensional position information or the second three-dimensional position information is abnormal.
[0281] When the first three-dimensional position information or the second three-dimensional position information is determined to be abnormal, the three-dimensional information processing apparatus 700 determines a countermeasure action for the abnormality. Next, the three-dimensional information processing apparatus 700 performs control required for carrying out the countermeasure action.
[0282] This allows the three-dimensional information processing apparatus 700 to detect an abnormality in the first three-dimensional position information or the second three-dimensional position information, and to take appropriate action.
[0283] (Embodiment 5) In this embodiment, a method of transmitting three-dimensional data to a following vehicle will be described.
[0284] 27 is a block diagram showing an example of the configuration of a three-dimensional data creation device 810 according to this embodiment. This three-dimensional data creation device 810 is mounted on, for example, a vehicle. The three-dimensional data creation device 810 transmits and receives three-dimensional data to and from an external traffic monitoring cloud, a leading vehicle, or a following vehicle, and creates and stores three-dimensional data.
[0285] The three-dimensional data creation device 810 includes a data receiving unit 811, a communication unit 812, a receiving control unit 813, a format conversion unit 814, multiple 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 receiving 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 a point cloud, a visible light image, depth information, sensor position information, or speed information, including an area that cannot be detected by the sensor 815 of the vehicle itself.
[0287] The communication unit 812 communicates with the traffic monitoring cloud or the vehicle ahead, and transmits data transmission requests, etc. to the traffic monitoring cloud or the vehicle ahead.
[0288] The reception control unit 813 exchanges information such as compatible formats 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 or the like on the three-dimensional data 831 received by the data receiving unit 811. Furthermore, when the three-dimensional data 831 is compressed or encoded, the format conversion unit 814 performs decompression or decoding processing.
[0290] The multiple sensors 815 are a group of sensors such as LiDAR, a visible light camera, or an infrared camera that acquires information about the outside of the vehicle, and generate sensor information 833. For example, when the sensor 815 is a laser sensor such as LiDAR, the sensor information 833 is three-dimensional data such as a point cloud (point cloud data). Note that the number of sensors 815 does not need to be multiple.
[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 a point cloud, a visible light image, depth information, sensor position information, or velocity information.
[0292] The three-dimensional data synthesis unit 817 synthesizes three-dimensional data 834 created based on the host vehicle's sensor information 833 with three-dimensional data 832 created by a traffic monitoring cloud or a preceding vehicle, etc., to construct three-dimensional data 835 that includes the space in front of the preceding vehicle that cannot be detected by the host vehicle's sensor 815.
[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 data transmission requests, etc. to the traffic monitoring cloud or the following vehicle.
[0295] The transmission control unit 820 exchanges information such as compatible formats with the communication destination and establishes communication with the communication destination via the communication unit 819. In addition, the transmission control unit 820 determines a transmission region, which is the space of the three-dimensional data to be transmitted, based on three-dimensional data construction information of the three-dimensional data 832 generated by the three-dimensional data synthesis unit 817 and a data transmission request from the communication destination.
[0296] Specifically, the transmission control unit 820 determines a transmission region including a space in front of the vehicle that cannot be detected by the sensor of the following vehicle in response to a data transmission request from the traffic monitoring cloud or the following vehicle. The transmission control unit 820 also determines the transmission region by judging whether or not a transmittable space or a transmitted space has been updated based on the three-dimensional data construction information. For example, the transmission control unit 820 determines the region specified in the data transmission request and in which the corresponding three-dimensional data 835 exists as the transmission region. Then, the transmission control unit 820 notifies the format conversion unit 821 of the format supported by the communication destination and the transmission region.
[0297] The format conversion unit 821 converts three-dimensional data 836 of the transmission region, among the three-dimensional data 835 stored in the three-dimensional data storage unit 818, into a format supported by the receiving side, thereby generating three-dimensional data 837. Note that the format conversion unit 821 may reduce the amount of data 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. The three-dimensional data 837 includes information such as a point cloud, visible light image, depth information, or sensor position information in front of the vehicle, including blind spots of the following vehicle.
[0299] In the above description, the format conversion units 814 and 821 perform format conversion, but the format conversion does not necessarily have to be performed.
[0300] With this configuration, the three-dimensional data creation device 810 externally acquires three-dimensional data 831 of an area that cannot be detected by the sensor 815 of the host vehicle, and generates three-dimensional data 835 by synthesizing the three-dimensional data 831 with three-dimensional data 834 based on sensor information 833 detected by the sensor 815 of the host vehicle. In this way, the three-dimensional data creation device 810 can generate three-dimensional data of an area that cannot be detected by the sensor 815 of the host vehicle.
[0301] In addition, in response to a data transmission request from a traffic monitoring cloud or a following vehicle, the three-dimensional data creation device 810 can transmit three-dimensional data including the space in front of the vehicle that cannot be detected by the sensors of the following vehicle to the traffic monitoring cloud or the following vehicle, etc.
[0302] (Embodiment 6) In the fifth embodiment, an example has been described in which a client device such as a vehicle transmits three-dimensional data to another vehicle or a server such as a traffic monitoring cloud. In the present embodiment, the client device transmits sensor information obtained by a sensor to the server or another client device.
[0303] First, the configuration of the system according to this embodiment will be described. Fig. 28 is a diagram showing the configuration of a transmission / reception system for a 3D map and sensor information according to this embodiment. This system includes a server 901 and client devices 902A and 902B. When there is no particular need to distinguish between the client devices 902A and 902B, they are also referred to as client devices 902.
[0304] The client device 902 is, for example, an in-vehicle device mounted on a moving object such as a vehicle. The server 901 is, for example, a traffic monitoring cloud or the like, and is capable of communicating with a plurality of client devices 902.
[0305] The server 901 transmits a three-dimensional map composed of a point cloud to the client device 902. Note that the composition of the three-dimensional map is not limited to a point cloud, and may represent other three-dimensional data such as a mesh structure.
[0306] The client device 902 transmits sensor information acquired by the client device 902 to the server 901. The sensor information includes, for example, at least one of LiDAR acquisition information, a visible light image, an infrared image, a depth image, sensor position information, and speed information.
[0307] Data transmitted between the server 901 and the client device 902 may be compressed to reduce data, or may be left uncompressed to maintain data accuracy. When compressing data, a three-dimensional compression method based on an octree structure, for example, can be used for the point cloud. Also, a two-dimensional image compression method can be used for the visible light image, the infrared image, and the depth image. The two-dimensional image compression method is, for example, MPEG-4 AVC or HEVC standardized by MPEG.
[0308] Furthermore, the server 901 transmits the three-dimensional map managed by the server 901 to the client device 902 in response to a transmission request for the three-dimensional map from the client device 902. Note that the server 901 may transmit the three-dimensional map without waiting for a transmission request for the three-dimensional map from the client device 902. For example, the server 901 may broadcast the three-dimensional map to one or more client devices 902 in a predetermined space. Furthermore, the server 901 may transmit a three-dimensional map suitable for the position of the client device 902 at regular intervals to the client device 902 that has received a transmission request once. Furthermore, the server 901 may transmit the three-dimensional map to the client device 902 every time the three-dimensional map managed by the server 901 is updated.
[0309] The client device 902 issues a request for transmitting a three-dimensional map to the server 901. For example, when the client device 902 wants to estimate its own position while driving, the client device 902 transmits a request for transmitting a three-dimensional map to the server 901.
[0310] In the following cases, the client device 902 may issue a transmission request for a three-dimensional map to the server 901. If the three-dimensional map held by the client device 902 is old, the client device 902 may issue a transmission request for a three-dimensional map to the server 901. For example, if a certain period of time has passed since the client device 902 acquired the three-dimensional map, the client device 902 may issue a transmission request for a three-dimensional map to the server 901.
[0311] The client device 902 may issue a request to send a three-dimensional map to the server 901 a certain time before the client device 902 leaves the space shown in the three-dimensional map held by the client device 902. For example, when the client device 902 is within a predetermined distance from the boundary of the space shown in the three-dimensional map held by the client device 902, the client device 902 may issue a request to send a three-dimensional map to the server 901. In addition, when the movement route and movement speed of the client device 902 are known, the time when the client device 902 will leave the space shown in the three-dimensional map held by the client device 902 may be predicted based on these.
[0312] If the error in aligning the three-dimensional data created by the client device 902 from sensor information with the three-dimensional map is equal to or greater than a certain level, the client device 902 may issue a request to the server 901 to transmit the three-dimensional map.
[0313] The client device 902 transmits the sensor information to the server 901 in response to a request to transmit the sensor information transmitted from the server 901. The client device 902 may transmit the sensor information to the server 901 without waiting for a request to transmit the sensor information from the server 901. For example, once the client device 902 receives a request to transmit the sensor information from the server 901, the client device 902 may transmit the sensor information to the server 901 periodically for a certain period of time. In addition, when an error occurs in aligning three-dimensional data created by the client device 902 based on the sensor information with the three-dimensional map obtained from the server 901, the client device 902 may determine that a change may have occurred in the three-dimensional map around the client device 902 and transmit a message to that effect along with the sensor information to the server 901.
[0314] The server 901 issues a transmission request for sensor information to the client device 902. For example, the server 901 receives location information of the client device 902, such as a GPS, from the client device 902. When the server 901 determines, based on the location information of the client device 902, that the client device 902 is approaching a space with little information in the three-dimensional map managed by the server 901, it issues a transmission request for sensor information to the client device 902 in order to generate a new three-dimensional map. The server 901 may also issue a transmission request for sensor information when it is desired to update the three-dimensional map, when it is desired to check road conditions such as during snowfall or a disaster, when it is desired to check traffic congestion conditions, or when it is desired to check incident and accident conditions, etc.
[0315] Furthermore, the client device 902 may set the amount of data of the sensor information to be transmitted to the server 901 depending on the communication state or bandwidth at the time of receiving a request to transmit the sensor information from the server 901. Setting the amount of data of the sensor information to be transmitted to the server 901 means, for example, increasing or decreasing the amount of the data itself or appropriately selecting a compression method.
[0316] 29 is a block diagram showing an example of the configuration of a client device 902. The client device 902 receives a three-dimensional map composed of a point cloud or the like from the server 901, and estimates the self-position of the client device 902 from three-dimensional data created based on sensor information of the client device 902. In addition, the client device 902 transmits the acquired sensor information to the server 901.
[0317] The client device 902 includes a data receiving unit 1011, a communication unit 1012, a reception control unit 1013, a format conversion unit 1014, multiple sensors 1015, a three-dimensional data creation unit 1016, a three-dimensional image processing unit 1017, a three-dimensional data storage unit 1018, a format conversion unit 1019, a communication unit 1020, a transmission control unit 1021, and a data transmission unit 1022.
[0318] The data receiving unit 1011 receives a three-dimensional map 1031 from the server 901. The three-dimensional map 1031 is data including a point cloud such as a WLD or a SWLD. The three-dimensional map 1031 may include either compressed data or uncompressed data.
[0319] The communication unit 1012 communicates with the server 901, and transmits data transmission requests (for example, requests to transmit a three-dimensional map) to the server 901.
[0320] The reception control unit 1013 exchanges information such as compatible formats with the communication destination via the communication unit 1012, and establishes communication with the communication destination.
[0321] The format conversion unit 1014 generates a three-dimensional map 1032 by performing format conversion and the like on the three-dimensional map 1031 received by the data receiving unit 1011. Furthermore, if the three-dimensional map 1031 is compressed or encoded, the format conversion unit 1014 performs decompression or decoding processing. Note that if the three-dimensional map 1031 is uncompressed data, the format conversion unit 1014 does not perform decompression or decoding processing.
[0322] The multiple sensors 1015 are a group of sensors, such as LiDAR, a visible light camera, an infrared camera, or a depth sensor, that acquire information about the outside of the vehicle in which the client device 902 is mounted, and generate sensor information 1033. For example, when the sensor 1015 is a laser sensor such as LiDAR, the sensor information 1033 is three-dimensional data such as a point cloud (point cloud data). Note that the number of sensors 1015 does not need to be multiple.
[0323] The three-dimensional data creation unit 1016 creates three-dimensional data 1034 of the surroundings of the vehicle based on the sensor information 1033. For example, the three-dimensional data creation unit 1016 creates point cloud data with color information of the surroundings of the vehicle using information acquired by the LiDAR and a visible light image acquired by a visible light camera.
[0324] The three-dimensional image processing unit 1017 performs self-position estimation processing of the vehicle using a three-dimensional map 1032 such as a received point cloud and three-dimensional data 1034 of the surroundings of the vehicle generated from the sensor information 1033. The three-dimensional image processing unit 1017 may generate three-dimensional data 1035 of the surroundings of the vehicle by combining the three-dimensional map 1032 and the three-dimensional data 1034, and perform self-position estimation processing using the generated three-dimensional data 1035.
[0325] The three-dimensional data storage unit 1018 stores a three-dimensional map 1032, three-dimensional data 1034, and three-dimensional data 1035, and the like.
[0326] The format conversion unit 1019 generates sensor information 1037 by converting the sensor information 1033 into a format supported by the receiving side. The format conversion unit 1019 may reduce the amount of data by compressing or encoding the sensor information 1037. Furthermore, the format conversion unit 1019 may omit processing when format conversion is not necessary. Furthermore, the format conversion unit 1019 may control the amount of data to be transmitted in accordance with a designated transmission range.
[0327] The communication unit 1020 communicates with the server 901, and receives data transmission requests (sensor information transmission requests) and the like from the server 901.
[0328] The transmission control unit 1021 exchanges information such as compatible formats 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 acquired by a plurality of sensors 1015, such as information acquired by a LiDAR, a luminance image acquired by a visible light camera, an infrared image acquired by an infrared camera, a depth image acquired by a depth sensor, sensor position information, and speed information.
[0330] Next, the configuration of the server 901 will be described. Fig. 30 is a block diagram showing an example of the configuration of the server 901. The server 901 receives sensor information transmitted from the client device 902, and creates three-dimensional data based on the received sensor information. The server 901 updates a three-dimensional map managed by the server 901 using the created three-dimensional data. In addition, the server 901 transmits the updated three-dimensional map to the client device 902 in response to a transmission request for the three-dimensional map from the client device 902.
[0331] The server 901 includes a data receiving unit 1111, a communication unit 1112, a receiving control unit 1113, a format conversion unit 1114, a three-dimensional data creation unit 1116, a three-dimensional data synthesis unit 1117, a three-dimensional data storage unit 1118, a format conversion unit 1119, a communication unit 1120, a transmission control unit 1121, and a data transmission unit 1122.
[0332] The data receiving unit 1111 receives sensor information 1037 from the client device 902. The sensor information 1037 includes, for example, information acquired by a LiDAR, a luminance image acquired by a visible light camera, an infrared image acquired by an infrared camera, a depth image acquired by a depth sensor, sensor position information, and speed information.
[0333] The communication unit 1112 communicates with the client device 902 and transmits a data transmission request (for example, a request to transmit sensor information) to the client device 902 .
[0334] The reception control unit 1113 exchanges information such as compatible formats with the communication destination via the communication unit 1112, and establishes communication.
[0335] When the received sensor information 1037 is compressed or encoded, the format conversion unit 1114 performs decompression or decoding processing to generate the sensor information 1132. Note that, when the sensor information 1037 is non-compressed data, the format conversion unit 1114 does not perform decompression or decoding processing.
[0336] The three-dimensional data creation unit 1116 creates three-dimensional data 1134 of the periphery of the client device 902 based on the sensor information 1132. For example, the three-dimensional data creation unit 1116 creates point cloud data with color information of the periphery of the client device 902 using information acquired by the LiDAR and visible light images acquired by a visible light camera.
[0337] A three-dimensional data synthesis unit 1117 synthesizes three-dimensional data 1134 created based on the sensor information 1132 with a three-dimensional map 1135 managed by the server 901, thereby updating the three-dimensional map 1135.
[0338] The three-dimensional data storage unit 1118 stores a 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. The format conversion unit 1119 may reduce the amount of data by compressing or encoding the three-dimensional map 1135. Furthermore, the format conversion unit 1119 may omit processing when format conversion is not necessary. Furthermore, the format conversion unit 1119 may control the amount of data to be transmitted in accordance with a designated transmission range.
[0340] The communication unit 1120 communicates with the client device 902 and receives a data transmission request (a request to transmit a three-dimensional map) or the like from the client device 902 .
[0341] A transmission control unit 1121 exchanges information such as compatible formats with a communication destination via a communication unit 1120, and establishes 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 a SWLD. The three-dimensional map 1031 may include either compressed data or uncompressed data.
[0343] Next, a description will be given of the operation flow of the client device 902. Fig. 31 is a flowchart showing the operation of the client device 902 when acquiring a three-dimensional map.
[0344] First, the client device 902 requests the server 901 to transmit a three-dimensional map (such as a point cloud) (S1001). At this time, the client device 902 may also transmit position information of the client device 902 obtained by GPS or the like, thereby requesting the server 901 to transmit a three-dimensional map related to the position information.
[0345] Next, the client device 902 receives the three-dimensional map from the server 901 (S1002). If the received three-dimensional map is compressed data, the client device 902 decodes the received three-dimensional map to generate an uncompressed three-dimensional map (S1003).
[0346] Next, the client device 902 creates three-dimensional data 1034 of the periphery of the client device 902 from sensor information 1033 obtained by the multiple sensors 1015 (S1004). Next, the client device 902 estimates its own position using the three-dimensional map 1032 received from the server 901 and the three-dimensional data 1034 created from the sensor information 1033 (S1005).
[0347] 32 is a flowchart showing an operation of the client device 902 when transmitting sensor information. First, the client device 902 receives a request to transmit sensor information from the server 901 (S1011). The client device 902 that has received the transmission request transmits sensor information 1037 to the server 901 (S1012). Note that, when the sensor information 1033 includes a plurality of pieces of information obtained by a plurality of sensors 1015, the client device 902 may generate the sensor information 1037 by compressing each piece of information using a compression method suitable for each piece of information.
[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] 34 is a flowchart showing the operation of the server 901 when transmitting a three-dimensional map. First, the server 901 receives a request to transmit a three-dimensional map from the client device 902 (S1031). The server 901 that has received the request to transmit the three-dimensional map transmits the three-dimensional map 1031 to the client device 902 (S1032). At this time, the server 901 may extract a three-dimensional map of the vicinity according to the position information of the client device 902, and transmit the extracted three-dimensional map. The server 901 may also compress the three-dimensional map composed of a point cloud using, for example, a compression method based on an octet tree structure, and transmit the compressed three-dimensional map.
[0350] A modification of this embodiment will now be described.
[0351] The server 901 creates three-dimensional data 1134 of the vicinity of the position of the client device 902 using the sensor information 1037 received from the client device 902. Next, the server 901 calculates the difference between the three-dimensional data 1134 and the three-dimensional map 1135 by matching the created three-dimensional data 1134 with a three-dimensional map 1135 of the same area managed by the server 901. If the difference is equal to or greater than a predetermined threshold, the server 901 determines that some abnormality has occurred in the vicinity of the client device 902. For example, when ground subsidence or the like occurs due to a natural disaster such as an earthquake, it is considered that a large difference occurs between the three-dimensional map 1135 managed by the server 901 and the three-dimensional data 1134 created based on the sensor information 1037.
[0352] The sensor information 1037 may include information indicating at least one of the type of sensor, the performance of the sensor, and the model number of the sensor. In addition, a class ID or the like according to the performance of the sensor may be added to the sensor information 1037. For example, when the sensor information 1037 is information acquired by LiDAR, it is possible to assign an identifier to the performance of the sensor, such as class 1 for a sensor that can acquire information with an accuracy of several millimeters, class 2 for a sensor that can acquire information with an accuracy of several centimeters, and class 3 for a sensor that can acquire information with an accuracy of several meters. In addition, the server 901 may estimate the performance information of the sensor from the model number of the client device 902. For example, when the client device 902 is mounted on a vehicle, the server 901 may determine the spec information of the sensor from the model of the vehicle. In this case, the server 901 may acquire information on the model of the vehicle in advance, or the information may be included in the sensor information. In addition, the server 901 may use the acquired sensor information 1037 to switch the degree of correction for the three-dimensional data 1134 created using the sensor information 1037. For example, when the sensor performance is high accuracy (class 1), the server 901 does not perform correction on the three-dimensional data 1134. When the sensor performance is low accuracy (class 3), the server 901 applies correction according to the accuracy of the sensor to the three-dimensional data 1134. For example, the server 901 increases the degree (strength) of correction as the accuracy of the sensor decreases.
[0353] The server 901 may simultaneously issue requests to send sensor information to multiple client devices 902 in a certain space. When the server 901 receives multiple pieces of sensor information from multiple client devices 902, the server 901 does not need to use all of the sensor information to create the three-dimensional data 1134, and may select the sensor information to be used according to the performance of the sensor, for example. For example, when updating the three-dimensional map 1135, the server 901 may select high-precision sensor information (class 1) from the multiple pieces of sensor information received, and create the three-dimensional data 1134 using the selected sensor information.
[0354] The server 901 is not limited to a server such as a traffic monitoring cloud, but may be another client device (mounted in a vehicle). Figure 35 is a diagram showing the system configuration in this case.
[0355] For example, client device 902C issues a request to send sensor information to nearby client device 902A and acquires the sensor information from client device 902A. Client device 902C then creates three-dimensional data using the acquired sensor information of client device 902A and updates the three-dimensional map of client device 902C. This allows client device 902C to generate a three-dimensional map of the space that can be acquired from client device 902A by taking advantage of the performance of client device 902C. For example, it is considered that such a case occurs when client device 902C has high performance.
[0356] In this case, the client device 902A that provided the sensor information is given the right to obtain the high-precision 3D map generated by the client device 902C. The client device 902A receives the high-precision 3D map from the client device 902C in accordance with the right.
[0357] In addition, the client device 902C may issue a request to transmit sensor information to multiple nearby client devices 902 (client device 902A and client device 902B). If the sensor of the client device 902A or the client device 902B is high performance, the client device 902C can create three-dimensional data using the sensor information obtained by the high performance sensor.
[0358] 36 is a block diagram showing the functional configuration of a server 901 and a client device 902. The server 901 includes, for example, a 3D map compression / decoding processing unit 1201 that compresses and decodes a 3D map, and a sensor information compression / decoding processing unit 1202 that compresses and decodes sensor information.
[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 encoded data of the compressed three-dimensional map and decodes the encoded data to obtain the three-dimensional map. The sensor information compression processing unit 1212 compresses the sensor information itself instead of the three-dimensional data created from the acquired sensor information, and transmits the encoded data of the compressed sensor information to the server 901. With this configuration, the client device 902 only needs to internally hold a processing unit (device or LSI) that performs processing to decode the three-dimensional map (point cloud, etc.), and does not need to internally hold a processing unit that performs processing to compress the three-dimensional data of the three-dimensional map (point cloud, etc.). This makes it possible to reduce the cost and power consumption of the client device 902.
[0360] As described above, the client device 902 according to this embodiment is mounted on a moving body, and creates three-dimensional data 1034 of the surroundings of the moving body from sensor information 1033 indicating the surrounding conditions of the moving body, obtained by a sensor 1015 mounted on the moving body. The client device 902 estimates the self-position of the moving body using the created three-dimensional data 1034. The client device 902 transmits the acquired sensor information 1033 to the server 901 or another moving body 902.
[0361] According to this, the client device 902 transmits the sensor information 1033 to the server 901 or the like. This may reduce the amount of data to be transmitted compared to the case of transmitting three-dimensional data. Also, since the client device 902 does not need to perform processing such as compression or encoding of the three-dimensional data, the amount of processing by the client device 902 can be reduced. Therefore, the client device 902 can reduce the amount of data to be transmitted or simplify the device configuration.
[0362] Moreover, the client device 902 further transmits a request to the server 901 to transmit a three-dimensional map, and receives a three-dimensional map 1031 from the server 901. The client device 902 estimates its own location using the three-dimensional data 1034 and the three-dimensional map 1032.
[0363] 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] Furthermore, the sensor information 1033 includes information indicating the performance of the sensor.
[0365] Furthermore, the client device 902 encodes or compresses the sensor information 1033, and transmits the encoded or compressed sensor information 1037 to the server 901 or another mobile body 902. This allows the client device 902 to reduce the amount of data to be transmitted.
[0366] For example, the client device 902 includes a processor and a memory, and the processor uses the memory to perform the above-mentioned processing.
[0367] Furthermore, the server 901 according to this embodiment is capable of communicating with a client device 902 mounted on the mobile object, and receives sensor information 1037 indicating the surrounding conditions of the mobile object, obtained by a sensor 1015 mounted on the mobile object, from the client device 902. The server 901 creates three-dimensional data 1134 of the surroundings of the mobile object from the received sensor information 1037.
[0368] According to this, the server 901 creates three-dimensional data 1134 using the sensor information 1037 transmitted from the client device 902. This may reduce the amount of data transmitted compared to when the client device 902 transmits three-dimensional data. In addition, since the client device 902 does not need to perform processing such as compression or encoding of the three-dimensional data, the amount of processing by the client device 902 can be reduced. Therefore, the server 901 can reduce the amount of data transmitted or simplify the device configuration.
[0369] Moreover, the server 901 further transmits a request to the client device 902 to transmit the sensor information.
[0370] Furthermore, the server 901 further updates a three-dimensional map 1135 using the created three-dimensional data 1134 , and transmits the three-dimensional map 1135 to the client device 902 in response to a transmission request for the three-dimensional map 1135 from the client device 902 .
[0371] 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] Additionally, the sensor information 1037 includes information indicating the performance of the sensor.
[0373] Moreover, the server 901 further corrects the three-dimensional data in accordance with the performance of the sensor, thereby enabling the three-dimensional data creation method to improve the quality of the three-dimensional data.
[0374] Furthermore, in receiving the sensor information, the server 901 receives a plurality of pieces of sensor information 1037 from a plurality of client devices 902, and selects the sensor information 1037 to be used for creating the three-dimensional data 1134 based on a plurality of pieces of information indicating the performance of the sensors included in the plurality of pieces of sensor information 1037. This allows the server 901 to improve the quality of the three-dimensional data 1134.
[0375] Furthermore, the server 901 decodes or expands the received sensor information 1037, and creates three-dimensional data 1134 from the decoded or expanded sensor information 1132. This allows the server 901 to reduce the amount of data to be transmitted.
[0376] For example, the server 901 includes a processor and a memory, and the processor uses the memory to perform the above-mentioned processing.
[0377] (Embodiment 7) In this 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 device 1300 according to this embodiment. The three-dimensional data encoding device 1300 generates an encoded bit stream (hereinafter, 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 device 1300 includes a division unit 1301, a subtraction unit 1302, a transformation unit 1303, a quantization unit 1304, an inverse quantization unit 1305, an inverse transformation 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 dividing unit 1301 divides each space (SPC) included in the three-dimensional data into a plurality of volumes (VLM), which are coding units. The dividing unit 1301 also converts the voxels in each volume into an octree representation. The dividing unit 1301 may make the space and the volume the same size and convert the space into an octree representation. The dividing unit 1301 may also add information required for the octree representation (depth information, etc.) to the header of the bitstream, etc.
[0380] The subtraction unit 1302 calculates a difference between the volume (volume to be coded) output from the division unit 1301 and a prediction volume generated by intra prediction or inter prediction, which will be described later, and outputs the calculated difference as a prediction residual to the conversion unit 1303. Fig. 38 is a diagram showing an example of calculation of a prediction residual. Note that the bit strings of the volume to be coded and the prediction volume shown here are, for example, position information indicating the positions of three-dimensional points (for example, a point cloud) included in the volume.
[0381] The octree representation and the voxel scan order will be described below. The volume is converted (octreeized) into an octree structure and then encoded. The octree structure is composed of nodes and leaves. Each node has eight nodes or leaves, and each leaf has voxel (VXL) information. Fig. 39 is a diagram showing an example of the structure of a volume including multiple voxels. Fig. 40 is a diagram showing an example of the volume shown in Fig. 39 converted into an octree structure. Here, among the leaves shown in Fig. 40, leaves 1, 2, and 3 respectively represent voxels VXL1, VXL2, and VXL3 shown in Fig. 39, and represent a VXL including a point cloud (hereinafter, effective VXL).
[0382] An octree is represented by a binary sequence of, for example, 0 and 1. For example, if a node or a valid VXL is set to value 1 and the rest to value 0, then the binary sequence shown in FIG. 40 is assigned to each node and leaf. Then, this binary sequence is scanned according to the scan order of breadth-first or depth-first. For example, when breadth-first scanning is performed, the binary sequence shown in A of FIG. 41 is obtained. When depth-first scanning is performed, the binary sequence shown in B of FIG. 41 is obtained. The binary sequence obtained by this scan is coded by entropy coding to reduce the amount of information.
[0383] Next, the depth information in the octree representation will be explained. The depth in the octree representation is used to control the granularity of the point cloud information contained in the volume to be retained. If the depth is set large, the point cloud information can be reproduced to a finer level, but the amount of data required to represent the nodes and leaves increases. Conversely, if the depth is set small, the amount of data decreases, but since multiple point cloud information with different positions and colors is considered to be in the same position and with the same color, the information contained in the original point cloud information will be lost.
[0384] For example, FIG. 42 is a diagram showing an example in which the octree with depth=2 shown in FIG. 40 is expressed as an octree with depth=1. The octree shown in FIG. 42 has a smaller amount of data than the octree shown in FIG. 40. In other words, the octree shown in FIG. 42 has a smaller number of bits after binary string conversion than the octree shown in FIG. 42. Here, leaf 1 and leaf 2 shown in FIG. 40 are expressed as leaf 1 shown in FIG. 41. In other words, the information that leaf 1 and leaf 2 shown in FIG. 40 were in different positions is lost.
[0385] FIG. 43 is a diagram showing a 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 color information of VXL12 shown in FIG. 43 from color information of VXL1 and VXL2 shown in FIG. 39. For example, the three-dimensional data encoding device 1300 calculates an average value, a median value, or a weighted average value 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 data amount 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, space, or volume. In addition, 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 as the depth information for all worlds, spaces, and volumes of 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 includes color information, the transform unit 1303 applies a frequency transform such as an orthogonal transform to the prediction residual of the color information of the voxel in the volume. For example, the transform unit 1303 creates a one-dimensional array by scanning the prediction residual in a certain scan order. After that, the transform unit 1303 applies a one-dimensional orthogonal transform to the created one-dimensional array to transform the one-dimensional array into the frequency domain. As a result, when the values of the prediction residuals in the volume are close to each other, the values of the low-frequency components become large and the values of the high-frequency components become small. Therefore, the amount of code can be reduced more efficiently in the quantization unit 1304.
[0388] Furthermore, the transform unit 1303 may use a two-dimensional or higher-dimensional orthogonal transform instead of a one-dimensional one. For example, the transform unit 1303 maps the prediction residuals to a two-dimensional array in a certain scan order, and applies a two-dimensional orthogonal transform to the obtained two-dimensional array. Furthermore, the transform unit 1303 may select an orthogonal transform method to be used from a plurality of orthogonal transform methods. In this case, the three-dimensional data encoding device 1300 adds information indicating which orthogonal transform method has been used to the bit stream. Furthermore, the transform unit 1303 may select an orthogonal transform method to be used from a plurality of orthogonal transform methods of different dimensions. In this case, the three-dimensional data encoding device 1300 adds information indicating which orthogonal transform method has been used to the bit stream.
[0389] For example, the conversion unit 1303 matches the scan order of the prediction residuals to the scan order (such as breadth-first or depth-first) in the octree in the volume. This eliminates the need to add information indicating the scan order of the prediction residuals to the bitstream, thereby reducing overhead. The conversion unit 1303 may also 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 residuals to the bitstream. This allows the three-dimensional data encoding device 1300 to efficiently encode the prediction residuals. The three-dimensional data encoding device 1300 may also add information (such as a flag) indicating whether or not to apply the scan order of the octree to the bitstream, and add information indicating the scan order of the prediction residuals to the bitstream when the scan order of the octree is not applied.
[0390] The conversion unit 1303 may convert not only the prediction residual of the color information but also other attribute information of the voxels. For example, the conversion unit 1303 may convert and encode information such as reflectance obtained when the point cloud is acquired by LiDAR or the like.
[0391] If the space does not have attribute information such as color information, the conversion unit 1303 may skip the process. Furthermore, the three-dimensional data encoding device 1300 may add information (a flag) indicating whether or not the process of the conversion unit 1303 is to be skipped to the bitstream.
[0392] The quantization unit 1304 generates quantization coefficients by quantizing the frequency components of the prediction residuals generated by the conversion unit 1303 using the quantization control parameters. This reduces the amount of information. The generated quantization coefficients are output to the entropy coding unit 1313. The quantization unit 1304 may control the quantization control parameters on a world-by-world, space-by-space, or volume-by-volume basis. In this case, the three-dimensional data coding device 1300 adds the quantization control parameters to the respective header information or the like. The quantization unit 1304 may also control quantization by changing the weight for each frequency component of the prediction residual. For example, the quantization unit 1304 may finely quantize low-frequency components and coarsely quantize high-frequency components. In this case, the three-dimensional data coding device 1300 may add a parameter representing the weight of each frequency component to the header.
[0393] If the space does not have attribute information such as color information, the quantization unit 1304 may skip the process. Furthermore, the three-dimensional data encoding device 1300 may add information (a flag) indicating whether or not the process of the quantization unit 1304 is to be skipped to the bitstream.
[0394] The inverse quantization unit 1305 uses the quantization control parameter to perform inverse quantization on the quantized coefficients generated by the quantization unit 1304 to generate inverse quantized coefficients of the prediction residuals, and outputs the generated inverse quantized coefficients to the inverse transform unit 1306.
[0395] The inverse transform unit 1306 generates a prediction residual after inverse transform application by applying inverse transform to the inverse quantized coefficients generated by the inverse quantization unit 1305. This prediction residual after inverse transform application is a prediction residual generated after quantization, and therefore does not need to completely match the prediction residual output by the transform unit 1303.
[0396] The adder 1307 generates a reconstructed volume by adding the prediction residual after inverse transformation applied generated by the inverse transformer 1306 and a prediction volume generated by intra prediction or inter prediction, which will be described later, and used to generate the prediction residual before quantization. This reconstructed volume is stored in a reference volume memory 1308 or a reference space memory 1310.
[0397] The intra prediction unit 1309 generates a predicted volume of the volume to be encoded using attribute information of the adjacent volume stored in the reference volume memory 1308. The attribute information includes color information or reflectance of a 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 prediction volume of the encoding target volume (volume idx=3) shown in FIG. 44 from an adjacent volume (volume idx=0). Here, the volume idx is identifier information added to a volume in a space, and a different value is assigned to each volume. The order of allocation of the volumes idx may be the same as the encoding order, or may be different from the encoding order. For example, the intra prediction unit 1309 uses an average value of color information of voxels included in the adjacent volume, volume idx=0, as a predicted value of color information of the encoding target volume shown in FIG. 44. In this case, a prediction residual is generated by subtracting the predicted value of color information from the color information of each voxel included in the encoding target volume. The processing of the conversion unit 1303 and subsequent processes is performed on this prediction residual. In this case, the three-dimensional data encoding device 1300 adds adjacent volume information and prediction mode information to the bit stream. Here, the adjacent volume information is information indicating the adjacent volume used for prediction, for example, the volume idx of the adjacent volume used for prediction. Also, the prediction mode information indicates the mode used for generating the prediction volume. The mode is, for example, an average mode that generates a predicted value from the average value of the voxels in the adjacent volume, or an intermediate value mode that generates a predicted value from the intermediate value of the voxels in the adjacent volume.
[0399] The intra prediction unit 1309 may generate a prediction volume from a plurality of adjacent volumes. For example, in the configuration shown in Fig. 44, the intra prediction unit 1309 generates a prediction volume 0 from the volume of volume idx=0, and generates a prediction volume 1 from the volume of volume idx=1. Then, the intra prediction unit 1309 generates an average of the prediction volume 0 and the prediction volume 1 as a final prediction volume. In this case, the three-dimensional data encoding device 1300 may add a plurality of volumes idx of the plurality of volumes used to generate the prediction volume to the bitstream.
[0400] Fig. 45 is a diagram illustrating an inter prediction process according to the present embodiment. The inter prediction unit 1311 performs coding (inter prediction) on a space (SPC) at a certain time T_Cur by using a coded space at a different time T_LX. In this case, the inter prediction unit 1311 performs coding by applying rotation and translation processing to the coded space at the different time T_LX.
[0401] Furthermore, the three-dimensional data encoding device 1300 adds RT information related to the rotation and translation processing applied to the space at a different time T_LX to the bit stream. The different time T_LX is, for example, a time T_L0 prior to the certain time T_Cur. At this time, the three-dimensional data encoding device 1300 may add RT information RT_L0 related to the rotation and translation processing applied to the space at the time T_L0 to the bit stream.
[0402] Alternatively, the different time T_LX is, for example, a time T_L1 that is later than the certain time T_Cur. At this time, the three-dimensional data encoding device 1300 may add RT information RT_L1 related to the rotation and translation processing applied to the space of the time T_L1 to the bitstream.
[0403] Alternatively, the inter prediction unit 1311 performs encoding (bi-prediction) by referring to both spaces at different times T_L0 and T_L1. In this case, the 3D data encoding device 1300 may add both pieces of RT information RT_L0 and RT_L1 related to the rotation and translation applied to the respective spaces to the bitstream.
[0404] In the above, T_L0 is a time before T_Cur, and T_L1 is a time after T_Cur, but this is not necessarily limited to this. For example, T_L0 and T_L1 may both be times before T_Cur. Or, T_L0 and T_L1 may both be times after T_Cur.
[0405] Furthermore, when the three-dimensional data encoding device 1300 performs encoding by referring to a plurality of spaces at different times, the three-dimensional data encoding device 1300 may add RT information related to the rotation and translation applied to each space to the bit stream. For example, the three-dimensional data encoding device 1300 manages a plurality of encoded spaces to be referenced in two reference lists (L0 list and L1 list). If 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 RT information RT_L0R0 of L0R0, RT information RT_L0R1 of L0R1, RT information RT_L1R0 of L1R0, and RT information RT_L1R1 of L1R1 to the bit stream. For example, the three-dimensional data encoding device 1300 adds these pieces of RT information to the header of the bit stream, etc.
[0406] Furthermore, when the three-dimensional data encoding device 1300 performs encoding with reference to a plurality of reference spaces at different times, it determines whether or not rotation and translation are applied 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 or not rotation and translation are applied for each reference space to header information or the like of the bit stream. For example, the three-dimensional data encoding device 1300 calculates RT information and an ICP error value using an ICP (Interactive Closest Point) algorithm for each reference space referenced from the encoding target space. If the ICP error value is equal to or less than a predetermined fixed value, the three-dimensional data encoding device 1300 determines that rotation and translation are not required and sets the RT application flag to OFF. On the other hand, if the ICP error value is greater than the above-mentioned fixed value, the three-dimensional data encoding device 1300 sets the RT application flag to ON and adds RT information to the bit stream.
[0407] Fig. 46 is a diagram showing an example of syntax for adding RT information and an RT application flag to a header. The number of bits to be allocated to each syntax may be determined within the range that the syntax can take. For example, when the number of reference spaces included in the reference list L0 is eight, 3 bits may be allocated to MaxRefSpc_l0. The number of bits to be allocated may be variable according to the value that each syntax can take, or may be fixed regardless of the value that each syntax can take. When the number of bits to be allocated is fixed, the three-dimensional data encoding device 1300 may add the fixed number of bits to another header information.
[0408] Here, MaxRefSpc_l0 shown in Fig. 46 indicates the number of reference spaces included in the reference list L0. RT_flag_l0[i] is the RT application flag of 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 RT information of the reference space i in the reference list L0. R_l0[i] is rotation information of the reference space i in the reference list L0. The rotation information indicates the content of the applied rotation process, for example, a rotation matrix or a quaternion. T_l0[i] is translation information of the reference space i in the reference list L0. The translation information indicates the content of the applied translation process, for example, a translation vector.
[0410] MaxRefSpc_l1 indicates the number of reference spaces included in reference list L1. RT_flag_l1[i] is the RT application flag for reference space i in reference list L1. When RT_flag_l1[i] is 1, rotation and translation are applied to reference space i. When RT_flag_l1[i] is 0, rotation and translation are not applied to reference space i.
[0411] R_l1[i] and T_l1[i] are RT information of the reference space i in the reference list L1. R_l1[i] is rotation information of the reference space i in the reference list L1. The rotation information indicates the content of the applied rotation process, for example, a rotation matrix or a quaternion. T_l1[i] is translation information of the reference space i in the reference list L1. The translation information indicates the content of the applied translation process, for example, a translation vector.
[0412] The inter prediction unit 1311 generates a prediction volume of the volume to be encoded using information of the reference space that has already been encoded and that is stored in the reference space memory 1310. As described above, before generating a prediction volume of the volume to be encoded, the inter prediction unit 1311 obtains RT information using an ICP (Interactive Closest Point) algorithm in the space to be encoded and the reference space in order to approximate the overall positional relationship between the space to be encoded and the reference space. Then, the inter prediction unit 1311 obtains a reference space B by applying a rotation and translation process to the reference space using the obtained RT information. Then, the inter prediction unit 1311 generates a prediction volume of the volume to be encoded in the space to be encoded using information in the reference space B. Here, the three-dimensional data encoding device 1300 adds the RT information used to obtain the reference space B to header information or the like of the space to be encoded.
[0413] In this way, the inter prediction unit 1311 can improve the accuracy of the predicted volume by applying rotation and translation processing to the reference space to bring the overall positional relationship between the encoding target space and the reference space closer, and then generating a predicted volume using information on the reference space. In addition, since the prediction residual can be suppressed, the amount of coding can be reduced. Note that, although an example of performing ICP using the encoding target space and the reference space has been shown here, this is not necessarily limited to this. For example, in order to reduce the amount of processing, the inter prediction unit 1311 may obtain RT information by performing ICP using at least one of the encoding target space in which the number of voxels or point clouds has been thinned out and the reference space in which the number of voxels or point clouds has been thinned out.
[0414] Furthermore, if an ICP error value obtained as a result of the ICP is smaller than a first threshold value determined in advance, that is, for example, if the positional relationship between the encoding target space and the reference space is close, the inter prediction unit 1311 may determine that rotation and translation processing is not necessary, and may not perform rotation and translation. In this case, the three-dimensional data encoding device 1300 may suppress overhead by not adding RT information to the bitstream.
[0415] In addition, when the ICP error value is greater than a second threshold value determined in advance, the inter prediction unit 1311 may determine that the shape change between the spaces is large, and apply intra prediction to all volumes of the encoding target space. Hereinafter, the space to which intra prediction is applied is called an intra space. In addition, the second threshold value is a value greater than the first threshold value. In addition, any method may be applied as long as it is a method of obtaining RT information from two voxel sets or two point cloud sets, without being limited to ICP.
[0416] Furthermore, when the three-dimensional data includes attribute information such as shape or color, the inter prediction unit 1311 searches for a volume in the reference space that has attribute information such as shape or color closest to that of the volume to be encoded as a prediction volume of the volume to be encoded in the space to be encoded. Moreover, this reference space is, for example, a reference space after the above-mentioned rotation and translation processing is performed. The inter prediction unit 1311 generates a prediction volume from a volume (reference volume) obtained by the search. FIG. 47 is a diagram for explaining the operation of generating a prediction volume. When the inter prediction unit 1311 encodes the volume to be encoded (volume idx=0) shown in FIG. 47 using inter prediction, the inter prediction unit 1311 searches for a volume with the smallest prediction residual, which is the difference between the volume to be encoded and the reference volume, while sequentially scanning the reference volumes in the reference space. The inter prediction unit 1311 selects the volume with the smallest prediction residual as the prediction volume. The prediction residual between the volume to be encoded 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 volume to be encoded and the attribute information of the prediction volume. Furthermore, the three-dimensional data encoding device 1300 adds the volume idx of the reference volume in 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 of volume idx=4 in the reference space L0R0 is selected as a prediction volume of the volume to be encoded. Then, the prediction residual between the volume to be encoded and the reference volume, and the reference volume idx=4 are encoded and added to the bitstream.
[0418] Although an example of generating a predicted volume for attribute information has been described here, a similar process may be performed for a predicted volume for position information.
[0419] The prediction control unit 1312 controls whether to use intra prediction or inter prediction to encode the volume to be encoded. Here, a mode including intra prediction and inter prediction is called a prediction mode. For example, the prediction control unit 1312 calculates a prediction residual when the volume to be encoded is predicted by intra prediction and a prediction residual when the volume to be encoded is predicted by inter prediction as evaluation values, and selects a prediction mode with a smaller evaluation value. Note that the prediction control unit 1312 may calculate an actual code amount by applying orthogonal transformation, quantization, and entropy coding to the prediction residual of intra prediction and the prediction residual of inter prediction, respectively, and select a prediction mode using the calculated code amount as an evaluation value. Also, overhead information other than the prediction residual (such as reference volume idx information) may be added to the evaluation value. Also, the prediction control unit 1312 may always select intra prediction when it is previously determined that the space to be encoded is to be encoded by intra space.
[0420] The entropy coding unit 1313 generates a coded signal (coded bit stream) by variable-length coding the quantized coefficients that are input from the quantization unit 1304. Specifically, the entropy coding unit 1313, for example, binarizes the quantized coefficients and arithmetically codes 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 a three-dimensional data decoding device 1400 according to this 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 coded signal (coded bit stream). For example, the entropy decoding unit 1401 arithmetically decodes the coded signal to generate a binary signal, and generates a quantization coefficient from the generated binary signal.
[0423] The inverse quantization unit 1402 inversely quantizes the quantized coefficients input from the entropy decoding unit 1401 using a quantization parameter added to the bit stream or the like, thereby generating inverse quantized coefficients.
[0424] The inverse transform unit 1403 generates a prediction residual by inverse transforming the inverse quantized coefficients input from the inverse quantization unit 1402. For example, the inverse transform unit 1403 generates a prediction residual by inverse orthogonal transforming the inverse quantized coefficients based on information added to the bitstream.
[0425] The adder 1404 generates a reconstructed volume by adding the prediction residual generated by the inverse transformer 1403 and a prediction volume generated by intra prediction or inter prediction. This reconstructed volume is output as decoded three-dimensional data, and is also stored in a reference volume memory 1405 or a reference space memory 1407.
[0426] The intra prediction unit 1406 generates a predicted volume by intra prediction using a reference volume in the reference volume memory 1405 and information added to the bit stream. Specifically, the intra prediction unit 1406 acquires adjacent volume information (e.g., volume idx) and prediction mode information added to the bit stream, and generates a predicted volume in a mode indicated by the prediction mode information using adjacent volumes indicated by the adjacent volume information. Details of these processes are similar to the processes by the intra prediction unit 1309 described above, except that information added 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 information added to the bit stream. Specifically, the inter prediction unit 1408 applies rotation and translation processing to the reference space using RT information for each reference space added to the bit stream, and generates a prediction volume using the reference space after application. Note that, if an RT application flag for each reference space exists in the bit stream, the inter prediction unit 1408 applies rotation and translation processing to the reference space according to the RT application flag. Note that details of these processes are similar to the processes by the inter prediction unit 1311 described above, except that information added to the bit stream is used.
[0428] The prediction control unit 1409 controls whether the volume to be decoded is decoded by intra prediction or inter prediction. For example, the prediction control unit 1409 selects intra prediction or inter prediction according to information indicating a prediction mode to be used, which is added to a bit stream. Note that the prediction control unit 1409 may always select intra prediction when it is previously determined that the space to be decoded is decoded by intra space.
[0429] A modified example of this embodiment will be described below. In this embodiment, an example in which rotation and translation are applied in units of spaces has been described, but rotation and translation may be applied in smaller units. For example, the three-dimensional data encoding device 1300 may divide a space into subspaces and apply rotation and translation in units of subspaces. In this case, the three-dimensional data encoding device 1300 generates RT information for each subspace and adds the generated RT information to a header of a bit stream or the like. The three-dimensional data encoding device 1300 may also apply rotation and translation in units of volumes, which are encoding units. In this case, the three-dimensional data encoding device 1300 generates RT information in units of encoding volumes and adds the generated RT information to a header of a 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 small units. For example, the three-dimensional data encoding device 1300 may apply rotation and translation in units of spaces, and apply different rotations and translations to each of a plurality of volumes included in the obtained space.
[0430] In addition, in the present embodiment, an example of applying rotation and translation to the reference space has been described, but this is not necessarily limited to this. For example, the three-dimensional data encoding device 1300 may change the size of the three-dimensional data by applying a scale process. Also, the three-dimensional data encoding device 1300 may apply any one or two of rotation, translation, and scale. Also, when applying processes in different units in multiple stages as described above, the type of process 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] These modifications can also be applied to the three-dimensional data decoding device 1400 in the same manner.
[0432] As described above, the three-dimensional data encoding device 1300 according to this embodiment performs the following processes.
[0433] First, the three-dimensional data encoding device 1300 generates predicted position information (e.g., predicted volume) using position information of three-dimensional points included in reference three-dimensional data (e.g., reference space) at a time different from that of the target three-dimensional data (e.g., encoding target space) (S1301). Specifically, the three-dimensional data encoding device 1300 generates predicted position information by applying rotation and translation processing to the position information of three-dimensional points included in the reference three-dimensional data.
[0434] The three-dimensional data encoding device 1300 may perform the rotation and translation processing in a first unit (e.g., space) and generate the predicted position information in a second unit (e.g., volume) that is smaller than the first unit. For example, the three-dimensional data encoding device 1300 searches for a volume that has the smallest difference in position information from the encoding target volume included in the encoding target space among a plurality of volumes included in the reference space after the rotation and translation processing, and uses the obtained volume as the predicted volume. The three-dimensional data encoding device 1300 may perform the rotation and translation processing and the generation of the predicted position information in the same unit.
[0435] In addition, the three-dimensional data encoding device 1300 may generate predicted position information by applying a first rotation and translation process in a first unit (e.g., space) to position information of three-dimensional points included in the reference three-dimensional data, and applying a second rotation and translation process in a second unit (e.g., volume) finer than the first unit to the position information of the three-dimensional points obtained by the first rotation and translation process.
[0436] Here, the position information and the predicted position information of the three-dimensional point are expressed in an octet tree structure, for example, as shown in Fig. 41. For example, the position information and the predicted position information of the three-dimensional point are expressed in a scan order that prioritizes the width among the depth and width in the octet tree structure. Alternatively, the position information and the predicted position information of the three-dimensional point are expressed in a scan order that prioritizes the depth among the depth and width in the octet tree structure.
[0437] Also, as shown in FIG. 46, the three-dimensional data encoding device 1300 encodes an RT application flag indicating whether or not rotation and translation processing is applied to position information of a three-dimensional point included in the reference three-dimensional data. That is, the three-dimensional data encoding device 1300 generates an encoding signal (encoded bit stream) including an RT application flag. Also, the three-dimensional data encoding device 1300 encodes RT information indicating the contents of the rotation and translation processing. That is, the three-dimensional data encoding device 1300 generates an encoding signal (encoded bit stream) including the RT information. Note that the three-dimensional data encoding device 1300 may encode the RT information when the RT application flag indicates that the rotation and translation processing is applied, and may not encode the RT information when the RT application flag indicates that the rotation and translation processing is not applied.
[0438] The three-dimensional data includes, for example, position information of the three-dimensional points and 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 point included in the target three-dimensional data using the predicted position information. For example, the three-dimensional data encoding device 1300 calculates differential position information, which is the difference between the position information of the three-dimensional point included in the target three-dimensional data and the predicted position information, as shown in Fig. 38 (S1303).
[0440] Furthermore, the three-dimensional data encoding device 1300 encodes attribute information of a three-dimensional point included in the target three-dimensional data using the predicted attribute information. For example, the three-dimensional data encoding device 1300 calculates differential attribute information that is a difference between the attribute information of a three-dimensional point included in the target three-dimensional data and the predicted attribute information (S1304). Next, the three-dimensional data encoding device 1300 converts and quantizes the calculated differential attribute information (S1305).
[0441] Finally, the three-dimensional data encoding device 1300 encodes (for example, entropy encodes) the difference position information and the quantized difference attribute information (S1306). That is, the three-dimensional data encoding device 1300 generates an encoded signal (encoded bit stream) including the difference position information and the difference attribute information.
[0442] In addition, when the three-dimensional data does not include attribute information, the three-dimensional data encoding device 1300 may not perform steps S1302, S1304, and S1305. In addition, the three-dimensional data encoding device 1300 may only encode the position information of the three-dimensional point and encode the attribute information of the three-dimensional point.
[0443] Also, the order of processing shown in Fig. 49 is an example and is not limited to this. For example, the processing for the position information (S1301, S1303) and the processing for the attribute information (S1302, S1304, S1305) are independent of each other, so they may be performed in any order, or some of them may be processed in parallel.
[0444] As described above, the three-dimensional data encoding device 1300 according to the present embodiment generates predicted position information using position information of three-dimensional points included in reference three-dimensional data at a time different from that of the target three-dimensional data, and encodes 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. This makes it possible to reduce the amount of data in the encoded signal, thereby improving encoding efficiency.
[0445] In addition, the three-dimensional data encoding device 1300 in this embodiment generates predicted attribute information using attribute information of three-dimensional points included in the reference three-dimensional data, and encodes difference attribute information that is the difference between the attribute information of three-dimensional points included in the target three-dimensional data and the predicted attribute information. This makes it possible to reduce the data amount of the encoded signal, thereby improving encoding efficiency.
[0446] For example, the three-dimensional data encoding device 1300 includes a processor and a memory, and the processor uses the memory to perform the above-mentioned processing.
[0447] FIG. 48 is a flowchart of inter prediction processing 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 coded signal (coded bit stream) (S1401).
[0449] Furthermore, the three-dimensional data decoding device 1400 decodes an RT application flag indicating whether or not rotation and translation processing is applied to position information of a three-dimensional point included in the reference three-dimensional data from the encoded signal. Furthermore, the three-dimensional data decoding device 1400 decodes RT information indicating the contents of the rotation and translation processing. Note that the three-dimensional data decoding device 1400 may decode the RT information when the RT application flag indicates that rotation and translation processing is applied, and may not need to decode the RT information when the RT application flag indicates that rotation and translation processing is not 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., predicted volume) using position information of three-dimensional points included in reference three-dimensional data (e.g., reference space) at a time different from that of the target three-dimensional data (e.g., decoding target space) (S1403). Specifically, the three-dimensional data decoding device 1400 generates predicted position information by applying rotation and translation processing to the position information of three-dimensional points included in the reference three-dimensional data.
[0452] More specifically, when the RT application flag indicates that rotation and translation processing is to be applied, the 3D data decoding device 1400 applies rotation and translation processing to position information of 3D points included in the reference 3D data indicated by the RT information. On the other hand, when the RT application flag indicates that rotation and translation processing is not to be applied, the 3D data decoding device 1400 does not apply rotation and translation processing to position information of 3D points included in the reference 3D data.
[0453] The three-dimensional data decoding device 1400 may perform the rotation and translation processing in a first unit (e.g., space) and generate the predicted position information in a second unit (e.g., volume) that is smaller than the first unit. The three-dimensional data decoding device 1400 may perform the rotation and translation processing and the generation of the predicted position information in the same unit.
[0454] In addition, the three-dimensional data decoding device 1400 may generate predicted position information by applying a first rotation and translation process in a first unit (e.g., space) to the position information of the three-dimensional points included in the reference three-dimensional data, and applying a second rotation and translation process in a second unit (e.g., volume) that is finer than the first unit to the position information of the three-dimensional points obtained by the first rotation and translation process.
[0455] Here, the position information and the predicted position information of the three-dimensional point are expressed in an octet tree structure, for example, as shown in Fig. 41. For example, the position information and the predicted position information of the three-dimensional point are expressed in a scan order that prioritizes the width among the depth and width in the octet tree structure. Alternatively, the position information and the predicted position information of the three-dimensional point are expressed in a scan order that prioritizes the depth among the depth and width in the octet tree structure.
[0456] The three-dimensional data decoding device 1400 generates predicted attribute information using 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 point 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 point included in the target three-dimensional data by adding the differential position information and the predicted position information (S1405).
[0458] Furthermore, the three-dimensional data decoding device 1400 restores the attribute information of the three-dimensional point 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 point included in the target three-dimensional data by adding the differential attribute information and the predicted attribute information (S1406).
[0459] In addition, when the three-dimensional data does not include attribute information, the three-dimensional data decoding device 1400 may not perform steps S1402, S1404, and S1406. In addition, the three-dimensional data decoding device 1400 may perform only one of decoding the position information of the three-dimensional point and decoding the attribute information of the three-dimensional point.
[0460] 50 is an example, and is not limited to this example. For example, the processing for the position information (S1403, S1405) and the processing for the attribute information (S1402, S1404, S1406) are independent of each other, and therefore may be performed in any order, or some of them may be processed in parallel.
[0461] (Embodiment 8) In this embodiment, a method for expressing three-dimensional points (point cloud) in encoding three-dimensional data will be described.
[0462] 51 is a block diagram showing the configuration of a three-dimensional data distribution system according to this embodiment. The distribution system shown in FIG.
[0463] The server 1501 includes a storage unit 1511 and a control unit 1512. The storage unit 1511 stores an encoded three-dimensional map 1513, which is encoded three-dimensional data.
[0464] FIG. 52 is a diagram showing an example of the bit stream of the encoded 3D map 1513. The 3D map is divided into multiple sub-maps, and each sub-map is encoded. A random access header (RA) including sub-coordinate information is added to each sub-map. The sub-coordinate information is used to improve the encoding efficiency of the sub-map. This sub-coordinate information indicates the sub-coordinate of the sub-map. The sub-coordinate is the coordinate of the sub-map based on a reference coordinate. A 3D map including multiple sub-maps is called an overall map. Furthermore, a coordinate (e.g., an origin) that is a reference in the overall map is called a reference coordinate. That is, the sub-coordinate is the coordinate of the sub-map in the coordinate system of the overall map. In other words, the sub-coordinate indicates an offset between the coordinate system of the overall map and the coordinate system of the sub-map. Furthermore, a coordinate in the coordinate system of the overall map based on the reference coordinate is called an overall coordinate. A coordinate in the coordinate system of the sub-map based on the sub-coordinate is called a differential coordinate.
[0465] The client 1502 transmits a message to the server 1501. This message includes the position information of the client 1502. The control unit 1512 included in the server 1501 obtains a bit stream of a submap located closest to the position of the client 1502 based on the position information included in the received message. The bit stream of the submap includes sub-coordinate information and is transmitted to the client 1502. The decoder 1521 included in the client 1502 uses this sub-coordinate information to obtain the overall coordinates of the submap based on the reference coordinates. The application 1522 included in the client 1502 executes an application related to its own position using the obtained overall coordinates of the submap.
[0466] Moreover, a submap indicates a partial area of the overall map. Subcoordinates are coordinates at which the submap is located in the reference coordinate space of the overall map. For example, assume that submap A of AA and submap B of AB exist in the overall map of A. When a vehicle wants to refer to the map of AA, it starts decoding from submap A, and when a vehicle wants to refer to the map of AB, it starts decoding from submap B. Here, the submap is a random access point. Specifically, A is Osaka Prefecture, AA is Osaka City, AB is Takatsuki City, etc.
[0467] Each submap is transmitted to the client together with sub-coordinate information, which is included in the header information of each submap, or in a transmission packet.
[0468] The reference coordinates that serve as the reference coordinates for the sub-coordinate information of each sub-map may be added to the header information of a space higher than the sub-map, such as the header information of the overall map.
[0469] A submap may consist of one space (SPC), or it may consist of multiple SPCs.
[0470] A submap may also include a GOS (Group of Space). A submap may also consist of a world. For example, if there are multiple objects in a submap, the submap will consist of multiple SPCs if the multiple objects are assigned to different SPCs. Also, if the multiple objects are assigned to one SPC, the submap will consist of one SPC.
[0471] Next, the effect of improving the coding efficiency when using the sub-coordinate information will be described. FIG. 53 is a diagram for explaining this effect. For example, in order to code the three-dimensional point A located far from the reference coordinates shown in FIG. 53, a large number of bits is required. Here, the distance between the sub-coordinates and the three-dimensional point A is shorter than the distance between the reference coordinates and the three-dimensional point A. Therefore, coding the coordinates of the three-dimensional point A based on the sub-coordinates can improve coding efficiency more than coding the coordinates of the three-dimensional point A based on the reference coordinates. Also, the bit stream of the submap includes the sub-coordinate information. By sending the bit stream of the submap and the reference coordinates to the decoding side (client), the overall coordinates of the submap can be restored on the decoding side.
[0472] FIG. 54 is a flowchart of the process performed by server 1501, which is the sender of the submap.
[0473] First, the server 1501 receives a message including the location information of the client 1502 from the client 1502 (S1501). The control unit 1512 acquires the coded bit stream of the submap based on the client's location information from the storage unit 1511 (S1502). Then, the server 1501 transmits the coded bit stream of the submap and the reference coordinates to the client 1502 (S1503).
[0474] FIG. 55 is a flow chart of the processing by the client 1502 which is the receiver of the submap.
[0475] First, the client 1502 receives the encoded bit stream and the reference coordinates of the submap transmitted from the server 1501 (S1511). Next, the client 1502 obtains the submap and the subcoordinate information by decoding the encoded bit stream (S1512). Next, the client 1502 restores the difference coordinates in the submap to the global coordinates using the reference coordinates and the subcoordinates (S1513).
[0476] Next, an example of the syntax of information related to a submap will be described. In encoding a submap, a three-dimensional data encoding device calculates differential coordinates by subtracting sub-coordinates from the coordinates of each point cloud (three-dimensional point). Then, the three-dimensional data encoding device encodes the differential coordinates into a bit stream as the value of each point cloud. In addition, the encoding device encodes sub-coordinate information indicating the sub-coordinates as header information of the bit stream. This allows a three-dimensional data decoding device to obtain the overall coordinates of each point cloud. For example, the three-dimensional data encoding device is included in the server 1501, and the three-dimensional data decoding device is included in the client 1502.
[0477] Fig. 56 is a diagram showing an example of the syntax of a submap. NumOfPoint shown in Fig. 56 indicates the number of point clouds included in the submap. sub_coordinate_x, sub_coordinate_y, and sub_coordinate_z are sub-coordinate information. sub_coordinate_x indicates the x-coordinate of the sub-coordinate. sub_coordinate_y indicates the y-coordinate of the sub-coordinate. sub_coordinate_z indicates the z-coordinate of the sub-coordinate.
[0478] Also, diff_x[i], diff_y[i], and diff_z[i] are the difference coordinates of the i-th point cloud in the submap. diff_x[i] indicates the difference value between the x coordinate of the i-th point cloud in the submap and the x coordinate of the subcoordinate. diff_y[i] indicates the difference value between the y coordinate of the i-th point cloud in the submap and the y coordinate of the subcoordinate. diff_z[i] indicates the difference value between the z coordinate of the i-th point cloud in the submap and the z coordinate of the subcoordinate.
[0479] The three-dimensional data decoding device decodes point_cloud[i]_x, point_cloud[i]_y, and point_cloud[i]_z, which are the global coordinates of the i-th point cloud, using the following equations: point_cloud[i]_x is the x coordinate of the global coordinates of the i-th point cloud. point_cloud[i]_y is the y coordinate of the global coordinates of the i-th point cloud. point_cloud[i]_z is the z coordinate of the global coordinates of the i-th point cloud.
[0480] point_cloud[i]_x=sub_coordinate_x+diff_x[i] point_cloud[i]_y=sub_coordinate_y+diff_y[i] point_cloud[i]_z=sub_coordinate_z+diff_z[i]
[0481] Next, a process of switching the application of octree coding will be described. When coding a submap, the three-dimensional data coding device selects whether to code each point cloud in an octree representation (hereinafter referred to as octree coding) or to code a difference value from a sub-coordinate (hereinafter referred to as non-octree coding). FIG. 57 is a diagram showing this operation in schematic form. For example, when the number of point clouds in a submap is equal to or greater than a predetermined threshold, the three-dimensional data coding device applies octree coding to the submap. When the number of point clouds in a submap is less than the threshold, the three-dimensional data coding device applies non-octree coding to the submap. This allows the three-dimensional data coding device to appropriately select whether to use octree coding or non-octree coding according to the shape and density of objects included in the submap, thereby improving coding efficiency.
[0482] Furthermore, the three-dimensional data encoding device adds information indicating whether octree encoding or non-octree encoding has been applied to the submap (hereinafter referred to as octree encoding application information) to the header of the submap, etc. This allows the three-dimensional data decoding device to determine whether the bitstream is a bitstream obtained by subjecting the submap to octree encoding or a bitstream obtained by subjecting the submap to non-octree encoding.
[0483] In addition, the three-dimensional data encoding device may calculate the encoding efficiency when octree encoding and non-octree encoding are applied to the same point cloud, and apply the encoding method with the best encoding efficiency to the sub-map.
[0484] Figure 58 is a diagram showing an example of the syntax of a submap when this switching is performed. coding_type shown in Figure 58 is information indicating the coding type, and is the above-mentioned octree coding application information. coding_type=00 indicates that octree coding has been applied. coding_type=01 indicates that non-octree coding has been applied. coding_type=10 or 11 indicates that a coding method other than the above has been applied.
[0485] If the coding type is non_octree coding, the submap includes NumOfPoint and sub-coordinate information (sub_coordinate_x, sub_coordinate_y, and sub_coordinate_z).
[0486] If the coding type is octree coding, the submap includes octree_info, which is information necessary for octree coding, such as depth information.
[0487] If the encoding type is non_octree, the submap contains difference coordinates (diff_x[i], diff_y[i], and diff_z[i]).
[0488] If the coding type is octree coding, the submap contains octree_data, which is coding data for the octree coding.
[0489] Although an example in which the xyz coordinate system is used as the coordinate system of the point cloud has been shown here, a polar coordinate system may also be used.
[0490] 59 is a flowchart of a three-dimensional data encoding process by a three-dimensional data encoding device. First, the three-dimensional data encoding device calculates the number of point clouds in a target submap, which is a submap to be processed (S1521). Next, the three-dimensional data encoding device determines whether the calculated number of point clouds is equal to or greater than a predetermined threshold (S1522).
[0491] If the number of point clouds is equal to or greater than the threshold (Yes in S1522), the 3D data encoding device applies octree encoding to the target submap (S1523). In addition, the 3D point data encoding device adds octree encoding application information indicating that octree encoding has been applied to the target submap to the header of the bitstream (S1525).
[0492] On the other hand, if the number of point clouds is less than the threshold (No in S1522), the 3D data encoding device applies non-octree encoding to the target submap (S1524). Also, the 3D point data encoding device adds octree encoding application information indicating that non-octree encoding has been applied to the target submap to the header of the bitstream (S1525).
[0493] 60 is a flowchart of a three-dimensional data decoding process by a three-dimensional data decoding device. First, the three-dimensional data decoding device decodes octree coding application information from the header of the bit stream (S1531). Next, the three-dimensional data decoding device determines whether the coding type applied to the target submap is octree coding or not based on the decoded octree coding application information (S1532).
[0494] If the coding type indicated by the octree coding application information is octree coding (Yes in S1532), the three-dimensional data decoding device decodes the target submap by octree decoding (S1533). On the other hand, if the coding type indicated by the octree coding application information is non-octree coding (No in S1532), the three-dimensional data decoding device decodes the target submap by non-octree decoding (S1534).
[0495] A modification of this embodiment will be described below. Figures 61 to 63 are diagrams showing the operation of a modification of the coding type switching process.
[0496] As shown in Fig. 61, the three-dimensional data encoding device may select whether to apply octree encoding or non-octree encoding for each space. In this case, the three-dimensional data encoding device adds octree encoding application information to the header of the space. This allows the three-dimensional data decoding device to determine whether octree encoding has been applied for each space. Also, in this case, the three-dimensional data encoding device sets sub-coordinates for each space, and encodes the difference values obtained by subtracting the values of the sub-coordinates from the coordinates of each point cloud in the space.
[0497] This allows the three-dimensional data encoding device to appropriately switch whether or not to apply octree encoding depending on the shape of the object in the space or the number of point clouds, thereby improving encoding efficiency.
[0498] Also, as shown in Fig. 62, the three-dimensional data encoding device may select whether to apply octree encoding or non-octree encoding for each volume. In this case, the three-dimensional data encoding device adds octree encoding application information to the header of the volume. This allows the three-dimensional data decoding device to determine whether octree encoding has been applied for each volume. Also, in this case, the three-dimensional data encoding device sets sub-coordinates for each volume, and encodes the difference values obtained by subtracting the values of the sub-coordinates from the coordinates of each point cloud in the volume.
[0499] This allows the three-dimensional data encoding device to appropriately switch whether or not to apply octree encoding depending on the shape of the object in the volume or the number of point clouds, thereby improving encoding efficiency.
[0500] In the above description, an example of encoding the difference obtained by subtracting the sub-coordinates from the coordinates of each point cloud as non-octree encoding has been shown, but this is not necessarily limited to this, and any encoding method other than octree encoding may be used. For example, as shown in Fig. 63, the three-dimensional data encoding device may use a method (hereinafter referred to as original coordinate encoding) for encoding the value of the point cloud itself in a submap, space, or volume as non-octree encoding, instead of the difference from the sub-coordinates.
[0501] In this case, the three-dimensional data encoding device stores information in the header indicating that the original coordinate encoding has been applied to the target space (submap, space, or volume), which allows the three-dimensional data decoding device to determine whether the original coordinate encoding has been applied to the target space.
[0502] Furthermore, when applying original coordinate coding, the three-dimensional data coding device may perform coding without applying quantization and arithmetic coding to the original coordinates. Furthermore, the three-dimensional data coding device may code the original coordinates with a predetermined fixed bit length. This allows the three-dimensional data coding device to generate a stream with a constant bit length at a certain timing.
[0503] In the above description, an example has been given in which the difference obtained by subtracting the sub-coordinates from the coordinates of each point cloud is encoded as non-octree encoding, but the present invention is not necessarily limited to this.
[0504] For example, the three-dimensional data encoding device may sequentially encode the difference values between the coordinates of each point cloud. FIG. 64 is a diagram for explaining the operation in this case. For example, in the example shown in FIG. 64, when encoding the point cloud PA, the three-dimensional data encoding device uses the sub-coordinates as predicted coordinates and encodes the difference values between the coordinates of the point cloud PA and the predicted coordinates. When encoding the point cloud PB, the three-dimensional data encoding device uses the coordinates of the point cloud PA as predicted coordinates and encodes the difference values between the point cloud PB and the predicted coordinates. When encoding the point cloud PC, the three-dimensional data encoding device uses the point cloud PB as predicted coordinates and encodes the difference values between the point cloud PB and the predicted coordinates. In this way, the three-dimensional data encoding device may set a scan order for multiple point clouds and encode the difference values between the coordinates of the target point cloud to be processed and the coordinates of the point cloud immediately before the target point cloud in the scan order.
[0505] In the above description, the sub-coordinate is the coordinate of the lower left front corner of the sub-map, but the position of the sub-coordinate is not limited to this. FIGS. 65 to 67 are diagrams showing other examples of the position of the sub-coordinate. The sub-coordinate may be set to any coordinate in the target space (sub-map, space, or volume). That is, the sub-coordinate may be the coordinate of the lower left front corner of the target space, as described above. As shown in FIG. 65, the sub-coordinate may be the coordinate of the center of the target space. As shown in FIG. 66, the sub-coordinate may be the coordinate of the upper right back corner of the target space. Also, the sub-coordinate is not limited to the coordinate of the lower left front or upper right back corner of the target space, but may be the coordinate of any corner of the target space.
[0506] In addition, the setting position of the sub-coordinates may be the same as the coordinates of a certain point cloud in the target space (submap, space, or volume). For example, in the example shown in FIG. 67, the coordinates of the sub-coordinates match the coordinates of the point cloud PD.
[0507] In addition, in the present embodiment, an example of switching between applying octree coding and applying non-octree coding has been shown, but this is not necessarily limited to this. For example, the three-dimensional data coding device may switch between applying a different tree structure other than an octree and applying a non-tree structure other than the tree structure. For example, the different tree structure may be a kd tree that performs division using a plane perpendicular to one of the coordinate axes. Note that any method may be used as the different tree structure.
[0508] In addition, in the present embodiment, an example of encoding coordinate information of a point cloud has been shown, but this is not necessarily limited to this. The three-dimensional data encoding device may also encode, for example, color information, three-dimensional feature values, or visible light feature values in the same manner as the coordinate information. For example, the three-dimensional data encoding device may set the average value of color information of each point cloud in a sub-map to sub-color information (sub-color), and encode the difference between the color information of each point cloud and the sub-color information.
[0509] In addition, in the present embodiment, an example has been shown in which a coding method (octree coding or non-octree coding) with good coding efficiency is selected according to the number of point clouds, etc., but this is not necessarily limited to this. For example, the three-dimensional data coding device on the server side may hold a bit stream of a point cloud coded by octree coding, a bit stream of a point cloud coded by non-octree coding, and a bit stream of a point cloud coded by both, and switch the bit stream to be transmitted to the three-dimensional data decoding device according to the communication environment or the processing capacity of the three-dimensional data decoding device.
[0510] Fig. 68 is a diagram showing an example of the syntax of a volume when switching the application of octree coding. The syntax shown in Fig. 68 is basically the same as the syntax shown in Fig. 58, but differs in that each piece of information is information on a volume basis. Specifically, NumOfPoint indicates the number of point clouds included in the volume. sub_coordinate_x, sub_coordinate_y, and sub_coordinate_z are sub-coordinate information of the volume.
[0511] Also, diff_x[i], diff_y[i], and diff_z[i] are the difference coordinates of the i-th point cloud in the volume. diff_x[i] indicates the difference value between the x coordinate of the i-th point cloud in the volume and the x coordinate of the sub-coordinate. diff_y[i] indicates the difference value between the y coordinate of the i-th point cloud in the volume and the y coordinate of the sub-coordinate. diff_z[i] indicates the difference value between the z coordinate of the i-th point cloud in the volume and the z coordinate of the sub-coordinate.
[0512] Note that if the relative position of a volume in space can be calculated, the three-dimensional data encoding device does not need to include sub-coordinate information in the header of the volume. In other words, the three-dimensional data encoding device may calculate the relative position of a volume in space without including the sub-coordinate information in the header, and use the calculated position as the sub-coordinate of each volume.
[0513] As described above, the three-dimensional data encoding device according to this embodiment determines whether or not to encode the target spatial unit among a plurality of spatial units (e.g., submap, space, or volume) included in the three-dimensional data with an octree structure (e.g., S1522 in FIG. 59). For example, if the number of three-dimensional points included in the target spatial unit is greater than a predetermined threshold, the three-dimensional data encoding device determines to encode the target spatial unit with an octree structure. Also, if the number of three-dimensional points included in the target spatial unit is equal to or less than the threshold, the three-dimensional data encoding device determines not to encode the target spatial unit with an octree structure.
[0514] If it is determined that the target space unit is to be coded with an octree structure (Yes in S1522), the three-dimensional data coding device codes the target space unit using the octree structure (S1523). If it is determined that the target space unit is not to be coded with an octree structure (No in S1522), the three-dimensional data coding device codes the target space unit with a method different from the octree structure (S1524). For example, in the different method, the three-dimensional data coding device codes the coordinates of a three-dimensional point included in the target space unit. Specifically, in the different method, the three-dimensional data coding device codes the difference between the reference coordinates of the target space unit and the coordinates of a three-dimensional point included in the target space unit.
[0515] Next, the three-dimensional data encoding device adds information indicating whether the target spatial unit has been encoded in an octree structure to the bit stream (S1525).
[0516] According to this, the three-dimensional data encoding device can reduce the amount of data in the encoded signal, thereby improving encoding efficiency.
[0517] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor uses the memory to perform the above-mentioned processing.
[0518] Furthermore, the three-dimensional data decoding device according to this embodiment decodes information indicating whether or not a target spatial unit among a plurality of target spatial units (e.g., submaps, spaces, or volumes) included in the three-dimensional data is to be decoded in an octree structure from the bitstream (e.g., S1531 in FIG. 60). If the above information indicates that the target spatial unit is to be decoded in an octree structure (Yes in S1532), the three-dimensional data decoding device decodes the target spatial unit using the octree structure (S1533).
[0519] If the above information indicates that the target space unit is not to be decoded in an octree structure (No in S1532), the three-dimensional data decoding device decodes the target space unit in a method different from the octree structure (S1534). For example, in the different method, the three-dimensional data decoding device decodes the coordinates of a three-dimensional point included in the target space unit. Specifically, in the different method, the three-dimensional data decoding device decodes the difference between the reference coordinates of the target space unit and the coordinates of a three-dimensional point included in the target space unit.
[0520] According to this, the three-dimensional data decoding device can reduce the amount of data of the encoded signal, thereby improving the encoding efficiency.
[0521] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor uses the memory to perform the above-mentioned processing.
[0522] (Embodiment 9) In this embodiment, a method for encoding a tree structure such as an octree structure will be described.
[0523] Efficiency can be improved by identifying important areas and prioritizing decoding of the 3D data of the important areas.
[0524] FIG. 69 is a diagram showing an example of an important area in a three-dimensional map. The important area is, for example, an area including a certain number or more of three-dimensional points having large feature values among three-dimensional points in a three-dimensional map. Alternatively, the important area may be, for example, an area including a certain number or more of three-dimensional points required when a client such as an in-vehicle client performs self-location estimation. Alternatively, the important area may be a face area in a three-dimensional model of a person. In this way, the important area can be defined for each application, and the important area may be switched depending on the application.
[0525] In this embodiment, occupancy coding and location coding are used as a method for expressing an octree structure, etc. Also, a bit string obtained by occupancy coding is called an occupancy code. A bit string obtained by location coding is called a location code.
[0526] FIG. 70 is a diagram showing an example of an occupancy code. FIG. 70 shows an example of an occupancy code of a quadtree structure. In FIG. 70, an occupancy code is assigned to each node. Each occupancy code indicates whether or not a child node or leaf of each node includes a three-dimensional point. For example, in the case of a quadtree, information indicating whether or not each of four child nodes or leaves of each node includes a three-dimensional point is represented by a four-bit occupancy code. In the case of an occupancy tree, information indicating whether or not each of eight child nodes or leaves of each node includes a three-dimensional point is represented by an eight-bit occupancy code. Note that, for the sake of simplicity, the explanation will be given here using a quadtree structure as an example, but the same can be applied to an occupancy structure. For example, as shown in FIG. 70, the occupancy code is a bit example obtained by scanning nodes and leaves in a breadth-first manner as described in FIG. 40 and the like. In the occupancy code, information on multiple three-dimensional points is decoded in a fixed order, so information on any three-dimensional point cannot be decoded with priority. The occupancy code may be a bit string obtained by scanning nodes and leaves in a depth-first manner as described with reference to FIG.
[0527] The location coding is explained below. By using the location coding, important parts in the octree structure can be directly decoded. Also, important 3D points in the deep layers can be efficiently coded.
[0528] Fig. 71 is a diagram for explaining location coding, and is a diagram showing an example of a quadtree structure. In the example shown in Fig. 71, 3D points A to I are represented by the quadtree structure. Also, 3D points A and C are important 3D points included in an important region.
[0529] FIG. 72 is a diagram showing the occupancy code and location code representing the important 3D points A and C in the quadtree structure shown in FIG.
[0530] In location coding, in a tree structure, the index of the node existing on the path to the leaf to which the target 3D point, which is the 3D point to be coded, belongs, and the index of the leaf are coded. Here, the index is a numerical value assigned to each node and leaf. In other words, the index is an identifier for identifying multiple child nodes of the target node. In the case of a quadtree as shown in FIG. 71, the index indicates any one of 0 to 3.
[0531] For example, in the quadtree structure shown in FIG. 71, when leaf A is the target three-dimensional point, leaf A is expressed as 0→2→1→0→1→2→1. Here, since the maximum value of each index is 4 (can be expressed in 2 bits) in the case of the right figure, the number of bits required for the location code of leaf A is 7×2bit=14bit. Similarly, when leaf C is the target for encoding, the number of bits required is 14bit. Note that in the case of an octree, since the maximum value of each index is 8 (can be expressed in 3 bits), the number of bits required can be calculated by 3bit×depth of the leaf. Note that the three-dimensional data encoding device may reduce the amount of data by binarizing each index and then entropy-encoding it.
[0532] Also, as shown in Figure 72, in the case of occupancy codes, in order to decode leaves A and C, it is necessary to decode all nodes in the upper layer. On the other hand, in the case of location codes, it is possible to decode only the data of leaves A and C. As a result, as shown in Figure 72, the number of bits can be reduced by using location codes compared to occupancy codes.
[0533] Moreover, as shown in FIG. 72, by performing dictionary compression such as LZ77 on a part or all of the location code, the amount of code can be further reduced.
[0534] Next, an example of applying location coding to 3D points (point cloud) obtained by LiDAR will be described. FIG. 73 is a diagram showing an example of 3D points obtained by LiDAR. 3D points obtained by LiDAR are sparse. In other words, when these 3D points are expressed by occupancy codes, the number of zero values increases. In addition, high 3D accuracy is required for these 3D points. In other words, the hierarchy of the octree structure becomes deeper.
[0535] Fig. 74 is a diagram showing an example of such a sparse deep octree structure. The occupancy code of the octree structure shown in Fig. 74 is 136 bits (=8 bits x 17 nodes). In addition, since the depth is 6 and there are six three-dimensional points, the location code is 3 bits x 6 x 6 = 108 bits. In other words, the location code can reduce the amount of code by 20% compared to the occupancy code. In this way, the amount of code can be reduced by applying location coding to a sparse deep octree structure.
[0536] The amount of code for the occupancy code and the location code will be explained below. When the depth of the octree structure is 10, the maximum number of three-dimensional points is 8. 10 = 1073741824. Also, the number of bits of the occupancy code of the octree structure is L o is expressed as follows:
[0537] L o =8+8 2 +···+8 10 =127133512 bits
[0538] Therefore, the number of bits per 3D point is 1.143 bits. Note that in the occupancy code, this number of bits does not change even if the number of 3D points included in the octree structure changes.
[0539] On the other hand, in the case of location codes, the number of bits per 3D point is directly affected by the depth of the octree structure: specifically, the number of bits per 3D point is 3 bits x depth 10 = 30 bits.
[0540] Therefore, the number of bits of the location code of the octree structure is L l is expressed as follows:
[0541] L l =30×N
[0542] Here, N is the number of 3D points contained in the octree structure.
[0543] Therefore, N <L o When L / 30=40904450.4, that is, when the number of 3D points is less than 40904450, the amount of code for the location code is less than the amount of code for the occupancy code (L l <L o ).
[0544] In this way, when there are few three-dimensional points, the amount of location code is less than the amount of occupancy code, and when there are many three-dimensional points, the amount of location code is greater than the amount of occupancy code.
[0545] Therefore, the three-dimensional data encoding device may switch between using location encoding and occupancy encoding depending on the number of input three-dimensional points. In this case, the three-dimensional data encoding device may add information indicating whether the encoding was performed using location encoding or occupancy encoding to header information of the bit stream or the like.
[0546] Hereinafter, a description will be given of a mixed coding method combining location coding and occupancy coding. When coding a dense important region, a mixed coding method combining location coding and occupancy coding is effective. FIG. 75 is a diagram showing this example. In the example shown in FIG. 75, important three-dimensional points are densely arranged. In this case, the three-dimensional data coding device performs location coding on the upper layer with a shallow depth, and uses occupancy coding on the lower layer. Specifically, location coding is used up to the deepest common node, and occupancy coding is used in layers deeper than the deepest common node. Here, the deepest common node is the deepest node among the nodes that are common ancestors of multiple important three-dimensional points.
[0547] Next, hybrid coding that prioritizes compression efficiency will be described. The three-dimensional data coding device may switch between location coding and occupancy coding according to a predetermined rule in octree coding.
[0548] FIG. 76 is a diagram showing an example of this rule. First, the three-dimensional data encoding device checks the ratio of nodes at each level (depth) that contain three-dimensional points. If the ratio is higher than a predetermined threshold, the three-dimensional data encoding device performs occupancy encoding on some nodes in a layer above the target level. For example, the three-dimensional data encoding device applies occupancy encoding to the levels from the target level to the deepest common node.
[0549] For example, in the example shown in Fig. 76, the ratio of nodes including 3D points in the third level is higher than the threshold value. Therefore, the three-dimensional data encoding device applies occupancy encoding to the second and third levels from the third level to the deepest common node, and applies location encoding to the remaining first and fourth levels.
[0550] A method for calculating the threshold value will be described. In one layer of the octree structure, there is one root node and eight child nodes. Therefore, in occupancy coding, eight bits are required to code one layer of the octree structure. On the other hand, in location coding, three bits are required for each child node that includes a three-dimensional point. Therefore, when the number of nodes that include a three-dimensional point is greater than two, occupancy coding is more effective than location coding. That is, in this case, the threshold value is two.
[0551] An example of the structure of a bitstream generated by the above-mentioned location coding, occupancy coding, or hybrid coding will be described below.
[0552] Figure 77 is a diagram showing an example of a bit stream generated by location encoding. As shown in Figure 77, the bit stream generated by location encoding includes a header and multiple location codes. Each location code corresponds to one three-dimensional point.
[0553] With this configuration, the 3D data decoding device can decode multiple 3D points individually with high accuracy. Note that Figure 77 shows an example of a bit stream in the case of a 4-arytree structure. In the case of an 8-arytree structure, each index can take a value from 0 to 7.
[0554] Furthermore, the three-dimensional data encoding device may binarize an index string representing one three-dimensional point and then perform entropy encoding. For example, if the index string is 0121, the three-dimensional data encoding device may binarize 0121 to 00011001 and perform arithmetic encoding on this bit string.
[0555] Fig. 78 is a diagram showing an example of a bit stream generated by hybrid coding when an important 3D point is included. As shown in Fig. 78, a location code in an upper layer, an occupancy code of an important 3D point in a lower layer, and an occupancy code of a non-important 3D point other than the important 3D point in the lower layer are arranged in this order. Note that the location code length shown in Fig. 78 indicates the code amount of the subsequent location code. Also, the occupancy code amount indicates the code amount of the subsequent occupancy code.
[0556] This configuration allows the three-dimensional data decoding device to select different decoding schemes depending on the application.
[0557] Also, the coded data of important 3D points is stored near the beginning of the bit stream, and the coded data of non-important 3D points not included in the important region is stored after the coded data of important 3D points.
[0558] Fig. 79 is a diagram showing a tree structure represented by the occupancy code of important 3D points shown in Fig. 78. Fig. 80 is a diagram showing a tree structure represented by the occupancy code of unimportant 3D points shown in Fig. 78. As shown in Fig. 79, in the occupancy code of important 3D points, information on unimportant 3D points is excluded. Specifically, since node 0 and node 3 at depth 5 do not include an important 3D point, a value of 0 is assigned to node 0 and node 3 indicating that no 3D point is included.
[0559] On the other hand, as shown in Fig. 80, information about important 3D points is excluded in the occupancy code of non-important 3D points. Specifically, since node 1 at depth 5 does not include any non-important 3D points, a value of 0 is assigned to node 1, indicating that it does not include any 3D points.
[0560] In this way, the three-dimensional data encoding device divides the original tree structure into a first tree structure including important three-dimensional points and a second tree structure including unimportant three-dimensional points, and performs occupancy encoding on the first tree structure and the second tree structure independently. This allows the three-dimensional data decoding device to decode the important three-dimensional points with priority.
[0561] Next, a configuration example of a bit stream generated by the hybrid coding with emphasis on efficiency will be described. Fig. 81 is a diagram showing a configuration example of a bit stream generated by the hybrid coding with emphasis on efficiency. As shown in Fig. 81, for each subtree, a subtree root location, an occupancy code amount, and an occupancy code are arranged in this order. The subtree location shown in Fig. 81 is the location code of the root of the subtree.
[0562] In the above configuration, when only one of location coding and occupancy coding is applied to the 8-tree structure, the following holds true.
[0563] If the length of the location encoding of the root of a subtree is equal to the depth of the octree, then the subtree has no child nodes, i.e. the location encoding has been applied to the entire tree.
[0564] If the root of a subtree is equal to the root of the octree, then occupancy coding has been applied to the entire tree.
[0565] For example, based on the above rules, a three-dimensional data decoding device can determine whether a bit stream contains a location code or an occupancy code.
[0566] The bitstream may also include coding mode information indicating whether location coding, occupancy coding, or mixed coding is used. Figure 82 is a diagram showing an example of a bitstream in this case. For example, as shown in Figure 82, 2-bit coding mode information indicating the coding mode is added to the bitstream.
[0567] In addition, (1) the "number of 3D points" in location coding indicates the number of subsequent 3D points. In (2) the "occupancy code amount" in occupancy coding indicates the code amount of the subsequent occupancy code. In (3) the "number of important subtrees" in mixed coding (important 3D points) indicates the number of subtrees that contain important 3D points. In (4) the "number of occupancy subtrees" in mixed coding (efficiency-oriented) indicates the number of subtrees that have been occupancy coded.
[0568] Next, an example of a syntax used to switch between application of occupancy coding and location coding will be described. Figure 83 is a diagram showing this syntax example.
[0569] 83 is a flag indicating whether the target node is a leaf or not. isleaf=1 indicates that the target node is a leaf, and isleaf=0 indicates that the target node is a node and not a leaf.
[0570] If the target node is a leaf, point_flag is added to the bit stream. point_flag is a flag indicating whether the target node (leaf) includes a three-dimensional point. point_flag=1 indicates that the target node includes a three-dimensional point, and point_flag=0 indicates that the target node does not include a three-dimensional point.
[0571] If the target node is not a leaf, coding_type is added to the bitstream. coding_type is coding type information that indicates the coding type that is applied. coding_type=00 indicates that location coding is applied, coding_type=01 indicates that occupancy coding is applied, and coding_type=10 or 11 indicates that other coding methods are applied.
[0572] When the encoding type is location encoding, numPoint, num_idx[i], and idx[i][j] are added to the bitstream.
[0573] numPoint indicates the number of three-dimensional points for which location encoding is performed. num_idx[i] indicates the number (depth) of indices from the target node to the three-dimensional point i. If all the three-dimensional points for which location encoding is performed are at the same depth, then all num_idx[i] will have the same value. Therefore, before the for loop (for (i = 0; i < numPoint; i++) {) shown in FIG. 83, num_idx may be defined as a common value.
[0574] idx[i][j] indicates the value of the j-th index among the indices from the target node to the three-dimensional point i. In the case of an octree, the number of bits of idx[i][j] is 3 bits.
[0575] Note that, as described above, an index is an identifier for identifying a plurality of child nodes of a target node. In the case of an octree, idx[i][j] indicates any one of 0 to 7. Also, in the case of an octree, there are 8 child nodes, and each child node corresponds to each of the 8 sub-blocks obtained by spatially dividing the target block corresponding to the target node into 8 parts. Therefore, idx[i][j] may be information indicating the three-dimensional position of the sub-block corresponding to the child node. For example, idx[i][j] may be a total of 3-bit information including 1-bit information indicating the position of each of x, y, and z of the sub-block.
[0576] When the encoding type is occupancy encoding, occupancy_code is added to the bitstream. occupancy_code is the occupancy code of the target node. In the case of an octree, occupancy_code is, for example, an 8-bit bit string such as the bit string "00101000".
[0577] If the value of the (i+1)th bit of occupancy_code is 1, the process moves to the child node. In other words, the child node is set as the next target node, and the bit string is generated recursively.
[0578] In the present embodiment, an example has been shown in which the end of an octet tree is represented by adding leaf information (isleaf, point_flag) to a bit stream, but this is not necessarily limited to this. For example, the three-dimensional data encoding device may add the maximum depth from the start node (root) of the occupancy code to the end (leaf) where the three-dimensional point exists to the header part of the start node. Then, the three-dimensional data encoding device may recursively convert information of child nodes into bit strings while increasing the depth from the start node, and determine that a leaf has been reached when the depth reaches the maximum depth. Also, the three-dimensional data encoding device may add information indicating the maximum depth to the first node whose coding type becomes occupancy coding, or to the start node (root) of the octet tree.
[0579] As described above, the three-dimensional data encoding device may add information for switching between occupancy encoding and location encoding to the bit stream as header information for each node.
[0580] Furthermore, the three-dimensional data encoding device may entropy-encode the coding_type, numPoint, num_idx, idx, and occupancy_code of each node generated by the above method. For example, the three-dimensional data encoding device binarizes each value and then performs arithmetic encoding.
[0581] In addition, in the above syntax, a case where a depth-first bit string in an octet tree structure is used as the occupancy code is exemplified, but this is not necessarily limited to this. The three-dimensional data encoding device may use a breadth-first bit string in an octet tree structure as the occupancy code. Even when a breadth-first bit string is used, the three-dimensional data encoding device may add information for switching between occupancy encoding and location encoding to the bit stream as header information for each node.
[0582] In this embodiment, an octal tree structure is shown as an example, but this is not necessarily limited to this, and the above method may be applied to N-ary trees (N is an integer equal to or greater than 2) such as 4-ary trees and 16-ary trees, or other tree structures.
[0583] An example of the flow of the encoding process for switching between application of occupancy encoding and location encoding will be described below. Figure 84 is a flowchart of the encoding process according to this embodiment.
[0584] First, the three-dimensional data encoding device expresses a plurality of three-dimensional points included in the three-dimensional data in an octree structure (S1601). Next, the three-dimensional data encoding device sets the root of the octree structure to the target node (S1602). Next, the three-dimensional data encoding device performs node encoding processing on the target node to generate a bit string of the octree structure (S1603). Next, the three-dimensional data encoding device entropy-encodes the generated bit string to generate a bit stream (S1604).
[0585] 85 is a flowchart of the node encoding process (S1603). First, the three-dimensional data encoding device determines whether the target node is a leaf (S1611). If the target node is not a leaf (No in S1611), the three-dimensional data encoding device sets the leaf flag (isleaf) to 0 and adds the leaf flag to the bit string (S1612).
[0586] Next, the three-dimensional data encoding device determines whether the number of child nodes including the three-dimensional point is greater than a predetermined threshold (S1613). Note that the three-dimensional data encoding device may add this threshold to the bit string.
[0587] If the number of child nodes containing three-dimensional points is greater than a predetermined threshold (Yes in S1613), the three-dimensional data encoding device sets the encoding type (coding_type) to occupancy encoding and adds the encoding type to the bit string (S1614).
[0588] Next, the three-dimensional data encoding device sets occupancy encoding information and adds the occupancy encoding information to the bit string. Specifically, the three-dimensional data encoding device generates an occupancy code for the target node and adds the occupancy code to the bit string (S1615).
[0589] Next, the three-dimensional data encoding device sets the next target node according to the occupancy code (S1616). Specifically, the three-dimensional data encoding device sets the next target node from an unprocessed child node whose occupancy code is "1".
[0590] Next, the three-dimensional data encoding device performs node encoding processing on the newly set target node (S1617). That is, the processing shown in FIG. 85 is performed on the newly set target node.
[0591] If the processing of all child nodes has not been completed (No in S1618), the processing from step S1616 onwards is performed again. On the other hand, if the processing of all child nodes has been completed (Yes in S1618), the three-dimensional data encoding device ends the node encoding processing.
[0592] Also, in step S1613, if the number of child nodes containing three-dimensional points is less than or equal to a predetermined threshold (No in S1613), the three-dimensional data encoding device sets the encoding type to location encoding and adds the encoding type to the bit string (S1619).
[0593] Next, the three-dimensional data encoding device sets location encoding information and adds the location encoding information to the bit string. Specifically, the three-dimensional data encoding device generates a location code and adds the location encoding to the bit string (S1620). The location code includes numPoint, num_idx, and idx.
[0594] Furthermore, in step S1611, if the target node is a leaf (Yes in S1611), the three-dimensional data encoding device sets a leaf flag to 1 and adds the leaf flag to the bit string (S1621). Furthermore, the three-dimensional data encoding device sets a point flag (point_flag), which is information indicating whether the leaf includes a three-dimensional point, and adds the point flag to the bit string (S1622).
[0595] Next, an example of a flow of a decoding process in which application of occupancy coding and location coding is switched will be described. Figure 85 is a flowchart of the decoding process according to this embodiment.
[0596] The three-dimensional data decoding device generates a bit string by entropy decoding the bit stream (S1631). Next, the three-dimensional data decoding device restores an octree structure by performing node decoding processing on the obtained bit string (S1632). Next, the three-dimensional data decoding device generates three-dimensional points from the restored octree structure (S1633).
[0597] 87 is a flowchart of the node decoding process (S1632). First, the three-dimensional data decoding device acquires (decodes) a leaf flag (isleaf) from the bit string (S1641). Next, the three-dimensional data decoding device determines whether the target node is a leaf or not based on the leaf flag (S1642).
[0598] If the target node is not a leaf (No in S1642), the three-dimensional data decoding device acquires the coding type (coding_type) from the bit string (S1643). The three-dimensional data decoding device determines whether the coding type is occupancy coding (S1644).
[0599] If the coding type is occupancy coding (Yes in S1644), the three-dimensional data decoding device acquires occupancy coding information from the bit string. Specifically, the three-dimensional data decoding device acquires an occupancy code from the bit string (S1645).
[0600] Next, the three-dimensional data decoding device sets the next target node according to the occupancy code (S1646). Specifically, the three-dimensional data decoding device sets the next target node from an unprocessed child node whose occupancy code is "1".
[0601] Next, the three-dimensional data decoding device performs node decoding processing on the newly set target node (S1647). That is, the processing shown in FIG. 87 is performed on the newly set target node.
[0602] If the processing of all child nodes has not been completed (No in S1648), the processing from step S1646 onwards is performed again. On the other hand, if the processing of all child nodes has been completed (Yes in S1648), the three-dimensional data decoding device ends the node decoding processing.
[0603] Also, if the coding type is location coding in step S1644 (No in S1644), the three-dimensional data decoding device acquires location coding information from the bit string. Specifically, the three-dimensional data decoding device acquires a location code from the bit string (S1649). The location code includes numPoint, num_idx, and idx.
[0604] Furthermore, if the target node is a leaf in step S1642 (Yes in S1642), the three-dimensional data decoding device obtains a point flag (point_flag), which is information indicating whether the leaf includes a three-dimensional point, from the bit string (S1650).
[0605] In this embodiment, the coding type is switched for each node, but this is not necessarily limited to this. The coding type may be fixed for each volume, space, or world. In this case, the three-dimensional data coding device may add coding type information to the header information of the volume, space, or world.
[0606] As described above, the three-dimensional data encoding device according to this embodiment generates first information expressing an N-ary (N is an integer equal to or greater than 2) tree structure of a plurality of three-dimensional points included in three-dimensional data in a first method (location encoding), and generates a bit stream including the first information. The first information includes three-dimensional point information (location code) corresponding to each of the plurality of three-dimensional points. Each piece of three-dimensional point information includes an index (idx) corresponding to each of a plurality of layers in the N-ary tree structure. Each index indicates a sub-block to which the corresponding three-dimensional point belongs, among N sub-blocks belonging to the corresponding layer.
[0607] In other words, each piece of 3D point information indicates a path to a corresponding 3D point in an N-ary tree structure. Each index indicates a child node included in the path among N child nodes belonging to the corresponding layer (node).
[0608] According to this, the 3D data encoding method can generate a bitstream from which 3D points can be selectively decoded.
[0609] For example, the 3D point information (location code) includes information (num_idx) indicating the number of indexes included in the 3D point information. In other words, the information indicates the depth (number of layers) to the corresponding 3D point in the N-ary tree structure.
[0610] For example, the first information includes information (numPoint) indicating the number of pieces of 3D point information included in the first information. In other words, the information indicates the number of 3D points included in the N-ary tree structure.
[0611] For example, N is 8 and the index is 3 bits.
[0612] For example, a three-dimensional data encoding device has a first encoding mode for generating first information, and a second encoding mode for generating second information (occupancy code) that expresses an N-ary tree structure in a second method (occupancy encoding) and generating a bit stream including the second information. The second information corresponds to each of a plurality of subblocks belonging to a plurality of layers in the N-ary tree structure, and includes a plurality of 1-bit information pieces indicating whether a three-dimensional point exists in the corresponding subblock.
[0613] For example, the three-dimensional data encoding device uses a first encoding mode when the number of the three-dimensional points is equal to or less than a predetermined threshold, and uses a second encoding mode when the number of the three-dimensional points is greater than the threshold, thereby enabling the three-dimensional data encoding device to reduce the amount of code in the bit stream.
[0614] For example, the first information and the second information include information (encoding mode information) indicating whether the information is information that represents an N-ary tree structure in a first scheme or information that represents an N-ary tree structure in a second scheme.
[0615] For example, as shown in FIG. 75 etc., the three-dimensional data encoding device uses a first encoding mode for a part of the N-ary tree structure, and uses a second encoding mode for another part of the N-ary tree structure.
[0616] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor uses the memory to perform the above-mentioned processing.
[0617] Furthermore, the three-dimensional data decoding device according to this embodiment acquires, from the bit stream, first information (location code) that expresses an N-ary (N is an integer equal to or greater than 2) tree structure of multiple three-dimensional points included in the three-dimensional data in a first method (location coding). The first information includes three-dimensional point information (location code) corresponding to each of the multiple three-dimensional points. Each piece of three-dimensional point information includes an index (idx) corresponding to each of multiple layers in the N-ary tree structure. Each index indicates a sub-block to which the corresponding three-dimensional point belongs, among N sub-blocks belonging to the corresponding layer.
[0618] In other words, each piece of 3D point information indicates a path to a corresponding 3D point in an N-ary tree structure. Each index indicates a child node included in the path among N child nodes belonging to the corresponding layer (node).
[0619] The three-dimensional data decoding device further uses the three-dimensional point information to reconstruct three-dimensional points corresponding to the three-dimensional point information.
[0620] This allows the 3D data decoding device to selectively decode 3D points from a bitstream.
[0621] For example, the 3D point information (location code) includes information (num_idx) indicating the number of indexes included in the 3D point information. In other words, the information indicates the depth (number of layers) to the corresponding 3D point in the N-ary tree structure.
[0622] For example, the first information includes information (numPoint) indicating the number of pieces of 3D point information included in the first information. In other words, the information indicates the number of 3D points included in the N-ary tree structure.
[0623] For example, N is 8 and the index is 3 bits.
[0624] For example, the three-dimensional data decoding device further obtains second information (occupancy code) expressing the N-ary tree structure in a second method (occupancy coding) from the bit stream. The three-dimensional data decoding device restores a plurality of three-dimensional points using the second information. The second information corresponds to each of a plurality of sub-blocks belonging to a plurality of layers in the N-ary tree structure, and includes a plurality of 1-bit information indicating whether a three-dimensional point exists in the corresponding sub-block.
[0625] For example, the first information and the second information include information (encoding mode information) indicating whether the information is information that represents an N-ary tree structure in a first scheme or information that represents an N-ary tree structure in a second scheme.
[0626] For example, as shown in FIG. 75, a part of the N-ary tree structure is represented in the first method, and another part of the N-ary tree structure is represented in the second method.
[0627] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor uses the memory to perform the above-mentioned processing.
[0628] (Embodiment 10) In this embodiment, another example of a method for encoding a tree structure such as an octree structure will be described. Figure 88 is a diagram showing an example of a tree structure according to this embodiment. Note that Figure 88 shows an example of a quadtree structure.
[0629] A leaf that contains a 3D point is called a valid leaf, and a leaf that does not contain a 3D point is called an invalid leaf. A branch with the number of valid leaves equal to or greater than a threshold is called a dense branch. A branch with the number of valid leaves less than the threshold is called a sparse branch.
[0630] The three-dimensional data encoding device calculates the number of three-dimensional points (i.e., the number of valid leaves) contained in each branch in a certain layer of a tree structure. Figure 88 shows an example where the threshold is 5. In this example, there are two branches in layer 1. The left branch contains seven three-dimensional points, so the left branch is determined to be a dense branch. The right branch contains two three-dimensional points, so the right branch is determined to be a sparse branch.
[0631] FIG. 89 is a diagram showing an example of the number of effective leaves (3D points) in each branch of layer 5. The horizontal axis of FIG. 89 indicates indexes that are identification numbers of branches of layer 5. As shown in FIG. 89, a specific branch clearly contains more 3D points than other branches. For such dense branches, occupancy coding is more effective than for sparse branches.
[0632] The application methods of occupancy coding and location coding will be described below. Figure 90 is a diagram showing the relationship between the number of 3D points (the number of valid leaves) included in each branch in layer 5 and the coding method to be applied. As shown in Figure 90, the 3D data coding device applies occupancy coding to dense branches and location coding to sparse branches. This can improve coding efficiency.
[0633] Fig. 91 is a diagram showing an example of a dense branch region in LiDAR data. As shown in Fig. 91, the density of 3D points calculated from the number of 3D points included in each branch differs depending on the region.
[0634] In addition, separating dense 3D points (branches) from sparse 3D points (branches) has the following advantages. The closer to the LiDAR sensor, the higher the density of 3D points. Therefore, by separating branches according to density, it becomes possible to partition in the distance direction. Such partitions are effective in certain applications. In addition, it is effective to use a method other than occupancy coding for sparse branches.
[0635] In this embodiment, the 3D data encoding device separates an input 3D point cloud into two or more sub 3D point clouds, and applies a different encoding method to each sub 3D point cloud.
[0636] For example, the three-dimensional data encoding device separates an input three-dimensional point cloud into a sub three-dimensional point cloud A (dense three-dimensional point cloud) including dense branches and a sub three-dimensional point cloud B (sparse three-dimensional point cloud) including sparse branches. Fig. 92 is a diagram showing an example of the sub three-dimensional point cloud A (dense three-dimensional point cloud) including dense branches separated from the tree structure shown in Fig. 88. Fig. 93 is a diagram showing an example of the sub three-dimensional point cloud B (sparse three-dimensional point cloud) including sparse branches separated from the tree structure shown in Fig. 88.
[0637] Next, the three-dimensional data encoding device encodes the sub-three-dimensional point cloud A with occupancy encoding and encodes the sub-three-dimensional point cloud B with location encoding.
[0638] Note that, although an example of applying different encoding methods (occupancy encoding and location encoding) has been shown here as different encoding methods, for example, a three-dimensional data encoding device may use the same encoding method for sub-three-dimensional point group A and sub-three-dimensional point group B, and may use different parameters for encoding sub-three-dimensional point group A and sub-three-dimensional point group B.
[0639] The flow of the three-dimensional data encoding process by the three-dimensional data encoding device will be described below. Fig. 94 is a flowchart of the three-dimensional data encoding process by the three-dimensional data encoding device according to this embodiment.
[0640] First, the three-dimensional data encoding device separates the input three-dimensional point cloud into sub three-dimensional point clouds (S1701). The three-dimensional data encoding device may perform this separation automatically, or may perform it based on information input by the user. For example, the range of the sub three-dimensional point cloud may be specified by the user. In addition, as an example of performing it automatically, for example, when the input data is LiDAR data, the three-dimensional data encoding device performs the separation using distance information to each point cloud. Specifically, the three-dimensional data encoding device separates the point cloud within a certain range from the measurement point and the point cloud outside the range. In addition, the three-dimensional data encoding device may perform the separation using information such as important areas and unimportant areas.
[0641] Next, the three-dimensional data encoding device generates encoded data (encoded bit stream) by encoding the sub three-dimensional point group A by the technique A (S1702). The three-dimensional data encoding device also generates encoded data by encoding the sub three-dimensional point group B by the technique B (S1703). The three-dimensional data encoding device may encode the sub three-dimensional point group B by the technique A. In this case, the three-dimensional data encoding device encodes the sub three-dimensional point group B by using a parameter different from the encoding parameter used for encoding the sub three-dimensional point group A. For example, this parameter may be a quantization parameter. For example, the three-dimensional data encoding device encodes the sub three-dimensional point group B by using a quantization parameter larger than the quantization parameter used for encoding the sub three-dimensional point group A. In this case, the three-dimensional data encoding device may add information indicating the quantization parameter used for encoding the sub three-dimensional point group to the header of the encoded data of each sub three-dimensional point group.
[0642] Next, the three-dimensional data encoding device generates a bit stream by combining the encoded data obtained in step S1702 and the encoded data obtained in step S1703 (S1704).
[0643] Furthermore, the three-dimensional data encoding device may encode information for decoding each sub three-dimensional point cloud as header information of the bit stream. For example, the three-dimensional data encoding device may encode the following information:
[0644] The header information may include information indicating the number of encoded sub-3D points. In this example, this information indicates 2.
[0645] The header information may include information indicating the number of 3D points contained in each sub-3D point cloud and the encoding method. In this example, this information indicates the number of 3D points contained in sub-3D point cloud A and the encoding method (method A) applied to sub-3D point cloud A, the number of 3D points contained in sub-3D point cloud B and the encoding method (method B) applied to sub-3D point cloud B.
[0646] The header information may include information for identifying the beginning or ending location of the encoded data for each sub-3D point cloud.
[0647] Furthermore, the three-dimensional data encoding device may encode the sub three-dimensional point group A and the sub three-dimensional point group B in parallel. Alternatively, the three-dimensional data encoding device may encode the sub three-dimensional point group A and the sub three-dimensional point group B in sequence.
[0648] Also, the method of separation into sub three-dimensional point clouds is not limited to the above. For example, the three-dimensional data encoding device changes the separation method, performs encoding using each of a plurality of separation methods, and calculates the encoding efficiency of the encoded data obtained using each separation method. Then, the three-dimensional data encoding device selects the separation method with the highest encoding efficiency. For example, the three-dimensional data encoding device may separate the three-dimensional point cloud in each of a plurality of layers, calculate the encoding efficiency in each case, select the separation method with the highest encoding efficiency (i.e., the layer to perform separation), and generate and encode the sub three-dimensional point cloud using the selected separation method.
[0649] Furthermore, when combining the encoded data, the three-dimensional data encoding device may position the encoded information of the sub three-dimensional point cloud closer to the beginning of the bit stream, so that the three-dimensional data decoding device can obtain important information simply by decoding the first bit stream, thereby enabling the important information to be obtained quickly.
[0650] Next, a flow of three-dimensional data decoding processing by the three-dimensional data decoding device will be described below. Fig. 95 is a flowchart of three-dimensional data decoding processing by the three-dimensional data decoding device according to this embodiment.
[0651] First, the three-dimensional data decoding device acquires, for example, a bit stream generated by the above three-dimensional data encoding device. Next, the three-dimensional data decoding device separates the encoded data of sub three-dimensional point group A and the encoded data of sub three-dimensional point group B from the acquired bit stream (S1711). Specifically, the three-dimensional data decoding device decodes information for decoding each sub three-dimensional point group from header information of the bit stream, and uses the information to separate the encoded data of each sub three-dimensional point group.
[0652] Next, the three-dimensional data decoding device obtains sub three-dimensional point group A by decoding the encoded data of sub three-dimensional point group A using method A (S1712). The three-dimensional data decoding device also obtains sub three-dimensional point group B by decoding the encoded data of sub three-dimensional point group B using method B (S1713). Next, the three-dimensional data decoding device combines sub three-dimensional point group A and sub three-dimensional point group B (S1714).
[0653] In addition, the three-dimensional data decoding device may decode the sub three-dimensional point group A and the sub three-dimensional point group B in parallel. Alternatively, the three-dimensional data decoding device may decode the sub three-dimensional point group A and the sub three-dimensional point group B in sequence.
[0654] Furthermore, the three-dimensional data decoding device may decode necessary sub three-dimensional point clouds. For example, the three-dimensional data decoding device may decode the sub three-dimensional point cloud A and not decode the sub three-dimensional point cloud B. For example, if the sub three-dimensional point cloud A is a three-dimensional point cloud included in an important area of the LiDAR data, the three-dimensional data decoding device decodes the three-dimensional point cloud of the important area. Using the three-dimensional point cloud of the important area, self-location estimation of a vehicle or the like is performed.
[0655] Next, a specific example of the encoding process according to this embodiment will be described below. Fig. 96 is a flowchart of the three-dimensional data encoding process performed by the three-dimensional data encoding device according to this embodiment.
[0656] First, the three-dimensional data encoding device separates the input three-dimensional points into a sparse three-dimensional point cloud and a dense three-dimensional point cloud (S1721). Specifically, the three-dimensional data encoding device counts the number of valid leaves in a branch of a certain layer of an octree structure. The three-dimensional data encoding device sets each branch as a dense branch or a sparse branch according to the number of valid leaves in each branch. Then, the three-dimensional data encoding device generates a sub-three-dimensional point cloud (dense three-dimensional point cloud) that collects dense branches, and a sub-three-dimensional point cloud (sparse three-dimensional point cloud) that collects sparse branches.
[0657] Next, the three-dimensional data encoding device generates encoded data by encoding the sparse three-dimensional point cloud (S1722). For example, the three-dimensional data encoding device encodes the sparse three-dimensional point cloud using location encoding.
[0658] Furthermore, the three-dimensional data encoding device generates encoded data by encoding the dense three-dimensional point cloud (S1723). For example, the three-dimensional data encoding device encodes the dense three-dimensional point cloud using occupancy encoding.
[0659] Next, the 3D data encoding device generates a bitstream by combining the encoded data of the sparse 3D point cloud obtained in step S1722 and the encoded data of the dense 3D point cloud obtained in step S1723 (S1724).
[0660] In addition, the three-dimensional data encoding device may encode information for decoding the sparse three-dimensional point cloud and the dense three-dimensional point cloud as header information of the bit stream. For example, the three-dimensional data encoding device may encode the following information:
[0661] The header information may include information indicating the number of encoded sub 3D point clouds. In this example, this information indicates 2.
[0662] The header information may include information indicating the number of 3D points contained in each sub 3D point cloud and the encoding method applied to the sparse 3D point cloud (location encoding), the number of 3D points contained in the dense 3D point cloud and the encoding method applied to the dense 3D point cloud (occupancy encoding) in this example.
[0663] The header information may include information to identify the beginning or ending location of the encoded data for each sub 3D point cloud, in this example indicating at least one of the beginning and ending locations of the encoded data for the sparse 3D point cloud and the beginning and ending locations of the encoded data for the dense 3D point cloud.
[0664] Also, the three-dimensional data encoding device may encode the sparse three-dimensional point cloud and the dense three-dimensional point cloud in parallel, or may encode the sparse three-dimensional point cloud and the dense three-dimensional point cloud in sequence.
[0665] Next, a specific example of the three-dimensional data decoding process will be described below. Fig. 97 is a flowchart of the three-dimensional data decoding process performed by the three-dimensional data decoding device according to this embodiment.
[0666] First, the three-dimensional data decoding device acquires, for example, a bit stream generated by the above three-dimensional data encoding device. Next, the three-dimensional data decoding device separates the acquired bit stream into coded data of a sparse three-dimensional point cloud and coded data of a dense three-dimensional point cloud (S1731). Specifically, the three-dimensional data decoding device decodes information for decoding each sub-three-dimensional point cloud from the header information of the bit stream, and separates the coded data of each sub-three-dimensional point cloud using the information. In this example, the three-dimensional data decoding device separates the coded data of the sparse three-dimensional point cloud and the dense three-dimensional point cloud from the bit stream using the header information.
[0667] Next, the three-dimensional data decoding device obtains a sparse three-dimensional point cloud by decoding the encoded data of the sparse three-dimensional point cloud (S1732). For example, the three-dimensional data decoding device decodes the sparse three-dimensional point cloud using location decoding for decoding the location-encoded encoded data.
[0668] In addition, the three-dimensional data decoding device obtains a dense three-dimensional point cloud by decoding the encoded data of the dense three-dimensional point cloud (S1733). For example, the three-dimensional data decoding device decodes the dense three-dimensional point cloud using occupancy decoding for decoding the occupancy encoded data.
[0669] Next, the 3D data decoding device combines the sparse 3D point cloud obtained in step S1732 with the dense 3D point cloud obtained in step S1733 (S1734).
[0670] The three-dimensional data decoding device may decode the sparse three-dimensional point cloud and the dense three-dimensional point cloud in parallel, or may sequentially decode the sparse three-dimensional point cloud and the dense three-dimensional point cloud.
[0671] The three-dimensional data decoding device may also decode a portion of the necessary sub-three-dimensional point clouds. For example, the three-dimensional data decoding device may decode a dense three-dimensional point cloud and not decode sparse three-dimensional data. For example, if the dense three-dimensional point cloud is a three-dimensional point cloud included in an important area of the LiDAR data, the three-dimensional data decoding device decodes the three-dimensional point cloud of the important area. Self-location estimation in a vehicle or the like is performed using the three-dimensional point cloud of the important area.
[0672] 98 is a flowchart of the encoding process according to this embodiment. First, the three-dimensional data encoding device separates an input three-dimensional point group into a sparse three-dimensional point group and a dense three-dimensional point group to generate the sparse three-dimensional point group and the dense three-dimensional point group (S1741).
[0673] Next, the three-dimensional data encoding device generates encoded data by encoding the dense three-dimensional point cloud (S1742). The three-dimensional data encoding device also generates encoded data by encoding the sparse three-dimensional point cloud (S1743). Finally, the three-dimensional data encoding device generates a bitstream by combining the encoded data of the sparse three-dimensional point cloud obtained in step S1742 and the encoded data of the dense three-dimensional point cloud obtained in step S1743 (S1744).
[0674] FIG. 99 is a flowchart of the decoding process according to this embodiment. First, the three-dimensional data decoding device extracts the dense three-dimensional point group encoded data and the sparse three-dimensional point group encoded data from the bit stream (S1751). Next, the three-dimensional data decoding device obtains the dense three-dimensional point group decoded data by decoding the dense three-dimensional point group encoded data (S1752). Also, the three-dimensional data decoding device obtains the sparse three-dimensional point group decoded data by decoding the sparse three-dimensional point group encoded data (S1753). Next, the three-dimensional data decoding device generates a three-dimensional point group by combining the dense three-dimensional point group decoded data obtained in step S1752 and the sparse three-dimensional point group decoded data obtained in step S1753 (S1754).
[0675] The three-dimensional data encoding device and the three-dimensional data decoding device may encode or decode either the dense three-dimensional point cloud or the sparse three-dimensional point cloud first. Furthermore, the encoding process or the decoding process may be performed in parallel by multiple processors or the like.
[0676] The three-dimensional data encoding device may also encode one of the dense three-dimensional point cloud and the sparse three-dimensional point cloud. For example, when important information is included in the dense three-dimensional point cloud, the three-dimensional data encoding device extracts the dense three-dimensional point cloud and the sparse three-dimensional point cloud from the input three-dimensional point cloud, encodes the dense three-dimensional point cloud, and does not encode the sparse three-dimensional point cloud. This allows the three-dimensional data encoding device to add important information to the stream while suppressing the amount of bits. For example, between a server and a client, when the server receives a request from the client to transmit three-dimensional point cloud information about the client's surroundings, the server encodes the important information about the client's surroundings as a dense three-dimensional point cloud and transmits it to the client. This allows the server to transmit the information requested by the client while suppressing the network bandwidth.
[0677] In addition, the three-dimensional data decoding device may decode one of the dense three-dimensional point cloud and the sparse three-dimensional point cloud. For example, if important information is included in the dense three-dimensional point cloud, the three-dimensional data decoding device decodes the dense three-dimensional point cloud and does not decode the sparse three-dimensional point cloud. This allows the three-dimensional data decoding device to obtain necessary information while suppressing the processing load of the decoding process.
[0678] Fig. 100 is a flowchart of the separation process (S1741) of the three-dimensional points shown in Fig. 98. First, the three-dimensional data encoding device sets a layer L and a threshold value TH (S1761). The three-dimensional data encoding device may add information indicating the set layer L and threshold value TH to the bit stream. In other words, the three-dimensional data encoding device may generate a bit stream including information indicating the set layer L and threshold value TH.
[0679] Next, the three-dimensional data encoding device moves the position of the processing target from the root of the octree to the top branch of layer L. That is, the three-dimensional data encoding device selects the top branch of layer L as the branch to be processed (S1762).
[0680] Next, the three-dimensional data encoding device counts the number of valid leaves of the branch to be processed in layer L (S1763). If the number of valid leaves of the branch to be processed is greater than the threshold TH (Yes in S1764), the three-dimensional data encoding device registers the branch to be processed as a dense branch in the dense three-dimensional point cloud (S1765). On the other hand, if the number of valid leaves of the branch to be processed is equal to or less than the threshold TH (No in S1764), the three-dimensional data encoding device registers the branch to be processed as a sparse branch in the sparse three-dimensional point cloud (S1766).
[0681] If processing of all branches in layer L has not been completed (No in S1767), the three-dimensional data encoding device moves the position of the processing target to the next branch in layer L. That is, the three-dimensional data encoding device selects the next branch in layer L as the branch to be processed (S1768). Then, the three-dimensional data encoding device performs the processing from step S1763 onwards on the selected next branch to be processed.
[0682] The above process is repeated until all edges in layer L have been processed (Yes in S1767).
[0683] In the above description, the layer L and the threshold TH are set in advance, but this is not necessarily limited to this. For example, the three-dimensional data encoding device sets a plurality of patterns of pairs of the layer L and the threshold TH, generates a dense three-dimensional point cloud and a sparse three-dimensional point cloud using each pair, and encodes each of them. The three-dimensional data encoding device finally encodes the dense three-dimensional point cloud and the sparse three-dimensional point cloud using a pair of the layer L and the threshold TH that has the highest encoding efficiency of the generated encoded data among the plurality of pairs. This can improve the encoding efficiency. The three-dimensional data encoding device may also calculate, for example, the layer L and the threshold TH. For example, the three-dimensional data encoding device may set the layer L to a value that is half the maximum value of the layer included in the tree structure. The three-dimensional data encoding device may also set the threshold TH to a value that is half the total number of the plurality of three-dimensional points included in the tree structure.
[0684] In the above description, an example is described in which the input three-dimensional point cloud is classified into two types, a dense three-dimensional point cloud and a sparse three-dimensional point cloud, but the three-dimensional data encoding device may classify the input three-dimensional point cloud into three or more types of three-dimensional point clouds. For example, the three-dimensional data encoding device classifies the branch to be processed into a first dense three-dimensional point cloud when the number of effective leaves of the branch to be processed is equal to or greater than a threshold value TH1, and classifies the branch to be processed into a second dense three-dimensional point cloud when the number of effective leaves of the branch to be processed is less than the first threshold value TH1 and equal to or greater than a second threshold value TH2. The three-dimensional data encoding device classifies the branch to be processed into a first sparse three-dimensional point cloud when the number of effective leaves of the branch to be processed is less than the second threshold value TH2 and equal to or greater than a third threshold value TH3, and classifies the branch to be processe...
Claims
1. Encoding a plurality of three-dimensional points included in the three-dimensional data using an N-ary tree structure (N is an integer equal to or greater than 2); adding first information to the bitstream; When encoding information indicating the number of 3D points included in a leaf, the first information indicates a first value, When the information indicating the number of three-dimensional points included in the leaf is not encoded, the first information indicates a second value. Three-dimensional data encoding method.
2. Encoding a plurality of 3D points using an N-ary tree structure (N is an integer equal to or greater than 2); adding first information to the bitstream; If the first information indicates a first value, encoding information indicating the number of 3D points included in a leaf included in the N-ary tree structure; if the first information indicates a second value, then not encoding information indicating the number of 3D points included in the leaf; Three-dimensional data encoding method.
3. If the leaf has two or more three-dimensional points, the two or more three-dimensional points have different spatial coordinates.
3. The three-dimensional data encoding method according to claim 1 or 2.
4. If the leaf has two or more three-dimensional points, the two or more three-dimensional points have the same spatial coordinates but different attribute information.
3. The three-dimensional data encoding method according to claim 1 or 2.
5. When the leaf has two or more three-dimensional points, each of the two or more three-dimensional points has coordinate information and attribute information.
3. The three-dimensional data encoding method according to claim 1 or 2.
6. Decoding information on a plurality of three-dimensional points represented by an N-ary tree structure (N is an integer equal to or greater than 2) included in the three-dimensional data; Obtaining first information from the bitstream; If the first information indicates a first value, decoding information indicating the number of 3D points included in the leaf when decoding the leaf; if the first information indicates a second value, when decoding the leaf, information indicating the number of 3D points included in the leaf is not decoded; A method for decoding three-dimensional data.
7. Obtaining first information from the bitstream; Decoding information on a plurality of three-dimensional points represented by an N-ary tree structure (N is an integer equal to or greater than 2) included in the three-dimensional data; When the first information indicates a first value, decoding information indicating the number of 3D points included in a leaf included in the N-ary tree structure; If the first information indicates a second value, the information indicating the number of 3D points included in the leaf is not decoded. A method for decoding three-dimensional data.
8. If the leaf has two or more three-dimensional points, the two or more three-dimensional points have different spatial coordinates.
8. The three-dimensional data decoding method according to claim 6 or 7.
9. If the leaf has two or more three-dimensional points, the two or more three-dimensional points have the same spatial coordinates but different attribute information.
8. The three-dimensional data decoding method according to claim 6 or 7.
10. When the leaf has two or more three-dimensional points, each of the two or more three-dimensional points has coordinate information and attribute information.
8. The three-dimensional data decoding method according to claim 6 or 7.
11. A processor; A memory. The processor uses the memory to: Encoding a plurality of three-dimensional points included in the three-dimensional data using an N-ary tree structure (N is an integer equal to or greater than 2); adding first information to the bitstream; When encoding information indicating the number of 3D points included in a leaf, the first information indicates a first value, When the information indicating the number of three-dimensional points included in the leaf is not encoded, the first information indicates a second value. Three-dimensional data encoding device.
12. A processor; A memory. The processor uses the memory to: Decoding information on a plurality of three-dimensional points represented by an N-ary tree structure (N is an integer equal to or greater than 2) included in the three-dimensional data; Obtaining first information from the bitstream; If the first information indicates a first value, decoding information indicating the number of 3D points included in the leaf when decoding the leaf; if the first information indicates a second value, when decoding the leaf, information indicating the number of 3D points included in the leaf is not decoded; Three-dimensional data decoding device.
13. A processor; A memory. The processor uses the memory to: Encoding a plurality of 3D points using an N-ary tree structure (N is an integer equal to or greater than 2); adding first information to the bitstream; If the first information indicates a first value, encoding information indicating the number of 3D points included in a leaf included in the N-ary tree structure; if the first information indicates a second value, then not encoding information indicating the number of 3D points included in the leaf; Three-dimensional data encoding device.
14. A processor; A memory. The processor uses the memory to: Obtaining first information from the bitstream; Decoding information on a plurality of three-dimensional points represented by an N-ary tree structure (N is an integer equal to or greater than 2) included in the three-dimensional data; When the first information indicates a first value, decoding information indicating the number of 3D points included in a leaf included in the N-ary tree structure; If the first information indicates a second value, the information indicating the number of 3D points included in the leaf is not decoded. Three-dimensional data decoding device.
Citation Information
Patent Citations
Predictive position coding
JP2015504545A
Map display device
WO2014020663A1
Position estimation device, position estimation method, and control program
WO2017168472A1
Three-dimensional data coding method, three-dimensional data decoding method, three-dimensional data coding device, and three-dimensional data decoding device
WO2017217191A1