Data encoding method, data decoding method, data encoding device, and data decoding device

By classifying three-dimensional points into hierarchies and encoding/decoding attribute information using a hierarchical structure, the method reduces processing load in data compression, addressing the inefficiencies of existing three-dimensional data encoding and decoding methods.

JP7844703B2Active Publication Date: 2026-04-13PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA
View PDF 8 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA
Filing Date
2025-03-21
Publication Date
2026-04-13

AI Technical Summary

Technical Problem

The processing load in encoding three-dimensional data is high due to the large size of point clouds, which are the mainstream method for representing three-dimensional data.

Method used

A data encoding method that classifies three-dimensional points into hierarchies based on distance thresholds, encodes attribute information using a hierarchical structure, and generates a bitstream that includes or excludes hierarchical information depending on classification, and a decoding method that decodes the points using a hierarchical structure if classified or without classification.

Benefits of technology

Reduces the processing load in encoding and decoding by avoiding the need to rearrange points in Morton order and classifying them into layers, thereby optimizing data compression.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007844703000005
    Figure 0007844703000005
  • Figure 0007844703000006
    Figure 0007844703000006
  • Figure 0007844703000007
    Figure 0007844703000007
Patent Text Reader

Abstract

To provide a 3D point data encoding method and the like capable of reducing the processing load in encoding.SOLUTION: The data encoding method is a data encoding method of multiple 3D points each with attribute information executed by an encoding device. The method includes the following steps: generating a bitstream including a piece of encoded attribute information in which the bitstream includes information to determine the number of layers; (i) when generating multiple hierarchies depending on the information that determines the number of hierarchies, generating multiple hierarchies by assigning multiple 3D points to one of the multiple hierarchies; and (ii) when generating no multiple hierarchies in response to the information that determines the number of hierarchies, not sorting the multiple 3D points into Morton Code order.SELECTED DRAWING: Figure 113
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] This disclosure relates to a data encoding method, a data decoding method, a data encoding device, and a data decoding device. [Background technology]

[0002] In the future, devices and services utilizing three-dimensional data are expected to become widespread in a wide range of fields, including computer vision for autonomous operation of automobiles or robots, map information, monitoring, infrastructure inspection, and video distribution. Three-dimensional data can be acquired in various ways, such as using distance sensors like rangefinders, stereo cameras, or combinations of multiple monocular cameras.

[0003] One method of representing three-dimensional data is called a point cloud, which represents the shape of a three-dimensional structure using a cloud of points in three-dimensional space. In a point cloud, the position and color of the points are stored. Point clouds are expected to become the mainstream method of representing three-dimensional data, but point clouds are extremely large in size. Therefore, in the storage or transmission of three-dimensional data, data compression through encoding is essential, just as with two-dimensional moving images (for example, MPEG-4 AVC or HEVC, which are standardized by MPEG).

[0004] Furthermore, point cloud compression is partially supported by publicly available libraries (such as the Point Cloud Library) that handle point cloud-related processing.

[0005] Furthermore, there is a known technique for searching for and displaying facilities located around a vehicle using three-dimensional map data (see, for example, Patent Document 1). [Prior art documents] [Patent Documents]

[0006] [Patent Document 1] International Publication No. 2014 / 020663 [Overview of the project] [Problems that the invention aims to solve]

[0007] It is desirable to be able to reduce the processing load in encoding three-dimensional data.

[0008] This disclosure aims to provide a data encoding method, a data decoding method, a data encoding device, or a data decoding device that can reduce the processing load in encoding. [Means for solving the problem]

[0009] An encoding method according to one aspect of the present disclosure is a data encoding method for a plurality of three-dimensional points, each having attribute information, performed by an encoding device, which generates a bitstream containing encoded attribute information, the bitstream containing information for determining the number of layers, and (i) when a plurality of layers are generated according to the information for determining the number of layers, The process of sorting the aforementioned multiple three-dimensional points in Morton code order is executed, The aforementioned plurality of three-dimensional points 、 By assigning it to one of the aforementioned multiple levels, the aforementioned multiple levels are generated, The attribute information is encoded using the hierarchical structure consisting of the aforementioned multiple layers. (ii) If, according to the information that determines the number of layers, the multiple layers are not generated, the multiple three-dimensional points are rearranged in Morton code order. Without performing any processing, the attribute information is encoded in the order of input of the plurality of three-dimensional points. .

[0010] A decoding method according to one aspect of the present disclosure is a data decoding method for a plurality of encoded three-dimensional points, each having attribute information, performed by a decoding device, comprising: acquiring a bitstream containing the plurality of encoded three-dimensional points; acquiring information from the bitstream for determining the number of layers; and (i) determining the number of layers according to the information for determining the number of layers, the plurality of three-dimensional points are in a plurality of layers A case, The process of sorting the aforementioned multiple three-dimensional points in Morton code order is executed, The aforementioned plurality of three-dimensional points 、 By assigning it to one of the aforementioned multiple levels, the aforementioned multiple levels are generated, The attribute information is decoded using the hierarchical structure consisting of the aforementioned multiple layers.(ii) If, according to the information that determines the number of layers, the multiple layers are not generated, the multiple three-dimensional points are rearranged in Morton code order. Without performing any processing, the attribute information is decoded in the order in which the multiple three-dimensional points were input. .

[0011] An encoding method according to one aspect of the present disclosure is a method for encoding three-dimensional data, wherein the three-dimensional data includes a plurality of three-dimensional points, each having positional information and vector information, and (i) when a hierarchical structure constituting the plurality of hierarchies is generated by selecting at least one three-dimensional point assigned to one of a plurality of hierarchies from the plurality of three-dimensional points, the method encodes the vector information of the plurality of three-dimensional points in a first order determined based on the hierarchical structure and generates a bitstream containing one piece of information used for the selection; and (ii) when the hierarchical structure is not generated, the method encodes the vector information of the plurality of three-dimensional points in a second order and generates a bitstream that does not contain the one piece of information used for the selection.

[0012] A decoding method according to one aspect of the present disclosure is a method for decoding three-dimensional data, wherein the three-dimensional data includes a plurality of three-dimensional points, each having positional information and vector information, and a bitstream containing the encoded plurality of three-dimensional points is obtained; (i) if a hierarchical structure constituting the plurality of hierarchies is generated by selecting at least one three-dimensional point assigned to one of a plurality of hierarchies from the plurality of three-dimensional points, the hierarchical structure is generated using one piece of information included in the bitstream and used for the selection, and the vector information of the plurality of three-dimensional points is decoded in a first order determined based on the hierarchical structure; and (ii) if the hierarchical structure is not generated, the vector information of the plurality of three-dimensional points is decoded in a second order.

[0013] A three-dimensional data encoding method according to one aspect of the present disclosure is a three-dimensional data encoding method for encoding a plurality of three-dimensional points, each having attribute information, wherein (i) when the plurality of three-dimensional points are classified into a plurality of hierarchies, a hierarchical structure is generated by classifying each of the plurality of three-dimensional points into the plurality of hierarchies such that the distance between three-dimensional points belonging to each hierarchy is longer in higher hierarchies than in lower hierarchies; the attribute information of each of the plurality of three-dimensional points is encoded using the hierarchical structure; and a bitstream is generated that includes the encoded attribute information and hierarchical information used to generate the hierarchical structure; and (ii) when the plurality of three-dimensional points are not classified into the plurality of hierarchies, the attribute information of each of the plurality of three-dimensional points is encoded without classifying the plurality of three-dimensional points into the plurality of hierarchies; and a bitstream is generated that includes the encoded attribute information but does not include the hierarchical information.

[0014] A three-dimensional data encoding method according to another aspect of the present disclosure is a three-dimensional data encoding method for encoding a plurality of three-dimensional points, each having attribute information, wherein if the plurality of three-dimensional points are not classified into a plurality of hierarchies, the method encodes the attribute information of each of the plurality of three-dimensional points without sorting the plurality of three-dimensional points in Morton order based on the positional information of the plurality of three-dimensional points, and generates a bitstream containing the encoded attribute information.

[0015] A 3D data decoding method according to one aspect of the present disclosure is a 3D data decoding method for decoding a plurality of encoded 3D points each having attribute information, the method comprising: obtaining a bitstream including the plurality of encoded 3D points; (i) when the plurality of 3D points are classified into a plurality of hierarchies, using hierarchy information included in the bitstream, which is hierarchy information used to classify each of the plurality of 3D points into the plurality of hierarchies so that the distance between 3D points belonging to each hierarchy is longer for higher hierarchies than for lower hierarchies, to generate a hierarchical structure, and using the hierarchical structure to decode the plurality of encoded 3D points; (ii) when the plurality of 3D points are not classified into the plurality of hierarchies, decoding the plurality of encoded 3D points without classifying the plurality of 3D points into the plurality of hierarchies.

[0016] Another 3D data decoding method according to one aspect of the present disclosure is a 3D data decoding method for decoding a plurality of encoded 3D points each having attribute information, the method comprising: obtaining a bitstream including the plurality of encoded 3D points; and when the plurality of 3D points are not classified into a plurality of hierarchies, decoding the plurality of encoded 3D points without rearranging the plurality of 3D points in Morton order based on the position information of the plurality of 3D points.

[0017] Note that these general or specific aspects may be implemented by a system, an apparatus, an integrated circuit, a computer program, or a recording medium such as a computer-readable CD-ROM, or may be implemented by any combination of a system, an apparatus, an integrated circuit, a computer program, and a recording medium.

Advantages of the Invention

[0018] The present disclosure can provide an encoding method, a decoding method, an encoding apparatus, or a decoding apparatus that can reduce the processing load in encoding.

Brief Description of the Drawings

[0019] [Figure 1]Figure 1 is a diagram showing the structure of encoded three-dimensional data according to Embodiment 1. [Figure 2] Figure 2 shows an example of a prediction structure between SPCs belonging to the lowest layer of GOS according to Embodiment 1. [Figure 3] Figure 3 shows an example of a prediction structure between layers according to Embodiment 1. [Figure 4] Figure 4 shows an example of the encoding order of GOS according to Embodiment 1. [Figure 5] Figure 5 shows an example of the encoding order of GOS according to Embodiment 1. [Figure 6] Figure 6 is a block diagram of a three-dimensional data encoding device according to Embodiment 1. [Figure 7] Figure 7 is a flowchart of the encoding process according to Embodiment 1. [Figure 8] Figure 8 is a block diagram of a three-dimensional data decoding device according to Embodiment 1. [Figure 9] Figure 9 is a flowchart of the decoding process according to Embodiment 1. [Figure 10] Figure 10 shows an example of metadata related to Embodiment 1. [Figure 11] Figure 11 shows an example of the configuration of an SWLD according to Embodiment 2. [Figure 12] Figure 12 shows an example of the operation of the server and client according to Embodiment 2. [Figure 13] Figure 13 shows an example of the operation of the server and client according to Embodiment 2. [Figure 14] Figure 14 shows an example of the operation of the server and client according to Embodiment 2. [Figure 15] Figure 15 shows an example of the operation of the server and client according to Embodiment 2. [Figure 16] Figure 16 is a block diagram of a three-dimensional data encoding device according to Embodiment 2. [Figure 17] Figure 17 is a flowchart of the encoding process according to Embodiment 2. [Figure 18] Figure 18 is a block diagram of a three-dimensional data decoding device according to Embodiment 2. [Figure 19] Figure 19 is a flowchart of the decoding process according to Embodiment 2. [Figure 20] Figure 20 shows an example of the configuration of the WLD according to Embodiment 2. [Figure 21] Figure 21 shows an example of an octave tree structure of the WLD according to Embodiment 2. [Figure 22] Figure 22 shows an example of the configuration of the SWLD according to Embodiment 2. [Figure 23] Figure 23 shows an example of an octave tree structure of SWLD according to Embodiment 2. [Figure 24] Figure 24 is a block diagram of a three-dimensional data creation device according to Embodiment 3. [Figure 25] Figure 25 is a block diagram of a three-dimensional data transmission device according to Embodiment 3. [Figure 26] Figure 26 is a block diagram of a three-dimensional information processing device according to Embodiment 4. [Figure 27] Figure 27 is a block diagram of a three-dimensional data creation device according to Embodiment 5. [Figure 28] Figure 28 is a diagram showing the configuration of the system according to Embodiment 6. [Figure 29] Figure 29 is a block diagram of the client device according to Embodiment 6. [Figure 30] Figure 30 is a block diagram of the server according to Embodiment 6. [Figure 31] Figure 31 is a flowchart of the three-dimensional data creation process by the client device according to Embodiment 6. [Figure 32] Figure 32 is a flowchart of the sensor information transmission process by the client device according to Embodiment 6. [Figure 33] Figure 33 is a flowchart of the three-dimensional data creation process performed by the server according to Embodiment 6. [Figure 34]Figure 34 is a flowchart of the three-dimensional map transmission process by the server according to Embodiment 6. [Figure 35] Figure 35 shows a modified configuration of the system according to Embodiment 6. [Figure 36] Figure 36 is a diagram showing the configuration of the server and client device according to Embodiment 6. [Figure 37] Figure 37 is a block diagram of a three-dimensional data encoding device according to Embodiment 7. [Figure 38] Figure 38 shows an example of the predicted residual according to Embodiment 7. [Figure 39] Figure 39 shows an example of a volume according to Embodiment 7. [Figure 40] Figure 40 shows an example of an octree representation of a volume according to Embodiment 7. [Figure 41] Figure 41 shows an example of a bit sequence of a volume according to Embodiment 7. [Figure 42] Figure 42 shows an example of an octree representation of a volume according to Embodiment 7. [Figure 43] Figure 43 shows an example of a volume according to Embodiment 7. [Figure 44] Figure 44 is a diagram illustrating the intra-prediction process according to Embodiment 7. [Figure 45] Figure 45 is a diagram illustrating the rotation and translation processing according to Embodiment 7. [Figure 46] Figure 46 shows an example of the syntax for the RT application flag and RT information according to Embodiment 7. [Figure 47] Figure 47 is a diagram illustrating the interpretation prediction process according to Embodiment 7. [Figure 48] Figure 48 is a block diagram of a three-dimensional data decoding device according to Embodiment 7. [Figure 49] Figure 49 is a flowchart of the three-dimensional data encoding process performed by the three-dimensional data encoding device according to Embodiment 7. [Figure 50]Figure 50 is a flowchart of the three-dimensional data decoding process by the three-dimensional data decoding device according to Embodiment 7. [Figure 51] Figure 51 shows an example of a three-dimensional point according to Embodiment 8. [Figure 52] Figure 52 shows an example of LoD settings according to Embodiment 8. [Figure 53] Figure 53 shows an example of a threshold used for setting the LoD according to Embodiment 8. [Figure 54] Figure 54 shows an example of attribute information used for the predicted value according to Embodiment 8. [Figure 55] Figure 55 shows an example of an exponential Golomb code according to Embodiment 8. [Figure 56] Figure 56 is a diagram showing the processing of exponential Golomb codes according to Embodiment 8. [Figure 57] Figure 57 shows an example of the syntax of an attribute header according to Embodiment 8. [Figure 58] Figure 58 shows an example of attribute data syntax according to Embodiment 8. [Figure 59] Figure 59 is a flowchart of the three-dimensional data encoding process according to Embodiment 8. [Figure 60] Figure 60 is a flowchart of the attribute information encoding process according to Embodiment 8. [Figure 61] Figure 61 is a diagram showing the processing of exponential Golomb codes according to Embodiment 8. [Figure 62] Figure 62 is a diagram showing an example of a reverse lookup table that illustrates the relationship between the remaining reference numerals and their values ​​according to Embodiment 8. [Figure 63] Figure 63 is a flowchart of the three-dimensional data decoding process according to Embodiment 8. [Figure 64] Figure 64 is a flowchart of the attribute information decoding process according to Embodiment 8. [Figure 65] Figure 65 is a block diagram of a three-dimensional data encoding device according to Embodiment 8. [Figure 66]Figure 66 is a block diagram of a three-dimensional data decoding device according to Embodiment 8. [Figure 67] Figure 67 is a flowchart of the three-dimensional data encoding process according to Embodiment 8. [Figure 68] Figure 68 is a flowchart of the three-dimensional data decoding process according to Embodiment 8. [Figure 69] Figure 69 is a diagram showing a first example of a table that shows the predicted values ​​calculated in each prediction mode according to Embodiment 9. [Figure 70] Figure 70 shows an example of attribute information used for the predicted value according to Embodiment 9. [Figure 71] Figure 71 is a diagram showing a second example of a table that shows the predicted values ​​calculated in each prediction mode according to Embodiment 9. [Figure 72] Figure 72 is a diagram showing a third example of a table that shows the predicted values ​​calculated in each prediction mode according to Embodiment 9. [Figure 73] Figure 73 is a diagram showing a fourth example of a table that shows the predicted values ​​calculated in each prediction mode according to Embodiment 9. [Figure 74] Figure 74 is a diagram showing an example of a reference relationship according to Embodiment 10. [Figure 75] Figure 75 shows an example of a reference relationship according to Embodiment 10. [Figure 76] Figure 76 shows an example of setting the number of searches for each LoD according to Embodiment 10. [Figure 77] Figure 77 shows an example of a reference relationship according to Embodiment 10. [Figure 78] Figure 78 shows an example of a reference relationship according to Embodiment 10. [Figure 79] Figure 79 is a diagram showing an example of a reference relationship according to Embodiment 10. [Figure 80] Figure 80 shows an example of the syntax of an attribute information header according to Embodiment 10. [Figure 81] Figure 81 shows an example of the syntax of an attribute information header according to Embodiment 10. [Figure 82] Figure 82 is a flowchart of the three-dimensional data encoding process according to Embodiment 10. [Figure 83] Figure 83 is a flowchart of the attribute information encoding process according to Embodiment 10. [Figure 84] Figure 84 is a flowchart of the three-dimensional data decoding process according to Embodiment 10. [Figure 85] Figure 85 is a flowchart of the attribute information decoding process according to Embodiment 10. [Figure 86] Figure 86 is a flowchart of the surrounding point search process according to Embodiment 10. [Figure 87] Figure 87 is a flowchart of the surrounding point search process according to Embodiment 10. [Figure 88] Figure 88 is a flowchart of the surrounding point search process according to Embodiment 10. [Figure 89] Figure 89 is a flowchart of the three-dimensional data encoding process according to Embodiment 10. [Figure 90] Figure 90 is a flowchart of the three-dimensional data decoding process according to Embodiment 10. [Figure 91] Figure 91 is a diagram illustrating a method for selecting N three-dimensional points according to Embodiment 11. [Figure 92] Figure 92 shows an example of the bounding box of group Gk according to Embodiment 11. [Figure 93] Figure 93 is a diagram illustrating the process of selecting N candidate three-dimensional points when a first three-dimensional point and a plurality of second three-dimensional points belong to the same group according to Embodiment 11. [Figure 94] Figure 94 is a diagram illustrating the process of selecting N candidate three-dimensional points when the first three-dimensional point and a plurality of second three-dimensional points according to Embodiment 11 belong to different groups. [Figure 95] Figure 95 is a diagram illustrating the process of selecting a candidate three-dimensional point from a plurality of second three-dimensional points belonging to different hierarchical levels according to Embodiment 11. [Figure 96] Figure 96 is a diagram illustrating the process of selecting or updating three-dimensional point candidates from groups before and after the initial group according to Embodiment 11. [Figure 97] Figure 97 is a diagram illustrating an example of prioritizing groups with smaller bounding boxes according to Embodiment 11. [Figure 98] Figure 98 is a flowchart of the three-dimensional data encoding process performed by the three-dimensional data encoding device according to Embodiment 11. [Figure 99] Figure 99 is a flowchart of the attribute information encoding process according to Embodiment 11. [Figure 100] Figure 100 is a flowchart of the three-dimensional data decoding process by the three-dimensional data decoding device according to Embodiment 11. [Figure 101] Figure 101 is a flowchart of the attribute information decoding process according to Embodiment 11. [Figure 102] Figure 102 is a flowchart of the surrounding point search process according to Embodiment 11. [Figure 103] Figure 103 is a flowchart of the surrounding point search process according to Embodiment 11. [Figure 104] Figure 104 is a block diagram showing the configuration of the attribute information encoding unit of the three-dimensional data encoding device according to Embodiment 11. [Figure 105] Figure 105 is a block diagram showing the configuration of the attribute information decoding unit of the three-dimensional data decoding device according to Embodiment 11. [Figure 106] Figure 106 is a flowchart of the three-dimensional data encoding process according to Embodiment 11. [Figure 107] Figure 107 is a flowchart of the three-dimensional data decoding process according to Embodiment 11. [Figure 108] Figure 108 is a diagram illustrating an example of a process for encoding attribute information of a three-dimensional point according to Embodiment 12. [Figure 109] Figure 109 is a flowchart of the three-dimensional data encoding process according to Embodiment 12. [Figure 110] Figure 110 is a flowchart of the attribute information encoding process according to Embodiment 12. [Figure 111] Figure 111 is a flowchart of the three-dimensional data decoding process according to Embodiment 12. [Figure 112] Figure 112 is a flowchart of the attribute information decoding process according to Embodiment 12. [Figure 113] Figure 113 is a flowchart showing an example of a three-dimensional data encoding process according to Embodiment 12. [Figure 114] Figure 114 is a flowchart showing an example of a three-dimensional data decoding process according to Embodiment 12. [Figure 115] Figure 115 is a flowchart showing another example of the three-dimensional data encoding process according to Embodiment 12. [Figure 116] Figure 116 is a flowchart showing another example of the three-dimensional data decoding process according to Embodiment 12. [Modes for carrying out the invention]

[0020] A three-dimensional data encoding method according to one aspect of the present disclosure is a three-dimensional data encoding method for encoding a plurality of three-dimensional points, each having attribute information, wherein (i) when the plurality of three-dimensional points are classified into a plurality of hierarchies, a hierarchical structure is generated by classifying each of the plurality of three-dimensional points into the plurality of hierarchies such that the distance between three-dimensional points belonging to each hierarchy is longer in higher hierarchies than in lower hierarchies; the attribute information of each of the plurality of three-dimensional points is encoded using the hierarchical structure; and a bitstream is generated that includes the encoded attribute information and hierarchical information used to generate the hierarchical structure; and (ii) when the plurality of three-dimensional points are not classified into the plurality of hierarchies, the attribute information of each of the plurality of three-dimensional points is encoded without classifying the plurality of three-dimensional points into the plurality of hierarchies; and a bitstream is generated that includes the encoded attribute information but does not include the hierarchical information.

[0021] According to this method, if multiple three-dimensional points are not classified into multiple layers, the attribute information of each of the three-dimensional points is encoded without performing the process of classifying the multiple three-dimensional points into multiple layers, thereby reducing the processing load in encoding.

[0022] For example, the hierarchy information may include distance thresholds for classifying the plurality of three-dimensional points into the plurality of hierarchy such that the distances between the three-dimensional points fall within different distance ranges in each hierarchy.

[0023] For example, in the encoding where the plurality of three-dimensional points are not classified into the plurality of hierarchies, the attribute information of the plurality of three-dimensional points may be encoded without sorting the plurality of three-dimensional points in Morton order based on the positional information of the plurality of three-dimensional points.

[0024] According to this method, since the process of rearranging multiple three-dimensional points in Morton order is not performed, the processing load in encoding can be further reduced.

[0025] Furthermore, another aspect of the present disclosure is a three-dimensional data encoding method for encoding a plurality of three-dimensional points, each having attribute information, wherein if the plurality of three-dimensional points are not classified into a plurality of hierarchies, the method encodes the attribute information of each of the plurality of three-dimensional points without rearranging the plurality of three-dimensional points in Morton order based on the positional information of the plurality of three-dimensional points, and generates a bitstream containing the encoded attribute information.

[0026] According to this method, since the process of rearranging multiple three-dimensional points in Morton order is not performed, the processing load in encoding can be reduced.

[0027] A three-dimensional data decoding method according to one aspect of the present disclosure is a three-dimensional data decoding method for decoding a plurality of encoded three-dimensional points, each having attribute information, wherein a bitstream containing the plurality of encoded three-dimensional points is obtained; (i) if the plurality of three-dimensional points are classified into a plurality of hierarchies, a hierarchical structure is generated using hierarchical information contained in the bitstream, which is used to generate a hierarchical structure by classifying each of the plurality of three-dimensional points into the plurality of hierarchies such that the distance between three-dimensional points belonging to each hierarchy is longer in higher hierarchies than in lower hierarchies; the encoded plurality of three-dimensional points are decoded using the hierarchical structure; and (ii) if the plurality of three-dimensional points are not classified into the plurality of hierarchies, the encoded plurality of three-dimensional points are decoded without classifying the plurality of three-dimensional points into the plurality of hierarchies.

[0028] According to this method, if multiple three-dimensional points are not classified into multiple layers, the encoding of the multiple three-dimensional points is decoded without performing the process of classifying the multiple three-dimensional points into multiple layers, thereby reducing the processing load in decoding.

[0029] For example, the hierarchy information may include distance thresholds for classifying the plurality of three-dimensional points into the plurality of hierarchy such that the distances between the three-dimensional points fall within different distance ranges in each hierarchy.

[0030] For example, in the decoding process when the plurality of three-dimensional points are not classified into the plurality of layers, the encoded plurality of three-dimensional points may be decoded without rearranging the plurality of three-dimensional points in Morton order based on the positional information of the plurality of three-dimensional points.

[0031] According to this method, since the process of rearranging multiple three-dimensional points in Morton order is not performed, the processing load in decoding can be further reduced.

[0032] Furthermore, a three-dimensional data decoding method according to another aspect of the present disclosure is a three-dimensional data decoding method for decoding a plurality of encoded three-dimensional points, each having attribute information, wherein a bitstream containing the plurality of encoded three-dimensional points is obtained, and if the plurality of three-dimensional points are not classified into a plurality of layers, the plurality of encoded three-dimensional points are decoded without rearranging the plurality of three-dimensional points in Morton order based on the positional information of the plurality of three-dimensional points.

[0033] According to this method, since the process of rearranging multiple three-dimensional points in Morton order is not performed, the processing load in decoding can be reduced.

[0034] A three-dimensional data encoding device according to one aspect of the present disclosure is a three-dimensional data encoding device for encoding a plurality of three-dimensional points, each having attribute information, comprising a processor and a memory, wherein the processor uses the memory to (i) generate a hierarchical structure by classifying each of the plurality of three-dimensional points into a plurality of hierarchical levels such that the distance between three-dimensional points belonging to each level is longer in higher levels than in lower levels, and uses the hierarchical structure to encode the attribute information of each of the plurality of three-dimensional points, and generates a bitstream including the encoded attribute information and hierarchical information used to generate the hierarchical structure, and (ii) if the plurality of three-dimensional points are not classified into the plurality of hierarchical levels, the processor encodes the attribute information of each of the plurality of three-dimensional points without classifying them into the plurality of hierarchical levels, and generates a bitstream including the encoded attribute information but not including the hierarchical information.

[0035] According to this method, if multiple three-dimensional points are not classified into multiple layers, the attribute information of each of the three-dimensional points is encoded without performing the process of classifying the multiple three-dimensional points into multiple layers, thereby reducing the processing load in encoding.

[0036] A three-dimensional data decoding device according to one aspect of the present disclosure is a three-dimensional data decoding device for decoding a plurality of encoded three-dimensional points, each having attribute information, comprising a processor and a memory, wherein the processor uses the memory to acquire a bitstream containing the plurality of encoded three-dimensional points, (i) if the plurality of three-dimensional points are classified into a plurality of layers, generates a hierarchical structure using hierarchical information contained in the bitstream, which is used to generate a hierarchical structure by classifying each of the plurality of three-dimensional points into the plurality of layers such that the distance between three-dimensional points belonging to each layer is longer in the higher layers than in the lower layers, and decodes the plurality of encoded three-dimensional points using the hierarchical structure, and (ii) if the plurality of three-dimensional points are not classified into the plurality of layers, decodes the plurality of encoded three-dimensional points without classifying them into the plurality of layers.

[0037] According to this method, if multiple three-dimensional points are not classified into multiple layers, the encoding of the multiple three-dimensional points is decoded without performing the process of classifying the multiple three-dimensional points into multiple layers, thereby reducing the processing load in decoding.

[0038] These comprehensive or specific embodiments may be implemented as a system, method, integrated circuit, computer program, or recording medium such as a computer-readable CD-ROM, or as any combination of a system, method, integrated circuit, computer program, and recording medium.

[0039] The embodiments will be described in detail below with reference to the drawings. Note that the embodiments described below are all specific examples of this disclosure. The numerical values, shapes, materials, components, arrangement and connection configurations of components, steps, and the order of steps shown in the following embodiments are examples only and are not intended to limit this disclosure. Furthermore, among the components in the following embodiments, those not described in the independent claim representing the highest-level concept will be described as optional components.

[0040] (Embodiment 1) First, the data structure of the encoded three-dimensional data (hereinafter also referred to as encoded data) according to this embodiment will be described. Figure 1 is a diagram showing the configuration of the encoded three-dimensional data according to this embodiment.

[0041] In this embodiment, the three-dimensional space is divided into spaces (SPCs) corresponding to pictures in video encoding, and three-dimensional data is encoded using these spaces as units. The spaces are further divided into volumes (VLMs) corresponding to macroblocks in video encoding, and prediction and transformation are performed using the VLMs as units. Each volume contains multiple voxels (VXLs), which are the smallest units to which position coordinates are associated. Prediction, similar to prediction performed on two-dimensional images, involves referencing other processing units to generate predicted three-dimensional data similar to the processing unit being processed, and then encoding the difference between this predicted three-dimensional data and the processing unit being processed. Furthermore, this prediction includes not only spatial prediction that references other prediction units at the same time, but also temporal prediction that references prediction units at different times.

[0042] For example, a three-dimensional data encoding device (hereinafter also referred to as the encoding device) encodes a three-dimensional space represented by point cloud data, such as a point cloud, by encoding each point in the point cloud, or multiple points contained within a voxel, depending on the size of the voxel. Subdividing the voxel allows for a highly accurate representation of the three-dimensional shape of the point cloud, while increasing the voxel size allows for a rougher representation of the three-dimensional shape of the point cloud.

[0043] In the following explanation, we will use the example of a point cloud as the 3D data, but the 3D data is not limited to a point cloud; any format of 3D data is acceptable.

[0044] Alternatively, a hierarchical structure of voxels may be used. In this case, for the nth-order hierarchy, it may be indicated sequentially whether or not sample points exist in the (n-1)th-order hierarchy and below (the lower layers of the nth-order hierarchy). For example, when decoding only the nth-order hierarchy, if sample points exist in the (n-1)th-order hierarchy and below, the sample points can be assumed to be at the center of the voxel of the nth-order hierarchy and decoded accordingly.

[0045] Furthermore, the encoding device acquires point cloud data using distance sensors, stereo cameras, monocular cameras, gyroscopes, or inertial sensors.

[0046] Spaces, like video encodings, are classified into at least three predictive structures, including intra-spaces (I-SPCs) that can be decoded independently, predictive spaces (P-SPCs) that allow only unidirectional referencing, and bidirectional spaces (B-SPCs) that allow bidirectional referencing. Furthermore, spaces contain two types of time information: the decoding time and the display time.

[0047] Furthermore, as shown in Figure 1, there is a processing unit called GOS (Group of Space), which is a random access unit, that contains multiple spaces. In addition, there is a processing unit called WLD (World), which contains multiple GOS.

[0048] The spatial area occupied by a world is associated with an absolute location on Earth using GPS or latitude and longitude information. This location information is stored as metadata. This metadata may be included in the encoded data or transmitted separately from the encoded data.

[0049] Furthermore, within a GOS, all SPCs may be adjacent in three dimensions, or there may be SPCs that are not adjacent in three dimensions to other SPCs.

[0050] In the following, the processing of three-dimensional data contained in processing units such as GOS, SPC, or VLM, including encoding, decoding, or referencing, will also be simply referred to as encoding, decoding, or referencing the processing unit. Furthermore, the three-dimensional data contained in the processing unit includes, for example, at least one pair of spatial position such as three-dimensional coordinates and characteristic values ​​such as color information.

[0051] Next, we will explain the prediction structure of SPCs in GOS. Multiple SPCs within the same GOS, or multiple VLMs within the same SPC, occupy different spaces from each other, but they have the same time information (decoded time and display time).

[0052] Furthermore, the SPC that is first in the decryption order within a GOS is the I-SPC. There are also two types of GOSs: closed GOS and open GOS. A closed GOS is one in which all SPCs within the GOS can be decrypted when decryption starts from the first I-SPC. In an open GOS, some SPCs whose displayed time is earlier than the first I-SPC refer to a different GOS, and decryption cannot be performed using only that GOS.

[0053] Furthermore, with encoded data such as map information, the WLD may be decoded in the reverse direction of the encoding order, and if there are dependencies between GOSs, reverse playback becomes difficult. Therefore, in such cases, a closed GOS is generally used.

[0054] Furthermore, GOS has a layered structure in the height direction, and encoding or decoding is performed sequentially from the SPC of the lower layer.

[0055] Figure 2 shows an example of the prediction structure between SPCs belonging to the lowest layer of GOS. Figure 3 shows an example of the prediction structure between layers.

[0056] One or more I-SPCs exist within a GOS. While objects such as people, animals, cars, bicycles, traffic lights, or landmark buildings exist in three-dimensional space, it is particularly effective to encode small objects as I-SPCs. For example, a three-dimensional data decoding device (hereinafter also referred to as the decoding device) decodes only the I-SPCs within the GOS when decoding a GOS with low processing load or at high speed.

[0057] Furthermore, the encoding device may switch the encoding interval or frequency of I-SPCs according to the density of objects in the WLD.

[0058] Furthermore, in the configuration shown in Figure 3, the encoding or decoding device encodes or decodes multiple layers sequentially from the bottom layer (Layer 1). This allows for prioritizing data near the ground, which contains more information, for applications such as autonomous vehicles.

[0059] Furthermore, in the case of encoded data used in drones and the like, encoding or decoding may be done sequentially within the GOS, starting from the SPC layer at the top in the height direction.

[0060] Furthermore, the encoding or decoding device may encode or decode multiple layers so that the decoding device can grasp the GOS roughly and gradually increase the resolution. For example, the encoding or decoding device may encode or decode layers 3, 8, 1, 9, and so on.

[0061] Next, we will explain how to handle static and dynamic objects.

[0062] In three-dimensional space, there are static objects or scenes such as buildings or roads (hereinafter collectively referred to as static objects) and dynamic objects such as cars or people (hereinafter referred to as dynamic objects). Object detection is performed separately, for example, by extracting feature points from point cloud data or camera images such as stereo cameras. Here, we will explain an example of an encoding method for dynamic objects.

[0063] The first method is to encode static and dynamic objects without distinguishing between them. The second method is to distinguish between static and dynamic objects using identification information.

[0064] For example, GOS is used as the identification unit. In this case, GOS containing SPCs that constitute static objects and GOS containing SPCs that constitute dynamic objects are distinguished by identification information stored within the encoded data or separately from the encoded data.

[0065] Alternatively, an SPC may be used as the identification unit. In this case, an SPC containing a VLM that constitutes a static object and an SPC containing a VLM that constitutes a dynamic object are distinguished by the above identification information.

[0066] Alternatively, VLM or VXL may be used as the identification unit. In this case, VLM or VXL containing static objects and VLM or VXL containing dynamic objects are distinguished by the above identification information.

[0067] Furthermore, the encoding device may encode dynamic objects as one or more VLMs or SPCs, and encode the VLM or SPC containing static objects and the SPC containing dynamic objects as different GOSs. Also, if the size of the GOS is variable depending on the size of the dynamic objects, the encoding device stores the size of the GOS separately as metadata.

[0068] Furthermore, the encoding device may encode static objects and dynamic objects independently of each other and superimpose dynamic objects onto a world composed of static objects. In this case, a dynamic object is composed of one or more SPCs, and each SPC is associated with one or more SPCs that constitute the static object on which it is superimposed. Note that dynamic objects may be represented by one or more VLMs or VXLs instead of SPCs.

[0069] Furthermore, the encoding device may encode static objects and dynamic objects as separate streams.

[0070] Furthermore, the encoding device may generate a GOS containing one or more SPCs that constitute a dynamic object. In addition, the encoding device may set the GOS containing the dynamic object (GOS_M) and the GOS of the static object corresponding to the spatial region of GOS_M to be the same size (occupy the same spatial region). This allows superposition processing to be performed on a GOS-by-GOS basis.

[0071] The P-SPC or B-SPC that constitute a dynamic object may reference SPCs contained in 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 different times, cross-GOS references are effective from a compression standpoint.

[0072] Furthermore, the first and second methods described above may be switched depending on the intended use of the encoded data. For example, when using encoded three-dimensional data 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.

[0073] Furthermore, the decoding time and display time of GOS or SPC can be stored within the encoded data or as metadata. The time information for static objects may also be identical. In this case, the actual decoding time and display time may be determined by the decoding device. Alternatively, different values ​​may be assigned to each GOS or SPC as the decoding time, while the same value may be assigned to all as the display time. Furthermore, a decoder model may be introduced, such as the HEVC HRD (Hypothetical Reference Decoder) in video encoding, which guarantees that decoding can be performed without failure if the decoder has a buffer of a predetermined size and reads the bitstream at a predetermined bitrate according to the decoding time.

[0074] Next, we will explain the arrangement of GOS within the world. The coordinates of the three-dimensional space in the world are represented by three mutually orthogonal coordinate axes (x-axis, y-axis, and z-axis). By establishing a predetermined rule for the coding order of GOS, coding can be performed so that spatially adjacent GOS are continuous within the coded data. For example, in the example shown in Figure 4, GOS in the xz plane are coded continuously. The value of the y-axis is updated after coding all GOS in a given xz plane is completed. That is, as coding progresses, the world expands in the y-axis direction. Also, the index numbers of the GOS are set in the coding order.

[0075] Here, the world's three-dimensional space is mapped one-to-one with geographical absolute coordinates such as GPS, latitude, and longitude. Alternatively, the three-dimensional space may be represented by relative positions from a pre-defined reference position. The directions of the x, y, and z axes of the three-dimensional space are represented as direction vectors determined based on latitude and longitude, and these direction vectors are stored as metadata along with encoded data.

[0076] Furthermore, the size of the GOS is fixed, and the encoding device stores this size as metadata. Alternatively, 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. In other words, the size of the GOS may be switched depending on the quantity or nature of objects that have informational value. Or, the encoding device may adaptively switch the size of the GOS or the spacing of I-SPCs within the GOS depending on the density of objects within the same world. For example, the encoding device may reduce the size of the GOS and shorten the spacing of I-SPCs within the GOS as the density of objects increases.

[0077] In the example in Figure 5, the GOS regions from the 3rd to the 10th are subdivided to enable fine-grained random access due to the high object density. Note that GOS regions 7 through 10 are located behind GOS regions 3 through 6, respectively.

[0078] Next, the configuration and operation flow of the three-dimensional data encoding device according to this embodiment will be described. Figure 6 is a block diagram of the three-dimensional data encoding device 100 according to this embodiment. Figure 7 is a flowchart showing an example of the operation of the three-dimensional data encoding device 100.

[0079] The three-dimensional data encoding device 100 shown in Figure 6 generates encoded three-dimensional data 112 by encoding three-dimensional data 111. This three-dimensional data encoding device 100 comprises an acquisition unit 101, an encoding region determination unit 102, a division unit 103, and an encoding unit 104.

[0080] As shown in Figure 7, first, the acquisition unit 101 acquires three-dimensional data 111, which is point cloud data (S101).

[0081] Next, the encoding region determination unit 102 determines the region to be encoded from among the spatial regions corresponding to the acquired point cloud data (S102). For example, the encoding region determination unit 102 determines the spatial region around the location of the user or vehicle as the region to be encoded.

[0082] Next, the division unit 103 divides the point cloud data included in the region to be encoded into processing units. Here, the processing units are the GOS and SPC mentioned above. The region to be encoded corresponds to, for example, the world mentioned above. Specifically, the division unit 103 divides the point cloud data into processing units based on a pre-set GOS size, or the presence or size of dynamic objects (S103). The division unit 103 also determines the starting position of the SPC that will be the first in the encoding order for each GOS.

[0083] Next, the encoding unit 104 generates encoded three-dimensional data 112 by sequentially encoding multiple SPCs within each GOS (S104).

[0084] Note that while this example shows the region to be encoded being divided into GOS and SPC before encoding each GOS, the processing procedure is not limited to the above. For example, one could determine the structure of one GOS, encode that GOS, and then determine the structure of the next GOS.

[0085] 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, each of which is associated with a three-dimensional coordinate. The first processing units (GOS) are then divided into a plurality of second processing units (SPCs), and the second processing units (SPCs) are then divided into a plurality of third processing units (VLMs). The third processing unit (VLM) also contains one or more voxels (VXLs), which are the smallest units to which positional information is associated.

[0086] 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). Furthermore, the three-dimensional data encoding device 100 encodes each of the multiple third processing units (VLM) in each second processing unit (SPC).

[0087] For example, if 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) included in the first processing unit (GOS) by referring to other second processing units (SPC) included in the first processing unit (GOS). In other words, the three-dimensional data encoding device 100 does not refer to second processing units (SPC) included in a first processing unit (GOS) different from the first processing unit (GOS) to be processed.

[0088] On the other hand, if the first processing unit (GOS) to be processed is an open GOS, the second processing unit (SPC) included in the first processing unit (GOS) to be processed is encoded by referring to another second processing unit (SPC) included in the first processing unit (GOS) to be processed, or to a second processing unit (SPC) included in a first processing unit (GOS) different from the first processing unit (GOS) to be processed.

[0089] Furthermore, the three-dimensional data encoding device 100 selects one of the following types of second processing units (SPCs) to be processed: a first type (I-SPC) that does not refer to any other second processing units (SPCs), a second type (P-SPC) that refers to one other second processing unit (SPC), and a third type that refers to two other second processing units (SPCs). The device then encodes the second processing unit (SPC) to be processed according to the selected type.

[0090] Next, the configuration and operation flow of the three-dimensional data decoding device according to this embodiment will be described. Figure 8 is a block diagram of the three-dimensional data decoding device 200 according to this embodiment. Figure 9 is a flowchart showing an example of the operation of the three-dimensional data decoding device 200.

[0091] The three-dimensional data decoding device 200 shown in Figure 8 generates decoded three-dimensional data 212 by decoding encoded three-dimensional data 211. Here, encoded three-dimensional data 211 is, for example, 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.

[0092] First, the acquisition unit 201 acquires encoded three-dimensional data 211 (S201). Next, the decoding start GOS determination unit 202 determines the GOS to be decoded (S202). Specifically, the decoding start GOS determination unit 202 refers to metadata stored in or separately from the encoded three-dimensional data 211 to determine the GOS to be decoded, which includes an SPC corresponding to the spatial position, object, or time to start decoding.

[0093] Next, the decryption SPC determination unit 203 determines the type of SPC (I, P, B) to be decrypted within the GOS (S203). For example, the decryption SPC determination unit 203 determines whether to (1) decrypt only I-SPCs, (2) decrypt I-SPCs and P-SPCs, or (3) decrypt all types. Note that if the type of SPC to be decrypted has been determined in advance, such as decrypting all SPCs, this step may not be performed.

[0094] Next, the decoding unit 204 obtains the address position where the first SPC in the decoding order (same as the encoding order) within the GOS starts in the encoded three-dimensional data 211, obtains the encoded data of the first SPC from that address position, and decodes each SPC sequentially starting from that first SPC (S204). Note that the above address position is stored in metadata, etc.

[0095] In this way, the three-dimensional data decoding device 200 decodes the decoded three-dimensional data 212. Specifically, the three-dimensional data decoding device 200 generates 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 each of which is associated with three-dimensional coordinates. More specifically, the three-dimensional data decoding device 200 decodes each of the multiple second processing units (SPC) in each first processing unit (GOS). Furthermore, the three-dimensional data decoding device 200 decodes each of the multiple third processing units (VLM) in each second processing unit (SPC).

[0096] The metadata for random access is described below. This metadata is generated by the three-dimensional data encoding device 100 and is included in the encoded three-dimensional data 112(211).

[0097] In conventional random access to two-dimensional moving images, decoding began from the first frame of a random access unit that was near the specified time. In contrast, in the world, random access is expected not only to time but also to space (coordinates or objects, etc.).

[0098] Therefore, in order to achieve random access to at least three elements—coordinates, objects, and time—a table is prepared that associates each element with the GOS index number. Furthermore, the GOS index number is associated with the address of the I-SPC that is the starting point of the GOS. Figure 10 shows an example of a table included in the metadata. Note that it is not necessary to use all the tables shown in Figure 10; it is sufficient to use at least one table.

[0099] The following describes random access starting from coordinates as an example. When accessing coordinates (x2, y2, z2), first, the coordinate-GOS table is consulted to find that the location with coordinates (x2, y2, z2) is included in the second GOS. Next, the GOS address table is consulted to find that the address of the first I-SPC in the second GOS is addr(2). Therefore, the decoding unit 204 retrieves data from this address and begins decoding.

[0100] The address may be a logical format address or a physical address of the HDD or memory. Alternatively, information identifying a file segment may be used instead of an address. For example, a file segment is a unit formed by segmenting one or more GOSs (Global Operating Systems).

[0101] Furthermore, if an object spans multiple GOSs, the object-GOS table may indicate multiple GOSs to which the object belongs. If these multiple GOSs are closed GOSs, the encoding and decoding devices can perform encoding or decoding in parallel. On the other hand, if these multiple GOSs are open GOSs, the compression efficiency can be further improved by allowing the multiple GOSs to reference each other.

[0102] Examples of objects include people, animals, cars, bicycles, traffic lights, or landmark buildings. 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 these feature points, and set the detected objects as random access points.

[0103] Thus, the three-dimensional data encoding device 100 generates first information indicating a plurality of first processing units (GOS) and the three-dimensional coordinates associated with each of the plurality of first processing units (GOS). The encoded three-dimensional data 112(211) also includes this first information. Furthermore, the first information indicates at least one of the following: an object, a time, and a data storage location, associated with each of the plurality of first processing units (GOS).

[0104] The three-dimensional data decoding device 200 acquires first information from the encoded three-dimensional data 211, uses the first information to identify the encoded three-dimensional data 211 of the first processing unit corresponding to the specified three-dimensional coordinates, object, or time, and decodes the encoded three-dimensional data 211.

[0105] The following describes examples of other metadata. In addition to metadata for random access, the three-dimensional data encoding device 100 may generate and store the following metadata. The three-dimensional data decoding device 200 may also use this metadata during decoding.

[0106] When using three-dimensional data as map information, profiles may be defined according to the intended use, and information indicating the profile may be included in the metadata. For example, profiles may be defined for urban areas, suburbs, or for flying objects, and the maximum or minimum size of the world, SPC, or VLM may be defined for each. For example, for urban areas, more detailed information is required than for suburbs, so the minimum size of the VLM is set to be smaller.

[0107] Metadata may include tag values ​​indicating the object type. These tag values ​​are associated with the VLM, SPC, or GOS that constitute the object. For example, tag value "0" may indicate "person," tag value "1" may indicate "car," tag value "2" may indicate "traffic light," and so on, with different tag values ​​assigned to each object type. Alternatively, if it is difficult or unnecessary to determine the object type, tag values ​​indicating properties such as size or whether it is a dynamic or static object may be used.

[0108] Furthermore, the metadata may include information indicating the extent of the spatial region occupied by the world.

[0109] Furthermore, the metadata may include the size of the SPC or VXL as header information common to multiple SPCs, such as the entire stream of encoded data or an SPC within a GOS.

[0110] Furthermore, the metadata may include identification information for distance sensors or cameras used to generate the point cloud, or information indicating the positional accuracy of the point cloud within the point cloud.

[0111] Furthermore, the metadata may include information indicating whether the world consists solely of static objects or includes dynamic objects.

[0112] Modifications of this embodiment will be described below.

[0113] The encoding or 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 metadata indicating the spatial location of the GOS.

[0114] In cases where three-dimensional data is used as a spatial map when a vehicle or flying object moves, or when such a spatial map is generated, the encoding or decoding device may encode or decode the GOS or SPC contained in the space identified based on GPS, route information, or zoom magnification.

[0115] Furthermore, the decoding device may perform decoding starting from the space closest to its own position or travel path. The encoding or decoding device may encode or decode spaces farther from its own position or travel path with lower priority compared to spaces closer to it. Here, lowering priority means lowering the processing order, lowering the resolution (downsampling), or lowering the image quality (increasing encoding efficiency, for example, by increasing the quantization step).

[0116] Furthermore, when a decoding device decodes encoded data that is hierarchically encoded in space, it may decode only the lower layers.

[0117] Furthermore, the decoding device may prioritize decoding from lower layers depending on the map's zoom level or intended use.

[0118] Furthermore, for applications such as self-localization or object recognition during autonomous driving of vehicles or robots, the encoding or decoding device may reduce the resolution of the area outside of the area to be recognized (the area within a specific height from the road surface) when encoding or decoding.

[0119] Furthermore, the encoding device may encode the point clouds representing the spatial shapes of the indoor and outdoor areas separately. For example, by separating the GOS representing the indoor area (indoor GOS) and the GOS representing the outdoor area (outdoor GOS), the decoding device can select the GOS to decode according to the viewpoint position when using the encoded data.

[0120] Furthermore, the encoding device may encode indoor and outdoor GOS locations with similar coordinates so that they are adjacent within the encoding stream. For example, the encoding device associates the identifiers of both locations and stores information indicating the associated identifiers within the encoding stream or in separately stored metadata. This allows the decoding device to identify indoor and outdoor GOS locations with similar coordinates by referring to the information in the metadata.

[0121] Furthermore, the encoding device may switch the size of the GOS or SPC between indoor and outdoor GOS. For example, the encoding device may set the GOS size 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 indoor and outdoor GOS.

[0122] Furthermore, the encoding device may add information to the encoded data that allows the decoding device to distinguish and display dynamic objects from static objects. This allows the decoding device to display dynamic objects together with a red frame or explanatory text. Alternatively, the decoding device may display only the red frame or explanatory text instead of the dynamic object. The decoding device may also display more detailed object types. For example, a red frame may be used for cars and a yellow frame for people.

[0123] Furthermore, the encoding or decoding device may decide whether to encode or decode dynamic objects and static objects as different SPCs or GOSs depending on the frequency of occurrence of dynamic objects or the ratio of static objects to dynamic objects. For example, if the frequency or ratio of occurrence of dynamic objects exceeds a threshold, an SPC or GOS containing a mixture of dynamic and static objects is permitted, while if the frequency or ratio of occurrence of dynamic objects does not exceed a threshold, an SPC or GOS containing a mixture of dynamic and static objects is not permitted.

[0124] When detecting dynamic objects from two-dimensional image information from a camera rather than a point cloud, the encoding device may separately acquire information to identify the detection result (such as a frame or text) and the object's position, and encode this information as part of the three-dimensional encoded data. In this case, the decoding device overlays auxiliary information (a frame or text) indicating the dynamic object onto the decoded result of the static object.

[0125] Furthermore, the encoding device may change the density of VXL or VLM in the SPC depending on the complexity of the shape of the static object. For example, the encoding device will set the VXL or VLM density to be denser as the shape of the static object becomes more complex. In addition, the encoding device may determine the quantization step when quantizing spatial position or color information according to the density of VXL or VLM. For example, the encoding device will set the quantization step to be smaller as the VXL or VLM density increases.

[0126] As described above, the encoding or decoding device according to this embodiment performs spatial encoding or decoding on a spatial basis that has coordinate information.

[0127] Furthermore, the encoding and decoding devices perform encoding or decoding in volume units within the space. A volume includes a voxel, which is the smallest unit to which location information is associated.

[0128] Furthermore, the encoding and decoding devices encode or decode arbitrary elements by associating each element of spatial information, including coordinates, objects, and time, with the GOP, or by associating each element with another element using a table. The decoding device determines the coordinates using the values ​​of the selected elements, identifies a volume, voxel, or space from the coordinates, and decodes the space containing the volume or voxel, or the identified space.

[0129] Furthermore, the encoding device determines selectable volumes, voxels, or spaces based on the elements through feature point extraction or object recognition, and encodes them as randomly accessible volumes, voxels, or spaces.

[0130] Spaces are classified into three types: I-SPCs, which can be encoded or decoded on their own; P-SPCs, which are encoded or decoded by referencing any one processed space; and B-SPCs, which are encoded or decoded by referencing any two processed spaces.

[0131] One or more volumes correspond to static or dynamic objects. Spaces containing static objects and spaces containing dynamic objects are encoded or decoded as different GOSs. In other words, SPCs containing static objects and SPCs containing dynamic objects are assigned to different GOSs.

[0132] Dynamic objects are encoded or decoded individually and mapped to one or more spaces containing static objects. In other words, multiple dynamic objects are encoded individually, and the resulting encoded data of multiple dynamic objects is mapped to an SPC containing static objects.

[0133] The encoding and decoding devices prioritize the I-SPCs within the GOS when encoding or decoding. For example, the encoding device encodes in a way that minimizes I-SPC degradation (so that the original 3D data is reproduced more faithfully after decoding). The decoding device, on the other hand, decodes only the I-SPCs.

[0134] The encoding device may perform encoding by changing the frequency of using I-SPC depending on the density or number (quantity) 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 will increase the frequency of using I-space as the density of objects in the world increases.

[0135] Furthermore, the encoding device sets random access points in GOS units and stores information indicating the spatial region corresponding to each GOS in the header information.

[0136] The encoding device uses a default value as the spatial size of the GOS. However, 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 will reduce the spatial size of the GOS as the density or number of objects or dynamic objects increases.

[0137] Furthermore, the space or volume includes a set of feature points derived using information obtained from sensors such as depth sensors, gyroscopes, or cameras. The coordinates of the feature points are set to the center position of the voxel. In addition, the accuracy of the positional information can be improved by subdividing the voxels.

[0138] The feature point cloud is derived using multiple pictures. Each of the multiple pictures has at least two types of time information: actual time information and the same time information across multiple pictures mapped to space (for example, the encoded time used for rate control, etc.).

[0139] Furthermore, encoding or decoding is performed in GOS units that contain one or more spaces.

[0140] The encoding and decoding devices refer to the spaces within the processed GOS to predict the P-space or B-space within the GOS to be processed.

[0141] Alternatively, the encoding and decoding devices do not refer to different GOSs, but instead use the processed space within the GOS to be processed to predict the P-space or B-space within the GOS to be processed.

[0142] Furthermore, the encoding and decoding devices transmit or receive encoded streams in world units containing one or more GOSs.

[0143] Furthermore, the GOS has a layered structure in at least one direction within the world, and the encoding and decoding devices encode or decode from the lower layers. 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 each contains multiple layers, each containing one or more SPCs. The encoding and decoding devices encode or decode each SPC by referring to an SPC included in the same layer as that SPC or in a lower layer than that SPC.

[0144] Furthermore, the encoding and decoding devices sequentially encode or decode GOS within a world unit containing multiple GOS. The encoding and decoding devices write or read information indicating the encoding or decoding order (direction) as metadata. In other words, the encoded data includes information indicating the encoding order of multiple GOS.

[0145] Furthermore, the encoding device and the decoding device encode or decode two or more different spaces or GOS in parallel.

[0146] Furthermore, the encoding and decoding devices encode or decode spatial information (coordinates, size, etc.) of space or GOS.

[0147] Furthermore, the encoding and decoding devices encode or decode spaces or GOS contained within a specific space identified based on external information relating to their own position and / or area size, such as GPS, route information, or magnification.

[0148] The encoding or decoding device encodes or decodes spaces farther away from its own position with lower priority compared to spaces closer to it.

[0149] The encoding device sets one direction in the world according to the magnification or application, and encodes a GOS with a layered structure in that direction. The decoding device then decodes the GOS with a layered structure in the one direction in the world set according to the magnification or application, prioritizing from the lower layers.

[0150] The encoding device changes the accuracy of feature point extraction, object recognition, or spatial domain size between indoor and outdoor spaces. However, the encoding and decoding devices encode or decode indoor and outdoor GOS (Geoscopy) points that are close in coordinates adjacent to each other within the world, and encode or decode their identifiers in association with each other.

[0151] (Embodiment 2) When using encoded point cloud data in actual devices or services, it is desirable to send and receive necessary information depending on the application in order to reduce network bandwidth. However, until now, such functionality has not existed in the encoded structure of three-dimensional data, nor has there been an encoding method for that purpose.

[0152] This embodiment describes a three-dimensional data encoding method and a three-dimensional data encoding apparatus for providing a function to transmit and receive only the necessary information in encoded data of a three-dimensional point cloud according to its application, as well as a three-dimensional data decoding method and a three-dimensional data decoding apparatus for decoding said encoded data.

[0153] A voxel (VXL) with a certain number of features is defined as a feature voxel (FVXL), and a world (WLD) composed of FVXLs is defined as a sparse world (SWLD). Figure 11 shows examples of the configuration of sparse worlds and worlds. SWLDs include FGOS, which is a GOS composed of FVXLs; FSPC, which is a SPC composed of FVXLs; and FVLM, which is a VLM composed of FVXLs. The data structure and prediction structure of FGOS, FSPC, and FVLM may be the same as those of GOS, SPC, and VLM.

[0154] A feature is a feature that represents the three-dimensional position information of a VXL, or the visible light information of the VXL's position, and is particularly frequently detected at corners and edges of three-dimensional objects. Specifically, this feature is a three-dimensional feature or a visible light feature as shown below, but any other feature that represents the position, brightness, or color information of the VXL is acceptable.

[0155] Three-dimensional features include SHOT features (Signature of Histograms of OrienTations) and PFH features (Point Features). Histograms or PPF features (Point Pair Features) are used.

[0156] SHOT features are obtained by dividing the area around VXL, calculating the dot product of the reference point and the normal vector of the divided region, and then generating a histogram. These SHOT features have the characteristics of high dimensionality and high feature representation power.

[0157] PFH features are obtained by selecting a large number of pairs of points in the vicinity of the VXL, calculating normal vectors and other parameters from these two points, and then creating a histogram. Because these PFH features are histogram features, they are robust to some disturbances and have high feature representation power.

[0158] PPF features are features calculated using normal vectors and other methods for every two VXLs. Because all VXLs are used in these PPF features, they are robust to occlusion.

[0159] Furthermore, as visible light features, SIFT (Scale-Invariant Feature Transform), SURF (Speeded Up Robust Features), or HOG (Histogram) are used, utilizing information such as the brightness gradient of the image. (of Oriented Gradients), etc., can be used.

[0160] SWLD is generated by calculating the above features from each VXL of WLD and extracting FVXL. Here, SWLD can be updated every time WLD is updated, or it can be updated periodically after a certain period of time regardless of when WLD is updated.

[0161] SWLDs can be generated for each feature. For example, separate SWLDs can be generated for each feature, such as SWLD1 based on SHOT features and SWLD2 based on SIFT features, and the appropriate SWLD can be used depending on the application. Alternatively, the features of each calculated FVXL can be stored as feature information within each FVXL.

[0162] Next, we will explain how to use sparse worlds (SWLDs). Because SWLDs contain only feature voxels (FVXLs), they generally have a smaller data size compared to WLDs, which contain all VXLs.

[0163] In applications that utilize features to achieve a specific objective, using SWLD information instead of WLD information can reduce read time from the hard disk, as well as bandwidth and transfer time during network transmission. For example, by storing both WLD and SWLD as map information on a server and switching the map information transmitted to either WLD or SWLD according to client requests, network bandwidth and transfer time can be reduced. A specific example is shown below.

[0164] Figures 12 and 13 illustrate examples of SWLD and WLD usage. As shown in Figure 12, when client 1, an in-vehicle device, requires map information for self-position determination, client 1 sends a request to the server to acquire map data for self-position estimation (S301). The server sends an SWLD to client 1 in response to the acquisition request (S302). Client 1 uses the received SWLD to determine its own position (S303). At this time, client 1 acquires VXL information around client 1 using various methods such as distance sensors like rangefinders, stereo cameras, or combinations of multiple monocular cameras, and estimates its own position information from the obtained VXL information and the SWLD. Here, the self-position information includes the three-dimensional position information and orientation of client 1.

[0165] As shown in Figure 13, when client 2, an in-vehicle device, needs map information for purposes such as drawing three-dimensional maps, client 2 sends a request to the server to acquire map data for map drawing (S311). The server sends a WLD to client 2 in response to the acquisition request (S312). Client 2 uses the received WLD to perform map drawing (S313). In this case, client 2 creates a rendered image using, for example, an image taken by itself with a visible light camera and the WLD acquired from the server, and then draws the created image on the screen of a car navigation system or the like.

[0166] As described above, the server sends SWLDs to the client when primarily needing individual VXL features, such as for self-localization, and sends WLDs to the client when detailed VXL information is required, such as for map plotting. This enables efficient transmission and reception of map data.

[0167] Furthermore, the client may decide for itself whether it needs an SWLD or a WLD and request the server to send either one. The server may also decide whether to send an SWLD or a WLD based on the client or network conditions.

[0168] Next, we will explain how to switch between sending and receiving data in Sparse World (SWLD) and World (WLD) modes.

[0169] The system may switch between receiving WLD or SWLD depending on the network bandwidth. Figure 14 shows an example of this operation. For example, LTE (Long Term In environments such as Evolution, where the available network bandwidth is limited, if a low-speed network is used, the client accesses the server via the low-speed network (S321) and obtains the SWLD as map information from the server (S322). On the other hand, if a high-speed network with ample network bandwidth is used, such as in a Wi-Fi (registered trademark) environment, the client accesses the server via the high-speed network (S323) and obtains the WLD from the server (S324). This allows the client to obtain appropriate map information according to the client's network bandwidth.

[0170] Specifically, the client receives the SWLD via LTE outdoors and acquires the WLD via Wi-Fi (registered trademark) when it enters an indoor facility. This allows the client to obtain more detailed indoor map information.

[0171] Thus, a client may request a WLD or SWLD from the server depending on the bandwidth of the network it is using. Alternatively, the client may send information indicating the bandwidth of the network it is using to the server, and the server may send data (WLD or SWLD) appropriate for that client based on that information. Alternatively, the server may determine the client's network bandwidth and send data (WLD or SWLD) appropriate for that client.

[0172] Furthermore, the system may switch between receiving a WLD or SWLD depending on the travel speed. Figure 15 shows an example of this operation. For example, when the client is traveling at high speed (S331), the client receives an SWLD from the server (S332). On the other hand, when the client is traveling at low speed (S333), the client receives a WLD from the server (S334). This allows the client to acquire map information appropriate to its speed while suppressing network bandwidth. Specifically, when the client is traveling on a highway, it can receive a SWLD with a small amount of data, allowing it to update rough map information at an appropriate speed. On the other hand, when the client is traveling on a general road, it can receive a WLD, allowing it to acquire more detailed map information.

[0173] Thus, the client may request a WLD or SWLD from the server according to its own movement speed. Alternatively, the client may send information indicating its movement speed to the server, and the server may send data (WLD or SWLD) appropriate to the client according to that information. Alternatively, the server may determine the client's movement speed and send data (WLD or SWLD) appropriate to the client.

[0174] Alternatively, the client may first obtain the SWLD from the server and then obtain the WLD for important areas within it. For example, when acquiring map data, the client can first obtain general map information using the SWLD, then narrow down the areas where features such as buildings, signs, or people appear frequently, and then obtain the WLD for those narrowed-down areas later. This allows the client to obtain detailed information for the necessary areas while suppressing the amount of data received from the server.

[0175] Alternatively, the server may create separate SWLDs for each object from the WLD, and the client may receive them according to its purpose. This can reduce network bandwidth usage. For example, the server may recognize people or cars in advance from the WLD and create SWLDs for people and cars. The client receives the SWLD for people if it wants to obtain information about people in the vicinity, or the SWLD for cars if it wants to obtain information about cars. Furthermore, the types of SWLDs may be distinguished by information (flags or types, etc.) added to the header.

[0176] Next, the configuration and operation flow of the three-dimensional data encoding device (e.g., a server) according to this embodiment will be described. Figure 16 is a block diagram of the three-dimensional data encoding device 400 according to this embodiment. Figure 17 is a flowchart of the three-dimensional data encoding process by the three-dimensional data encoding device 400.

[0177] The three-dimensional data encoding device 400 shown in Figure 16 generates encoded streams, encoded three-dimensional data 413 and 414, by encoding the input three-dimensional data 411. Here, encoded three-dimensional data 413 is encoded three-dimensional data corresponding to WLD, and encoded three-dimensional data 414 is encoded three-dimensional data corresponding to SWLD. This three-dimensional data encoding device 400 comprises 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.

[0178] As shown in Figure 17, first, the acquisition unit 401 acquires input three-dimensional data 411, which is point cloud data in three-dimensional space (S401).

[0179] Next, the encoding region determination unit 402 determines the spatial region to be encoded based on the spatial region where the point cloud data exists (S402).

[0180] Next, the SWLD extraction unit 403 defines the spatial region to be encoded as a WLD and calculates features from each VXL contained in the WLD. Then, the SWLD extraction unit 403 extracts VXLs whose features are equal to or greater than a predetermined threshold, defines the extracted VXLs as FVXLs, and adds these FVXLs to the SWLD to generate extracted three-dimensional data 412 (S403). In other words, extracted three-dimensional data 412 with features equal to or greater than the threshold is extracted from the input three-dimensional data 411.

[0181] Next, the WLD encoding unit 404 generates encoded three-dimensional data 413 corresponding to the WLD by encoding the input three-dimensional data 411 corresponding to the WLD (S404). At this time, the WLD encoding unit 404 adds information to the header of the encoded three-dimensional data 413 to distinguish that the encoded three-dimensional data 413 is a stream containing a WLD.

[0182] 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 to distinguish that the encoded three-dimensional data 414 is a stream containing an SWLD.

[0183] Note that the processing order for generating encoded three-dimensional data 413 and the processing order for generating encoded three-dimensional data 414 may be reversed from the above. Also, some or all of these processes may be performed in parallel.

[0184] A parameter called "world_type" is defined as information to be added to the headers of the encoded three-dimensional data 413 and 414. If world_type=0, it indicates that the stream contains a WLD, and if world_type=1, it indicates that the stream contains an SWLD. If many other types are to be defined, the assigned number can be increased, such as world_type=2. In addition, one of the encoded three-dimensional data 413 or 414 may contain a specific flag. For example, the encoded three-dimensional data 414 may have a flag indicating that the stream contains an SWLD. In this case, the decoder can determine whether the stream contains a WLD or an SWLD based on the presence or absence of the flag.

[0185] Furthermore, the encoding method used by the WLD encoding unit 404 when encoding the WLD and the encoding method used by the SWLD encoding unit 405 when encoding the SWLD may be different.

[0186] For example, because SWLD thins out the data, it may have lower correlation with surrounding data compared to WLD. Therefore, in the encoding method used for SWLD, interpretation may be preferred over intraprediction over interprediction.

[0187] Furthermore, the encoding method used for SWLD and the encoding method used for WLD may differ in their representation of three-dimensional positions. For example, SWLD may represent the three-dimensional position of FVXL using three-dimensional coordinates, while WLD may represent the three-dimensional position using an octree, as described later, or vice versa.

[0188] Furthermore, the SWLD encoding unit 405 encodes the data such that the data size of the SWLD encoded three-dimensional data 414 is smaller than the data size of the WLD encoded three-dimensional data 413. For example, as mentioned above, SWLD may have lower correlation between data compared to WLD. This can reduce encoding efficiency, potentially causing the data size of the encoded three-dimensional data 414 to be larger than the data size of the WLD encoded three-dimensional data 413. Therefore, if the obtained encoded three-dimensional data 414 is larger than the data size of the WLD encoded three-dimensional data 413, the SWLD encoding unit 405 regenerates the encoded three-dimensional data 414 with a reduced data size by re-encoding.

[0189] For example, the SWLD extraction unit 403 regenerates the extracted three-dimensional data 412 with a reduced number of 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 the octree structure described later, the degree of quantization can be made coarser by rounding the data at the lowest layer.

[0190] Furthermore, if the SWLD encoding unit 405 cannot make the data size of the SWLD encoded three-dimensional data 414 smaller than the data size of the WLD encoded three-dimensional data 413, it does not need to generate the SWLD encoded three-dimensional data 414. Alternatively, the WLD encoded three-dimensional data 413 may be copied to the SWLD encoded three-dimensional data 414. In other words, the WLD encoded three-dimensional data 413 may be used as the SWLD encoded three-dimensional data 414.

[0191] Next, the configuration and operation flow of the three-dimensional data decoding device (e.g., client) according to this embodiment will be described. Figure 18 is a block diagram of the three-dimensional data decoding device 500 according to this embodiment. Figure 19 is a flowchart of the three-dimensional data decoding process by the three-dimensional data decoding device 500.

[0192] The three-dimensional data decoding device 500 shown in Figure 18 generates decoded three-dimensional data 512 or 513 by decoding encoded three-dimensional data 511. Here, encoded three-dimensional data 511 is, for example, encoded three-dimensional data 413 or 414 generated by the three-dimensional data encoding device 400.

[0193] This three-dimensional data decoding device 500 comprises an acquisition unit 501, a header analysis unit 502, a WLD decoding unit 503, and a SWLD decoding unit 504.

[0194] As shown in Figure 19, first, the acquisition unit 501 acquires the encoded three-dimensional data 511 (S501). Next, the header analysis unit 502 analyzes the header of the encoded three-dimensional data 511 and determines whether the encoded three-dimensional data 511 is a stream containing a WLD or a stream containing an SWLD (S502). For example, the world_type parameter mentioned above is referenced to make this determination.

[0195] If the encoded three-dimensional data 511 is a stream containing 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 containing 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).

[0196] Furthermore, similar to the encoding device, the decoding method used by the WLD decoding unit 503 when decoding a WLD may be different from the decoding method used by the SWLD decoding unit 504 when decoding an SWLD. For example, in the decoding method used for an SWLD, the inter-prediction method may be given priority over the intra-prediction method used for an inter-prediction method.

[0197] Furthermore, the decoding method used in SWLD and the decoding method used in WLD may differ in their representation of the three-dimensional position. For example, in SWLD, the three-dimensional position of FVXL may be represented by three-dimensional coordinates, while in WLD, the three-dimensional position may be represented by an octree, as described later, or vice versa.

[0198] Next, we will explain the octree representation, a method for representing three-dimensional positions. The VXL data contained in the three-dimensional data is converted into an octree structure and then encoded. Figure 20 shows an example of a VXL in a WLD. Figure 21 shows the octree structure of the WLD shown in Figure 20. In the example shown in Figure 20, there are three VXLs (hereinafter referred to as valid VXLs) VXL1 to VXL3 that contain point clouds. As shown in Figure 21, the octree structure consists 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 Figure 21, leaves 1, 2, and 3 represent VXL1, VXL2, and VXL3 shown in Figure 20, respectively.

[0199] Specifically, each node and leaf corresponds to a three-dimensional position. Node 1 corresponds to the entire block shown in Figure 20. The block corresponding to Node 1 is divided into eight blocks, and of these eight blocks, the block containing the valid VXL is set as a node, while the other blocks are set as leaves. The block corresponding to a node is further divided into eight nodes or leaves, and this process is repeated for each level of the tree structure. In addition, all blocks at the lowest level are set as leaves.

[0200] Figure 22 shows an example of an SWLD generated from the WLD shown in Figure 20. VXL1 and VXL2 shown in Figure 20 were determined to be FVXL1 and FVXL2 as a result of feature extraction and were added to the SWLD. On the other hand, VXL3 was not determined to be FVXL and was not included in the SWLD. Figure 23 shows the octree structure of the SWLD shown in Figure 22. In the octree structure shown in Figure 23, leaf 3, which corresponds to VXL3 shown in Figure 21, has been deleted. As a result, node 3 shown in Figure 21 no longer has a valid VXL and has been changed to a leaf. In this way, the number of leaves in an SWLD is generally less than the number of leaves in a WLD, and the encoded three-dimensional data of the SWLD is also smaller than the encoded three-dimensional data of the WLD.

[0201] Modifications of this embodiment will be described below.

[0202] For example, when a client such as an in-vehicle device performs self-position estimation, it may receive a SWLD from the server and perform self-position estimation using the SWLD. When obstacle detection is performed, it may perform obstacle detection based on three-dimensional information of the surroundings acquired by the device itself using various methods such as distance sensors like rangefinders, stereo cameras, or combinations of multiple monocular cameras.

[0203] Furthermore, SWLDs generally do not contain VXL data for flat areas. Therefore, the server may maintain a subsampled world (subWLD) obtained by subsampled WLDs for static obstacle detection and send both the SWLD and subWLD to the client. This allows the client to perform self-localization and obstacle detection while suppressing network bandwidth.

[0204] Also, when the client rapidly renders three-dimensional map data, it may be more convenient if the map information has a mesh structure. Therefore, the server may generate a mesh from the WLD and retain it in advance as a mesh world (MWLD). For example, when the client requires a rough three-dimensional rendering, it receives the MWLD, and when it requires a detailed three-dimensional rendering, it receives the WLD. This can suppress the network bandwidth.

[0205] Also, among each VXL, the server has set the VXL whose feature amount is equal to or greater than the threshold as FVXL, but the FVXL may be calculated by different methods. For example, the server may determine that the VXL, VLM, SPC, or GOS that constitutes a signal or an intersection, etc. is necessary for self-position estimation, driving assist, or autonomous driving, etc., and include it in the SWLD as FVXL, FVLM, FSPC, FGOS. Also, the above determination may be made manually. In addition, the FVXL, etc. obtained by the above method may be added to the FVXL, etc. set based on the feature amount. That is, the SWLD extraction unit 403 may further extract, as the extracted three-dimensional data 412, data corresponding to an object having a predetermined attribute from the input three-dimensional data 411.

[0206] Also, it may be labeled as necessary for those applications separately from the feature amount. Also, the server may separately retain the FVXL necessary for self-position estimation, driving assist, or autonomous driving, etc. of signals or intersections, etc. as the upper layer (for example, lane world) of the SWLD.

[0207] Also, the server may add an attribute to the VXL in the WLD for each random access unit or a predetermined unit. The attribute includes, for example, information indicating whether it is necessary or unnecessary for self-position estimation, or information indicating whether it is important as traffic information such as a signal or an intersection. Also, the attribute may include the correspondence relationship with a Feature (such as an intersection or a road) in lane information (such as GDF: Geographic Data Files).

[0208] Also, the following methods may be used as the method for updating the WLD or SWLD.

[0209] Update information indicating changes in people, construction, or roadside trees (for trucks), etc. is uploaded to the server as point clouds or metadata. Based on this upload, the server updates the WLD, and then updates the SWLD using the updated WLD.

[0210] Also, when the client detects an inconsistency between the three-dimensional information generated by itself during self-position estimation and the three-dimensional information received from the server, the client may send the three-dimensional information generated by itself to the server together with an update notification. In this case, the server updates the SWLD using the WLD. If the SWLD is not updated, the server determines that the WLD itself is old.

[0211] Also, although information distinguishing between the WLD and the SWLD is added as the header information of the encoded stream, for example, when there are multiple types of worlds such as a mesh world or a lane world, information distinguishing them may be added to the header information. Also, when there are many SWLDs with different feature amounts, information distinguishing each of them may be added to the header information.

[0212] Also, although the SWLD is assumed to be composed of FVXLs, it may include VXLs that are not determined to be FVXLs. For example, the SWLD may include adjacent VXLs used when calculating the feature amounts of the FVXLs. Thereby, even when feature amount information is not added to each FVXL of the SWLD, the client can calculate the feature amounts of the FVXLs when receiving the SWLD. In that case, the SWLD may include information for distinguishing whether each VXL is an FVXL or a VXL.

[0213] As described above, the three-dimensional data encoding device 400 extracts extracted three-dimensional data 412 (second three-dimensional data) from the input three-dimensional data 411 (first three-dimensional data) in which the feature quantity is equal to or greater than a threshold, and generates encoded three-dimensional data 414 (first encoded three-dimensional data) by encoding the extracted three-dimensional data 412.

[0214] According to this, the three-dimensional data encoding device 400 generates encoded three-dimensional data 414 by encoding data whose feature quantity is greater than or equal to a threshold. This reduces the amount of data compared to encoding the input three-dimensional data 411 as is. Therefore, the three-dimensional data encoding device 400 can reduce the amount of data transmitted.

[0215] Furthermore, the three-dimensional data encoding device 400 generates encoded three-dimensional data 413 (second encoded three-dimensional data) by encoding the input three-dimensional data 411.

[0216] According to this, the three-dimensional data encoding device 400 can selectively transmit encoded three-dimensional data 413 and encoded three-dimensional data 414, for example, depending on the intended use.

[0217] Furthermore, the extracted three-dimensional data 412 is encoded using a first encoding method, and the input three-dimensional data 411 is encoded using a second encoding method different from the first encoding method.

[0218] According to this, the three-dimensional data encoding device 400 can use encoding methods suitable for the input three-dimensional data 411 and the extracted three-dimensional data 412, respectively.

[0219] Furthermore, in the first coding method, interpretation takes precedence over intraprediction over interprediction in the second coding method.

[0220] According to this, the three-dimensional data encoding device 400 can prioritize interpretation for extracted three-dimensional data 412, where the correlation between adjacent data tends to be low.

[0221] Furthermore, the first and second encoding methods differ in their methods of representing three-dimensional positions. For example, in the second encoding method, three-dimensional positions are represented by an octree, while in the first encoding method, three-dimensional positions are represented by three-dimensional coordinates.

[0222] According to this, the three-dimensional data encoding device 400 can use a more suitable three-dimensional position representation method for three-dimensional data with different numbers of data (number of VXLs or FVXLs).

[0223] Furthermore, at least one of the encoded three-dimensional data 413 and 414 includes an identifier indicating whether the encoded three-dimensional data is obtained by encoding the input three-dimensional data 411 or by encoding a portion of the input three-dimensional data 411. In other words, the identifier indicates whether the encoded three-dimensional data is WLD encoded three-dimensional data 413 or SWLD encoded three-dimensional data 414.

[0224] According to this, the decoding device can easily determine whether the acquired encoded three-dimensional data is encoded three-dimensional data 413 or encoded three-dimensional data 414.

[0225] Furthermore, the three-dimensional data encoding device 400 encodes the extracted three-dimensional data 412 such that the amount of data in the encoded three-dimensional data 414 is smaller than the amount of data in the encoded three-dimensional data 413.

[0226] 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.

[0227] Furthermore, the three-dimensional data encoding device 400 extracts data corresponding to objects having predetermined attributes from the input three-dimensional data 411 as extracted three-dimensional data 412. For example, objects having predetermined attributes are objects necessary for self-localization, driving assistance, or autonomous driving, such as traffic lights or intersections.

[0228] According to this, the three-dimensional data encoding device 400 can generate encoded three-dimensional data 414 including data required by the decoding device.

[0229] Further, the three-dimensional data encoding device 400 (server) further transmits one of the encoded three-dimensional data 413 and 414 to the client according to the state of the client.

[0230] According to this, the three-dimensional data encoding device 400 can transmit appropriate data according to the state of the client.

[0231] Also, the state of the client includes the communication status of the client (e.g., network bandwidth) or the moving speed of the client.

[0232] Further, the three-dimensional data encoding device 400 further transmits one of the encoded three-dimensional data 413 and 414 to the client according to the request of the client.

[0233] According to this, the three-dimensional data encoding device 400 can transmit appropriate data according to the request of the client.

[0234] Also, the three-dimensional data decoding device 500 according to the present embodiment decodes the encoded three-dimensional data 413 or 414 generated by the three-dimensional data encoding device 400.

[0235] That is, the three-dimensional data decoding device 500 decodes the encoded three-dimensional data 414 obtained by encoding the extracted three-dimensional data 412 whose feature amount extracted from the input three-dimensional data 411 is greater than or equal to the threshold value by the first decoding method. Also, the three-dimensional data decoding device 500 decodes the encoded three-dimensional data 413 obtained by encoding the input three-dimensional data 411 by a second decoding method different from the first decoding method.

[0236] According to this, the three-dimensional data decoding device 500 can selectively receive encoded three-dimensional data 414, which encodes data with feature quantities above a threshold, and encoded three-dimensional data 413, for example, depending on the intended use. This allows the three-dimensional data decoding device 500 to reduce the amount of data transmitted. Furthermore, the three-dimensional data decoding device 500 can use a decoding method suitable for the input three-dimensional data 411 and the extracted three-dimensional data 412, respectively.

[0237] Furthermore, in the first decoding method, interpretation is given priority over intraprediction in the second decoding method.

[0238] According to this, the three-dimensional data decoding device 500 can prioritize interpretation for extracted three-dimensional data where the correlation between adjacent data tends to be low.

[0239] Furthermore, the first decoding method and the second decoding method differ in their methods for representing three-dimensional positions. For example, in the second decoding method, the three-dimensional position is represented by an octree, while in the first decoding method, the three-dimensional position is represented by three-dimensional coordinates.

[0240] According to this, the three-dimensional data decoding device 500 can use a more suitable three-dimensional position representation method for three-dimensional data with different numbers of data (number of VXLs or FVXLs).

[0241] Furthermore, at least one of the encoded three-dimensional data 413 and 414 includes an identifier indicating whether the encoded three-dimensional data is obtained by encoding the input three-dimensional data 411 or 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 this identifier.

[0242] According to this, the three-dimensional data decoding device 500 can easily determine whether the acquired encoded three-dimensional data is encoded three-dimensional data 413 or encoded three-dimensional data 414.

[0243] Furthermore, the three-dimensional data decoding device 500 also notifies the server of the status of the client (three-dimensional data decoding device 500). Depending on the status of the client, the three-dimensional data decoding device 500 receives one of the encoded three-dimensional data 413 and 414 transmitted from the server.

[0244] According to this, the three-dimensional data decoding device 500 can receive appropriate data according to the client's status.

[0245] Furthermore, the client's status includes the client's communication status (e.g., network bandwidth) or the client's speed of movement.

[0246] Furthermore, the three-dimensional data decoding device 500 requests one of the encoded three-dimensional data 413 and 414 from the server, and in response to the request, receives one of the encoded three-dimensional data 413 and 414 transmitted from the server.

[0247] According to this, the three-dimensional data decoding device 500 can receive appropriate data according to its intended use.

[0248] (Embodiment 3) This embodiment describes a method for transmitting and receiving three-dimensional data between vehicles. For example, three-dimensional data is transmitted and received between one vehicle and surrounding vehicles.

[0249] Figure 24 is a block diagram of the three-dimensional data creation device 620 according to this embodiment. This three-dimensional data creation device 620 creates a denser third three-dimensional data 636 by combining the received second three-dimensional data 635 with the first three-dimensional data 632 created by the three-dimensional data creation device 620, which is included in the vehicle itself.

[0250] This three-dimensional data creation device 620 comprises a three-dimensional data creation unit 621, a requested range determination unit 622, a search unit 623, a receiving unit 624, a decoding unit 625, and a synthesis unit 626.

[0251] First, the three-dimensional data creation unit 621 creates first three-dimensional data 632 using sensor information 631 detected by sensors installed in the vehicle. Next, the request range determination unit 622 determines the request range, which is the three-dimensional spatial range in which data is missing from the created first three-dimensional data 632.

[0252] Next, the search unit 623 searches for surrounding vehicles that possess three-dimensional data for the requested range, and transmits requested range information 633 indicating the requested range to the surrounding vehicles identified through the search. Next, the receiving unit 624 receives encoded three-dimensional data 634, which is an encoded stream of the requested range, from the surrounding vehicles (S624). The search unit 623 may also indiscriminately send requests to all vehicles in a specific range and receive encoded three-dimensional data 634 from those that respond. Furthermore, the search unit 623 may send requests not only to vehicles but also to objects such as traffic lights or signs and receive encoded three-dimensional data 634 from those objects.

[0253] Next, the decoding unit 625 decodes the received encoded three-dimensional data 634 to obtain the second three-dimensional data 635. Then, the combining unit 626 combines the first three-dimensional data 632 and the second three-dimensional data 635 to create a denser third three-dimensional data 636.

[0254] Next, the configuration and operation of the three-dimensional data transmission device 640 according to this embodiment will be described. Figure 25 is a block diagram of the three-dimensional data transmission device 640.

[0255] The three-dimensional data transmission device 640, for example, is included in the surrounding vehicle described above, processes the fifth three-dimensional data 652 created by the surrounding vehicle into the sixth three-dimensional data 654 requested by its own vehicle, generates encoded three-dimensional data 634 by encoding the sixth three-dimensional data 654, and transmits the encoded three-dimensional data 634 to its own vehicle.

[0256] The three-dimensional data transmission device 640 comprises a three-dimensional data creation unit 641, a receiving unit 642, an extraction unit 643, an encoding unit 644, and a transmission unit 645.

[0257] First, the three-dimensional data creation unit 641 creates fifth three-dimensional data 652 using sensor information 651 detected by sensors on surrounding vehicles. Next, the receiving unit 642 receives the requested range information 633 transmitted from its own vehicle.

[0258] Next, the extraction unit 643 processes the fifth three-dimensional data 652 into the sixth three-dimensional data 654 by extracting the three-dimensional data within the requested range indicated by the requested range information 633 from the fifth three-dimensional data 652. Next, the encoding unit 644 generates encoded three-dimensional data 634, which is an encoded stream, by encoding the sixth three-dimensional data 654. Then, the transmission unit 645 transmits the encoded three-dimensional data 634 to its own vehicle.

[0259] In this example, the vehicle itself is equipped with a three-dimensional data creation device 620, and surrounding vehicles are equipped with three-dimensional data transmission devices 640. However, each vehicle may also have the functions of both a three-dimensional data creation device 620 and a three-dimensional data transmission device 640.

[0260] (Embodiment 4) This embodiment describes the behavior of anomalies in self-localization based on a three-dimensional map.

[0261] Applications such as autonomous driving of cars, or autonomous movement of mobile objects like robots or drones, are expected to expand in the future. One example of a means to achieve such autonomous movement is for a mobile object to estimate its own position within a three-dimensional map (self-localization) and then travel according to the map.

[0262] Self-localization can be achieved by matching a three-dimensional map with three-dimensional information about the vehicle's surroundings (hereinafter referred to as "self-detection three-dimensional data") acquired by sensors such as a rangefinder (LiDAR, etc.) or stereo camera mounted on the vehicle, and estimating the vehicle's position within the three-dimensional map.

[0263] Three-dimensional maps, such as the HD maps proposed by HERE, may include not only three-dimensional point clouds but also two-dimensional map data such as road and intersection shape information, or real-time changing information such as traffic congestion and accidents. A three-dimensional map is composed of multiple layers, including three-dimensional data, two-dimensional data, and real-time changing metadata, and the device can acquire or reference only the necessary data.

[0264] The point cloud data may be SWLD as described above, or it may include point cloud data that does not contain feature points. Furthermore, the transmission and reception of point cloud data is based on one or more random access units.

[0265] The following methods can be used to match a three-dimensional map with three-dimensional vehicle detection data. For example, the device compares the shape of the point clouds in each other's point clouds and determines that areas with high similarity between feature points are in the same location. Also, if the three-dimensional map is composed of SWLDs, the device performs matching by comparing the feature points that make up the SWLD with the three-dimensional feature points extracted from the three-dimensional vehicle detection data.

[0266] Here, in order to perform self-localization with high accuracy, (A) a three-dimensional map and three-dimensional self-detection data must be acquired, and (B) the accuracy of these must meet predetermined standards. However, in the following abnormal cases, (A) or (B) cannot be met.

[0267] (1) The 3D map cannot be obtained via communication.

[0268] (2) The 3D map does not exist, or the 3D map was obtained but is corrupted.

[0269] (3) The vehicle's sensors are malfunctioning, or the accuracy of the generated 3D data for vehicle detection is insufficient due to bad weather.

[0270] The following describes the actions needed to address these abnormal cases. While a car will be used as an example, the following methods can be applied to any autonomously moving animal, such as robots or drones.

[0271] The configuration and operation of the three-dimensional information processing device according to this embodiment, for handling abnormal cases in three-dimensional maps or three-dimensional data detected by the vehicle, will be described below. Figure 26 is a block diagram showing an example configuration of the three-dimensional information processing device 700 according to this embodiment.

[0272] The three-dimensional information processing device 700 is mounted on an animal body, such as an automobile. As shown in Figure 26, the three-dimensional information processing device 700 includes a three-dimensional map acquisition unit 701, a vehicle detection data acquisition unit 702, an abnormal case determination unit 703, a response action determination unit 704, and an action control unit 705.

[0273] The three-dimensional information processing device 700 may also include two-dimensional or one-dimensional sensors (not shown) for detecting structures or animals around the vehicle, such as a camera for acquiring two-dimensional images, or a sensor for acquiring one-dimensional data using ultrasound or a laser. Furthermore, the three-dimensional information processing device 700 may also include a communication unit (not shown) for acquiring a three-dimensional map via a mobile communication network such as 4G or 5G, or via vehicle-to-vehicle communication or vehicle-to-infrastructure communication.

[0274] The 3D map acquisition unit 701 acquires a 3D map 711 of the vicinity of the travel route. For example, the 3D map acquisition unit 701 acquires the 3D map 711 via a mobile communication network, vehicle-to-vehicle communication, or vehicle-to-infrastructure communication.

[0275] Next, the vehicle detection data acquisition unit 702 acquires vehicle detection three-dimensional data 712 based on the sensor information. For example, the vehicle detection data acquisition unit 702 generates vehicle detection three-dimensional data 712 based on sensor information acquired by the sensors installed in the vehicle.

[0276] Next, the abnormal case determination unit 703 detects abnormal cases by performing predetermined checks on at least one of the acquired three-dimensional map 711 and the vehicle detection three-dimensional data 712. In other words, the abnormal case determination unit 703 determines whether at least one of the acquired three-dimensional map 711 and the vehicle detection three-dimensional data 712 is abnormal.

[0277] If an abnormal case is detected, the action determination unit 704 determines the corrective action for the abnormal case. Next, the operation control unit 705 controls the operation of each processing unit necessary for carrying out the corrective action, such as the three-dimensional map acquisition unit 701.

[0278] On the other hand, if no abnormal cases are detected, the three-dimensional information processing device 700 terminates processing.

[0279] Furthermore, the three-dimensional information processing device 700 uses the three-dimensional map 711 and the vehicle detection three-dimensional data 712 to estimate the self-position of the vehicle equipped with the three-dimensional information processing device 700. Next, the three-dimensional information processing device 700 uses the results of the self-position estimation to automatically drive the vehicle.

[0280] In this way, the three-dimensional information processing device 700 acquires map data (three-dimensional map 711) containing the first three-dimensional location information via a communication channel. For example, the first three-dimensional location information is encoded using subspaces having three-dimensional coordinate information as units, each being a collection of one or more subspaces, and containing multiple random access units, each of which can be decoded independently. For example, the first three-dimensional location information is data (SWLD) in which feature points whose three-dimensional feature quantities are greater than or equal to a predetermined threshold are encoded.

[0281] Furthermore, the three-dimensional information processing device 700 generates second three-dimensional position information (self-detection three-dimensional data 712) from the information detected by the sensor. Next, the three-dimensional information processing device 700 determines whether the first three-dimensional position information or the second three-dimensional position information is abnormal by performing an abnormality determination process on the first three-dimensional position information or the second three-dimensional position information.

[0282] If the three-dimensional information processing device 700 determines that the first three-dimensional position information or the second three-dimensional position information is abnormal, it determines a corrective action for the abnormality. Next, the three-dimensional information processing device 700 performs the necessary controls to carry out the corrective action.

[0283] As a result, the three-dimensional information processing device 700 can detect an anomaly in the first three-dimensional position information or the second three-dimensional position information and take corrective action.

[0284] (Embodiment 5) This embodiment describes a method for transmitting three-dimensional data to a following vehicle, etc.

[0285] Figure 27 is a block diagram showing an example configuration of a three-dimensional data creation device 810 according to this embodiment. This three-dimensional data creation device 810 is mounted, for example, on a vehicle. The three-dimensional data creation device 810 transmits and receives three-dimensional data with an external traffic monitoring cloud, a preceding vehicle, or a following vehicle, and also creates and stores three-dimensional data.

[0286] The three-dimensional data creation device 810 includes a data receiving unit 811, a communication unit 812, a reception control unit 813, a format conversion unit 814, a plurality of sensors 815, a three-dimensional data creation unit 816, a three-dimensional data synthesis unit 817, a three-dimensional data storage unit 818, a communication unit 819, a transmission control unit 820, a format conversion unit 821, and a data transmission unit 822.

[0287] 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, visible light images, depth information, sensor position information, or speed information, including areas that cannot be detected by the vehicle's sensors 815.

[0288] The communication unit 812 communicates with the traffic monitoring cloud or the preceding vehicle and sends data transmission requests and other messages to the traffic monitoring cloud or the preceding vehicle.

[0289] The receiving control unit 813 exchanges information such as the supported format with the communication destination via the communication unit 812 and establishes communication with the communication destination.

[0290] The format conversion unit 814 generates three-dimensional data 832 by performing format conversion on the three-dimensional data 831 received by the data reception unit 811. Furthermore, if the three-dimensional data 831 is compressed or encoded, the format conversion unit 814 performs decompression or decoding.

[0291] Multiple sensors 815 are a group of sensors that acquire information from outside the vehicle, such as LiDAR, visible light cameras, or infrared cameras, and generate sensor information 833. For example, if sensor 815 is a laser sensor such as LiDAR, the sensor information 833 is three-dimensional data such as a point cloud. Note that there are not necessarily multiple sensors 815.

[0292] 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, visible light image, depth information, sensor position information, or velocity information.

[0293] The three-dimensional data synthesis unit 817 synthesizes three-dimensional data 835, which includes the space in front of the preceding vehicle that cannot be detected by the vehicle's sensors 815, by combining three-dimensional data 834 created based on the vehicle's sensor information 833 with three-dimensional data 832 created by the traffic monitoring cloud or the preceding vehicle.

[0294] The three-dimensional data storage unit 818 stores the generated three-dimensional data 835, etc.

[0295] The communication unit 819 communicates with the traffic monitoring cloud or following vehicles and sends data transmission requests, etc., to the traffic monitoring cloud or following vehicles.

[0296] The transmission control unit 820 exchanges information such as the supported format with the communication destination via the communication unit 819 and establishes communication with the communication destination. The transmission control unit 820 also determines the transmission area, which is the space of the three-dimensional data to be transmitted, based on the three-dimensional data construction information of the three-dimensional data 832 generated by the three-dimensional data synthesis unit 817 and the data transmission request from the communication destination.

[0297] Specifically, the transmission control unit 820 determines a transmission area that includes the space in front of its own vehicle that cannot be detected by the sensors of the following vehicle, in response to a data transmission request from the traffic monitoring cloud or a following vehicle. The transmission control unit 820 also determines the transmission area by determining whether the transmissionable space or the transmitted space has been updated based on the three-dimensional data construction information. For example, the transmission control unit 820 determines the transmission area to be the area specified in the data transmission request and in which the corresponding three-dimensional data 835 exists. The transmission control unit 820 then notifies the format conversion unit 821 of the format supported by the communication destination and the transmission area.

[0298] The format conversion unit 821 generates three-dimensional data 837 by converting the three-dimensional data 836 in the transmission area from the three-dimensional data 835 stored in the three-dimensional data storage unit 818 to a format supported by the receiving side. The format conversion unit 821 may also reduce the amount of data by compressing or encoding the three-dimensional data 837.

[0299] The data transmission unit 822 transmits three-dimensional data 837 to a traffic monitoring cloud or following vehicles. This three-dimensional data 837 includes, for example, information such as a point cloud in front of the vehicle, including areas that are blind spots for following vehicles, visible light images, depth information, or sensor position information.

[0300] Although this example describes a case where format conversion is performed by the format conversion units 814 and 821, format conversion is not required.

[0301] With this configuration, the three-dimensional data creation device 810 acquires three-dimensional data 831 from an external source for areas that cannot be detected by the vehicle's sensors 815, and generates three-dimensional data 835 by combining the three-dimensional data 831 with three-dimensional data 834 based on sensor information 833 detected by the vehicle's sensors 815. In this way, the three-dimensional data creation device 810 can generate three-dimensional data for areas that cannot be detected by the vehicle's sensors 815.

[0302] Furthermore, the three-dimensional data creation device 810 can transmit three-dimensional data, including the space in front of its own vehicle that cannot be detected by the sensors of the following vehicle, to the traffic monitoring cloud or following vehicle in response to a data transmission request from the traffic monitoring cloud or following vehicle.

[0303] (Embodiment 6) Embodiment 5 describes an example 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 this embodiment, the client device transmits sensor information obtained from the sensor to the server or another client device.

[0304] First, the system configuration according to this embodiment will be described. Figure 28 is a diagram showing the configuration of the three-dimensional map and sensor information transmission and reception system according to this embodiment. This system includes a server 901 and client devices 902A and 902B. When client devices 902A and 902B are not specifically distinguished, they will also be referred to as client device 902.

[0305] 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 and is capable of communicating with multiple client devices 902.

[0306] Server 901 transmits a three-dimensional map composed of point clouds to client device 902. Note that the composition of the three-dimensional map is not limited to point clouds; it may also represent other three-dimensional data, such as a mesh structure.

[0307] 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 the following: LiDAR acquisition information, visible light image, infrared image, depth image, sensor position information, and velocity information.

[0308] The data transmitted and received between the server 901 and the client device 902 may be compressed to reduce data size, or it may be left uncompressed to maintain data accuracy. When data is compressed, a three-dimensional compression method based on an octave structure, for example, can be used for point clouds. In addition, a two-dimensional image compression method can be used for visible light images, infrared images, and depth images. A two-dimensional image compression method is, for example, MPEG-4 AVC or HEVC, which are standardized by MPEG.

[0309] Furthermore, in response to a request from the client device 902 to send a 3D map, the server 901 sends a 3D map managed by the server 901 to the client device 902. The server 901 may also send a 3D map without waiting for a request from the client device 902. For example, the server 901 may broadcast a 3D map to one or more client devices 902 located in a predetermined space. Alternatively, the server 901 may send a 3D map appropriate to the location of the client device 902 at regular intervals after receiving a transmission request from the client device 902. The server 901 may also send a 3D map to the client device 902 whenever the 3D map managed by the server 901 is updated.

[0310] The client device 902 sends a request to the server 901 to send a three-dimensional map. For example, if the client device 902 wants to perform self-position estimation while driving, the client device 902 sends a request to the server 901 to send a three-dimensional map.

[0311] Furthermore, the client device 902 may request the server 901 to send a 3D map in the following cases: If the 3D map held by the client device 902 is outdated, the client device 902 may request the server 901 to send a 3D map. For example, if a certain period of time has elapsed since the client device 902 acquired the 3D map, the client device 902 may request the server 901 to send a 3D map.

[0312] Client device 902 may request server 901 to send the three-dimensional map to the server 901 a certain time before client device 902 leaves the space represented by the three-dimensional map held by client device 902. For example, client device 902 may request server 901 to send the three-dimensional map to the server 901 if it is within a predetermined distance from the boundary of the space represented by the three-dimensional map held by client device 902. Furthermore, if the movement path and speed of client device 902 are known, the time when client device 902 leaves the space represented by the three-dimensional map held by client device 902 may be predicted based on these.

[0313] If the error in the alignment between the three-dimensional data created by the client device 902 from sensor information and the three-dimensional map exceeds a certain level, the client device 902 may request the server 901 to send the three-dimensional map.

[0314] The client device 902 transmits sensor information to the server 901 in response to a request for transmission of sensor information sent from the server 901. The client device 902 may also send sensor information to the server 901 without waiting for a request for transmission of sensor information from the server 901. For example, once the client device 902 receives a request for transmission of sensor information from the server 901, it may periodically transmit sensor information to the server 901 for a certain period. Furthermore, if the error in the alignment between the three-dimensional data created by the client device 902 based on the sensor information and the three-dimensional map obtained from the server 901 exceeds a certain level, the client device 902 may determine that a change has occurred in the three-dimensional map around the client device 902 and transmit this information, along with the sensor information, to the server 901.

[0315] Server 901 requests client device 902 to transmit sensor information. For example, Server 901 receives location information of client device 902, such as GPS, from client device 902. Based on the location information of client device 902, if Server 901 determines that client device 902 is approaching an area with little information on the three-dimensional map managed by Server 901, it requests client device 902 to transmit sensor information in order to generate a new three-dimensional map. Server 901 may also request sensor information transmission if it wants to update the three-dimensional map, check road conditions during snowfall or disasters, check traffic congestion, or check incidents and accidents.

[0316] Furthermore, the client device 902 may set the amount of sensor information data to send to the server 901 depending on the communication status or bandwidth at the time of receiving the sensor information transmission request from the server 901. Setting the amount of sensor information data to send to the server 901 means, for example, increasing or decreasing the data itself, or selecting an appropriate compression method.

[0317] Figure 29 is a block diagram showing an example configuration of the client device 902. The client device 902 receives a three-dimensional map composed of a point cloud, etc., from the server 901, and estimates its own position from the three-dimensional data created based on the sensor information of the client device 902. The client device 902 also transmits the acquired sensor information to the server 901.

[0318] The client device 902 includes a data receiving unit 1011, a communication unit 1012, a reception control unit 1013, a format conversion unit 1014, a plurality of sensors 1015, a three-dimensional data creation unit 1016, a three-dimensional image processing unit 1017, a three-dimensional data storage unit 1018, a format conversion unit 1019, a communication unit 1020, a transmission control unit 1021, and a data transmission unit 1022.

[0319] The data receiving unit 1011 receives the three-dimensional map 1031 from the server 901. The three-dimensional map 1031 is data that includes point clouds such as WLD or SWLD. The three-dimensional map 1031 may contain either compressed or uncompressed data.

[0320] The communication unit 1012 communicates with the server 901 and sends data transmission requests (for example, a request to transmit a 3D map) to the server 901.

[0321] The receiving control unit 1013 exchanges information such as the supported format with the communication destination via the communication unit 1012 and establishes communication with the communication destination.

[0322] The format conversion unit 1014 generates a three-dimensional map 1032 by performing format conversion on the three-dimensional map 1031 received by the data reception unit 1011. Furthermore, if the three-dimensional map 1031 is compressed or encoded, the format conversion unit 1014 performs decompression or decoding. However, if the three-dimensional map 1031 is uncompressed data, the format conversion unit 1014 does not perform decompression or decoding.

[0323] Multiple sensors 1015 are a group of sensors that acquire external information from the vehicle on which the client device 902 is installed, such as LiDAR, visible light cameras, infrared cameras, or depth sensors, and generate sensor information 1033. For example, if 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 there are not necessarily multiple sensors 1015.

[0324] The three-dimensional data creation unit 1016 creates three-dimensional data 1034 of the vehicle's surroundings based on the sensor information 1033. For example, the three-dimensional data creation unit 1016 uses information acquired by LiDAR and visible light images obtained by a visible light camera to create point cloud data with color information of the vehicle's surroundings.

[0325] The three-dimensional image processing unit 1017 uses the received three-dimensional map 1032, such as a point cloud, and the three-dimensional data 1034 of the vehicle's surroundings generated from sensor information 1033 to perform self-position estimation processing for the vehicle. Alternatively, the three-dimensional image processing unit 1017 may create three-dimensional data 1035 of the vehicle's surroundings by combining the three-dimensional map 1032 and the three-dimensional data 1034, and then perform self-position estimation processing using the created three-dimensional data 1035.

[0326] The three-dimensional data storage unit 1018 stores the three-dimensional map 1032, three-dimensional data 1034, and three-dimensional data 1035, etc.

[0327] The format conversion unit 1019 generates sensor information 1037 by converting the sensor information 1033 to a format supported by the receiving side. The format conversion unit 1019 may also reduce the amount of data by compressing or encoding the sensor information 1037. Furthermore, the format conversion unit 1019 may omit processing if format conversion is not necessary. The format conversion unit 1019 may also control the amount of data transmitted according to the specified transmission range.

[0328] The communication unit 1020 communicates with the server 901 and receives data transmission requests (sensor information transmission requests), etc., from the server 901.

[0329] The transmission control unit 1021 exchanges information such as the supported format with the communication destination via the communication unit 1020 and establishes communication.

[0330] The data transmission unit 1022 transmits sensor information 1037 to the server 901. The sensor information 1037 includes information acquired by multiple sensors 1015, such as information acquired by LiDAR, brightness images acquired by a visible light camera, infrared images acquired by an infrared camera, depth images acquired by a depth sensor, sensor position information, and velocity information.

[0331] Next, the configuration of server 901 will be described. Figure 30 is a block diagram showing an example configuration of server 901. Server 901 receives sensor information transmitted from client device 902 and creates three-dimensional data based on the received sensor information. Server 901 updates the three-dimensional map it manages using the created three-dimensional data. In addition, in response to a request from client device 902 to transmit the three-dimensional map, server 901 transmits the updated three-dimensional map to client device 902.

[0332] Server 901 comprises a data receiving unit 1111, a communication unit 1112, a reception control unit 1113, a format conversion unit 1114, a three-dimensional data creation unit 1116, a three-dimensional data synthesis unit 1117, a three-dimensional data storage unit 1118, a format conversion unit 1119, a communication unit 1120, a transmission control unit 1121, and a data transmission unit 1122.

[0333] The data receiving unit 1111 receives sensor information 1037 from the client device 902. The sensor information 1037 includes, for example, information acquired by LiDAR, brightness images acquired by a visible light camera, infrared images acquired by an infrared camera, depth images acquired by a depth sensor, sensor position information, and velocity information.

[0334] The communication unit 1112 communicates with the client device 902 and sends data transmission requests (for example, requests to transmit sensor information) to the client device 902.

[0335] The receiving control unit 1113 exchanges information such as the supported format with the communication destination via the communication unit 1112 and establishes communication.

[0336] The format conversion unit 1114 generates sensor information 1132 by decompressing or decoding the received sensor information 1037 if it is compressed or encoded. However, the format conversion unit 1114 does not perform decompression or decoding if the sensor information 1037 is uncompressed data.

[0337] The three-dimensional data creation unit 1116 creates three-dimensional data 1134 of the area around the client device 902 based on the sensor information 1132. For example, the three-dimensional data creation unit 1116 uses information acquired by LiDAR and visible light images obtained by a visible light camera to create point cloud data with color information of the area around the client device 902.

[0338] The three-dimensional data synthesis unit 1117 updates the three-dimensional map 1135 managed by the server 901 by synthesizing the three-dimensional data 1134, which was created based on the sensor information 1132, with the three-dimensional map 1135.

[0339] The three-dimensional data storage unit 1118 stores three-dimensional maps 1135, etc.

[0340] The format conversion unit 1119 generates a three-dimensional map 1031 by converting the three-dimensional map 1135 to a format supported by the receiving side. The format conversion unit 1119 may also reduce the amount of data by compressing or encoding the three-dimensional map 1135. Furthermore, the format conversion unit 1119 may omit processing if format conversion is not necessary. The format conversion unit 1119 may also control the amount of data transmitted according to the specified transmission range.

[0341] The communication unit 1120 communicates with the client device 902 and receives data transmission requests (such as requests to transmit a three-dimensional map) from the client device 902.

[0342] The transmission control unit 1121 exchanges information such as the supported format with the communication destination via the communication unit 1120 and establishes communication.

[0343] The data transmission unit 1122 transmits the three-dimensional map 1031 to the client device 902. The three-dimensional map 1031 is data that includes point clouds such as WLD or SWLD. The three-dimensional map 1031 may contain either compressed or uncompressed data.

[0344] Next, we will describe the operation flow of the client device 902. Figure 31 is a flowchart showing the operation of the client device 902 when acquiring a three-dimensional map.

[0345] 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 its own location information obtained by GPS or the like, and request the server 901 to transmit a three-dimensional map related to that location information.

[0346] Next, the client device 902 receives a three-dimensional map from the server 901 (S1002). If the received three-dimensional map is compressed data, the client device 902 decodes the received three-dimensional map to generate an uncompressed three-dimensional map (S1003).

[0347] Next, the client device 902 creates three-dimensional data 1034 of the area around the client device 902 from sensor information 1033 obtained from multiple sensors 1015 (S1004). Then, 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).

[0348] Figure 32 is a flowchart showing the 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). Upon receiving the transmission request, the client device 902 transmits sensor information 1037 to the server 901 (S1012). If the sensor information 1033 includes multiple pieces of information obtained from multiple sensors 1015, the client device 902 may generate sensor information 1037 by compressing each piece of information using a compression method suitable for each piece of information.

[0349] Next, the operation flow of server 901 will be described. Figure 33 is a flowchart showing the operation of server 901 when acquiring sensor information. First, server 901 requests client device 902 to send sensor information (S1021). Next, server 901 receives sensor information 1037 sent from client device 902 in response to the request (S1022). Next, server 901 creates three-dimensional data 1134 using the received sensor information 1037 (S1023). Next, server 901 reflects the created three-dimensional data 1134 in the three-dimensional map 1135 (S1024).

[0350] Figure 34 is a flowchart illustrating the operation of server 901 when transmitting a three-dimensional map. First, server 901 receives a request to transmit a three-dimensional map from client device 902 (S1031). Upon receiving the request to transmit a three-dimensional map, server 901 transmits the three-dimensional map 1031 to client device 902 (S1032). At this time, server 901 may extract a three-dimensional map of the vicinity of client device 902 according to its location information and transmit the extracted three-dimensional map. Alternatively, server 901 may compress the three-dimensional map composed of a point cloud using, for example, an octave tree compression method, and transmit the compressed three-dimensional map.

[0351] Modifications of this embodiment will be described below.

[0352] Server 901 uses sensor information 1037 received from client device 902 to create three-dimensional data 1134 of the area around client device 902. Next, server 901 calculates the difference between the created three-dimensional data 1134 and the three-dimensional map 1135 of the same area managed by server 901 by matching them. If the difference is greater than or equal to a predetermined threshold, server 901 determines that some kind of abnormality has occurred around client device 902. For example, when ground subsidence occurs due to a natural disaster such as an earthquake, a large difference may occur between the three-dimensional map 1135 managed by server 901 and the three-dimensional data 1134 created based on sensor information 1037.

[0353] The sensor information 1037 may include information indicating at least one of the following: the type of sensor, the performance of the sensor, and the model number of the sensor. Furthermore, a class ID corresponding to the sensor's performance may be added to the sensor information 1037. For example, if the sensor information 1037 is information acquired by a LiDAR, it is conceivable to assign identifiers to the sensor's performance, such as class 1 for sensors that can acquire information with accuracy in the millimeter range, class 2 for sensors that can acquire information with accuracy in the centimeter range, and class 3 for sensors that can acquire information with accuracy in the meter range. The server 901 may also estimate the sensor's performance information from the model number of the client device 902. For example, if the client device 902 is mounted in a vehicle, the server 901 may determine the sensor's specifications from the vehicle's make and model. In this case, the server 901 may have previously acquired information about the vehicle's make and model, or this information may be included in the sensor information. The server 901 may also use the acquired sensor information 1037 to switch the degree of correction applied to the three-dimensional data 1134 created using the sensor information 1037. For example, if the sensor performance is high precision (Class 1), the server 901 does not perform any correction on the three-dimensional data 1134. If the sensor performance is low precision (Class 3), the server 901 applies a correction to the three-dimensional data 1134 according to the accuracy of the sensor. For example, the lower the accuracy of the sensor, the stronger the degree (intensity) of the correction applied by the server 901.

[0354] Server 901 may simultaneously send requests for the transmission of sensor information to multiple client devices 902 located in a given space. When Server 901 receives multiple sensor information from multiple client devices 902, it is not necessary to use all of the sensor information to create the three-dimensional data 1134. For example, it may select which sensor information to use depending on the performance of the sensors. For example, when updating the three-dimensional map 1135, Server 901 may select high-precision sensor information (Class 1) from the multiple sensor information received and use the selected sensor information to create the three-dimensional data 1134.

[0355] Server 901 is not limited to servers such as traffic monitoring clouds, but may also be other client devices (in-vehicle). Figure 35 shows the system configuration in this case.

[0356] For example, client device 902C requests sensor information from a nearby client device 902A and obtains the sensor information from client device 902A. Then, client device 902C uses the obtained sensor information from client device 902A to create three-dimensional data and updates the three-dimensional map of client device 902C. In this way, client device 902C can generate a three-dimensional map of the space obtainable from client device 902A, taking advantage of the performance of client device 902C. For example, this case is likely to occur when client device 902C has high performance.

[0357] In this case, client device 902A, which provided the sensor information, is granted the right to acquire the high-precision three-dimensional map generated by client device 902C. Client device 902A receives the high-precision three-dimensional map from client device 902C in accordance with that right.

[0358] Furthermore, client device 902C may send requests for the transmission of sensor information to multiple nearby client devices 902 (client devices 902A and 902B). If the sensor of client device 902A or client device 902B is high-performance, client device 902C can create three-dimensional data using the sensor information obtained from this high-performance sensor.

[0359] Figure 36 is a block diagram showing the functional configuration of the server 901 and the client device 902. The server 901 includes, for example, a three-dimensional map compression / decoding processing unit 1201 that compresses and decodes three-dimensional maps, and a sensor information compression / decoding processing unit 1202 that compresses and decodes sensor information.

[0360] The client device 902 comprises 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, decodes the encoded data, and obtains 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 sends the encoded data of the compressed sensor information to the server 901. With this configuration, the client device 902 only needs to internally store a processing unit (device or LSI) that performs the processing of decoding the three-dimensional map (point cloud, etc.), and does not need to internally store a processing unit that performs the processing of compressing the three-dimensional data of the three-dimensional map (point cloud, etc.). This reduces the cost and power consumption of the client device 902.

[0361] As described above, the client device 902 according to this embodiment is mounted on a mobile body and creates three-dimensional data 1034 of the surrounding area of ​​the mobile body from sensor information 1033 indicating the surrounding conditions of the mobile body obtained by a sensor 1015 mounted on the mobile body. The client device 902 estimates the self-position of the mobile body using the created three-dimensional data 1034. The client device 902 transmits the acquired sensor information 1033 to the server 901 or another mobile body 902.

[0362] According to this, the client device 902 transmits sensor information 1033 to the server 901, etc. This may reduce the amount of data transmitted compared to transmitting three-dimensional data. In addition, since the client device 902 does not need to perform processing such as compression or encoding of three-dimensional data, the processing load on the client device 902 can be reduced. Therefore, the client device 902 can achieve a reduction in the amount of data transmitted or a simplification of the device configuration.

[0363] Furthermore, the client device 902 sends a request to the server 901 to send a three-dimensional map, and receives the three-dimensional map 1031 from the server 901. In estimating its own position, the client device 902 uses the three-dimensional data 1034 and the three-dimensional map 1032 to estimate its own position.

[0364] Furthermore, the sensor information 1033 includes at least one of the following: information obtained from the laser sensor, brightness image, infrared image, depth image, sensor position information, and sensor velocity information.

[0365] Furthermore, sensor information 1033 includes information indicating the performance of the sensor.

[0366] Furthermore, the client device 902 encodes or compresses the sensor information 1033, and when transmitting the sensor information, it transmits the encoded or compressed sensor information 1037 to the server 901 or another mobile device 902. This allows the client device 902 to reduce the amount of data transmitted.

[0367] For example, the client device 902 includes a processor and memory, and the processor uses the memory to perform the above processing.

[0368] Furthermore, the server 901 according to this embodiment is capable of communicating with a client device 902 mounted on the mobile body, and receives sensor information 1037 from the client device 902 that indicates the surrounding conditions of the mobile body, obtained by a sensor 1015 mounted on the mobile body. The server 901 creates three-dimensional data 1134 of the surroundings of the mobile body from the received sensor information 1037.

[0369] According to this, the server 901 creates three-dimensional data 1134 using 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 the 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 processing load on the client device 902 can be reduced. Therefore, the server 901 can reduce the amount of data transmitted or simplify the configuration of the device.

[0370] Furthermore, the server 901 also sends a request to the client device 902 to transmit sensor information.

[0371] Furthermore, the server 901 updates the three-dimensional map 1135 using the created three-dimensional data 1134 and sends the three-dimensional map 1135 to the client device 902 in response to a request from the client device 902 to send the three-dimensional map 1135.

[0372] Furthermore, the sensor information 1037 includes at least one of the following: information obtained from the laser sensor, brightness image, infrared image, depth image, sensor position information, and sensor velocity information.

[0373] Furthermore, sensor information 1037 includes information indicating the performance of the sensor.

[0374] Furthermore, the server 901 corrects the three-dimensional data according to the performance of the sensor. This allows the three-dimensional data creation method to improve the quality of the three-dimensional data.

[0375] Furthermore, when receiving sensor information, the server 901 receives multiple pieces of sensor information 1037 from multiple client devices 902, and selects the sensor information 1037 to be used to create the three-dimensional data 1134 based on the multiple pieces of information indicating the performance of the sensors contained in the multiple pieces of sensor information 1037. In this way, the server 901 can improve the quality of the three-dimensional data 1134.

[0376] Furthermore, the server 901 decodes or decodes the received sensor information 1037 and creates three-dimensional data 1134 from the decoded or decoded sensor information 1132. This allows the server 901 to reduce the amount of data transmitted.

[0377] For example, server 901 is equipped with a processor and memory, and the processor uses the memory to perform the above processing.

[0378] (Embodiment 7) This embodiment describes a method for encoding and decoding three-dimensional data using interpretation processing.

[0379] Figure 37 is a block diagram of a three-dimensional data encoding device 1300 according to this embodiment. This three-dimensional data encoding device 1300 generates an encoded bitstream (hereinafter also simply referred to as a bitstream), which is an encoded signal, by encoding three-dimensional data. As shown in Figure 37, the three-dimensional data encoding device 1300 includes a division unit 1301, a subtraction unit 1302, a conversion unit 1303, a quantization unit 1304, an inverse quantization unit 1305, an inverse conversion unit 1306, an addition unit 1307, a reference volume memory 1308, an intra prediction unit 1309, a reference space memory 1310, an inter prediction unit 1311, a prediction control unit 1312, and an entropy encoding unit 1313.

[0380] The splitting unit 1301 divides each space (SPC) contained in the three-dimensional data into multiple volumes (VLMs), which are encoding units. The splitting unit 1301 also converts the voxels within each volume into an octree representation. The splitting unit 1301 may also make the spaces and volumes the same size and convert the spaces into an octree representation. Furthermore, the splitting unit 1301 may add information necessary for octree conversion (such as depth information) to the bitstream header, etc.

[0381] The subtraction unit 1302 calculates the difference between the volume output from the division unit 1301 (the volume to be encoded) and the predicted volume generated by the intra-prediction or inter-prediction described later, and outputs the calculated difference as the predicted residual to the conversion unit 1303. Figure 38 shows an example of the calculation of the predicted residual. The bit sequences of the volume to be encoded and the predicted volume shown here are, for example, position information indicating the positions of three-dimensional points (e.g., point clouds) included in the volume.

[0382] The following describes the octree representation and the voxel scan order. A volume is converted into an octree structure (octreeized) and then encoded. An octree structure consists of nodes and leaves. Each node has eight nodes or leaves, and each leaf has voxel (VXL) information. Figure 39 shows an example of the structure of a volume containing multiple voxels. Figure 40 shows an example of the volume shown in Figure 39 converted into an octree structure. Here, among the leaves shown in Figure 40, leaves 1, 2, and 3 represent the voxels VXL1, VXL2, and VXL3 shown in Figure 39, respectively, and represent a VXL containing a point cloud (hereinafter referred to as effective VXL).

[0383] An octree is represented, for example, by a binary sequence of 0s and 1s. For example, if nodes or valid VXLs are assigned the value 1 and all others the value 0, then each node and leaf is assigned the binary sequence shown in Figure 40. This binary sequence is then scanned according to the breadth-first or depth-first scan order. For example, if scanned in breadth-first order, the binary sequence shown in Figure 41A is obtained. If scanned in depth-first order, the binary sequence shown in Figure 41B is obtained. The binary sequence obtained by this scan is encoded by entropy coding to reduce its information content.

[0384] Next, we will explain the depth information in octree representations. In octree representations, the depth is used to control the level of granularity to which the point cloud information contained within a volume is retained. Setting a high depth allows for the reproduction of point cloud information at a finer level, but increases the amount of data required to represent nodes and leaves. Conversely, setting a low depth reduces the amount of data, but multiple point clouds with different locations and colors are treated as being at the same location and with the same color, resulting in the loss of information that the original point cloud information contained in the data.

[0385] For example, Figure 42 shows an example where the octree with depth=2 shown in Figure 40 is represented by an octree with depth=1. The octree shown in Figure 42 has less data than the octree shown in Figure 40. In other words, the octree shown in Figure 42 has fewer bits after binary conversion than the octree shown in Figure 42. Here, leaf 1 and leaf 2 shown in Figure 40 are represented by leaf 1 shown in Figure 41. In other words, the information that leaf 1 and leaf 2 shown in Figure 40 were in different positions is lost.

[0386] Figure 43 shows the volume corresponding to the octree shown in Figure 42. VXL1 and VXL2 shown in Figure 39 correspond to VXL12 shown in Figure 43. In this case, the three-dimensional data encoding device 1300 generates the color information of VXL12 shown in Figure 43 from the color information of VXL1 and VXL2 shown in Figure 39. For example, the three-dimensional data encoding device 1300 calculates the average value, median value, or 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 data volume by changing the depth of the octree.

[0387] The three-dimensional data encoding device 1300 may set the depth information of the octree in units of worlds, spaces, or volumes. 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. Alternatively, the same value may be used for the depth information for all worlds, spaces, and volumes of different time periods. In this case, the three-dimensional data encoding device 1300 may add the depth information to the header information that manages the world for all time periods.

[0388] If the voxels contain color information, the conversion unit 1303 applies a frequency transformation, such as an orthogonal transformation, to the predicted residuals of the color information of the voxels in the volume. For example, the conversion unit 1303 creates a one-dimensional array by scanning the predicted residuals in a certain scan order. Then, the conversion unit 1303 converts the created one-dimensional array into the frequency domain by applying a one-dimensional orthogonal transformation to it. As a result, when the predicted residual values ​​in the volume are close, the values ​​of the low-frequency components become larger and the values ​​of the high-frequency components become smaller. Therefore, the quantization unit 1304 can reduce the code amount more efficiently.

[0389] Furthermore, the transformation unit 1303 may use orthogonal transformations of two or more dimensions, rather than just one dimension. For example, the transformation unit 1303 maps the predicted residuals in a certain scan order to a two-dimensional array and applies a two-dimensional orthogonal transformation to the resulting two-dimensional array. Alternatively, the transformation unit 1303 may select an orthogonal transformation method from among multiple orthogonal transformation methods. In this case, the three-dimensional data encoding device 1300 adds information to the bitstream indicating which orthogonal transformation method was used. Alternatively, the transformation unit 1303 may select an orthogonal transformation method from among multiple orthogonal transformation methods of different dimensions. In this case, the three-dimensional data encoding device 1300 adds information to the bitstream indicating which dimension's orthogonal transformation method was used.

[0390] For example, the conversion unit 1303 matches the scan order of the predicted residuals to the scan order in the octree within the volume (such as breadth-first or depth-first). This eliminates the need to add information indicating the scan order of the predicted residuals to the bitstream, thus reducing overhead. Alternatively, the conversion unit 1303 may apply a scan order different from the octree scan order. In this case, the three-dimensional data encoding device 1300 adds information indicating the scan order of the predicted residuals to the bitstream. This allows the three-dimensional data encoding device 1300 to efficiently encode the predicted residuals. Furthermore, the three-dimensional data encoding device 1300 may add information (such as a flag) to the bitstream indicating whether or not to apply the octree scan order, and if the octree scan order is not applied, it may add information indicating the scan order of the predicted residuals to the bitstream.

[0391] The conversion unit 1303 may convert not only the predicted residual of the color information but also other attribute information possessed by the voxel. For example, the conversion unit 1303 may convert and encode information such as reflectance obtained when a point cloud is acquired by LiDAR or the like.

[0392] The conversion unit 1303 may skip processing if the space does not contain attribute information such as color information. The three-dimensional data encoding device 1300 may also add information (flags) to the bitstream indicating whether or not to skip processing by the conversion unit 1303.

[0393] The quantization unit 1304 generates quantization coefficients by quantizing the frequency components of the predicted residual generated by the conversion unit 1303 using 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 in world units, space units, or volume units. In this case, the three-dimensional data coding device 1300 adds the quantization control parameters to the respective header information. The quantization unit 1304 may also perform quantization control by changing the weight for each frequency component of the predicted 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 parameters representing the weight of each frequency component to the header.

[0394] The quantization unit 1304 may skip processing if the space does not contain attribute information such as color information. The three-dimensional data encoding device 1300 may also add information (flags) to the bitstream indicating whether or not to skip processing by the quantization unit 1304.

[0395] The inverse quantization unit 1305 generates inverse quantization coefficients of the prediction residual by performing inverse quantization on the quantization coefficients generated by the quantization unit 1304 using quantization control parameters, and outputs the generated inverse quantization coefficients to the inverse transform unit 1306.

[0396] The inverse transform unit 1306 generates the predicted residual after the inverse transform by applying the inverse transform to the inverse quantization coefficients generated by the inverse quantization unit 1305. Since this predicted residual after the inverse transform is the predicted residual generated after quantization, it does not need to perfectly match the predicted residual output by the transform unit 1303.

[0397] The summing unit 1307 adds the predicted residual after applying the inverse transform, generated by the inverse transform unit 1306, to the predicted volume generated by the intra-prediction or inter-prediction described later, which was used to generate the predicted residual before quantization, to generate a reconstructed volume. This reconstructed volume is stored in the reference volume memory 1308 or the reference space memory 1310.

[0398] The intra prediction unit 1309 generates a predicted volume for the volume to be encoded using attribute information of adjacent volumes stored in the reference volume memory 1308. Attribute information includes voxel color information or reflectance. The intra prediction unit 1309 generates predicted values ​​for the color information or reflectance of the volume to be encoded.

[0399] Figure 44 is a diagram illustrating the operation of the intra prediction unit 1309. For example, the intra prediction unit 1309 generates a predicted volume for the volume to be encoded (volume idx=3), as shown in Figure 44, from the adjacent volume (volume idx=0). Here, volume idx is identifier information attached to volumes within the space, and a different value is assigned to each volume. The order in which volume idx is assigned may be the same as the encoding order, or it may be a different order. For example, the intra prediction unit 1309 uses the average value of the color information of the voxels contained in the adjacent volume, volume idx=0, as the predicted value of the color information of the volume to be encoded, as shown in Figure 44. In this case, a prediction residual is generated by subtracting the predicted value of the color information from the color information of each voxel contained in the volume to be encoded. Processing from the conversion unit 1303 onwards is performed on this prediction residual. In this case, the three-dimensional data encoding device 1300 adds the adjacent volume information and the prediction mode information to the bitstream. Here, adjacent volume information refers to information indicating the adjacent volume used for prediction, for example, the volume IDX of the adjacent volume used for prediction. Prediction mode information refers to the mode used to generate the predicted volume. A mode is, for example, an average mode that generates predicted values ​​from the average values ​​of voxels within the adjacent volume, or an intermediate mode that generates predicted values ​​from the median values ​​of voxels within the adjacent volume.

[0400] The intra-prediction unit 1309 may generate a predicted volume from multiple adjacent volumes. For example, in the configuration shown in Figure 44, the intra-prediction unit 1309 generates predicted volume 0 from the volume with volume idx=0 and predicted volume 1 from the volume with volume idx=1. The intra-prediction unit 1309 then generates the average of predicted volume 0 and predicted volume 1 as the final predicted volume. In this case, the three-dimensional data encoding device 1300 may add multiple volume idx values ​​from the multiple volumes used to generate the predicted volume to the bitstream.

[0401] Figure 45 schematically shows the interpretation process according to this embodiment. The interpretation unit 1311 encodes (interprets) a space (SPC) at a certain time T_Cur using an encoded space at a different time T_LX. In this case, the interpretation unit 1311 performs the encoding process by applying rotation and translation processing to the encoded space at the different time T_LX.

[0402] Furthermore, the three-dimensional data encoding device 1300 adds RT information related to rotation and translation processing applied to a space at a different time T_LX to the bitstream. A different time T_LX is, for example, a time T_L0 prior to a certain time T_Cur. In this case, the three-dimensional data encoding device 1300 may also add RT information RT_L0 related to rotation and translation processing applied to the space at time T_L0 to the bitstream.

[0403] Alternatively, a different time T_LX is, for example, a time T_L1 that is later than a certain time T_Cur. In this case, the three-dimensional data encoding device 1300 may add RT information RT_L1 related to rotation and translation processing applied to the space at time T_L1 to the bitstream.

[0404] Alternatively, the interpretation unit 1311 performs encoding (dual prediction) by referring to both spaces at different times T_L0 and T_L1. In this case, the three-dimensional data encoding device 1300 may add both RT information RT_L0 and RT_L1, which relate to rotation and translation applied to each space, to the bitstream.

[0405] In the above, T_L0 is defined as a time before T_Cur and T_L1 as a time after T_Cur, but this is not necessarily the only way. For example, both T_L0 and T_L1 may be times before T_Cur. Alternatively, both T_L0 and T_L1 may be times after T_Cur.

[0406] Furthermore, when the three-dimensional data encoding device 1300 performs encoding by referencing multiple spaces at different times, it may add rotation and translation-related RT information applied to each space to the bitstream. For example, the three-dimensional data encoding device 1300 manages the multiple encoded spaces to be referenced using 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, then the three-dimensional data encoding device 1300 adds the RT information RT_L0R0 for L0R0, RT information RT_L0R1 for L0R1, RT information RT_L1R0 for L1R0, and RT information RT_L1R1 for L1R1 to the bitstream. For example, the three-dimensional data encoding device 1300 adds this RT information to the bitstream header, etc.

[0407] Furthermore, when the three-dimensional data encoding device 1300 performs encoding by referencing multiple reference spaces at different times, it determines whether or not to apply rotation and translation for each reference space. In this case, the three-dimensional data encoding device 1300 may add information (such as an RT application flag) indicating whether or not rotation and translation have been applied for each reference space to the bitstream header information, etc. For example, the three-dimensional data encoding device 1300 calculates RT information and an ICP error value for each reference space referenced from the space to be encoded using the ICP (Interactive Closest Point) algorithm. If the ICP error value is less than or equal to a predetermined value, the three-dimensional data encoding device 1300 determines that rotation and translation are not necessary and sets the RT application flag to off. On the other hand, if the ICP error value is greater than the above-mentioned predetermined value, the three-dimensional data encoding device 1300 sets the RT application flag to on and adds the RT information to the bitstream.

[0408] Figure 46 shows an example of syntax for adding RT information and RT application flags to the header. The number of bits allocated to each syntax may be determined within the range of possible values ​​for that syntax. For example, if the reference list L0 contains 8 reference spaces, 3 bits may be allocated to MaxRefSpc_l0. The number of bits allocated may be variable depending on the possible values ​​for each syntax, or it may be fixed regardless of the possible values. If the number of bits allocated is fixed, the three-dimensional data encoding device 1300 may add that fixed number of bits to separate header information.

[0409] Here, as shown in Figure 46, MaxRefSpc_l0 indicates the number of reference spaces included in reference list L0. RT_flag_l0[i] is the RT application flag for reference space i in reference list L0. If RT_flag_l0[i] is 1, rotation and translation are applied to reference space i. If RT_flag_l0[i] is 0, rotation and translation are not applied to reference space i.

[0410] R_l0[i] and T_l0[i] are the RT information for reference space i in reference list L0. R_l0[i] is the rotation information for reference space i in reference list L0. The rotation information indicates the content of the applied rotation operation, such as a rotation matrix or quaternion. T_l0[i] is the translation information for reference space i in reference list L0. The translation information indicates the content of the applied translation operation, such as a translation vector.

[0411] 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. If RT_flag_l1[i] is 1, rotation and translation are applied to reference space i. If RT_flag_l1[i] is 0, rotation and translation are not applied to reference space i.

[0412] R_l1[i] and T_l1[i] are the RT information for reference space i in reference list L1. R_l1[i] is the rotation information for reference space i in reference list L1. The rotation information indicates the content of the applied rotation operation, such as a rotation matrix or quaternion. T_l1[i] is the translation information for reference space i in reference list L1. The translation information indicates the content of the applied translation operation, such as a translation vector.

[0413] The interpretation unit 1311 generates a predicted volume of the volume to be encoded using the encoded reference space information stored in the reference space memory 1310. As described above, before generating the predicted volume of the volume to be encoded, the interpretation unit 1311 uses the Interactive Closest Point (ICP) algorithm to obtain RT information in the volume to be encoded and the reference space in order to bring the overall positional relationship between the volume to be encoded and the reference space closer together. Then, the interpretation unit 1311 obtains reference space B by applying rotation and translation processing to the reference space using the obtained RT information. After that, the interpretation unit 1311 generates a predicted volume of the volume to be encoded in the volume to be encoded using the information in reference space B. Here, the three-dimensional data encoding device 1300 adds the RT information used to obtain reference space B to the header information of the volume to be encoded, etc.

[0414] Thus, the interpretation 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 space to be encoded and the reference space closer together, and then generating a predicted volume using the information from the reference space. Furthermore, since the prediction residual can be suppressed, the amount of coding can be reduced. Note that here, an example of performing ICP using the space to be encoded and the reference space has been shown, but this is not necessarily the only example. For example, in order to reduce the amount of processing, the interpretation unit 1311 may obtain RT information by performing ICP using at least one of the space to be encoded with a reduced number of voxels or point clouds, and the reference space with a reduced number of voxels or point clouds.

[0415] Furthermore, the interpretation unit 1311 may determine that rotation and translation processing is unnecessary if the ICP error value obtained as a result of ICP is smaller than a predetermined first threshold, that is, if the positional relationship between the space to be encoded and the reference space is close, 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.

[0416] Furthermore, if the interpretation unit 1311 determines that the shape change between spaces is large when the ICP error value is greater than a predetermined second threshold, it may apply intraprediction to all volumes of the space to be encoded. Hereinafter, the space to which intraprediction is applied will be referred to as the intraspace. The second threshold is a value greater than the first threshold mentioned above. In addition, any method that can obtain RT information from two voxel sets or two point cloud sets may be applied, not limited to ICP.

[0417] Furthermore, if the three-dimensional data includes attribute information such as shape or color, the interpretation unit 1311 searches for a volume in the reference space that has the closest attribute information (shape or color, etc.) to the volume to be encoded, for example, within the reference space, as the predicted volume for the volume to be encoded within the encoding space. This reference space is, for example, the reference space after the rotation and translation processing described above has been performed. The interpretation unit 1311 generates a predicted volume from the volume (reference volume) obtained through the search. Figure 47 is a diagram illustrating the operation of generating a predicted volume. When the interpretation unit 1311 encodes the volume to be encoded (volume idx=0) shown in Figure 47 using interpretation, it scans the reference volumes in the reference space sequentially and searches for the volume with the smallest predicted residual, which is the difference between the volume to be encoded and the reference volume. The interpretation unit 1311 selects the volume with the smallest predicted residual as the predicted volume. The predicted residual between the volume to be encoded and the predicted volume is encoded by the processing from the conversion unit 1303 onward. Here, the predicted residual is the difference between the attribute information of the volume to be encoded and the attribute information of the predicted volume. Furthermore, the three-dimensional data encoding device 1300 adds the volume idx of the reference volume in the reference space referenced as the predicted volume to the bitstream header, etc.

[0418] In the example shown in Figure 47, the reference volume with volume idx=4 in reference space L0R0 is selected as the predicted volume for the volume to be encoded. Then, the predicted residual between the volume to be encoded and the reference volume, along with the reference volume idx=4, are encoded and appended to the bitstream.

[0419] While this example demonstrates the generation of predicted volume for attribute information, similar processing may be applied to the predicted volume for location information.

[0420] The prediction control unit 1312 controls whether to encode the volume to be encoded using intra-prediction or inter-prediction. Here, the mode that includes intra-prediction and inter-prediction is called the prediction mode. For example, the prediction control unit 1312 calculates the prediction residual when the volume to be encoded is predicted using intra-prediction and the prediction residual when it is predicted using inter-prediction as evaluation values, and selects the prediction mode with the smaller evaluation value. Alternatively, the prediction control unit 1312 may calculate the actual code amount by applying orthogonal transformation, quantization, and entropy coding to the prediction residuals of intra-prediction and inter-prediction, respectively, and select the prediction mode using the calculated code amount as the evaluation value. In addition, overhead information other than the prediction residual (such as reference volume idx information) may be added to the evaluation value. Furthermore, if it is predetermined that the space to be encoded will be encoded in intra-space, the prediction control unit 1312 may always select intra-prediction.

[0421] The entropy coding unit 1313 generates an encoded signal (encoded bitstream) by variable-length encoding the quantization coefficients, which are input from the quantization unit 1304. Specifically, the entropy coding unit 1313, for example, binarizes the quantization coefficients and arithmetically encodes the resulting binary signal.

[0422] Next, a three-dimensional data decoding device that decodes the encoded signal generated by the three-dimensional data encoding device 1300 will be described. Figure 48 is a block diagram of the three-dimensional data decoding device 1400 according to this embodiment. This three-dimensional data decoding device 1400 comprises an entropy decoding unit 1401, an inverse quantization unit 1402, an inverse transform unit 1403, an adder 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.

[0423] The entropy decoding unit 1401 decodes the encoded signal (encoded bitstream) to a variable length. For example, the entropy decoding unit 1401 arithmetically decodes the encoded signal to generate a binary signal, and then generates quantization coefficients from the generated binary signal.

[0424] The inverse quantization unit 1402 generates inverse quantization coefficients by inverse quantizing the quantization coefficients input from the entropy decoding unit 1401 using quantization parameters added to the bitstream or the like.

[0425] The inverse transform unit 1403 generates the predicted residual by inversely transforming the inverse quantization coefficients input from the inverse quantization unit 1402. For example, the inverse transform unit 1403 generates the predicted residual by inversely transforming the inverse quantization coefficients based on the information added to the bitstream.

[0426] The summing unit 1404 adds the predicted residual generated by the inverse transform unit 1403 and the predicted volume generated by intra-prediction or inter-prediction to generate a reconstructed volume. This reconstructed volume is output as decoded three-dimensional data and stored in the reference volume memory 1405 or the reference space memory 1407.

[0427] The intra-prediction unit 1406 generates a predicted volume through intra-prediction using the reference volume in the reference volume memory 1405 and the information attached to the bitstream. Specifically, the intra-prediction unit 1406 acquires adjacent volume information (e.g., volume idx) and prediction mode information attached to the bitstream, and generates a predicted volume using the adjacent volume indicated by the adjacent volume information and the mode indicated by the prediction mode information. The details of these processes are the same as those of the intra-prediction unit 1309 described above, except that the information attached to the bitstream is used.

[0428] The interpretation unit 1408 generates a predicted volume by interpretation using the reference space in the reference space memory 1407 and the information attached to the bitstream. Specifically, the interpretation unit 1408 applies rotation and translation processing to the reference space using the RT information for each reference space attached to the bitstream, and generates a predicted volume using the reference space after processing. If an RT application flag for each reference space exists in the bitstream, the interpretation unit 1408 applies rotation and translation processing to the reference space according to the RT application flag. The details of these processes are the same as those of the interpretation unit 1311 described above, except that the information attached to the bitstream is used.

[0429] The prediction control unit 1409 controls whether to decode the volume to be decoded using intra-prediction or inter-prediction. For example, the prediction control unit 1409 selects intra-prediction or inter-prediction according to information attached to the bitstream indicating the prediction mode to be used. The prediction control unit 1409 may always select intra-prediction if it has been predetermined that the space to be decoded will be decoded in intra-space.

[0430] The following describes modifications of this embodiment. In this embodiment, an example of applying rotation and translation on a space-by-space basis has been described, but rotation and translation may be applied on a finer scale. For example, the three-dimensional data encoding device 1300 may divide the space into subspaces and apply rotation and translation on a subspace-by-subspace basis. In this case, the three-dimensional data encoding device 1300 generates RT information for each subspace and adds the generated RT information to the bitstream header, etc. Alternatively, the three-dimensional data encoding device 1300 may apply rotation and translation on a volume-by-volume basis, which is the encoding unit. In this case, the three-dimensional data encoding device 1300 generates RT information on an encoding volume-by-volume basis and adds the generated RT information to the bitstream header, etc. Furthermore, the above may be combined. That is, the three-dimensional data encoding device 1300 may apply rotation and translation on a larger scale and then apply rotation and translation on a finer scale. For example, the three-dimensional data encoding device 1300 may apply rotation and translation on a space-by-space basis and then apply different rotations and translations to each of the multiple volumes contained in the resulting space.

[0431] Furthermore, although this embodiment describes an example in which rotation and translation are applied to the reference space, it 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 scaling processing, for example. Also, the three-dimensional data encoding device 1300 may apply one or two of rotation, translation, and scaling. In addition, when processing is applied in multiple stages to different units as described above, the type of processing applied to each unit may differ. For example, rotation and translation may be applied to the space unit, and translation may be applied to the volume unit.

[0432] These modifications can also be applied to the three-dimensional data decoding device 1400.

[0433] As described above, the three-dimensional data encoding device 1300 according to this embodiment performs the following processing. Figure 48 is a flowchart of the interpretation processing performed by the three-dimensional data encoding device 1300.

[0434] First, the three-dimensional data encoding device 1300 generates predicted position information (e.g., predicted volume) using the position information of three-dimensional points contained in reference three-dimensional data (e.g., reference space) at a different time from the target three-dimensional data (e.g., the space to be encoded) (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 contained in the reference three-dimensional data.

[0435] The three-dimensional data encoding device 1300 may perform rotation and translation processing in a first unit (e.g., space) and generate predicted position information in a second unit (e.g., volume) that is finer than the first unit. For example, the three-dimensional data encoding device 1300 searches for a volume among several volumes included in the reference space after rotation and translation processing that has the smallest difference in position information between it and the volume to be encoded included in the space to be encoded, and uses the obtained volume as the predicted volume. The three-dimensional data encoding device 1300 may perform rotation and translation processing and the generation of predicted position information in the same unit.

[0436] Furthermore, 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 the position information of three-dimensional points included in the reference three-dimensional data, and then 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 three-dimensional points obtained by the first rotation and translation process.

[0437] Here, the position information and predicted position information of a three-dimensional point are represented in an octree structure, for example, as shown in Figure 41. For example, the position information and predicted position information of a three-dimensional point are represented in a scan order that prioritizes width over depth in the octree structure. Alternatively, the position information and predicted position information of a three-dimensional point are represented in a scan order that prioritizes depth over width in the octree structure.

[0438] Furthermore, as shown in Figure 46, the three-dimensional data encoding device 1300 encodes an RT application flag indicating whether or not to apply rotation and translation processing to the position information of three-dimensional points included in the reference three-dimensional data. In other words, the three-dimensional data encoding device 1300 generates an encoded signal (encoded bitstream) that includes the RT application flag. The three-dimensional data encoding device 1300 also encodes RT information indicating the content of the rotation and translation processing. In other words, the three-dimensional data encoding device 1300 generates an encoded signal (encoded bitstream) that includes RT information. Note that the three-dimensional data encoding device 1300 encodes RT information when the RT application flag indicates that rotation and translation processing should be applied, and does not encode RT information when the RT application flag indicates that rotation and translation processing should not be applied.

[0439] Furthermore, the three-dimensional data includes, for example, positional information of three-dimensional points and attribute information (color information, etc.) of each three-dimensional point. The three-dimensional data encoding device 1300 generates predicted attribute information using the attribute information of three-dimensional points included in the reference three-dimensional data (S1302).

[0440] Next, the three-dimensional data encoding device 1300 encodes the position information of the three-dimensional points included in the target three-dimensional data using the predicted position information. For example, as shown in Figure 38, the three-dimensional data encoding device 1300 calculates differential position information, which is the difference between the position information of the three-dimensional points included in the target three-dimensional data and the predicted position information (S1303).

[0441] Furthermore, the three-dimensional data encoding device 1300 encodes the attribute information of three-dimensional points included in the target three-dimensional data using predicted attribute information. For example, the three-dimensional data encoding device 1300 calculates differential attribute information, which is the difference between the attribute information of three-dimensional points included in the target three-dimensional data and the predicted attribute information (S1304). Next, the three-dimensional data encoding device 1300 performs conversion and quantization of the calculated differential attribute information (S1305).

[0442] Finally, the three-dimensional data encoding device 1300 encodes (for example, entropy encoding) the differential position information and the quantized differential attribute information (S1306). In other words, the three-dimensional data encoding device 1300 generates an encoded signal (encoded bitstream) that includes the differential position information and the differential attribute information.

[0443] Furthermore, if the three-dimensional data does not contain attribute information, the three-dimensional data encoding device 1300 does not need to perform steps S1302, S1304, and S1305. Also, the three-dimensional data encoding device 1300 may perform only one of the following: encoding the position information of the three-dimensional points or encoding the attribute information of the three-dimensional points.

[0444] Furthermore, the processing order shown in Figure 49 is just one example and is not limited thereto. For example, the processing of location information (S1301, S1303) and the processing of attribute information (S1302, S1304, S1305) are independent of each other and may be performed in any order, or some may be processed in parallel.

[0445] As described above, in this embodiment, the three-dimensional data encoding device 1300 generates predicted position information using the position information of three-dimensional points contained in reference three-dimensional data at a different time from the target three-dimensional data, and encodes the difference in position information, which is the difference between the position information of three-dimensional points contained in the target three-dimensional data and the predicted position information. This reduces the amount of data in the encoded signal, thereby improving encoding efficiency.

[0446] Furthermore, in this embodiment, the three-dimensional data encoding device 1300 generates predicted attribute information using the attribute information of three-dimensional points included in the reference three-dimensional data, and encodes differential attribute information, which is the difference between the attribute information of three-dimensional points included in the target three-dimensional data and the predicted attribute information. This reduces the amount of data in the encoded signal, thereby improving encoding efficiency.

[0447] For example, the three-dimensional data encoding device 1300 includes a processor and memory, and the processor uses the memory to perform the above processing.

[0448] Figure 48 is a flowchart of the interpretation process performed by the three-dimensional data decoding device 1400.

[0449] First, the three-dimensional data decoding device 1400 decodes (for example, entropy decoding) the differential position information and differential attribute information from the encoded signal (encoded bitstream) (S1401).

[0450] Furthermore, the three-dimensional data decoding device 1400 decodes an RT application flag from the encoded signal, which indicates whether or not rotation and translation processing should be applied to the position information of the three-dimensional points included in the reference three-dimensional data. The three-dimensional data decoding device 1400 also decodes RT information indicating the content of the rotation and translation processing. Note that the three-dimensional data decoding device 1400 decodes the RT information when the RT application flag indicates that rotation and translation processing should be applied, and does not need to decode the RT information when the RT application flag indicates that rotation and translation processing should not be applied.

[0451] Next, the three-dimensional data decoding device 1400 performs inverse quantization and inverse transformation on the decoded differential attribute information (S1402).

[0452] Next, the three-dimensional data decoding device 1400 generates predicted position information (e.g., predicted volume) using the position information of three-dimensional points contained in reference three-dimensional data (e.g., reference space) at a different time from the target three-dimensional data (e.g., the space to be decoded) (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 contained in the reference three-dimensional data.

[0453] More specifically, the three-dimensional data decoding device 1400 applies rotation and translation processing to the position information of three-dimensional points included in the reference three-dimensional data indicated by the RT information when the RT application flag indicates that rotation and translation processing should be applied. On the other hand, when the RT application flag indicates that rotation and translation processing should not be applied, the three-dimensional data decoding device 1400 does not apply rotation and translation processing to the position information of three-dimensional points included in the reference three-dimensional data.

[0454] The three-dimensional data decoding device 1400 may perform rotation and translation processing in a first unit (e.g., space) and generate predicted position information in a second unit (e.g., volume) that is finer than the first unit. Alternatively, the three-dimensional data decoding device 1400 may perform rotation and translation processing and generate predicted position information in the same unit.

[0455] Furthermore, 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 three-dimensional points included in the reference three-dimensional data, and then 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 three-dimensional points obtained by the first rotation and translation process.

[0456] Here, the position information and predicted position information of a three-dimensional point are represented in an octree structure, for example, as shown in Figure 41. For example, the position information and predicted position information of a three-dimensional point are represented in a scan order that prioritizes width over depth in the octree structure. Alternatively, the position information and predicted position information of a three-dimensional point are represented in a scan order that prioritizes depth over width in the octree structure.

[0457] The three-dimensional data decoding device 1400 generates predicted attribute information using the attribute information of three-dimensional points contained in the reference three-dimensional data (S1404).

[0458] Next, the three-dimensional data decoding device 1400 decodes the encoded position information contained in the encoded signal using the predicted position information to reconstruct the position information of the three-dimensional points contained in the target three-dimensional data. Here, the encoded position information is, for example, the difference position information, and the three-dimensional data decoding device 1400 reconstructs the position information of the three-dimensional points contained in the target three-dimensional data by adding the difference position information and the predicted position information (S1405).

[0459] Furthermore, the three-dimensional data decoding device 1400 reconstructs the attribute information of three-dimensional points contained in the target three-dimensional data by decoding the encoded attribute information contained in the encoded signal using the predicted attribute information. Here, the encoded attribute information is, for example, the difference attribute information, and the three-dimensional data decoding device 1400 reconstructs the attribute information of three-dimensional points contained in the target three-dimensional data by adding the difference attribute information and the predicted attribute information (S1406).

[0460] Furthermore, if the three-dimensional data does not contain attribute information, the three-dimensional data decoding device 1400 does not need to perform steps S1402, S1404, and S1406. Also, the three-dimensional data decoding device 1400 may perform only one of the following: decoding the position information of the three-dimensional points or decoding the attribute information of the three-dimensional points.

[0461] Furthermore, the processing order shown in Figure 50 is just one example and is not limited thereto. For example, the processing of location information (S1403, S1405) and the processing of attribute information (S1402, S1404, S1406) are independent of each other and may be performed in any order, or some may be processed in parallel.

[0462] (Embodiment 8) Three-dimensional point cloud information includes geometry and attribute information. Geometry includes coordinates (x, y, and z coordinates) relative to a given point. When encoding geometry, instead of directly encoding the coordinates of each three-dimensional point, a method is used to reduce the amount of encoding by representing the position of each three-dimensional point using an octave tree and encoding the information in the octave tree.

[0463] On the other hand, attribute information includes information such as color information (RGB, YUV, etc.), reflectance, and normal vector for each three-dimensional point. For example, a three-dimensional data encoding device can encode attribute information using a different encoding method than that used for positional information.

[0464] This embodiment describes a method for encoding attribute information. In this embodiment, integer values ​​are used as the values ​​of the attribute information. For example, if each color component of the RGB or YUV color information is 8-bit precision, each color component can take an integer value between 0 and 255. If the reflectance value is 10-bit precision, the reflectance value can take an integer value between 0 and 1023. If the bit precision of the attribute information is decimal precision, the three-dimensional data encoding device may multiply the attribute information value by a scale value and then round it to an integer value. The three-dimensional data encoding device may also add this scale value to the bitstream header, etc.

[0465] One possible method for encoding attribute information of a three-dimensional point is to calculate a predicted value for the attribute information of the three-dimensional point and encode the difference (prediction residual) between the original attribute information value and the predicted value. For example, if the attribute information value of a three-dimensional point p is Ap and the predicted value is Pp, the three-dimensional data encoding device encodes the absolute difference Diffp = |Ap - Pp|. In this case, if the predicted value Pp can be generated with high accuracy, the value of the absolute difference Diffp will become smaller. Therefore, for example, the amount of encoding can be reduced by entropy encoding the absolute difference Diffp using an encoding table where the number of generated bits decreases as the value becomes smaller.

[0466] One possible method for generating predicted attribute information is to use the attribute information of a reference three-dimensional point, which is another three-dimensional point located around the target three-dimensional point to be encoded. Here, a reference three-dimensional point is a three-dimensional point located within a predetermined distance range from the target three-dimensional point. For example, if there is a target three-dimensional point p=(x1,y1,z1) and a three-dimensional point q=(x2,y2,z2), the three-dimensional data encoding device calculates the Euclidean distance d(p,q) between the three-dimensional point p and the three-dimensional point q as shown in (Equation A1).

[0467]

number

[0468] The 3D data encoding device determines that the position of 3D point q is close to the position of target 3D point p if the Euclidean distance d(p, q) is smaller than a predetermined threshold THd, and decides to use the attribute information value of 3D point q to generate the predicted attribute information value of target 3D point p. Note that the distance calculation method may be other; for example, the Mahalanobis distance may be used. Furthermore, the 3D data encoding device may decide not to use 3D points outside a predetermined distance range from the target 3D point in the prediction process. For example, if a 3D point r exists and the distance d(p, r) between target 3D p and 3D point r is greater than or equal to the threshold THd, the 3D data encoding device may decide not to use 3D point r in the prediction. Note that the 3D data encoding device may add information indicating the threshold THd to the bitstream header, etc.

[0469] Figure 51 shows an example of a three-dimensional point. In this example, the distance d(p, q) between the target three-dimensional point p and the three-dimensional point q is smaller than the threshold THd. Therefore, the three-dimensional data encoding device determines that the three-dimensional point q is the reference three-dimensional point of the target three-dimensional point p, and decides to use the value of the attribute information Aq of the three-dimensional point q to generate the predicted value Pp of the attribute information Ap of the target three-dimensional point p.

[0470] On the other hand, the distance d(p,r) between the target three-dimensional point p and the three-dimensional point r is greater than or equal to the threshold THd. Therefore, the three-dimensional data encoding device determines that the three-dimensional point r is not a reference three-dimensional point of the target three-dimensional point p, and determines that it will not use the value of the attribute information Ar of the three-dimensional point r to generate the predicted value Pp of the attribute information Ap of the target three-dimensional point p.

[0471] Furthermore, when a three-dimensional data encoding device encodes the attribute information of a target three-dimensional point using predicted values, it uses a three-dimensional point whose attribute information has already been encoded and decoded as a reference three-dimensional point. Similarly, when a three-dimensional data decoding device decodes the attribute information of a target three-dimensional point to be decoded using predicted values, it uses a three-dimensional point whose attribute information has already been decoded as a reference three-dimensional point. This allows the same predicted values ​​to be generated during encoding and decoding, so that the bitstream of three-dimensional points generated during encoding can be correctly decoded on the decoding side.

[0472] Furthermore, when encoding the attribute information of three-dimensional points, it is conceivable to classify each three-dimensional point into multiple levels using its positional information before encoding. Here, each classified level is called LoD (Level of Detail). The method for generating LoDs will be explained using Figure 52.

[0473] First, the 3D data encoding device selects an initial point a0 and assigns it to LoD0. Next, the 3D data encoding device extracts point a1 whose distance from point a0 is greater than the LoD0 threshold Thres_LoD[0] and assigns it to LoD0. Next, the 3D data encoding device extracts point a2 whose distance from point a1 is greater than the LoD0 threshold Thres_LoD[0] and assigns it to LoD0. In this way, the 3D data encoding device configures LoD0 such that the distance between each point in LoD0 is greater than the threshold Thres_LoD[0].

[0474] Next, the 3D data encoding device selects point b0, which has not yet been assigned a Level of Direction (LoD), and assigns it to LoD1. Next, the 3D data encoding device extracts point b1, which is farther from point b0 than the LoD1 threshold Thres_LoD[1] and has not yet been assigned a Level of Direction (LoD), and assigns it to LoD1. Next, the 3D data encoding device extracts point b2, which is farther from point b1 than the LoD1 threshold Thres_LoD[1] and has not yet been assigned a Level of Direction (LoD), and assigns it to LoD1. In this way, the 3D data encoding device configures LoD1 such that the distance between each point in LoD1 is greater than the threshold Thres_LoD[1].

[0475] Next, the 3D data encoding device selects point c0, which has not yet been assigned a LoD, and assigns it to LoD2. Next, the 3D data encoding device extracts point c1, which is farther from point c0 than the LoD2 threshold Thres_LoD[2] and has not yet been assigned a LoD, and assigns it to LoD2. Next, the 3D data encoding device extracts point c2, which is farther from point c1 than the LoD2 threshold Thres_LoD[2] and has not yet been assigned a LoD, and assigns it to LoD2. In this way, the 3D data encoding device configures LoD2 such that the distance between each point in LoD2 is greater than the threshold Thres_LoD[2]. For example, as shown in Figure 53, the thresholds Thres_LoD[0], Thres_LoD[1], and Thres_LoD[2] for each LoD are set.

[0476] Furthermore, the three-dimensional data encoding device may add information indicating the threshold for each LoD to the bitstream header, etc. For example, in the example shown in Figure 53, the three-dimensional data encoding device may add the thresholds Thres_LoD[0], Thres_LoD[1], and Thres_LoD[2] to the header.

[0477] Furthermore, the three-dimensional data encoding device may assign all three-dimensional points that have not yet been assigned a LoD to the lowest layer of the LoD. In this case, the three-dimensional data encoding device can reduce the amount of code in the header by not adding the threshold of the lowest layer of the LoD to the header. For example, in the example shown in Figure 53, the three-dimensional data encoding device adds the thresholds Thres_LoD[0] and Thres_LoD[1] to the header, but does not add Thres_LoD[2] to the header. In this case, the three-dimensional data decoding device may estimate the value of Thres_LoD[2] to be 0. The three-dimensional data encoding device may also add the number of LoD layers to the header. This allows the three-dimensional data decoding device to determine the lowest layer of the LoD using the number of LoD layers.

[0478] Furthermore, by setting the threshold values ​​for each layer of the LoD to be larger for higher layers, as shown in Figure 53, higher layers (layers closer to LoD0) become sparse point groups with greater distances between 3D points, while lower layers become dense point groups with closer distances between 3D points. In the example shown in Figure 53, LoD0 is the top layer.

[0479] Furthermore, the method for selecting the initial three-dimensional points when setting each LoD may depend on the coding order during positional information coding. For example, the three-dimensional data encoding device selects the first three-dimensional point coded during positional information coding as the initial point a0 of LoD0, and then uses initial point a0 as the base point to select points a1 and a2 to construct LoD0. Then, the three-dimensional data encoding device may select the three-dimensional point that was coded earliest among the three-dimensional points not belonging to LoD0 as the initial point b0 of LoD1. In other words, the three-dimensional data encoding device may select the three-dimensional point that was coded earliest among the three-dimensional points not belonging to the upper layers of LoDn (LoD0 to LoDn-1) as the initial point n0 of LoDn. As a result, the three-dimensional data decoding device can construct the same LoD as during coding by using the same initial point selection method during decoding, and thus can decode the bitstream appropriately. Specifically, the three-dimensional data decoding device selects the three-dimensional point that was coded earliest among the three-dimensional points not belonging to the upper layers of LoDn as the initial point n0 of LoDn.

[0480] The following describes a method for generating predicted attribute information of three-dimensional points using LoD information. For example, when a three-dimensional data encoding device encodes three-dimensional points sequentially starting from those contained in LoD0, it generates the target three-dimensional points contained in LoD1 using the encoded and decoded (hereinafter simply referred to as "encoded") attribute information contained in LoD0 and LoD1. In this way, the three-dimensional data encoding device generates predicted attribute information of three-dimensional points contained in LoDn using the encoded attribute information contained in LoDn' (n'<=n). In other words, the three-dimensional data encoding device does not use the attribute information of three-dimensional points contained in lower layers of LoDn to calculate predicted attribute information of three-dimensional points contained in LoDn.

[0481] For example, a three-dimensional data encoding device generates predicted attribute values ​​for a three-dimensional point by calculating the average of the attribute values ​​of N or fewer encoded three-dimensional points surrounding the target three-dimensional point to be encoded. Alternatively, the three-dimensional data encoding device may add the value of N to the bitstream header, etc. Furthermore, the three-dimensional data encoding device may change the value of N for each three-dimensional point and add the value of N to each three-dimensional point. This allows for the selection of an appropriate N for each three-dimensional point, thereby improving the accuracy of the predicted values ​​and reducing the prediction residual. Alternatively, the three-dimensional data encoding device may add the value of N to the bitstream header and fix the value of N within the bitstream. This eliminates the need to encode or decode the value of N for each three-dimensional point, thus reducing processing load. Finally, the three-dimensional data encoding device may encode the value of N separately for each Level of Data (LoD). This allows for the selection of an appropriate N for each LoD, improving encoding efficiency.

[0482] Alternatively, the three-dimensional data encoding device may calculate the predicted value of the attribute information of a three-dimensional point by using the weighted average of the attribute information of N surrounding encoded three-dimensional points. For example, the three-dimensional data encoding device calculates weights using the distance information between the target three-dimensional point and the N surrounding three-dimensional points.

[0483] When a 3D data encoding device encodes the value of N separately for each Level of Data (LoD), for example, it may set a larger value of N for higher layers of the LoD and a smaller value of N for lower layers. In the higher layers of the LoD, the distance between the 3D points is greater, so setting a larger value of N and selecting multiple surrounding 3D points for averaging may improve prediction accuracy. Conversely, in the lower layers of the LoD, the distance between the 3D points is smaller, so setting a smaller value of N allows for efficient prediction while reducing the processing load of averaging.

[0484] Figure 54 shows an example of attribute information used for prediction values. As described above, the prediction value of point P included in LoDN is generated using the encoded surrounding points P' included in LoDN'(N'<=N). Here, the surrounding points P' are selected based on their distance from point P. For example, the prediction value of the attribute information of point b2 shown in Figure 54 is generated using the attribute information of points a0, a1, a2, b0, and b1.

[0485] The surrounding points selected change depending on the value of N mentioned above. For example, if N=5, a0, a1, a2, b0, and b1 are selected as surrounding points of point b2. If N=4, points a0, a1, a2, and b1 are selected based on distance information.

[0486] The predicted value is calculated using a distance-dependent weighted average. For example, in the example shown in Figure 54, the predicted value a2p for point a2 is calculated using a weighted average of the attribute information of points a0 and a1, as shown in (Equations A2) and (Equations A3). i This is the attribute information value of point ai.

[0487]

number

[0488] Furthermore, the predicted value b2p for point b2 is calculated by the weighted average of the attribute information of points a0, a1, a2, b0, and b1, as shown in (Equations A4) to (Equations A6). i This is the attribute information value of point bi.

[0489]

number

[0490] Furthermore, the three-dimensional data encoding device may calculate the difference (prediction residual) between the attribute information value of a three-dimensional point and the predicted value generated from surrounding points, and then quantize the calculated prediction residual. For example, the three-dimensional data encoding device performs quantization by dividing the prediction residual by a quantization scale (also called a quantization step). In this case, the smaller the quantization scale, the smaller the error that may occur due to quantization (quantization error). Conversely, the larger the quantization scale, the larger the quantization error.

[0491] Furthermore, the 3D data encoding device may change the quantization scale used for each Level of Data (LoD). For example, the 3D data encoding device may use a smaller quantization scale in the upper layers and a larger quantization scale in the lower layers. Since the attribute information values ​​of 3D points belonging to the upper layers may be used as predicted values ​​for the attribute information of 3D points belonging to the lower layers, encoding efficiency can be improved by reducing the quantization scale in the upper layers to suppress quantization errors that may occur in the upper layers and increasing the accuracy of the predicted values. The 3D data encoding device may also add the quantization scale used for each LoD to the header or other components. This allows the 3D data decoding device to correctly decode the quantization scale, thus enabling proper decoding of the bitstream.

[0492] Furthermore, the three-dimensional data encoding device may convert the signed integer value (signed quantized value), which is the prediction residual after quantization, into an unsigned integer value (unsigned quantized value). This eliminates the need to consider the occurrence of negative integers when entropy encoding the prediction residual. Note that the three-dimensional data encoding device does not necessarily need to convert the signed integer value into an unsigned integer value; for example, the sign bit may be entropy encoded separately.

[0493] The predicted residual is calculated by subtracting the predicted value from the original value. For example, the predicted residual a2r for point a2 is calculated by subtracting the predicted value a2p for point a2 from the attribute information value A2 for point a2, as shown in (Equation A7). The predicted residual b2r for point b2 is calculated by subtracting the predicted value b2p for point b2 from the attribute information value B2 for point b2, as shown in (Equation A8).

[0494] a²r = A² - a²p ... (Equation A7)

[0495] b²r = B² - b²p ... (Equation A8)

[0496] Furthermore, the predicted residuals are quantized by dividing them by the QS (Quantization Step). For example, the quantized value a2q of point a2 is calculated by (Equation A9). The quantized value b2q of point b2 is calculated by (Equation A10). Here, QS_LoD0 is the QS for LoD0, and QS_LoD1 is the QS for LoD1. In other words, the QS may be changed according to the LoD.

[0497] a2q = a2r / QS_LoD0 ... (Equation A9)

[0498] b2q=b2r / QS_LoD1 (Formula A10)

[0499] Furthermore, the three-dimensional data encoding device converts the quantized value, which is a signed integer, into an unsigned integer as follows: If the signed integer value a2q is less than 0, the three-dimensional data encoding device sets the unsigned integer value a2u to -1-(2×a2q). If the signed integer value a2q is 0 or greater, the three-dimensional data encoding device sets the unsigned integer value a2u to 2×a2q.

[0500] Similarly, the three-dimensional data encoding device sets the unsigned integer value b2u to -1-(2×b2q) if the signed integer value b2q is less than 0. The three-dimensional data encoding device sets the unsigned integer value b2u to 2×b2q if the signed integer value b2q is 0 or greater.

[0501] Furthermore, the three-dimensional data encoding device may encode the predicted residuals (unsigned integer values) after quantization using entropy coding. For example, the unsigned integer values ​​may be binarized and then binary arithmetic coding may be applied.

[0502] In this case, the three-dimensional data encoding device may switch the binarization method depending on the value of the predicted residual. For example, if the predicted residual pu is smaller than the threshold R_TH, the three-dimensional data encoding device binarizes the predicted residual pu with a fixed number of bits required to represent the threshold R_TH. If the predicted residual pu is greater than or equal to the threshold R_TH, the three-dimensional data encoding device binarizes the binarized data of the threshold R_TH and the value of (pu-R_TH) using an exponential Golomb or the like.

[0503] For example, if the threshold R_TH is 63 and the predicted residual pu is less than 63, the three-dimensional data encoding device will binarize the predicted residual pu using 6 bits. If the predicted residual pu is 63 or greater, the three-dimensional data encoding device will perform arithmetic encoding by binarizing the binary data of the threshold R_TH (111111) and (pu-63) using an exponential golomb.

[0504] In a more specific example, if the predicted residual pu is 32, the three-dimensional data encoding device generates 6 bits of binary data (100000) and arithmetically encodes this bit sequence. Similarly, if the predicted residual pu is 66, the three-dimensional data encoding device generates binary data of the threshold R_TH (111111) and a bit sequence (00100) representing the value 3 (66-63) in exponential golombs, and arithmetically encodes this bit sequence (111111+00100).

[0505] In this way, the three-dimensional data encoding device can encode data while suppressing a rapid increase in the number of binarized bits when the predicted residual becomes large, by switching the binarization method according to the magnitude of the predicted residual. The three-dimensional data encoding device may also add a threshold R_TH to the bitstream header or the like.

[0506] For example, when encoding is performed at a high bit rate, i.e., when the quantization scale is small, the quantization error is small and the prediction accuracy is high, which may result in a smaller prediction residual. Therefore, in this case, the three-dimensional data encoding device sets a large threshold R_TH. This reduces the likelihood of encoding binarized data with a threshold R_TH, improving encoding efficiency. Conversely, when encoding is performed at a low bit rate, i.e., when the quantization scale is large, the quantization error is large and the prediction accuracy is poor, which may result in a larger prediction residual. Therefore, in this case, the three-dimensional data encoding device sets a small threshold R_TH. This prevents a rapid increase in the bit length of the binarized data.

[0507] Furthermore, the 3D data encoding device may switch the threshold R_TH for each Level of Data (LoD) and add the LoD threshold R_TH to the header, etc. In other words, the 3D data encoding device may switch the binarization method for each LoD. For example, in the upper layers, the distance between 3D points is large, so the prediction accuracy may be poor and as a result the prediction residual may be large. Therefore, the 3D data encoding device can prevent a rapid increase in the bit length of the binarized data by setting a small threshold R_TH for the upper layers. Also, in the lower layers, the distance between 3D points is small, so the prediction accuracy may be high and as a result the prediction residual may be small. Therefore, the 3D data encoding device can improve encoding efficiency by setting a large threshold R_TH for each layer.

[0508] Figure 55 is a diagram showing an example of an exponential Golomb code, illustrating the relationship between the value before binarization (multi-level) and the bit after binarization (code). Note that the 0s and 1s shown in Figure 55 may also be inverted.

[0509] Furthermore, the three-dimensional data encoding device applies arithmetic coding to the binarized data of the prediction residuals. This improves coding efficiency. Note that when applying arithmetic coding, the probability trends of the occurrence of 0 and 1 for each bit may differ between the n-bit code (the n-bit binarized portion of the binarized data) and the remaining code (the portion binarized using exponential golombs). Therefore, the three-dimensional data encoding device may switch the method of applying arithmetic coding between the n-bit code and the remaining code.

[0510] For example, a three-dimensional data encoding device performs arithmetic encoding of an n-bit code using a different encoding table (probability table) for each bit. In this case, the three-dimensional data encoding device may change the number of encoding tables used for each bit. For example, the three-dimensional data encoding device uses one encoding table to perform arithmetic encoding of the first bit b0 of an n-bit code. The three-dimensional data encoding device then uses two encoding tables for the next bit b1. Furthermore, the three-dimensional data encoding device switches the encoding table used for arithmetic encoding of bit b1 depending on the value of b0 (0 or 1). Similarly, the three-dimensional data encoding device uses four encoding tables for the next bit b2. Furthermore, the three-dimensional data encoding device switches the encoding table used for arithmetic encoding of bit b2 depending on the values ​​of b0 and b1 (0 to 3).

[0511] Thus, when the three-dimensional data encoding device arithmetically encodes each bit bn-1 of an n-bit code, 2 n-1 The system uses a set of encoding tables. Furthermore, the three-dimensional data encoding device switches the encoding table used depending on the value (generation pattern) of the bits prior to bn-1. This allows the three-dimensional data encoding device to use the appropriate encoding table for each bit, thereby improving encoding efficiency.

[0512] Note that the three-dimensional data encoding device may reduce the number of encoding tables used for each bit. For example, when arithmetic-encoding each bit bn-1, the three-dimensional data encoding device may switch between two encoding tables according to the value (occurrence pattern) of the m bits (m < n-1) before bn-1. This can improve the encoding efficiency while suppressing the number of encoding tables used for each bit. Note that the three-dimensional data encoding device may update the occurrence probabilities of 0 and 1 in each encoding table according to the value of the actually generated binarized data. Also, the three-dimensional data encoding device may fix the occurrence probabilities of 0 and 1 in the encoding tables of some bits. This can suppress the number of updates of the occurrence probabilities and thus reduce the processing amount. m Note that the three-dimensional data encoding device may update the occurrence probabilities of 0 and 1 in each encoding table according to the value of the actually generated binarized data. Also, the three-dimensional data encoding device may fix the occurrence probabilities of 0 and 1 in the encoding tables of some bits. This can suppress the number of updates of the occurrence probabilities and thus reduce the processing amount.

[0513] For example, when the n-bit code is b0b1b2…bn-1, the encoding table for b0 is one (CTb0). The encoding tables for b1 are two (CTb10, CTb11). Also, the encoding table to be used is switched according to the value (0 to 1) of b0. The encoding tables for b2 are four (CTb20, CTb21, CTb22, CTb23). Also, the encoding table to be used is switched according to the values (0 to 3) of b0 and b1. The encoding tables for bn-1 are two n-1 (CTbn0, CTbn1, …, CTbn(2 n-1 -1)). Also, the encoding table to be used is switched according to the value (0 to 2 n-1 -1) of b0b1…bn-2.

[0514] Note that the three-dimensional data encoding device may apply m-ary arithmetic encoding (m = 2 n ) that sets values from 0 to 2 n -1 without binarization to the n-bit code. Also, when the three-dimensional data encoding device arithmetic-encodes the n-bit code in m-ary, the three-dimensional data decoding device may also restore the n-bit code by m-ary arithmetic decoding.

[0515] Figure 56 is a diagram illustrating, for example, the processing when the remaining code is an exponential Golomb code. The remaining code, which is the part binarized using exponential Golomb, includes a prefix part and a suffix part, as shown in Figure 56. For example, a three-dimensional data encoding device switches the encoding table for the prefix part and the suffix part. That is, the three-dimensional data encoding device arithmetically encodes each bit in the prefix part using the encoding table for the prefix, and arithmetically encodes each bit in the suffix part using the encoding table for the suffix.

[0516] The three-dimensional data encoding device may update the probability of occurrence of 0 and 1 in each encoding table according to the actual values ​​of the binarized data that have occurred. Alternatively, the three-dimensional data encoding device may fix the probability of occurrence of 0 and 1 in either encoding table. This reduces the number of times the probability of occurrence is updated, thereby reducing the processing load. For example, the three-dimensional data encoding device may update the probability of occurrence for the prefix part and fix the probability of occurrence for the suffix part.

[0517] Furthermore, the three-dimensional data encoding device decodes the predicted residual after quantization by inverse quantization and reconstruction, and uses the decoded value, which is the decoded predicted residual, for predictions beyond the three-dimensional point to be encoded. Specifically, the three-dimensional data encoding device calculates the inverse quantized value by multiplying the predicted residual (quantized value) after quantization by the quantization scale, and obtains the decoded value (reconstructed value) by adding the inverse quantized value and the predicted value.

[0518] For example, the inverse quantization value a2iq of point a2 is calculated using the quantization value a2q of point a2 by (Equation A11). The inverse quantization value b2iq of point b2 is calculated using the quantization value b2q of point b2 by (Equation A12). Here, QS_LoD0 is the QS for LoD0, and QS_LoD1 is the QS for LoD1. In other words, the QS may be changed according to the LoD.

[0519] a2iq=a2q×QS_LoD0 (Formula A11)

[0520] b2iq=b2q×QS_LoD1 (Formula A12)

[0521] For example, the decoded value a2rec of point a2 is calculated by adding the predicted value a2p of point a2 to the inverse quantized value a2iq of point a2, as shown in (Equation A13). The decoded value b2rec of point b2 is calculated by adding the predicted value b2p of point b2 to the inverse quantized value b2iq of point b2, as shown in (Equation A14).

[0522] a2rec=a2iq+a2p (formula A13)

[0523] b2rec=b2iq+b2p (formula A14)

[0524] The following describes an example of bitstream syntax according to this embodiment. Figure 57 shows an example of attribute header syntax according to this embodiment. The attribute header is header information for attribute information. As shown in Figure 57, the attribute header includes hierarchy number information (NumLoD), three-dimensional point number information (NumOfPoint[i]), hierarchy threshold (Thres_Lod[i]), surrounding point number information (NumNeighorPoint[i]), prediction threshold (THd[i]), quantization scale (QS[i]), and binarization threshold (R_TH[i]).

[0525] The number of levels (NumLoD) indicates the number of levels of the Level of Data (LoD) used.

[0526] The three-dimensional point number information (NumOfPoint[i]) indicates the number of three-dimensional points belonging to hierarchy i. The three-dimensional data encoding device may also add total three-dimensional point number information (AllNumOfPoint), indicating the total number of three-dimensional points, to a separate header. In this case, the three-dimensional data encoding device does not need to add NumOfPoint[NumLoD-1], indicating the number of three-dimensional points belonging to the lowest layer, to the header. In this case, the three-dimensional data decoding device can calculate NumOfPoint[NumLoD-1] using (Equation A15). This reduces the amount of code in the header.

[0527]

Number

[0528] The hierarchical threshold (Thres_Lod[i]) is the threshold used for the setting of layer i. The three-dimensional data encoding device and the three-dimensional data decoding device configure LoDi such that the distance between each point in LoDi is greater than the threshold Thres_LoD[i]. Also, the three-dimensional data encoding device may not add the value of Thres_Lod[NumLoD - 1] (the bottom layer) to the header. In this case, the three-dimensional data decoding device estimates the value of Thres_Lod[NumLoD - 1] as 0. Thereby, the amount of code of the header can be reduced.

[0529] The surrounding point number information (NumNeighorPoint[i]) indicates the upper limit value of the number of surrounding points used for generating the predicted value of the three-dimensional points belonging to layer i. When the number M of surrounding points is less than NumNeighorPoint[i] (M < NumNeighorPoint[i]), the three-dimensional data encoding device may calculate the predicted value using M surrounding points. Also, when the three-dimensional data encoding device does not need to divide the value of NumNeighorPoint[i] for each LoD, it may add one piece of surrounding point number information (NumNeighorPoint) used for all LoDs to the header.

[0530] The prediction threshold (THd[i]) indicates the upper limit value of the distance between the surrounding three-dimensional points and the target three-dimensional point used for predicting the target three-dimensional point to be encoded or decoded at layer i. The three-dimensional data encoding device and the three-dimensional data decoding device do not use the three-dimensional points whose distance from the target three-dimensional point is farther than THd[i] for prediction. Note that when the three-dimensional data encoding device does not need to divide the value of THd[i] for each LoD, it may add one prediction threshold (THd) used for all LoDs to the header.

[0531] The quantization scale (QS[i]) indicates the quantization scale used for quantization and inverse quantization of layer i.

[0532] The binarization threshold (R_TH[i]) is a threshold used to switch the binarization method for the predicted residuals of three-dimensional points belonging to hierarchy i. For example, if the predicted residual is less than the threshold R_TH, the three-dimensional data encoder binarizes the predicted residual pu with a fixed number of bits. If the predicted residual is greater than or equal to the threshold R_TH, it binarizes the binarized data of threshold R_TH and the value of (pu - R_TH) using exponential golomb. If it is not necessary to switch the value of R_TH[i] for each LoD, the three-dimensional data encoder may add a single binarization threshold (R_TH) used for all LoDs to the header.

[0533] Note that R_TH[i] may be the maximum value that can be represented by n bits. For example, R_TH is 63 for 6 bits and 255 for 8 bits. Alternatively, instead of encoding the maximum value that can be represented by n bits as the binarization threshold, the 3D data encoder may encode the number of bits. For example, the 3D data encoder may add the value 6 to the header when R_TH[i]=63, and the value 8 when R_TH[i]=255. Alternatively, the 3D data encoder may define the minimum number of bits that represent R_TH[i] (minimum number of bits) and add the relative number of bits from the minimum value to the header. For example, the 3D data encoder may add the value 0 to the header when R_TH[i]=63 and the minimum number of bits is 6, and add the value 2 to the header when R_TH[i]=255 and the minimum number of bits is 6.

[0534] Furthermore, the three-dimensional data encoding device may entropy encode at least one of NumLoD, Thres_Lod[i], NumNeighborPoint[i], THd[i], QS[i], and R_TH[i] and add it to the header. For example, the three-dimensional data encoding device may binarize each value and then arithmetic encode it. Alternatively, the three-dimensional data encoding device may encode each value with a fixed length to reduce processing load.

[0535] Furthermore, the three-dimensional data encoding device does not need to include at least one of NumLoD, Thres_Lod[i], NumNeighborPoint[i], THd[i], QS[i], and R_TH[i] in the header. For example, at least one of these values ​​may be defined in the profile or level of a standard or similar specification. This can reduce the number of bits in the header.

[0536] Figure 58 shows an example of the syntax of attribute data according to this embodiment. This attribute data includes encoded data of attribute information for multiple three-dimensional points. As shown in Figure 58, the attribute data includes an n-bit code and a remaining code.

[0537] An n-bit code is the encoded data or a portion thereof of the predicted residual of the attribute information value. The bit length of the n-bit code depends on the value of R_TH[i]. For example, if the value of R_TH[i] is 63, the n-bit code is 6 bits, and if the value of R_TH[i] is 255, the n-bit code is 8 bits.

[0538] The remaining code is the coded data of the predicted residual of the attribute information value, coded using exponential golomb. This remaining code is coded or coded when the n-bit code is the same as R_TH[i]. The three-dimensional data decoder decodes the predicted residual by adding the value of the n-bit code and the value of the remaining code. If the n-bit code is not the same as R_TH[i], the remaining code does not need to be coded or coded.

[0539] The following describes the processing flow in the three-dimensional data encoding device. Figure 59 is a flowchart of the three-dimensional data encoding process performed by the three-dimensional data encoding device.

[0540] First, the three-dimensional data encoding device encodes the positional information (geometry) (S3001). For example, three-dimensional data encoding is performed using an octave tree representation.

[0541] The three-dimensional data encoding device reassigns the attribute information of the original three-dimensional point to the changed three-dimensional point if the position of the three-dimensional point changes due to quantization or the like after encoding the position information (S3002). For example, the three-dimensional data encoding device performs the reassignment by interpolating the value of the attribute information according to the amount of change in position. For example, the three-dimensional data encoding device detects N three-dimensional points that are close to the changed three-dimensional position and performs a weighted average of the attribute information values ​​of the N three-dimensional points. For example, in the weighted average, the three-dimensional data encoding device determines the weights based on the distance from the changed three-dimensional position to each of the N three-dimensional points. Then, the three-dimensional data encoding device determines the value obtained by the weighted average as the attribute information value of the changed three-dimensional point. Furthermore, if two or more three-dimensional points change to the same three-dimensional position due to quantization or the like, the three-dimensional data encoding device may assign the average value of the attribute information of the two or more three-dimensional points before the change as the attribute information value of the changed three-dimensional point.

[0542] Next, the three-dimensional data encoding device encodes the reassigned attribute information (Attribute) (S3003). For example, if the three-dimensional data encoding device encodes multiple types of attribute information, it may encode the multiple types of attribute information sequentially. For example, if the three-dimensional data encoding device encodes color and reflectance as attribute information, it may generate a bitstream in which the encoded result of reflectance is appended after the encoded result of color. Note that the order of the multiple encoded results of attribute information appended to the bitstream is not limited to this order and may be any order.

[0543] Furthermore, the three-dimensional data encoding device may add information to the header or elsewhere indicating the starting location of the encoded data for each attribute information within the bitstream. This allows the three-dimensional data decoding device to selectively decode the attribute information that needs to be decoded, thus omitting the decoding process for attribute information that does not need to be decoded. Therefore, the processing load of the three-dimensional data decoding device can be reduced. In addition, the three-dimensional data encoding device may encode multiple types of attribute information in parallel and integrate the encoding results into a single bitstream. This allows the three-dimensional data encoding device to encode multiple types of attribute information at high speed.

[0544] Figure 60 is a flowchart of the attribute information encoding process (S3003). First, the three-dimensional data encoding device sets the Level of Data (LoD) (S3011). In other words, the three-dimensional data encoding device assigns each three-dimensional point to one of several LoDs.

[0545] Next, the three-dimensional data encoding device starts a loop for each Level of Data (LoD) (S3012). In other words, the three-dimensional data encoding device repeatedly performs the processes in steps S3013 to S3021 for each LoD.

[0546] Next, the three-dimensional data encoding device starts a loop for each three-dimensional point (S3013). In other words, the three-dimensional data encoding device repeats the process from steps S3014 to S3020 for each three-dimensional point.

[0547] First, the three-dimensional data encoding device searches for multiple surrounding points, which are three-dimensional points that exist around the target three-dimensional point to be processed, in order to calculate the predicted value of the target three-dimensional point (S3014). Next, the three-dimensional data encoding device calculates the weighted average of the attribute information values ​​of the multiple surrounding points and sets the obtained value as the predicted value P (S3015). Next, the three-dimensional data encoding device calculates the prediction residual, which is the difference between the attribute information of the target three-dimensional point and the predicted value (S3016). Next, the three-dimensional data encoding device calculates the quantized value by quantizing the prediction residual (S3017). Next, the three-dimensional data encoding device arithmetically encodes the quantized value (S3018).

[0548] Furthermore, the three-dimensional data encoding device calculates the inverse quantized value by inverse quantizing the quantized value (S3019). Next, the three-dimensional data encoding device generates the decoded value by adding the predicted value to the inverse quantized value (S3020). Next, the three-dimensional data encoding device terminates the loop for three-dimensional points (S3021). Furthermore, the three-dimensional data encoding device terminates the loop for LoD (Line of Data) (S3022).

[0549] The following describes the three-dimensional data decoding process in a three-dimensional data decoding device that decodes the bitstream generated by the three-dimensional data encoding device described above.

[0550] The three-dimensional data decoder generates decoded binarized data by arithmetic decoding the binarized attribute information data within the bitstream generated by the three-dimensional data encoder in the same manner as the three-dimensional data encoder. If the three-dimensional data encoder switches the application method of arithmetic coding between the n-bit binarized portion (n-bit code) and the exponential golomb binarized portion (remaining code), the three-dimensional data decoder will perform decoding accordingly when applying arithmetic decoding.

[0551] For example, a three-dimensional data decoder performs arithmetic decoding of an n-bit code using a different coding table (decoding table) for each bit. In this case, the three-dimensional data decoder may change the number of coding tables used for each bit. For example, the first bit b0 of an n-bit code is decoded using one coding table. The three-dimensional data decoder then uses two coding tables for the next bit b1. Furthermore, the three-dimensional data decoder switches the coding table used for arithmetic decoding of bit b1 depending on the value of b0 (0 or 1). Similarly, the three-dimensional data decoder uses four coding tables for the next bit b2. Furthermore, the three-dimensional data decoder switches the coding table used for arithmetic decoding of bit b2 depending on the values ​​of b0 and b1 (0 to 3).

[0552] Thus, when the three-dimensional data decoder arithmetically decodes each bit bn-1 of the n-bit code, it uses n-1 two encoding tables. Also, the three-dimensional data decoder switches the encoding table to be used according to the value (generated pattern) of the bits before bn-1. Thereby, the three-dimensional data decoder can appropriately decode a bit stream with improved encoding efficiency by using an appropriate encoding table for each bit.

[0553] Note that the three-dimensional data decoder may reduce the number of encoding tables used for each bit. For example, when the three-dimensional data decoder arithmetically decodes each bit bn-1, it may switch two m encoding tables according to the value (generated pattern) of m bits (m < n - 1) before bn-1. Thereby, the three-dimensional data decoder can appropriately decode a bit stream with improved encoding efficiency while suppressing the number of encoding tables used for each bit. Note that the three-dimensional data decoder may update the occurrence probabilities of 0 and 1 in each encoding table according to the value of the actually generated binarized data. Also, the three-dimensional data decoder may fix the occurrence probabilities of 0 and 1 in the encoding tables of some bits. Thereby, the number of update times of the occurrence probability can be suppressed, so the processing amount can be reduced.

[0554] For example, when the n-bit code is b0b1b2…bn-1, the encoding table for b0 is one (CTb0). The encoding tables for b1 are two (CTb10, CTb11). Also, the encoding table is switched according to the value (0 to 1) of b0. The encoding tables for b2 are four (CTb20, CTb21, CTb22, CTb23). Also, the encoding table is switched according to the values (0 to 3) of b0 and b1. The encoding tables for bn-1 are n-1 two (CTbn0, CTbn1, …, CTbn(2 n-1 -1)). Also, the encoding table is switched according to the value (0 to 2 n-1 -1) of b0b1…bn-2.

[0555] Figure 61 illustrates, for example, the processing when the remaining code is an exponential Golomb code. The portion (remaining code) that the three-dimensional data encoding device has binarized and encoded using exponential Golomb includes a prefix section and a suffix section, as shown in Figure 61. For example, the three-dimensional data decoding device switches the encoding table between the prefix section and the suffix section. That is, the three-dimensional data decoding device arithmetically decodes each bit in the prefix section using the encoding table for the prefix, and arithmetically decodes each bit in the suffix section using the encoding table for the suffix.

[0556] The three-dimensional data decoder may update the probability of occurrence of 0 and 1 in each encoding table according to the value of the binarized data generated during decoding. Alternatively, the three-dimensional data decoder may fix the probability of occurrence of 0 and 1 in either encoding table. This reduces the number of updates to the occurrence probability, thereby reducing the processing load. For example, the three-dimensional data decoder may update the occurrence probability for the prefix section and fix the occurrence probability for the suffix section.

[0557] Furthermore, the three-dimensional data decoder decodes the quantized prediction residuals (unsigned integer values) by multi-leveling the binarized data of the arithmetic-decoded prediction residuals according to the encoding method used by the three-dimensional data encoding device. The three-dimensional data decoder first calculates the value of the decoded n-bit code by arithmetic decoding the binarized data of the n-bit code. Next, the three-dimensional data decoder compares the value of the n-bit code with the value of R_TH.

[0558] The three-dimensional data decoder determines that if the value of the n-bit code matches the value of R_TH, the next bit encoded with exponential golom exists, and arithmetic decoding is performed on the remaining code, which is the binarized data encoded with exponential golom. The three-dimensional data decoder then calculates the value of the remaining code from the decoded remaining code using a reverse lookup table that shows the relationship between the remaining code and its value. Figure 62 is a diagram showing an example of a reverse lookup table that shows the relationship between the remaining code and its value. Next, the three-dimensional data decoder obtains the multi-level quantized predicted residual by adding the obtained value of the remaining code to R_TH.

[0559] On the other hand, if the value of the n-bit code and the value of R_TH do not match (the value is smaller than R_TH), the three-dimensional data decoder uses the value of the n-bit code as the predicted residual after multi-level quantization. This allows the three-dimensional data decoder to appropriately decode the bitstream generated by the three-dimensional data encoding device by switching the binarization method according to the value of the predicted residual.

[0560] Furthermore, if the threshold R_TH is attached to the bitstream header, the three-dimensional data decoder may decode the value of the threshold R_TH from the header and switch the decoding method using the decoded value of the threshold R_TH. Also, if the threshold R_TH is attached to the header for each Level of Data (LoD), the three-dimensional data decoder may switch the decoding method using the decoded threshold R_TH for each LoD.

[0561] For example, if the threshold R_TH is 63 and the value of the decoded n-bit code is 63, the three-dimensional data decoder obtains the value of the remaining code by decoding the remaining code using exponential golomb. For example, in the example shown in Figure 62, the remaining code is 00100, and the value of the remaining code is obtained as 3. Next, the three-dimensional data decoder obtains the predicted residual value 66 by adding the threshold R_TH value 63 and the remaining code value 3.

[0562] Furthermore, if the value of the decoded n-bit code is 32, the three-dimensional data decoder sets the value of the n-bit code (32) to the value of the predicted residual.

[0563] Furthermore, the three-dimensional data decoder converts the decoded quantized prediction residual from an unsigned integer value to a signed integer value, for example, by the reverse of the processing performed in the three-dimensional data encoding device. This allows the three-dimensional data decoder to properly decode bitstreams generated without considering the occurrence of negative integers when entropy coding the prediction residual. Note that the three-dimensional data decoder does not necessarily need to convert unsigned integer values ​​to signed integer values; for example, when decoding a bitstream generated by separately entropy coding the sign bit, the sign bit may be decoded.

[0564] The three-dimensional data decoder generates decoded values ​​by decoding the predicted residuals after quantization, which have been converted to signed integer values, through inverse quantization and reconstruction. The three-dimensional data decoder also uses the generated decoded values ​​to predict the three-dimensional points and beyond that of the target of decoding. Specifically, the three-dimensional data decoder calculates the inverse quantized value by multiplying the predicted residuals after quantization by the decoded quantization scale, and then obtains the decoded value by adding the inverse quantized value and the predicted value.

[0565] The decoded unsigned integer value (unsigned quantized value) is converted to a signed integer value by the following process: If the LSB (least significant bit) of the decoded unsigned integer value a2u is 1, the three-dimensional data decoder sets the signed integer value a2q to -((a2u+1)>>1). If the LSB of the unsigned integer value a2u is not 1, the three-dimensional data decoder sets the signed integer value a2q to (a2u>>1).

[0566] Similarly, the 3D data decoder sets the signed integer b2q to -((b2u+1)>>1) if the LSB of the decoded unsigned integer b2u is 1. The 3D data decoder sets the signed integer b2q to (b2u>>1) if the LSB of the unsigned integer n2u is not 1.

[0567] Furthermore, the details of the inverse quantization and reconstruction process using the three-dimensional data decoding device are the same as those of the inverse quantization and reconstruction process using the three-dimensional data encoding device.

[0568] The following describes the processing flow in the three-dimensional data decoding device. Figure 63 is a flowchart of the three-dimensional data decoding process by the three-dimensional data decoding device. First, the three-dimensional data decoding device decodes the position information (geometry) from the bitstream (S3031). For example, the three-dimensional data decoding device performs decoding using an octave tree representation.

[0569] Next, the three-dimensional data decoder decodes attribute information from the bitstream (S3032). For example, if the three-dimensional data decoder decodes multiple types of attribute information, it may decode the multiple types of attribute information in order. For example, if the three-dimensional data decoder decodes color and reflectance as attribute information, it decodes the color encoding result and the reflectance encoding result in the order in which they are added to the bitstream. For example, if the reflectance encoding result is added after the color encoding result in the bitstream, the three-dimensional data decoder decodes the color encoding result, and then decodes the reflectance encoding result. The three-dimensional data decoder may decode the encoding results of the attribute information added to the bitstream in any order.

[0570] Furthermore, the three-dimensional data decoding device may obtain information indicating the start location of the encoded data for each attribute information within the bitstream by decoding the header, etc. This allows the three-dimensional data decoding device to selectively decode the attribute information that needs to be decoded, thus omitting the decoding process for attribute information that does not need to be decoded. Therefore, the processing load of the three-dimensional data decoding device can be reduced. In addition, the three-dimensional data decoding device may decode multiple types of attribute information in parallel and integrate the decoding results into a single three-dimensional point cloud. This allows the three-dimensional data decoding device to decode multiple types of attribute information at high speed.

[0571] Figure 64 is a flowchart of the attribute information decoding process (S3032). First, the three-dimensional data decoding device sets the Level of Direction (LoD) (S3041). That is, the three-dimensional data decoding device assigns each of the multiple three-dimensional points having decoded position information to one of the multiple LoDs. For example, this assignment method is the same as the assignment method used in the three-dimensional data encoding device.

[0572] Next, the three-dimensional data decoding device starts a loop for each Level of Data (LoD) (S3042). In other words, the three-dimensional data decoding device repeats the process from steps S3043 to S3049 for each LoD.

[0573] Next, the three-dimensional data decoding device starts a loop for each three-dimensional point (S3043). In other words, the three-dimensional data decoding device repeats the process from steps S3044 to S3048 for each three-dimensional point.

[0574] First, the three-dimensional data decoding device searches for multiple surrounding points, which are three-dimensional points that exist around the target three-dimensional point to be processed, in order to calculate the predicted value of the target three-dimensional point (S3044). Next, the three-dimensional data decoding device calculates the weighted average of the attribute information values ​​of the multiple surrounding points and sets the obtained value as the predicted value P (S3045). These processes are the same as those performed in the three-dimensional data encoding device.

[0575] Next, the three-dimensional data decoding device arithmetically decodes the quantized values ​​from the bitstream (S3046). The three-dimensional data decoding device also calculates the inverse quantized values ​​by inverse quantizing the decoded quantized values ​​(S3047). Next, the three-dimensional data decoding device generates the decoded values ​​by adding the predicted values ​​to the inverse quantized values ​​(S3048). Next, the three-dimensional data decoding device terminates the loop for each three-dimensional point (S3049). The three-dimensional data decoding device also terminates the loop for each Line of Data (LoD) (S3050).

[0576] Next, the configuration of the three-dimensional data encoding device and the three-dimensional data decoding device according to this embodiment will be described. Figure 65 is a block diagram showing the configuration of the three-dimensional data encoding device 3000 according to this embodiment. This three-dimensional data encoding device 3000 includes a position information encoding unit 3001, an attribute information reassignment unit 3002, and an attribute information encoding unit 3003.

[0577] The attribute information encoding unit 3003 encodes the position information (geometry) of multiple three-dimensional points included in the input point cloud. The attribute information reassignment unit 3002 reassigns the attribute information values ​​of multiple three-dimensional points included in the input point cloud using the encoding and decoding results of the position information. The attribute information encoding unit 3003 encodes the reassigned attribute information. The three-dimensional data encoding device 3000 generates a bitstream containing the encoded position information and encoded attribute information.

[0578] Figure 66 is a block diagram showing the configuration of a three-dimensional data decoding device 3010 according to this embodiment. This three-dimensional data decoding device 3010 includes a position information decoding unit 3011 and an attribute information decoding unit 3012.

[0579] The position information decoding unit 3011 decodes the position information (geometry) of multiple three-dimensional points from the bitstream. The attribute information decoding unit 3012 decodes the attribute information (attribute) of multiple three-dimensional points from the bitstream. The three-dimensional data decoding device 3010 generates an output point group by combining the decoded position information and the decoded attribute information.

[0580] As described above, the three-dimensional data encoding device according to this embodiment performs the processing shown in Figure 67. The three-dimensional data encoding device encodes a three-dimensional point having attribute information. First, the three-dimensional data encoding device calculates a predicted value of the attribute information of the three-dimensional point (S3061). Next, the three-dimensional data encoding device calculates a predicted residual, which is the difference between the attribute information of the three-dimensional point and the predicted value (S3062). Next, the three-dimensional data encoding device generates binary data by binarizing the predicted residual (S3063). Next, the three-dimensional data encoding device arithmetically encodes the binary data (S3064).

[0581] According to this, the three-dimensional data encoding device can reduce the amount of encoding data for attribute information by calculating the predicted residuals of attribute information and further binarizing and arithmetic encoding those predicted residuals.

[0582] For example, in arithmetic coding (S3064), the three-dimensional data coding device uses a different coding table for each bit of binary data. This allows the three-dimensional data coding device to improve coding efficiency.

[0583] For example, in arithmetic coding (S3064), the lower bits of binary data use more coding tables.

[0584] For example, in arithmetic coding (S3064), the three-dimensional data coding device selects a coding table to be used for arithmetic coding of the target bit according to the value of the higher-order bit of the target bit contained in the binary data. This allows the three-dimensional data coding device to select a coding table according to the value of the higher-order bit, thereby improving coding efficiency.

[0585] For example, in binarization (S3063), the three-dimensional data encoding device generates binary data by binarizing the predicted residual with a fixed number of bits if the predicted residual is less than the threshold (R_TH). If the predicted residual is greater than or equal to the threshold (R_TH), it generates binary data that includes a first code (n-bit code) with a fixed number of bits representing the threshold (R_TH) and a second code (remaining code) obtained by binarizing the value obtained by subtracting the threshold (R_TH) from the predicted residual using exponential golomb. In arithmetic encoding (S3064), the three-dimensional data encoding device uses different arithmetic encoding methods for the first code and the second code.

[0586] According to this, the three-dimensional data encoding device can improve encoding efficiency by, for example, arithmetic encoding the first code and the second code using arithmetic encoding methods suitable for each of the first and second codes.

[0587] For example, the three-dimensional data encoding device quantizes the prediction residuals, and in binarization (S3063), it binarizes the quantized prediction residuals. The threshold (R_TH) is changed according to the quantization scale in quantization. As a result, the three-dimensional data encoding device can use an appropriate threshold according to the quantization scale, thereby improving encoding efficiency.

[0588] For example, the second code includes a prefix part and a suffix part. In arithmetic coding (S3064), the three-dimensional data coding device uses different coding tables for the prefix part and the suffix part. This allows the three-dimensional data coding device to improve coding efficiency.

[0589] For example, a three-dimensional data encoding device comprises a processor and memory, and the processor uses the memory to perform the above processing.

[0590] Furthermore, the three-dimensional data decoding device according to this embodiment performs the processing shown in Figure 68. The three-dimensional data decoding device decodes three-dimensional points having attribute information. First, the three-dimensional data decoding device calculates predicted values ​​of the attribute information of the three-dimensional points (S3071). Next, the three-dimensional data decoding device generates binary data by arithmetic decoding of the encoded data contained in the bitstream (S3072). Next, the three-dimensional data decoding device generates predicted residuals by multi-leveling the binary data (S3073). Next, the three-dimensional data decoding device calculates the decoded values ​​of the attribute information of the three-dimensional points by adding the predicted values ​​and the predicted residuals (S3074).

[0591] According to this, the three-dimensional data decoding device can appropriately decode the bitstream of attribute information generated by calculating the predicted residuals of attribute information and then binarizing and arithmetic coding those predicted residuals.

[0592] For example, in arithmetic decoding (S3072), the three-dimensional data decoding device uses a different encoding table for each bit of the binary data. This allows the three-dimensional data decoding device to properly decode a bitstream with improved encoding efficiency.

[0593] For example, in arithmetic decoding (S3072), the lower bits of the binary data require a larger number of coding tables to be used.

[0594] For example, in arithmetic decoding (S3072), the three-dimensional data decoding device selects an encoding table to be used for arithmetic decoding of the target bit according to the value of the higher-order bit of the target bit contained in the binary data. This allows the three-dimensional data decoding device to appropriately decode a bitstream with improved encoding efficiency.

[0595] For example, in multi-level decoding (S3073), the three-dimensional data decoder generates a first value by multi-leveling the first code (n-bit code) with a fixed number of bits included in the binary data. If the first value is less than the threshold (R_TH), the three-dimensional data decoder determines the first value as the prediction residual. If the first value is greater than or equal to the threshold (R_TH), it generates a second value by multi-leveling the second code (remaining code), which is an exponential Golomb code included in the binary data, and generates the prediction residual by adding the first and second values. In arithmetic decoding (S3072), the three-dimensional data decoder uses different arithmetic decoding methods for the first and second codes.

[0596] According to this, the three-dimensional data decoding device can properly decode bitstreams with improved encoding efficiency.

[0597] For example, the three-dimensional data decoder dequantizes the prediction residual, and in addition (S3074), it adds the predicted value to the dequantized prediction residual. The threshold (R_TH) is changed according to the quantization scale in dequantization. This allows the three-dimensional data decoder to properly decode a bitstream with improved encoding efficiency.

[0598] For example, the second code includes a prefix portion and a suffix portion. In arithmetic decoding (S3072), the three-dimensional data decoding device uses different coding tables for the prefix portion and the suffix portion. This allows the three-dimensional data decoding device to appropriately decode a bitstream with improved coding efficiency.

[0599] For example, a three-dimensional data decoding device comprises a processor and memory, and the processor uses the memory to perform the above processing.

[0600] (Embodiment 9) Predicted values ​​may be generated using a method other than that of Embodiment 8. In the following, the three-dimensional point to be encoded may be referred to as the first three-dimensional point, and the three-dimensional points surrounding it may be referred to as the second three-dimensional point.

[0601] For example, in generating predicted values ​​for the attribute information of a three-dimensional point, the attribute value of the closest three-dimensional point among the encoded and decoded surrounding three-dimensional points of the three-dimensional point to be encoded may be used directly as the predicted value. Alternatively, prediction mode information (PredMode) may be added to each three-dimensional point during prediction value generation, allowing the generation of a predicted value by selecting one from multiple predicted values. In other words, for example, in a total of M prediction modes, the average value may be assigned to prediction mode 0, the attribute value of three-dimensional point A to prediction mode 1, ..., the attribute value of three-dimensional point Z to prediction mode M-1, and the prediction mode used for prediction may be added to the bitstream for each three-dimensional point. Thus, the first prediction mode value, which indicates the first prediction mode in which the average of the attribute information of the surrounding three-dimensional points is calculated as the predicted value, may be smaller than the second prediction mode value, which indicates the second prediction mode in which the attribute information of the surrounding three-dimensional points itself is calculated as the predicted value. Here, the "average value" calculated in prediction mode 0 is the average of the attribute values ​​of the three-dimensional points surrounding the three-dimensional point to be encoded.

[0602] Figure 69 is a diagram showing a first example of a table showing the predicted values ​​calculated in each prediction mode according to Embodiment 9. Figure 70 is a diagram showing an example of attribute information used for the predicted values ​​according to Embodiment 9. Figure 71 is a diagram showing a second example of a table showing the predicted values ​​calculated in each prediction mode according to Embodiment 9.

[0603] The number of prediction modes M may be appended to the bitstream. Alternatively, the number of prediction modes M may be defined by the standard's profile, level, etc., without being appended to the bitstream. Furthermore, the number of prediction modes M may be calculated from the number of three-dimensional points N used for prediction. For example, the number of prediction modes M may be calculated as M = N + 1.

[0604] Note that the table shown in Figure 69 is an example for the case where the number of three-dimensional points used for prediction is N=4 and the number of prediction modes is M=5. The predicted value of the attribute information of point b2 can be generated using the attribute information of points a0, a1, a2, and b1. When selecting one prediction mode from multiple prediction modes, one may select a prediction mode that generates the attribute values ​​of points a0, a1, a2, and b1 as predicted values ​​based on the distance information from point b2 to each of points a0, a1, a2, and b1. A prediction mode is assigned to each three-dimensional point to be encoded. The predicted value is calculated according to the value corresponding to the assigned prediction mode.

[0605] The table shown in Figure 71 is an example, similar to Figure 69, where the number of three-dimensional points used for prediction is N=4 and the number of prediction modes is M=5. The predicted value of the attribute information of point a2 can be generated using the attribute information of points a0 and a1. When selecting one prediction mode from multiple prediction modes, one may select a prediction mode that generates the attribute values ​​of points a0 and a1 as predicted values ​​based on the distance information from point a2 to each of points a0 and a1. A prediction mode is assigned to each three-dimensional point to be encoded. The predicted value is calculated according to the value corresponding to the assigned prediction mode.

[0606] Furthermore, if the number of adjacent points, i.e., the number of surrounding three-dimensional points N, is less than four, as in the case of point a2 above, the prediction mode for which no prediction value has been assigned may be marked as "not available" in the table.

[0607] Note that the assignment of prediction mode values ​​may be determined in order of distance from the three-dimensional point to be encoded. For example, the prediction mode value indicating multiple prediction modes is smaller the closer the distance from the three-dimensional point to be encoded to the surrounding three-dimensional points that have attribute information to be used as prediction values. In the example in Figure 69, points b1, a2, a1, and a0 are shown to be in the order of proximity to point b2, which is the three-dimensional point to be encoded. For example, in calculating the prediction value, the attribute information of point b1 is calculated as a prediction value in the prediction mode indicated by the prediction mode value "1" among the two or more prediction modes, and the attribute information of point a2 is calculated as a prediction value in the prediction mode indicated by the prediction mode value "2". In this way, the prediction mode value indicating the prediction mode in which the attribute information of point b1 is calculated as a prediction value is smaller than the prediction mode value indicating the prediction mode in which the attribute information of point a2, which is located further away from point b2 than point b1, is calculated as a prediction value.

[0608] This allows for assigning smaller prediction mode values ​​to points that are closer in distance and therefore more likely to be selected, thereby reducing the number of bits required to encode the prediction mode values. Alternatively, smaller prediction mode values ​​may be preferentially assigned to three-dimensional points belonging to the same Level of Deposition (LoD) as the three-dimensional point being encoded.

[0609] Figure 72 shows a third example of a table showing the predicted values ​​calculated in each prediction mode according to Embodiment 9. Specifically, the third example is an example where the attribute information used for the predicted value is a value based on the color information (YUV) of the surrounding three-dimensional points. Thus, the attribute information used for the predicted value may be color information indicating the color of the three-dimensional points.

[0610] As shown in Figure 72, the predicted value calculated in the prediction mode indicated by a prediction mode value of "0" is the average of each YUV component that defines the YUV color space. Specifically, this predicted value includes a weighted average Yave of Yb1, Ya2, Ya1, and Ya0, which are the Y component values ​​corresponding to points b1, a2, a1, and a0 respectively; a weighted average Uave of Ub1, Ua2, Ua1, and Ua0, which are the U component values ​​corresponding to points b1, a2, a1, and a0 respectively; and a weighted average Vave of Vb1, Va2, Va1, and Va0, which are the V component values ​​corresponding to points b1, a2, a1, and a0 respectively. Furthermore, the predicted values ​​calculated in the prediction modes indicated by prediction mode values ​​of "1" to "4" each include the color information of the surrounding three-dimensional points b1, a2, a1, and a0, respectively. The color information is represented by a combination of the Y, U, and V component values.

[0611] In Figure 72, the color information is shown using values ​​defined in the YUV color space, but it may also be shown using values ​​defined in the RGB color space or other color spaces.

[0612] Thus, in calculating the predicted value, two or more averages or attribute pieces of information may be calculated as the predicted value of the prediction mode. Furthermore, each of the two or more averages or attribute pieces of information may represent the values ​​of two or more components that define the color space.

[0613] For example, if a prediction mode is selected in the table in Figure 72, where the prediction mode value is "2", the Y, U, and V components of the attribute values ​​of the three-dimensional point to be encoded may be used as the prediction values ​​Ya2, Ua2, and Va2, respectively, for encoding. In this case, the prediction mode value "2" is added to the bitstream.

[0614] Figure 73 shows a fourth example of a table showing the predicted values ​​calculated in each prediction mode according to Embodiment 9. Specifically, the fourth example is an example where the attribute information used for the predicted value is a value based on the reflectance information of the surrounding three-dimensional points. The reflectance information is, for example, information indicating the reflectance R.

[0615] As shown in Figure 73, the predicted values ​​calculated in the prediction mode indicated by a prediction mode value of "0" are the weighted average Rave of the reflectances Rb1, Ra2, Ra1, and Ra0 corresponding to points b1, a2, a1, and a0, respectively. The predicted values ​​calculated in the prediction modes indicated by prediction mode values ​​of "1" to "4" are the reflectances Rb1, Ra2, Ra1, and Ra0 of the surrounding three-dimensional points b1, a2, a1, and a0, respectively.

[0616] For example, if a prediction mode is selected in the table in Figure 73, where the prediction mode value is "3", the reflectance of the attribute value of the three-dimensional point to be encoded may be used as the prediction value Ra1 for encoding. In this case, the prediction mode value "3" is added to the bitstream.

[0617] As shown in Figures 72 and 73, attribute information may include first attribute information and second attribute information of a different type from the first attribute information. The first attribute information may be, for example, color information. The second attribute information may be, for example, reflectance information. In calculating the predicted value, the first predicted value may be calculated using the first attribute information, and the second predicted value may be calculated using the second attribute information.

[0618] (Embodiment 10) As another example of encoding the attribute information of three-dimensional points using LoD information, we will explain a method of encoding multiple three-dimensional points sequentially, starting from the three-dimensional points included in the upper layers of the LoD. For example, when a three-dimensional data encoding device calculates the predicted value of the attribute value (attribute information) of a three-dimensional point included in LoDn, it may use a flag or the like to switch whether it is allowed to reference the attribute value of a three-dimensional point included in any LoD. For example, a three-dimensional data encoding device generates an EnableReferringSameLoD (same-layer reference permission flag), which is information indicating whether or not it is allowed to reference other three-dimensional points in the same LoD as the target three-dimensional point to be encoded. For example, if EnableReferringSameLoD has a value of 1, referencing within the same LoD is permitted, and if EnableReferringSameLoD has a value of 0, referencing within the same LoD is prohibited.

[0619] For example, a three-dimensional data encoding device selects three-dimensional points around a target three-dimensional point based on EnableReferringSameLoD, and generates predicted attribute values ​​for the target three-dimensional point by calculating the average of the attribute values ​​of up to N predetermined three-dimensional points among the selected surrounding three-dimensional points. The three-dimensional data encoding device also adds the value of N to the bitstream header, etc. Alternatively, the three-dimensional data encoding device may add the value of N to each three-dimensional point for which a predicted value is generated. This allows for the selection of an appropriate N for each three-dimensional point for which a predicted value is generated, thereby improving the accuracy of the predicted value and reducing the prediction residual.

[0620] Alternatively, the three-dimensional data encoding device may append the value of N to the bitstream header and fix the value of N within the bitstream. This eliminates the need to encode or decode the value of N for each three-dimensional point, thereby reducing the amount of processing required.

[0621] Alternatively, the three-dimensional data encoding device may encode information indicating the value of N separately for each Level of Direction (LoD). This improves encoding efficiency by selecting an appropriate value of N for each LoD. Furthermore, the three-dimensional data encoding device may calculate the predicted value of the attribute information of a three-dimensional point from the weighted average of the attribute information of N surrounding three-dimensional points. For example, the three-dimensional data encoding device calculates weights using the distance information between the target three-dimensional point and N surrounding three-dimensional points.

[0622] Thus, EnableReferringSameLoD indicates whether referencing three-dimensional points within the same LoD is permitted. For example, a value of 1 indicates that referencing is permitted, and a value of 0 indicates that referencing is not permitted. Note that in the case of a value of 1, three-dimensional points within the same LoD that have already been encoded or decoded may also be permitted to be referenced.

[0623] FIG. 74 is a diagram showing an example of a reference relationship when EnableReferringSameLoD = 0. The predicted value of the point P included in LoDN is generated using the reconstructed value P' included in LoDN' (N' < N) which is one layer above LoDN. Here, the reconstructed value P' is an attribute value (attribute information) that has been encoded and decoded. For example, the reconstructed value P' of adjacent points based on distance is used.

[0624] Also, in the example shown in FIG. 74, for example, the predicted value of b2 is generated using any of the attribute values of a0, a1, and a2. Even when b0 and b1 have been encoded and decoded, the reference to b0 and b1 is prohibited.

[0625] Thereby, the three-dimensional point data encoding device and the three-dimensional data decoding device can generate the predicted value of b2 without waiting for the encoding or decoding process of b0 and b1 to complete. That is, the three-dimensional point data encoding device and the three-dimensional data decoding device can calculate a plurality of predicted values for the attribute values of a plurality of three-dimensional points within the same LoD in parallel, thus reducing the processing time.

[0626] FIG. 75 is a diagram showing an example of a reference relationship when EnableReferringSameLoD = 1. The predicted value of the point P included in LoDN is generated using the reconstructed value P' included in LoDN' (N' ≤ N) which is in the same layer or one layer above LoDN. Here, the reconstructed value P' is an attribute value (attribute information) that has been encoded and decoded. For example, the reconstructed value P' of adjacent points based on distance is used.

[0627] Also, in the example shown in FIG. 75, for example, the predicted value of b2 is generated using any of the attribute values of a0, a1, a2, b0, and b1. That is, when b0 and b1 have already been encoded and decoded, they can be referenced.

[0628] Thereby, the three-dimensional data encoding device can generate the predicted value of b2 using the attribute information of many adjacent three-dimensional points. Therefore, the prediction accuracy is improved and the encoding efficiency is improved.

[0629] The following describes a method for limiting the number of searches when selecting N three-dimensional points to generate predicted attribute information for three-dimensional points. This reduces the amount of processing required.

[0630] For example, SearchNumPoint (search point information) is defined. SearchNumPoint indicates the number of searches when selecting N three-dimensional points to be used for prediction from the three-dimensional point cloud in the LoD. For example, the three-dimensional data encoding device may select the same number of three-dimensional points as indicated by SearchNumPoint from the total of T three-dimensional points contained in the LoD, and then select N three-dimensional points to be used for prediction from among the selected three-dimensional points. This eliminates the need for the three-dimensional data encoding device to search all T three-dimensional points contained in the LoD, thus reducing the processing load.

[0631] Furthermore, the three-dimensional data encoding device may switch the method for selecting the SearchNumPoint value depending on the location of the LoD being referenced. An example is shown below.

[0632] For example, if the reference LoD (Level of Data) that the 3D data encoding device (3D data encoding device) is referencing is at a higher level than the LoD to which the target 3D point belongs, it searches for the 3D point A that is closest in distance to the target 3D point among the 3D points included in the reference LoD. Next, the 3D data encoding device selects the number of 3D points indicated by SearchNumPoint that are adjacent to 3D point A. In this way, the 3D data encoding device can efficiently search for 3D points in higher levels that are close in distance to the target 3D point, thereby improving prediction efficiency.

[0633] For example, if the reference Level of Data (LoD) is on the same level as the LoD to which the target 3D point belongs, the 3D data encoding device will select a number of 3D points indicated by the SearchNumPoint that were encoded and decoded before the target 3D point.

[0634] This allows the 3D data encoding device to select a number of 3D points indicated by SearchNumPoint with low processing load. Alternatively, the 3D data encoding device may select a 3D point B that is close to the target 3D point from among the 3D points encoded and decoded before the target 3D point, and then select a number of 3D points indicated by SearchNumPoint that are adjacent to 3D point B. This allows the 3D data encoding device to efficiently search for 3D points in the same layer that are close to the target 3D point, thereby improving prediction efficiency.

[0635] Furthermore, when the 3D data encoding device selects N 3D points to be used for prediction from the number of 3D points indicated by SearchNumPoint, it may, for example, select the top N 3D points that are closest in distance to the target 3D point. This can improve prediction accuracy and thus improve encoding efficiency.

[0636] Alternatively, a SearchNumPoint can be prepared for each LoD, and the number of searches can be varied for each LoD. Figure 76 shows an example of setting the number of searches for each LoD. For example, as shown in Figure 76, SearchNumPoint[LoD0]=3 is defined for LoD0 and SearchNumPoint[LoD1]=2 for LoD1. In this way, a balance can be struck between processing load and encoding efficiency by switching the number of searches for each LoD.

[0637] In the example shown in Figure 76, a0, a1, and a2 are selected from LoD0 as three-dimensional points used to predict b2, and b0 and b1 are selected from LoD1. N three-dimensional points are selected from the selected a0, a1, a2, b0, and b1, and predicted values ​​are generated using the selected N three-dimensional points.

[0638] Furthermore, the predicted value of point P included in LoDN is generated using the reconstructed value P' included in LoDN' (N'≦N) at the same or higher layer as LoDN. Here, the reconstructed value P' is an encoded and decoded attribute value (attribute information). For example, the reconstructed value P' of adjacent points based on distance is used.

[0639] Furthermore, SearchNumPoint may represent the total number of searches across all LoDs. For example, if SearchNumPoint = 5, and LoD0 has been searched 3 times, then LoD1 can be searched 2 more times. This ensures the worst-case number of searches, thus stabilizing processing time.

[0640] The 3D data encoding device may add SearchNumPoint to the header or other elements. This allows the 3D data decoding device to decode SearchNumPoint from the header, thereby generating the same predicted value as the 3D data encoding device and enabling proper decoding of the bitstream. Furthermore, SearchNumPoint does not necessarily need to be added to the header; for example, the value of SearchNumPoint may be defined by a profile or level in a standard or similar specification. This reduces the number of bits in the header.

[0641] When calculating predicted attribute values ​​for three-dimensional points included in a LoDn, the following EnableReferenceLoD may be defined. This allows the three-dimensional data encoding device and the three-dimensional data decoding device to refer to EnableReferenceLoD (reference permission layer i...

Claims

1. A data encoding method for a plurality of three-dimensional points, each having attribute information, performed by an encoding device, Generate a bitstream containing encoded attribute information, The bitstream includes information for determining the number of layers, (i) If multiple levels are generated in accordance with the information that determines the number of levels, The process of sorting the aforementioned multiple three-dimensional points in Morton code order is executed, By assigning the plurality of three-dimensional points to one of the plurality of layers, the plurality of layers are generated. The attribute information is encoded using the hierarchical structure consisting of the aforementioned multiple layers. (ii) If the multiple layers are not generated according to the information that determines the number of layers, Without performing the process of rearranging the plurality of three-dimensional points in Morton code order, the attribute information is encoded in the order in which the plurality of three-dimensional points are input. Data encoding method.

2. Each of the plurality of levels is a Level of Detail (LoD) level. The data encoding method according to claim 1.

3. A method for decoding data of multiple encoded three-dimensional points, each having attribute information, performed by a decoding device, A bitstream containing the encoded plurality of three-dimensional points is obtained, Information for determining the number of layers is obtained from the aforementioned bitstream, (i) When multiple levels are generated from the multiple three-dimensional points according to the information that determines the number of levels, The process of sorting the aforementioned multiple three-dimensional points in Morton code order is executed, By assigning the plurality of three-dimensional points to one of the plurality of layers, the plurality of layers are generated. The attribute information is decoded using the hierarchical structure consisting of the aforementioned multiple layers. (ii) If, according to the information that determines the number of layers, the multiple layers are not generated, the attribute information is decoded in the order in which the multiple three-dimensional points were input, without performing the process of rearranging the multiple three-dimensional points in Morton code order. Data decoding method.

4. Each of the plurality of levels is a Level of Detail (LoD) level. The data decoding method according to claim 3.

5. A data encoding device that encodes data of multiple three-dimensional points, each having attribute information, Processor and Equipped with memory, The processor uses the memory to: Generate a bitstream containing encoded attribute information, The bitstream includes information for determining the number of layers, (i) If multiple levels are generated in accordance with the information that determines the number of levels, The process of sorting the aforementioned multiple three-dimensional points in Morton code order is executed, By assigning the plurality of three-dimensional points to one of the plurality of layers, the plurality of layers are generated. The attribute information is encoded using the hierarchical structure consisting of the aforementioned multiple layers. (ii) If the multiple layers are not generated according to the information that determines the number of layers, Without performing the process of rearranging the plurality of three-dimensional points in Morton code order, the attribute information is encoded in the order in which the plurality of three-dimensional points are input. Data encoding device.

6. A data decoding device that decodes data of multiple encoded three-dimensional points, each having attribute information, Processor and Equipped with memory, The processor uses the memory to: A bitstream containing the encoded plurality of three-dimensional points is obtained, Information for determining the number of layers is obtained from the aforementioned bitstream, (i) When multiple levels are generated from the multiple three-dimensional points according to the information that determines the number of levels, The process of sorting the aforementioned multiple three-dimensional points in Morton code order is executed, By assigning the plurality of three-dimensional points to one of the plurality of layers, the plurality of layers are generated. The attribute information is decoded using the hierarchical structure consisting of the aforementioned multiple layers. (ii) If, according to the information that determines the number of layers, the multiple layers are not generated, the attribute information is decoded in the order in which the multiple three-dimensional points were input, without performing the process of rearranging the multiple three-dimensional points in Morton code order. Data decoding device.

Citation Information

Patent Citations

  • Region-adaptive hierarchical transform and entropy coding for point cloud compression, and corresponding decompression

    US20170347100A1

  • Scalable point cloud compression with transform, and corresponding decompression

    US20170347122A1

  • Map display device

    WO2014020663A1

  • Three-dimensional information processing method and three-dimensional information processing apparatus

    WO2018038131A1

  • Serialising a representation of a three dimensional object

    WO2018071011A1