Encoding method, decoding method, encoding device, and decoding device
The implementation of RAHT in three-dimensional data encoding and decoding methods optimizes the transformation process by adaptively using prediction, addressing inefficiencies in existing methods and reducing resource consumption.
Patent Information
- Application Number
- JP2025060958
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-10-03
- Filing Date
- 2025-04-02
- Publication Date
- 2025-12-11
- Estimated Expiration
- 2040-10-02
AI Technical Summary
Existing three-dimensional data encoding and decoding methods are inefficient, requiring significant computational resources and data storage due to the large size of point clouds.
The use of Region Adaptive Hierarchical Transform (RAHT) for encoding and decoding three-dimensional data, which adaptively determines whether to perform a prediction process based on the number of adjacent nodes containing coefficients, optimizing the transformation process to improve efficiency.
This approach enhances encoding and decoding efficiency by selectively using prediction processes, reducing computational and storage requirements while maintaining data integrity.
Smart Images

Figure 0007784583000035 
Figure 0007784583000036 
Figure 0007784583000037
Abstract
Description
[Technical Field]
[0001] The present disclosure relates to a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding device, and a three-dimensional data decoding device. [Background technology]
[0002] In the future, devices and services that utilize 3D data are expected to become widespread in a wide range of fields, including computer vision for autonomous operation of automobiles or robots, map information, surveillance, infrastructure inspection, video distribution, etc. 3D data can be acquired in a variety of ways, including distance sensors such as range finders, stereo cameras, or a combination of multiple monocular cameras.
[0003] One method of representing three-dimensional data is a point cloud, which represents the shape of a three-dimensional structure using a group of points in three-dimensional space. A point cloud stores the position and color of the points. Point clouds are expected to become the mainstream method of representing three-dimensional data, but point clouds require a very large amount of data. Therefore, when storing or transmitting three-dimensional data, data compression through encoding is essential, just as with two-dimensional video images (examples include MPEG-4 AVC or HEVC standardized by MPEG).
[0004] In addition, compression of point clouds is partially supported by public libraries that perform point cloud-related processing (Point Cloud Library).
[0005] Furthermore, a technique is known in which three-dimensional map data is used to search for and display facilities located around a vehicle (see, for example, Patent Document 1). [Prior art documents] [Patent documents]
[0006] [Patent Document 1] International Publication No. 2014 / 020663 Summary of the Invention [Problem to be solved by the invention]
[0007] In the encoding process and decoding process of three-dimensional data, it is desirable to be able to improve the encoding efficiency.
[0008] An object of the present disclosure is to provide a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding device, or a three-dimensional data decoding device that can improve encoding efficiency. [Means for solving the problem]
[0009] An encoding method according to one embodiment of the present disclosure is an encoding method using RAHT (Region Adaptive Hierarchical Transform), which determines whether a count value indicating the number of adjacent nodes containing coefficients is greater than or equal to a threshold value or less than the threshold value, and if the count value is greater than or equal to the threshold value, generates multiple first coefficients by performing a first transformation process including a prediction process using one or more adjacent nodes on multiple coefficients of multiple child nodes, and if the count value is less than the threshold value, generates multiple second coefficients by performing a second transformation process not including the prediction process using the one or more adjacent nodes on multiple coefficients of multiple child nodes.
[0010] A decoding method according to one embodiment of the present disclosure is a decoding method using RAHT (Region Adaptive Hierarchical Transform), which determines whether a count value indicating the number of adjacent nodes containing coefficients is greater than or equal to a threshold value or less than the threshold value, and if the count value is greater than or equal to the threshold value, generates a plurality of first inverse transform coefficients by performing a first inverse transform process including a prediction process using one or more adjacent nodes on a plurality of first coefficients, and if the count value is less than the threshold value, generates a plurality of second inverse transform coefficients by performing a second inverse transform process not including the prediction process using the one or more adjacent nodes on a plurality of first coefficients. [Effects of the Invention]
[0011] The present disclosure can provide a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding device, or a three-dimensional data decoding device that can improve encoding efficiency. [Brief explanation of the drawings]
[0012] [Figure 1] FIG. 1 is a diagram showing the structure of encoded three-dimensional data according to the first embodiment. [Figure 2] FIG. 2 is a diagram showing an example of a prediction structure between SPCs belonging to the lowest layer of a GOS according to the first embodiment. [Figure 3] FIG. 3 is a diagram showing an example of an inter-layer prediction structure according to the first embodiment. [Figure 4] FIG. 4 is a diagram showing an example of the coding order of the GOS according to the first embodiment. [Figure 5] FIG. 5 is a diagram showing an example of the coding order of GOS according to the first embodiment. [Figure 6] FIG. 6 is a diagram illustrating an example of meta information according to the first embodiment. [Figure 7] FIG. 7 is a schematic diagram showing how three-dimensional data is transmitted and received between vehicles according to the second embodiment. [Figure 8] FIG. 8 is a diagram illustrating an example of three-dimensional data transmitted between vehicles according to the second embodiment. [Figure 9] FIG. 9 is a diagram for explaining the transmission process of three-dimensional data according to the third embodiment. [Figure 10] FIG. 10 is a diagram showing a configuration of a system according to the fourth embodiment. [Figure 11] FIG. 11 is a block diagram of a client device according to the fourth embodiment. [Figure 12] FIG. 12 is a block diagram of a server according to the fourth embodiment. [Figure 13] FIG. 13 is a flowchart of a three-dimensional data creation process performed by a client device according to the fourth embodiment. [Figure 14]FIG. 14 is a flowchart of a sensor information transmission process performed by a client device according to the fourth embodiment. [Figure 15] FIG. 15 is a flowchart of three-dimensional data creation processing by the server according to the fourth embodiment. [Figure 16] FIG. 16 is a flowchart of a three-dimensional map transmission process performed by the server according to the fourth embodiment. [Figure 17] FIG. 17 is a diagram showing a configuration of a modified example of the system according to the fourth embodiment. [Figure 18] FIG. 18 is a diagram illustrating the configurations of a server and a client device according to the fourth embodiment. [Figure 19] FIG. 19 is a diagram illustrating the configurations of a server and a client device according to the fifth embodiment. [Figure 20] FIG. 20 is a flowchart of processing by the client device according to the fifth embodiment. [Figure 21] FIG. 21 is a diagram illustrating a configuration of a sensor information collection system according to the fifth embodiment. [Figure 22] FIG. 22 is a diagram illustrating an example of a volume according to the sixth embodiment. [Figure 23] FIG. 23 is a diagram showing an example of an octree representation of a volume according to the sixth embodiment. [Figure 24] FIG. 24 is a diagram illustrating an example of a bit string of a volume according to the sixth embodiment. [Figure 25] FIG. 25 is a diagram showing an example of an octree representation of a volume according to the sixth embodiment. [Figure 26] FIG. 26 is a diagram illustrating an example of a volume according to the sixth embodiment. [Figure 27] FIG. 27 is a diagram for explaining encoding of attribute information using RAHT according to the seventh embodiment. [Figure 28] FIG. 28 is a diagram showing an example of setting a quantization scale for each layer according to the seventh embodiment. [Figure 29] FIG. 29 is a diagram showing examples of a first code string and a second code string according to the seventh embodiment. [Figure 30] FIG. 30 is a diagram illustrating an example of a truncated unary code according to the seventh embodiment. [Figure 31] FIG. 31 is a diagram illustrating the inverse Haar transform according to the seventh embodiment. [Figure 32] FIG. 32 is a diagram illustrating an example of the syntax of attribute information according to the seventh embodiment. [Figure 33] FIG. 33 is a diagram showing an example of coding coefficients and ZeroCnt according to the seventh embodiment. [Figure 34] FIG. 34 is a flowchart of three-dimensional data encoding processing according to the seventh embodiment. [Figure 35] FIG. 35 is a flowchart of the attribute information encoding process according to the seventh embodiment. [Figure 36] FIG. 36 is a flowchart of the coding coefficient coding process according to the seventh embodiment. [Figure 37] FIG. 37 is a flowchart of three-dimensional data decoding processing according to the seventh embodiment. [Figure 38] FIG. 38 is a flowchart of the attribute information decoding process according to the seventh embodiment. [Figure 39] FIG. 39 is a flowchart of the coding coefficient decoding process according to the seventh embodiment. [Figure 40] FIG. 40 is a block diagram of an attribute information encoding unit according to the seventh embodiment. [Figure 41] FIG. 41 is a block diagram of an attribute information decoding unit according to the seventh embodiment. [Figure 42] FIG. 42 shows examples of a first code string and a second code string according to a modification of the seventh embodiment. [Figure 43] FIG. 43 is a diagram illustrating an example of the syntax of attribute information according to a modification of the seventh embodiment. [Figure 44] FIG. 44 is a diagram showing examples of coding coefficients, ZeroCnt, and TotalZeroCnt according to a modification of the seventh embodiment. [Figure 45] FIG. 45 is a flowchart of a coding coefficient coding process according to a variation of the seventh embodiment. [Figure 46] FIG. 46 is a flowchart of a coding coefficient decoding process according to a modification of the seventh embodiment. [Figure 47] FIG. 47 is a diagram illustrating an example of the syntax of attribute information according to a modification of the seventh embodiment. [Figure 48] FIG. 48 is a diagram showing the configuration of a three-dimensional data encoding device according to the eighth embodiment. [Figure 49] FIG. 49 is a diagram showing the configuration of a three-dimensional data decoding device according to the eighth embodiment. [Figure 50] FIG. 50 is a diagram for explaining the RAHT according to the eighth embodiment. [Figure 51] FIG. 51 is a diagram for explaining integer-to-integer conversion according to the eighth embodiment. [Figure 52] FIG. 52 is a diagram for explaining the hierarchical conversion process according to the eighth embodiment. [Figure 53] FIG. 53 is a block diagram of a three-dimensional data encoding device according to the eighth embodiment. [Figure 54] FIG. 54 is a block diagram of a lossless attribute information encoding unit according to the eighth embodiment. [Figure 55] FIG. 55 is a block diagram of an integer conversion unit according to the eighth embodiment. [Figure 56] FIG. 56 is a block diagram of a three-dimensional data decoding device according to the eighth embodiment. [Figure 57] FIG. 57 is a block diagram of a lossless attribute information decoding unit according to the eighth embodiment. [Figure 58] FIG. 58 is a block diagram of an inverse integer transform unit according to the eighth embodiment. [Figure 59] FIG. 59 is a flowchart of the lossless attribute information encoding process according to the eighth embodiment. [Figure 60] FIG. 60 is a flowchart of the lossless attribute information decoding process according to the eighth embodiment. [Figure 61] FIG. 61 is a diagram illustrating an example of the configuration of an integer Haar transform unit according to the eighth embodiment. [Figure 62]FIG. 62 is a diagram illustrating an example of the configuration of an inverse integer Haar transform unit according to the eighth embodiment. [Figure 63] FIG. 63 is a diagram showing the configuration of a three-dimensional data encoding device according to the eighth embodiment. [Figure 64] FIG. 64 is a diagram showing the configuration of a three-dimensional data decoding device according to the eighth embodiment. [Figure 65] FIG. 65 is a diagram showing the configuration of a three-dimensional data encoding device according to the eighth embodiment. [Figure 66] FIG. 66 is a diagram showing the configuration of a three-dimensional data decoding device according to the eighth embodiment. [Figure 67] FIG. 67 is a diagram showing an example of the structure of a bitstream according to the eighth embodiment. [Figure 68] FIG. 68 is a diagram showing an example of the structure of a bitstream according to the eighth embodiment. [Figure 69] FIG. 69 is a diagram showing the configuration of a three-dimensional data encoding device according to the ninth embodiment. [Figure 70] FIG. 70 is a diagram showing the configuration of a three-dimensional data decoding device according to the ninth embodiment. [Figure 71] FIG. 71 is a diagram showing an example of the structure of a bitstream according to the ninth embodiment. [Figure 72] FIG. 72 is a diagram illustrating a configuration example of an integer RAHT-Haar transform unit according to the ninth embodiment. [Figure 73] FIG. 73 is a diagram illustrating an example of the configuration of an inverse integer RAHT-Haar transform unit according to the ninth embodiment. [Figure 74] FIG. 74 is a flowchart of three-dimensional data encoding processing according to the ninth embodiment. [Figure 75] FIG. 75 is a flowchart of three-dimensional data decoding processing according to the ninth embodiment. [Figure 76] FIG. 76 is a diagram illustrating a prediction process according to the tenth embodiment. [Figure 77] FIG. 77 is a diagram showing the relationship between the nodes according to the tenth embodiment. [Figure 78]FIG. 78 is a diagram showing a first example of an encoding method according to the tenth embodiment. [Figure 79] FIG. 79 is a diagram illustrating a first example of a decoding method according to the tenth embodiment. [Figure 80] FIG. 80 shows a second example of the coding method according to the tenth embodiment. [Figure 81] FIG. 81 is a diagram showing a second example of the decoding method according to the tenth embodiment. [Figure 82] FIG. 82 is a diagram showing a third example of the encoding method according to the tenth embodiment. [Figure 83] FIG. 83 is a diagram illustrating a third example of the decoding method according to the tenth embodiment. [Figure 84] FIG. 84 is a diagram showing a fourth example of the coding method according to the tenth embodiment. [Figure 85] FIG. 85 is a diagram showing a fourth example of the decoding method according to the tenth embodiment. [Figure 86] FIG. 86 is a diagram showing a fifth example of the coding method according to the tenth embodiment. [Figure 87] FIG. 87 is a diagram showing a fifth example of the decoding method according to the tenth embodiment. [Figure 88] FIG. 88 is a flowchart of three-dimensional data encoding processing according to the tenth embodiment. [Figure 89] FIG. 89 is a flowchart of three-dimensional data decoding processing according to the tenth embodiment. [Figure 90] FIG. 90 is a diagram illustrating a prediction process according to the eleventh embodiment. [Figure 91] FIG. 91 is a diagram illustrating a first example of the encoding process according to the eleventh embodiment. [Figure 92] FIG. 92 is a diagram illustrating a first example of the decoding process according to the eleventh embodiment. [Figure 93] FIG. 93 is a diagram illustrating an example of the syntax of an attribute information header according to the eleventh embodiment. [Figure 94] FIG. 94 is a diagram illustrating an example of the syntax of an attribute information header according to the eleventh embodiment. [Figure 95] FIG. 95 is a flowchart of three-dimensional data encoding processing according to the eleventh embodiment. [Figure 96] FIG. 96 is a flowchart of three-dimensional data decoding processing according to the eleventh embodiment. [Figure 97] FIG. 97 is a diagram illustrating a second example of the encoding process according to the eleventh embodiment. [Figure 98] FIG. 98 is a diagram illustrating an example of the syntax of an attribute information header according to the eleventh embodiment. [Figure 99] FIG. 99 is a diagram illustrating an example of the syntax of an attribute information header according to the eleventh embodiment. [Figure 100] FIG. 100 is a flowchart of three-dimensional data encoding processing according to the eleventh embodiment. [Figure 101] FIG. 101 is a flowchart of three-dimensional data decoding processing according to the eleventh embodiment. [Figure 102] FIG. 102 is a diagram illustrating a third example of the encoding process according to the eleventh embodiment. [Figure 103] FIG. 103 is a diagram illustrating an example of the syntax of an attribute information header according to the eleventh embodiment. [Figure 104] FIG. 104 is a diagram illustrating an example of the syntax of an attribute information header according to the eleventh embodiment. [Figure 105] FIG. 105 is a flowchart of three-dimensional data encoding processing according to the eleventh embodiment. [Figure 106] FIG. 106 is a flowchart of three-dimensional data decoding processing according to the eleventh embodiment. [Figure 107] FIG. 107 is a diagram showing an example of changing the reference range and the reference count according to the eleventh embodiment. [Figure 108] FIG. 108 is a flowchart of three-dimensional data encoding processing according to the eleventh embodiment. [Figure 109] FIG. 109 is a flowchart of three-dimensional data decoding processing according to the eleventh embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0013] A three-dimensional data encoding method according to one embodiment of the present disclosure determines whether a first effective node count, which is the number of effective nodes that are nodes containing three-dimensional points and are included in multiple first nodes belonging to a higher layer than a target node in an N-ary tree structure of multiple three-dimensional points included in point cloud data, is greater than or equal to a predetermined first threshold; if the first effective node count is greater than or equal to the first threshold, first encoding is performed on attribute information of the target node, the first encoding including a prediction process using multiple second nodes that include a parent node of the target node and belong to the same layer as the parent node; and if the first effective node count is less than the first threshold, second encoding is performed on attribute information of the target node, the second encoding not including the prediction process using the multiple second nodes.
[0014] According to this, the three-dimensional data encoding method can appropriately select whether or not to use the first encoding including the prediction process, thereby improving encoding efficiency.
[0015] For example, the plurality of first nodes may include the parent node and a plurality of nodes that belong to the same hierarchical level as the parent node.
[0016] For example, the plurality of first nodes may include a grandparent node of the target node and a plurality of nodes that belong to the same hierarchy as the grandparent node.
[0017] For example, in the second encoding, the predicted value of the attribute information of the target node may be set to zero.
[0018] For example, the three-dimensional data encoding method may further generate a bitstream including encoded attribute information of the target node and first information indicating whether the first encoding is applicable.
[0019] For example, the three-dimensional data encoding method may further generate a bitstream including encoded attribute information of the target node and second information indicating the first threshold value.
[0020] For example, it may be determined whether a second number of effective nodes, which is the number of effective nodes included in a plurality of second nodes including the grandparent node of the target node and a plurality of nodes belonging to the same hierarchical level as the grandparent node, is greater than or equal to a predetermined second threshold, and if the first number of effective nodes is greater than the first threshold and the second number of effective nodes is greater than or equal to the second threshold, the first encoding may be performed on the attribute information of the target node, and if the first number of effective nodes is less than the first threshold or the second number of effective nodes is less than the second threshold, the second encoding may be performed on the attribute information of the target node.
[0021] A three-dimensional data decoding method according to one embodiment of the present disclosure determines whether a first effective node count, which is the number of effective nodes that are nodes containing three-dimensional points and are included in multiple first nodes belonging to a higher layer than a target node in an N-ary tree structure of multiple three-dimensional points included in point cloud data, is greater than or equal to a predetermined first threshold; if the first effective node count is greater than or equal to the first threshold, first decoding is performed on attribute information of the target node, including a prediction process using multiple second nodes that include a parent node of the target node and belong to the same layer as the parent node; and if the first effective node count is less than the first threshold, second decoding is performed on attribute information of the target node, not including the prediction process using the multiple second nodes.
[0022] According to this, the three-dimensional data decoding method can appropriately select whether or not to use the first decoding including the prediction process, thereby improving the coding efficiency.
[0023] For example, the plurality of first nodes may include the parent node and a plurality of nodes that belong to the same hierarchical level as the parent node.
[0024] For example, the plurality of first nodes may include a grandparent node of the target node and a plurality of nodes that belong to the same hierarchy as the grandparent node.
[0025] For example, in the second decoding, the predicted value of the attribute information of the target node may be set to zero.
[0026] For example, the three-dimensional data decoding method may further include acquiring first information indicating whether the first decoding is applicable from a bit stream including encoded attribute information of the target node.
[0027] For example, the three-dimensional data decoding method may further include acquiring second information indicating the first threshold value from a bit stream including encoded attribute information of the target node.
[0028] For example, it may be determined whether a second number of valid nodes, which is the number of valid nodes included in multiple second nodes including the grandparent node of the target node and multiple nodes belonging to the same hierarchical level as the grandparent node, is greater than or equal to a predetermined second threshold, and if the first number of valid nodes is greater than the first threshold and the second number of valid nodes is greater than or equal to the second threshold, the first decryption may be performed on the attribute information of the target node, and if the first number of valid nodes is less than the first threshold or the second number of valid nodes is less than the second threshold, the second decryption may be performed on the attribute information of the target node.
[0029] Furthermore, a three-dimensional data encoding device according to one embodiment of the present disclosure includes a processor and a memory, and the processor uses the memory to determine whether a first effective node count, which is the number of effective nodes that are nodes that include three-dimensional points and are included in a plurality of first nodes that belong to a higher layer than a target node in an N-ary tree structure of a plurality of three-dimensional points included in point cloud data, is greater than or equal to a predetermined first threshold; if the first effective node count is greater than or equal to the first threshold, a first encoding is performed on attribute information of the target node, the first encoding including a prediction process using a plurality of second nodes that include a parent node of the target node and belong to the same layer as the parent node; and if the first effective node count is less than the first threshold, a second encoding is performed on attribute information of the target node, the second encoding not including the prediction process using the plurality of second nodes.
[0030] This allows the three-dimensional data encoding device to appropriately select whether or not to use the first encoding including the prediction process, thereby improving encoding efficiency.
[0031] Furthermore, a three-dimensional data decoding device according to one embodiment of the present disclosure includes a processor and a memory, and the processor uses the memory to determine whether a first effective node count, which is the number of effective nodes that are nodes that include three-dimensional points and are included in a plurality of first nodes that belong to a higher layer than a target node in an N-ary tree structure of a plurality of three-dimensional points included in point cloud data, is greater than or equal to a predetermined first threshold; if the first effective node count is greater than or equal to the first threshold, a first decoding is performed on attribute information of the target node, the first decoding including a prediction process using a plurality of second nodes that include a parent node of the target node and belong to the same layer as the parent node; and if the first effective node count is less than the first threshold, a second decoding is performed on attribute information of the target node, the second decoding not including the prediction process using the plurality of second nodes.
[0032] This allows the three-dimensional data decoding device to appropriately select whether or not to use the first decoding including the prediction process, thereby improving the coding efficiency.
[0033] These comprehensive or specific aspects may be realized as a system, a method, an integrated circuit, a computer program, or a computer-readable recording medium such as a CD-ROM, or may be realized as any combination of a system, a method, an integrated circuit, a computer program, and a recording medium.
[0034] Hereinafter, the embodiments will be described in detail with reference to the drawings. Note that each of the embodiments described below represents a specific example of the present disclosure. The numerical values, shapes, materials, components, component placement and connection configurations, steps, and step order shown in the following embodiments are merely examples and are not intended to limit the present disclosure. Furthermore, among the components in the following embodiments, components not recited in independent claims will be described as optional components.
[0035] (Embodiment 1) First, the data structure of encoded three-dimensional data (hereinafter also referred to as encoded data) according to this embodiment will be described. Fig. 1 is a diagram showing the structure of encoded three-dimensional data according to this embodiment.
[0036] In this embodiment, a three-dimensional space is divided into spaces (SPCs) corresponding to pictures in video encoding, and three-dimensional data is encoded using the spaces as units. The spaces are further divided into volumes (VLMs) corresponding to macroblocks or the like in video encoding, and prediction and conversion are performed using the VLMs as units. A volume includes a plurality of voxels (VXLs), which are the smallest units to which position coordinates can be associated. Note that prediction, like prediction performed for two-dimensional images, refers to generating predicted three-dimensional data similar to the processing unit to be processed by referring to other processing units, and encoding the difference between the predicted three-dimensional data and the processing unit to be processed. Furthermore, this prediction includes not only spatial prediction that refers to other prediction units at the same time, but also temporal prediction that refers to a prediction unit at a different time.
[0037] For example, when a three-dimensional data encoding device (hereinafter also referred to as an encoding device) encodes a three-dimensional space represented by point cloud data such as a point cloud, it encodes each point of the point cloud or multiple points contained in a voxel collectively according to the size of the voxel. By subdividing the voxels, the three-dimensional shape of the point cloud can be expressed with high precision, and by increasing the voxel size, the three-dimensional shape of the point cloud can be expressed roughly.
[0038] In the following, an example will be described in which the three-dimensional data is a point cloud, but the three-dimensional data is not limited to a point cloud and may be three-dimensional data in any format.
[0039] Alternatively, voxels with a hierarchical structure may be used. In this case, the nth layer may indicate in order whether a sample point exists in the n-1th layer or lower (a layer below the nth layer). For example, when decoding only the nth layer, if a sample point exists in the n-1th layer or lower, the sample point can be decoded by assuming that the sample point exists at the center of the voxel in the nth layer.
[0040] The encoding device also acquires point cloud data using a distance sensor, a stereo camera, a monocular camera, a gyro, an inertial sensor, or the like.
[0041] Similar to video coding, spaces are classified into at least three prediction structures, including independently decodable intra-space (I-SPC), predictive space (P-SPC), and bidirectional space (B-SPC). Spaces also have two types of time information: decoding time and display time.
[0042] As shown in Figure 1, there is a random access unit called a Group Of Space (GOS), which is a processing unit that includes multiple spaces. There is also a World (WLD), which is a processing unit that includes multiple GOS.
[0043] The spatial region occupied by the world is associated with an absolute position on Earth using GPS or latitude and longitude information. This position information is stored as meta information. Note that the meta information may be included in the encoded data or may be transmitted separately from the encoded data.
[0044] Furthermore, within a GOS, all SPCs may be three-dimensionally adjacent, or there may be SPCs that are not three-dimensionally adjacent to other SPCs.
[0045] In the following, the process of encoding, decoding, referencing, etc. of three-dimensional data included in a processing unit such as a GOS, SPC, or VLM will also be simply referred to as encoding, decoding, or referencing the processing unit, etc. The three-dimensional data included in the processing unit includes, for example, at least one pair of a spatial position such as three-dimensional coordinates and a characteristic value such as color information.
[0046] Next, the prediction structure of SPCs in a GOS will be explained. Multiple SPCs in the same GOS or multiple VLMs in the same SPC occupy different spaces, but have the same time information (decoding time and display time).
[0047] Furthermore, the first SPC in a GOS in decoding order is the I-SPC. There are two types of GOS: closed GOS and open GOS. A closed GOS is a GOS that can decode all SPCs in the GOS when decoding starts from the first I-SPC. In an open GOS, some SPCs that appear earlier in the GOS than the first I-SPC refer to a different GOS, and cannot be decoded using only that GOS.
[0048] In addition, in coded data such as map information, WLDs are sometimes decoded in the reverse order of coding, and if there is dependency between GOSs, reverse playback is difficult. Therefore, in such cases, closed GOSs are generally used.
[0049] Furthermore, the GOS has a layer structure in the height direction, and encoding or decoding is performed in order from the SPC in the lower layer.
[0050] Fig. 2 is a diagram showing an example of a prediction structure between SPCs belonging to the lowest layer of a GOS, and Fig. 3 is a diagram showing an example of a prediction structure between layers.
[0051] A GOS contains one or more I-SPCs. Objects such as people, animals, cars, bicycles, traffic lights, and landmark buildings exist in three-dimensional space, and it is particularly effective to encode small objects as I-SPCs. For example, a three-dimensional data decoding device (hereinafter also referred to as a decoding device) decodes only the I-SPCs in the GOS when decoding the GOS with low processing load or at high speed.
[0052] The encoding device may also switch the encoding interval or frequency of occurrence of I-SPC depending on the density of objects in the WLD.
[0053] 3, the encoding device or decoding device encodes or decodes multiple layers in order from the lowest layer (layer 1). This allows, for example, an autonomous vehicle to prioritize data near the ground, which contains more information.
[0054] In addition, encoded data used by drones, etc. may be encoded or decoded in order from the SPC of the highest layer in the height direction within the GOS.
[0055] Alternatively, the encoding or decoding device may encode or decode multiple layers so that the decoding device can roughly grasp the GOS and gradually increase the resolution. For example, the encoding or decoding device may encode or decode layers 3, 8, 1, 9, etc. in that order.
[0056] Next, we will explain how to handle static and dynamic objects.
[0057] In a three-dimensional space, there exist static objects or scenes such as buildings or roads (hereinafter collectively referred to as static objects), and dynamic objects such as cars or people (hereinafter referred to as dynamic objects). Object detection is performed separately by extracting feature points from point cloud data or camera images such as a stereo camera. Here, an example of a method for encoding dynamic objects will be described.
[0058] The first method is to encode static objects without distinguishing between static and dynamic objects, and the second method is to distinguish between static and dynamic objects using identification information.
[0059] For example, GOS is used as the identification unit. In this case, GOS including SPCs that constitute static objects and GOS including SPCs that constitute dynamic objects are distinguished by identification information stored within the coded data or separately from the coded data.
[0060] Alternatively, the SPC may be used as the identification unit, in which case the SPC including the VLM that constitutes a static object and the SPC including the VLM that constitutes a dynamic object are distinguished by the above-mentioned identification information.
[0061] Alternatively, the VLM or VXL may be used as the identification unit, in which case the VLM or VXL containing static objects and the VLM or VXL containing dynamic objects are distinguished by the above-mentioned identification information.
[0062] The encoding device may also encode a dynamic object as one or more VLMs or SPCs, and encode a VLM or SPC containing a static object and an SPC containing a dynamic object as different GOSs. If the size of the GOS varies depending on the size of the dynamic object, the encoding device stores the size of the GOS separately as meta information.
[0063] The encoding device may also encode static objects and dynamic objects independently of each other, and overlay the dynamic objects on a world made up of static objects. In this case, the dynamic object is made up of one or more SPCs, and each SPC corresponds to one or more SPCs that make up the static object on which the SPC is overlaid. Note that the dynamic object may be represented by one or more VLMs or VXLs instead of SPCs.
[0064] The encoding device may also encode static objects and dynamic objects as different streams.
[0065] The encoding device may also generate a GOS that includes one or more SPCs that make up a dynamic object. Furthermore, the encoding device may set the GOS (GOS_M) that includes the dynamic object and the GOS of the static object that corresponds to the spatial region of GOS_M to the same size (occupy the same spatial region). This allows superimposition processing to be performed on a GOS-by-GOS basis.
[0066] A P-SPC or B-SPC that configures a dynamic object may refer to an SPC included in a different GOS that has already been coded. In cases where the position of a dynamic object changes over time and the same dynamic object is coded as a GOS at different times, referencing across GOSs is effective from the viewpoint of compression ratio.
[0067] The encoding device may switch between the first and second methods depending on the intended use of the encoded data. For example, when the encoded three-dimensional data is used as a map, it is desirable to be able to separate dynamic objects, so the encoding device uses the second method. On the other hand, when encoding three-dimensional data of an event such as a concert or sporting event, the encoding device uses the first method if there is no need to separate dynamic objects.
[0068] The decode time and display time of a GOS or SPC can be stored in the coded data or as meta information. The time information of all static objects may be the same. In this case, the actual decode time and display time may be determined by the decoding device. Alternatively, a different value may be assigned as the decode time for each GOS or SPC, and the same value may be assigned as the display time for all. Furthermore, a model may be introduced that ensures that the decoder has a buffer of a predetermined size and can decode without failure if it reads a bitstream at a predetermined bit rate according to the decode time, as in a decoder model used in video coding, such as the HEVC HRD (Hypothetical Reference Decoder).
[0069] Next, we will explain the arrangement of GOS within a world. The coordinates of the three-dimensional space in a world are expressed by three mutually orthogonal coordinate axes (x-axis, y-axis, and z-axis). By establishing a predetermined rule for the encoding order of GOS, encoding can be performed so that spatially adjacent GOS are continuous within the encoded data. For example, in the example shown in Figure 4, GOS within the xz plane are encoded continuously. After encoding of all GOS within a certain xz plane is completed, the value of the y-axis is updated. In other words, as encoding progresses, the world extends in the y-axis direction. Furthermore, the index numbers of GOS are set in the encoding order.
[0070] Here, the three-dimensional space of the world is associated one-to-one with absolute geographical coordinates such as GPS or latitude and longitude. Alternatively, the three-dimensional space may be expressed by relative positions from a preset reference position. The directions of the x-, y-, and z-axes of the three-dimensional space are expressed as direction vectors determined based on the latitude and longitude, and the direction vectors are stored as meta information together with the encoded data.
[0071] The size of the GOS is fixed, and the encoding device stores the size as meta information. The size of the GOS may be changed depending on, for example, whether the location is an urban area or whether the location is indoors or outdoors. That is, the size of the GOS may be changed depending on the quantity or nature of objects that have information value. Alternatively, the encoding device may adaptively change the size of the GOS or the spacing between I-SPCs within the GOS depending on, for example, the density of objects within the same world. For example, the higher the object density, the smaller the GOS size and the shorter the spacing between I-SPCs within the GOS.
[0072] In the example shown in Figure 5, the third to tenth GOS regions have a high density of objects, so the GOS are subdivided to allow finer granularity for random access. Note that the seventh to tenth GOS regions are located behind the third to sixth GOS regions, respectively.
[0073] (Embodiment 2) In this embodiment, a method for transmitting and receiving three-dimensional data between vehicles will be described.
[0074] FIG. 7 is a schematic diagram showing how three-dimensional data 607 is transmitted and received between a vehicle 600 and a nearby vehicle 601. As shown in FIG.
[0075] When three-dimensional data is acquired using a sensor (such as a distance sensor such as a range finder, a stereo camera, or a combination of multiple monocular cameras) mounted on the host vehicle 600, an area (hereinafter referred to as an occlusion area 604) where three-dimensional data cannot be created occurs due to obstacles such as surrounding vehicles 601, even though it is within the sensor detection range 602 of the host vehicle 600. Furthermore, the accuracy of autonomous operation increases as the space for acquiring three-dimensional data increases, but the sensor detection range of the host vehicle 600 alone is limited.
[0076] The sensor detection range 602 of the host vehicle 600 includes an area 603 from which three-dimensional data can be acquired and an occlusion area 604. The area from which the host vehicle 600 wishes to acquire three-dimensional data includes the sensor detection range 602 of the host vehicle 600 and other areas. In addition, the sensor detection range 605 of the surrounding vehicle 601 includes the occlusion area 604 and an area 606 that is not included in the sensor detection range 602 of the host vehicle 600.
[0077] The surrounding vehicles 601 transmit information detected by the surrounding vehicles 601 to the host vehicle 600. By acquiring information detected by the surrounding vehicles 601, such as a vehicle ahead, the host vehicle 600 can acquire three-dimensional data 607 of an occlusion region 604 and a region 606 outside the sensor detection range 602 of the host vehicle 600. The host vehicle 600 uses the information acquired by the surrounding vehicles 601 to complement the three-dimensional data of the occlusion region 604 and the region 606 outside the sensor detection range.
[0078] The three-dimensional data used in the autonomous operation of a vehicle or robot is used for self-location estimation, detection of surrounding conditions, or both. For example, for self-location estimation, three-dimensional data generated by the host vehicle 600 based on sensor information of the host vehicle 600 is used. For detection of surrounding conditions, in addition to the three-dimensional data generated by the host vehicle 600, three-dimensional data acquired from a nearby vehicle 601 is also used.
[0079] The nearby vehicle 601 that transmits the three-dimensional data 607 to the host vehicle 600 may be determined according to the state of the host vehicle 600. For example, the nearby vehicle 601 is a vehicle ahead when the host vehicle 600 is traveling straight, an oncoming vehicle when the host vehicle 600 is turning right, and a vehicle behind when the host vehicle 600 is reversing. Also, the driver of the host vehicle 600 may directly specify the nearby vehicle 601 that transmits the three-dimensional data 607 to the host vehicle 600.
[0080] Furthermore, the vehicle 600 may search for a nearby vehicle 601 that possesses three-dimensional data of an area that is included in the space where the vehicle 600 wishes to acquire three-dimensional data 607 but cannot be acquired by the vehicle 600. The area that the vehicle 600 cannot acquire is an occlusion area 604 or an area 606 outside the sensor detection range 602, etc.
[0081] Furthermore, the host vehicle 600 may identify the occlusion region 604 based on sensor information of the host vehicle 600. For example, the host vehicle 600 identifies, as the occlusion region 604, a region included in the sensor detection range 602 of the host vehicle 600 and for which three-dimensional data cannot be created.
[0082] An example of operation will be described below when it is the vehicle ahead that transmits the three-dimensional data 607. Fig. 8 is a diagram showing an example of the three-dimensional data transmitted in this case.
[0083] As shown in Fig. 8, the three-dimensional data 607 transmitted from the vehicle in front is, for example, a sparse world of point cloud (SWLD). That is, the vehicle in front creates three-dimensional data (point cloud) of WLD from information detected by the sensor of the vehicle in front, and then creates three-dimensional data of SWLD (point cloud) by extracting data whose feature amount is equal to or greater than a threshold from the three-dimensional data of WLD. The vehicle in front then transmits the created three-dimensional data of SWLD to the host vehicle 600.
[0084] The host vehicle 600 receives the SWLD and merges the received SWLD with the point cloud created by the host vehicle 600.
[0085] The transmitted SWLD has information on absolute coordinates (the position of the SWLD in the coordinate system of the three-dimensional map). The vehicle 600 can realize the merging process by overwriting the point cloud generated by the vehicle 600 based on these absolute coordinates.
[0086] The SWLD transmitted from the nearby vehicle 601 may be the SWLD of an area 606 that is outside the sensor detection range 602 of the host vehicle 600 but within the sensor detection range 605 of the nearby vehicle 601, or the SWLD of an occlusion area 604 for the host vehicle 600, or both. In addition, the transmitted SWLD may be the SWLD of an area among the above SWLDs that the nearby vehicle 601 is using to detect the surrounding situation.
[0087] Furthermore, the surrounding vehicle 601 may change the density of the transmitted point cloud depending on the available communication time based on the speed difference between the vehicle itself 600 and the surrounding vehicle 601. For example, when the speed difference is large and the available communication time is short, the surrounding vehicle 601 may reduce the density (amount of data) of the point cloud by extracting three-dimensional points with large feature amounts from the SWLD.
[0088] Furthermore, detecting the surrounding conditions means determining whether or not there are people, vehicles, road construction equipment, etc., identifying their types, and detecting their positions, movement directions, movement speeds, etc.
[0089] Furthermore, the host vehicle 600 may acquire braking information of the surrounding vehicle 601 instead of or in addition to the three-dimensional data 607 generated by the surrounding vehicle 601. Here, the braking information of the surrounding vehicle 601 is, for example, information indicating whether the accelerator or brake of the surrounding vehicle 601 has been depressed or the degree to which it has been depressed.
[0090] In addition, in the point clouds generated by each vehicle, the three-dimensional space is subdivided into random access units in consideration of low-latency communication between vehicles. On the other hand, in the case of three-dimensional maps, which are map data downloaded from a server, the three-dimensional space is divided into larger random access units compared to the case of vehicle-to-vehicle communication.
[0091] Data for areas that are likely to become occlusion areas, such as the area in front of a leading vehicle or the area behind a trailing vehicle, is divided into small random access units as data for low latency.
[0092] Since the front becomes more important when driving at high speeds, each vehicle creates SWLDs with a narrower field of view in small random access units when driving at high speeds.
[0093] If the SWLD created for transmission by the vehicle in front includes an area from which the vehicle 600 can acquire point clouds, the vehicle in front may reduce the amount of transmission by removing the point clouds from that area.
[0094] (Embodiment 3) In this embodiment, a method of transmitting three-dimensional data to a following vehicle will be described, etc. Fig. 9 is a diagram showing an example of a target space of three-dimensional data to be transmitted to a following vehicle, etc.
[0095] Vehicle 801 transmits three-dimensional data such as a point cloud contained in a rectangular space 802 of width W, height H, and depth D at a distance L from vehicle 801 ahead of vehicle 801 at time intervals of Δt to a traffic monitoring cloud that monitors road conditions or a following vehicle.
[0096] If a change occurs in the three-dimensional data contained in the space 802 that has been previously transmitted, such as when a vehicle or person enters the space 802 from outside, the vehicle 801 also transmits the three-dimensional data of the space where the change occurred.
[0097] Although Figure 9 shows an example in which the shape of space 802 is a rectangular parallelepiped, space 802 does not necessarily have to be a rectangular parallelepiped as long as it includes the space on the road ahead that is in a blind spot for following vehicles.
[0098] It is desirable to set the distance L to a distance that allows the following vehicle, having received the three-dimensional data, to safely stop. For example, the distance L is set to the sum of the distance the following vehicle travels while it takes to receive the three-dimensional data, the distance the following vehicle travels before it starts to decelerate in response to the received data, and the distance the following vehicle requires to safely stop after starting to decelerate. Since these distances change depending on the speed, the distance L may change depending on the speed V of the vehicle, as in L = a × V + b (a and b are constants).
[0099] The width W is set to a value at least larger than the width of the lane in which the vehicle 801 is traveling. More preferably, the width W is set to a size that includes adjacent spaces such as left and right lanes or shoulder strips.
[0100] The depth D may be a fixed value, or may vary according to the vehicle speed V, such as D=c×V+d (c and d are constants). Furthermore, by setting D so that D>V×Δt, the space to be transmitted can overlap with previously transmitted spaces. This allows the vehicle 801 to more reliably transmit the space on the road to following vehicles and the like without omission.
[0101] In this way, by limiting the three-dimensional data transmitted by vehicle 801 to spaces that are useful to following vehicles, the volume of three-dimensional data transmitted can be effectively reduced, thereby achieving low communication latency and low costs.
[0102] (Fourth embodiment) In the third embodiment, an example has been described in which a client device such as a vehicle transmits three-dimensional data to another vehicle or a server such as a traffic monitoring cloud. In this embodiment, the client device transmits sensor information obtained by a sensor to the server or another client device.
[0103] First, the configuration of a system according to this embodiment will be described. Fig. 10 is a diagram showing the configuration of a system for transmitting and receiving 3D maps and sensor information according to this embodiment. This system includes a server 901 and client devices 902A and 902B. When there is no need to distinguish between the client devices 902A and 902B, they will also be referred to as client device 902.
[0104] The client device 902 is, for example, an in-vehicle device mounted on a mobile object such as a vehicle. The server 901 is, for example, a traffic monitoring cloud or the like, and is capable of communicating with a plurality of client devices 902.
[0105] The server 901 transmits a three-dimensional map composed of a point cloud to the client device 902. Note that the composition of the three-dimensional map is not limited to a point cloud, and may represent other three-dimensional data such as a mesh structure.
[0106] The client device 902 transmits sensor information acquired by the client device 902 to the server 901. The sensor information includes, for example, at least one of LiDAR acquisition information, a visible light image, an infrared image, a depth image, sensor position information, and speed information.
[0107] Data transmitted between the server 901 and the client device 902 may be compressed to reduce data size, or may remain uncompressed to maintain data accuracy. When compressing data, a three-dimensional compression method based on an octree structure, for example, can be used for point clouds. Also, a two-dimensional image compression method can be used for visible light images, infrared images, and depth images. Examples of two-dimensional image compression methods include MPEG-4 AVC or HEVC standardized by MPEG.
[0108] Furthermore, the server 901 transmits the three-dimensional map managed by the server 901 to the client device 902 in response to a three-dimensional map transmission request from the client device 902. Note that the server 901 may transmit the three-dimensional map without waiting for a three-dimensional map transmission request from the client device 902. For example, the server 901 may broadcast the three-dimensional map to one or more client devices 902 that are in a predetermined space. Furthermore, the server 901 may transmit a three-dimensional map appropriate for the position of the client device 902 to the client device 902 that has received a transmission request once, at regular intervals. Furthermore, the server 901 may transmit the three-dimensional map to the client device 902 every time the three-dimensional map managed by the server 901 is updated.
[0109] The client device 902 issues a request to send a three-dimensional map to the server 901. For example, when the client device 902 wants to estimate its own position while driving, the client device 902 sends a request to send a three-dimensional map to the server 901.
[0110] In the following cases, the client device 902 may issue a request to the server 901 to transmit a three-dimensional map. If the three-dimensional map held by the client device 902 is old, the client device 902 may issue a request to the server 901 to transmit a three-dimensional map. For example, if a certain period of time has passed since the client device 902 obtained the three-dimensional map, the client device 902 may issue a request to the server 901 to transmit a three-dimensional map.
[0111] The client device 902 may issue a request to the server 901 to transmit a three-dimensional map a certain time before the client device 902 leaves the space shown in the three-dimensional map held by the client device 902. For example, when the client device 902 is located within a predetermined distance from the boundary of the space shown in the three-dimensional map held by the client device 902, the client device 902 may issue a request to the server 901 to transmit a three-dimensional map. Furthermore, when the movement route and movement speed of the client device 902 are known, the time when the client device 902 will leave the space shown in the three-dimensional map held by the client device 902 may be predicted based on these.
[0112] If the error in aligning the three-dimensional data created by the client device 902 from sensor information with the three-dimensional map is equal to or greater than a certain level, the client device 902 may issue a request to the server 901 to send the three-dimensional map.
[0113] The client device 902 transmits sensor information to the server 901 in response to a request to transmit sensor information transmitted from the server 901. Note that the client device 902 may transmit sensor information to the server 901 without waiting for a request to transmit sensor information from the server 901. For example, once the client device 902 receives a request to transmit sensor information from the server 901, the client device 902 may periodically transmit the sensor information to the server 901 for a certain period of time. Furthermore, if the error in aligning the three-dimensional data created by the client device 902 based on the sensor information with the three-dimensional map obtained from the server 901 is equal to or greater than a certain level, the client device 902 may determine that a change may have occurred in the three-dimensional map around the client device 902, and may transmit this information along with the sensor information to the server 901.
[0114] The server 901 issues a request to transmit sensor information to the client device 902. For example, the server 901 receives location information of the client device 902, such as GPS, from the client device 902. When the server 901 determines, based on the location information of the client device 902, that the client device 902 is approaching a space with little information in the three-dimensional map managed by the server 901, the server 901 issues a request to transmit sensor information to the client device 902 in order to generate a new three-dimensional map. The server 901 may also issue a request to transmit sensor information when it wants to update the three-dimensional map, when it wants to check road conditions during snowfall or a disaster, when it wants to check traffic congestion, or when it wants to check the status of incidents and accidents, etc.
[0115] Furthermore, the client device 902 may set the amount of data of the sensor information to be transmitted to the server 901 depending on the communication state or bandwidth at the time of receiving a request to transmit the sensor information from the server 901. Setting the amount of data of the sensor information to be transmitted to the server 901 means, for example, increasing or decreasing the amount of the data itself or appropriately selecting a compression method.
[0116] 11 is a block diagram showing an example configuration of a client device 902. The client device 902 receives a three-dimensional map composed of a point cloud or the like from the server 901, and estimates the self-position of the client device 902 from three-dimensional data created based on sensor information of the client device 902. The client device 902 also transmits the acquired sensor information to the server 901.
[0117] The client device 902 includes a data receiving unit 1011, a communication unit 1012, a reception control unit 1013, a format conversion unit 1014, multiple sensors 1015, a three-dimensional data creation unit 1016, a three-dimensional image processing unit 1017, a three-dimensional data storage unit 1018, a format conversion unit 1019, a communication unit 1020, a transmission control unit 1021, and a data transmission unit 1022.
[0118] The data receiving unit 1011 receives a three-dimensional map 1031 from the server 901. The three-dimensional map 1031 is data including a point cloud such as a WLD or SWLD. The three-dimensional map 1031 may include either compressed data or uncompressed data.
[0119] The communication unit 1012 communicates with the server 901 and transmits data transmission requests (for example, requests to transmit a three-dimensional map) to the server 901.
[0120] The reception control unit 1013 exchanges information such as compatible formats with the communication destination via the communication unit 1012, and establishes communication with the communication destination.
[0121] The format conversion unit 1014 generates a three-dimensional map 1032 by performing format conversion and the like on the three-dimensional map 1031 received by the data receiving unit 1011. Furthermore, if the three-dimensional map 1031 is compressed or encoded, the format conversion unit 1014 performs decompression or decoding processing. Note that if the three-dimensional map 1031 is uncompressed data, the format conversion unit 1014 does not perform decompression or decoding processing.
[0122] The multiple sensors 1015 are a group of sensors, such as LiDAR, a visible light camera, an infrared camera, or a depth sensor, that acquire information about the outside of the vehicle on which the client device 902 is mounted, and generate sensor information 1033. For example, if the sensor 1015 is a laser sensor such as LiDAR, the sensor information 1033 is three-dimensional data such as a point cloud (point cloud data). Note that the number of sensors 1015 does not need to be multiple.
[0123] The three-dimensional data creation unit 1016 creates three-dimensional data 1034 of the surroundings of the vehicle based on the sensor information 1033. For example, the three-dimensional data creation unit 1016 creates point cloud data with color information of the surroundings of the vehicle using information acquired by LiDAR and visible light images acquired by a visible light camera.
[0124] The three-dimensional image processing unit 1017 performs a process of estimating the vehicle's own position using a three-dimensional map 1032 such as a received point cloud and three-dimensional data 1034 of the surroundings of the vehicle generated from the sensor information 1033. The three-dimensional image processing unit 1017 may generate three-dimensional data 1035 of the surroundings of the vehicle by combining the three-dimensional map 1032 and the three-dimensional data 1034, and perform a process of estimating the vehicle's own position using the generated three-dimensional data 1035.
[0125] The three-dimensional data storage unit 1018 stores a three-dimensional map 1032, three-dimensional data 1034, three-dimensional data 1035, and the like.
[0126] The format conversion unit 1019 generates sensor information 1037 by converting the sensor information 1033 into a format supported by the receiving side. The format conversion unit 1019 may reduce the amount of data by compressing or encoding the sensor information 1037. The format conversion unit 1019 may omit the process if format conversion is not necessary. The format conversion unit 1019 may also control the amount of data to be transmitted in accordance with a specified transmission range.
[0127] The communication unit 1020 communicates with the server 901 and receives data transmission requests (sensor information transmission requests) and the like from the server 901.
[0128] The transmission control unit 1021 exchanges information such as compatible formats with the communication destination via the communication unit 1020, and establishes communication.
[0129] The data transmission unit 1022 transmits the sensor information 1037 to the server 901. The sensor information 1037 includes information acquired by a plurality of sensors 1015, such as information acquired by a LiDAR, a luminance image acquired by a visible light camera, an infrared image acquired by an infrared camera, a depth image acquired by a depth sensor, sensor position information, and speed information.
[0130] Next, the configuration of the server 901 will be described. Fig. 12 is a block diagram showing an example of the configuration of the server 901. The server 901 receives sensor information transmitted from the client device 902 and creates three-dimensional data based on the received sensor information. The server 901 uses the created three-dimensional data to update the three-dimensional map managed by the server 901. In addition, in response to a request from the client device 902 to transmit the three-dimensional map, the server 901 transmits the updated three-dimensional map to the client device 902.
[0131] The server 901 includes a data receiving unit 1111, a communication unit 1112, a receiving control unit 1113, a format conversion unit 1114, a three-dimensional data creation unit 1116, a three-dimensional data synthesis unit 1117, a three-dimensional data storage unit 1118, a format conversion unit 1119, a communication unit 1120, a transmission control unit 1121, and a data transmission unit 1122.
[0132] The data receiving unit 1111 receives sensor information 1037 from the client device 902. The sensor information 1037 includes, for example, information acquired by a LiDAR, a luminance image acquired by a visible light camera, an infrared image acquired by an infrared camera, a depth image acquired by a depth sensor, sensor position information, and speed information.
[0133] The communication unit 1112 communicates with the client device 902 and transmits a data transmission request (for example, a request to transmit sensor information) to the client device 902 .
[0134] The reception control unit 1113 exchanges information such as compatible formats with the communication destination via the communication unit 1112, and establishes communication.
[0135] If the received sensor information 1037 is compressed or encoded, the format conversion unit 1114 performs decompression or decoding processing to generate the sensor information 1132. Note that if the sensor information 1037 is uncompressed data, the format conversion unit 1114 does not perform decompression or decoding processing.
[0136] The three-dimensional data creation unit 1116 creates three-dimensional data 1134 of the periphery of the client device 902 based on the sensor information 1132. For example, the three-dimensional data creation unit 1116 creates point cloud data with color information of the periphery of the client device 902 using information acquired by the LiDAR and visible light images acquired by the visible light camera.
[0137] A three-dimensional data synthesis unit 1117 synthesizes three-dimensional data 1134 created based on sensor information 1132 with a three-dimensional map 1135 managed by the server 901, thereby updating the three-dimensional map 1135.
[0138] The three-dimensional data storage unit 1118 stores a three-dimensional map 1135 and the like.
[0139] The format conversion unit 1119 generates the three-dimensional map 1031 by converting the three-dimensional map 1135 into a format supported by the receiving side. The format conversion unit 1119 may reduce the amount of data by compressing or encoding the three-dimensional map 1135. The format conversion unit 1119 may also omit processing if format conversion is not necessary. The format conversion unit 1119 may also control the amount of data to be transmitted in accordance with the designation of the transmission range.
[0140] The communication unit 1120 communicates with the client device 902 and receives a data transmission request (a request to transmit a three-dimensional map) or the like from the client device 902 .
[0141] The transmission control unit 1121 exchanges information such as compatible formats with the communication destination via the communication unit 1120, and establishes communication.
[0142] The data transmission unit 1122 transmits the three-dimensional map 1031 to the client device 902. The three-dimensional map 1031 is data including a point cloud such as a WLD or SWLD. The three-dimensional map 1031 may include either compressed data or uncompressed data.
[0143] Next, a description will be given of the operational flow of the client device 902. Fig. 13 is a flowchart showing the operation of the client device 902 when acquiring a three-dimensional map.
[0144] First, the client device 902 requests the server 901 to transmit a three-dimensional map (such as a point cloud) (S1001). At this time, the client device 902 may also transmit location information of the client device 902 obtained by GPS or the like, thereby requesting the server 901 to transmit a three-dimensional map related to the location information.
[0145] Next, the client device 902 receives the three-dimensional map from the server 901 (S1002). If the received three-dimensional map is compressed data, the client device 902 decodes the received three-dimensional map to generate an uncompressed three-dimensional map (S1003).
[0146] Next, the client device 902 creates three-dimensional data 1034 of the surroundings of the client device 902 from sensor information 1033 obtained by the multiple sensors 1015 (S1004). Next, the client device 902 estimates its own position using the three-dimensional map 1032 received from the server 901 and the three-dimensional data 1034 created from the sensor information 1033 (S1005).
[0147] 14 is a flowchart showing 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). Note that, when the sensor information 1033 includes multiple pieces of information obtained by multiple sensors 1015, the client device 902 may generate the sensor information 1037 by compressing each piece of information using a compression method suitable for that piece of information.
[0148] Next, the operation flow of the server 901 will be described. Fig. 15 is a flowchart showing the operation when the server 901 acquires sensor information. First, the server 901 requests the client device 902 to transmit sensor information (S1021). Next, the server 901 receives the sensor information 1037 transmitted from the client device 902 in response to the request (S1022). Next, the server 901 creates three-dimensional data 1134 using the received sensor information 1037 (S1023). Next, the server 901 reflects the created three-dimensional data 1134 in the three-dimensional map 1135 (S1024).
[0149] 16 is a flowchart showing the operation of the server 901 when transmitting a three-dimensional map. First, the server 901 receives a request to transmit a three-dimensional map from the client device 902 (S1031). Having received the request to transmit the three-dimensional map, the server 901 transmits a three-dimensional map 1031 to the client device 902 (S1032). At this time, the server 901 may extract a three-dimensional map of the vicinity based on the location information of the client device 902 and transmit the extracted three-dimensional map. The server 901 may also compress the three-dimensional map made up of a point cloud using, for example, a compression method with an octree structure, and transmit the compressed three-dimensional map.
[0150] A modification of this embodiment will now be described.
[0151] The server 901 uses the sensor information 1037 received from the client device 902 to create three-dimensional data 1134 of the vicinity of the position of the client device 902. Next, the server 901 matches the created three-dimensional data 1134 with a three-dimensional map 1135 of the same area managed by the server 901, thereby calculating the difference between the three-dimensional data 1134 and the three-dimensional map 1135. If the difference is equal to or greater than a predetermined threshold, the server 901 determines that some abnormality has occurred in the vicinity of the client device 902. For example, when ground subsidence occurs due to a natural disaster such as an earthquake, a large difference may occur between the three-dimensional map 1135 managed by the server 901 and the three-dimensional data 1134 created based on the sensor information 1037.
[0152] The sensor information 1037 may include information indicating at least one of the sensor type, sensor performance, and sensor model number. A class ID or the like according to the sensor performance may also be added to the sensor information 1037. For example, if the sensor information 1037 is information acquired by a LiDAR, an identifier may be assigned to the sensor performance, such as Class 1 for a sensor capable of acquiring information with an accuracy of several millimeters, Class 2 for a sensor capable of acquiring information with an accuracy of several centimeters, and Class 3 for a sensor capable of acquiring information with an accuracy of several meters. The server 901 may also estimate the sensor performance information and the like from the model number of the client device 902. For example, if the client device 902 is installed in a vehicle, the server 901 may determine the sensor specification information from the vehicle model. In this case, the server 901 may acquire vehicle model information in advance, or the 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 for the three-dimensional data 1134 created using the sensor information 1037. For example, if the sensor performance is high accuracy (class 1), the server 901 does not perform correction on the three-dimensional data 1134. If the sensor performance is low accuracy (class 3), the server 901 applies correction according to the accuracy of the sensor to the three-dimensional data 1134. For example, the server 901 increases the degree (strength) of correction as the accuracy of the sensor decreases.
[0153] The server 901 may simultaneously issue requests to send sensor information to multiple client devices 902 in a certain space. When the server 901 receives multiple pieces of sensor information from multiple client devices 902, the server 901 does not need to use all of the sensor information to create the three-dimensional data 1134, and may select the sensor information to use, for example, depending on the performance of the sensor. For example, when updating the three-dimensional map 1135, the server 901 may select high-precision sensor information (Class 1) from the multiple pieces of sensor information it has received, and create the three-dimensional data 1134 using the selected sensor information.
[0154] The server 901 is not limited to a server such as a traffic monitoring cloud, but may be another client device (mounted in a vehicle). Fig. 17 is a diagram showing the system configuration in this case.
[0155] For example, client device 902C issues a request to transmit sensor information to nearby client device 902A and acquires the sensor information from client device 902A. Client device 902C then creates three-dimensional data using the acquired sensor information from client device 902A and updates the three-dimensional map of client device 902C. This allows client device 902C to generate a three-dimensional map of the space that can be acquired from client device 902A by taking advantage of the performance of client device 902C. For example, such a case is likely to occur when client device 902C has high performance.
[0156] In this case, the client device 902A that provided the sensor information is granted the right to obtain the high-precision 3D map generated by the client device 902C. The client device 902A receives the high-precision 3D map from the client device 902C in accordance with the right.
[0157] In addition, client device 902C may issue requests to send sensor information to multiple nearby client devices 902 (client device 902A and client device 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 by this high performance sensor.
[0158] 18 is a block diagram showing the functional configuration of the server 901 and the client device 902. The server 901 includes, for example, a 3D map compression / decoding processing unit 1201 that compresses and decodes 3D maps, and a sensor information compression / decoding processing unit 1202 that compresses and decodes sensor information.
[0159] The client device 902 includes a three-dimensional map decoding processor 1211 and a sensor information compression processor 1212. The three-dimensional map decoding processor 1211 receives encoded data of the compressed three-dimensional map and decodes the encoded data to acquire the three-dimensional map. The sensor information compression processor 1212 compresses the sensor information itself instead of three-dimensional data created from the acquired sensor information, and transmits the encoded data of the compressed sensor information to the server 901. With this configuration, the client device 902 only needs to internally include a processing unit (device or LSI) that performs processing to decode the three-dimensional map (point cloud, etc.), and does not need to internally include a processing unit that performs processing to compress the three-dimensional data of the three-dimensional map (point cloud, etc.). This allows the cost and power consumption of the client device 902 to be reduced.
[0160] As described above, the client device 902 according to this embodiment is mounted on a mobile body and generates three-dimensional data 1034 of the surroundings of the mobile body from sensor information 1033 indicating the surrounding conditions of the mobile body, which is obtained by the sensor 1015 mounted on the mobile body. The client device 902 estimates the self-position of the mobile body using the generated three-dimensional data 1034. The client device 902 transmits the acquired sensor information 1033 to the server 901 or another mobile body 902.
[0161] According to this, the client device 902 transmits the sensor information 1033 to the server 901 or the like. This may reduce the amount of data to be transmitted compared to when transmitting three-dimensional data. Furthermore, since the client device 902 does not need to perform processing such as compression or encoding of the three-dimensional data, the amount of processing by the client device 902 can be reduced. Therefore, the client device 902 can reduce the amount of data to be transmitted or simplify the device configuration.
[0162] Furthermore, the client device 902 further transmits a request to the server 901 to send a three-dimensional map, and receives a three-dimensional map 1031 from the server 901. The client device 902 estimates its own location using the three-dimensional data 1034 and the three-dimensional map 1032.
[0163] The sensor information 1033 includes at least one of information obtained by a laser sensor, a luminance image, an infrared image, a depth image, sensor position information, and sensor speed information.
[0164] The sensor information 1033 also includes information indicating the performance of the sensor.
[0165] Furthermore, the client device 902 encodes or compresses the sensor information 1033, and transmits the encoded or compressed sensor information 1037 to the server 901 or another mobile body 902. This allows the client device 902 to reduce the amount of data to be transmitted.
[0166] For example, the client device 902 includes a processor and a memory, and the processor uses the memory to perform the above-described processing.
[0167] Furthermore, server 901 according to this embodiment is capable of communicating with client device 902 mounted on the mobile object, and receives sensor information 1037 indicating the surrounding conditions of the mobile object, obtained by sensor 1015 mounted on the mobile object, from client device 902. Server 901 creates three-dimensional data 1134 of the surroundings of the mobile object from the received sensor information 1037.
[0168] According to this, the server 901 creates three-dimensional data 1134 using the sensor information 1037 transmitted from the client device 902. This may reduce the amount of data to be transmitted compared to when the client device 902 transmits the three-dimensional data. Furthermore, since the client device 902 does not need to perform processing such as compression or encoding of the three-dimensional data, the amount of processing by the client device 902 can be reduced. Therefore, the server 901 can reduce the amount of data to be transmitted or simplify the device configuration.
[0169] Furthermore, the server 901 further transmits a request to the client device 902 to transmit the sensor information.
[0170] The server 901 also updates a three-dimensional map 1135 using the created three-dimensional data 1134 and transmits the three-dimensional map 1135 to the client device 902 in response to a request from the client device 902 to transmit the three-dimensional map 1135.
[0171] The sensor information 1037 includes at least one of information obtained by a laser sensor, a luminance image, an infrared image, a depth image, sensor position information, and sensor speed information.
[0172] The sensor information 1037 also includes information indicating the performance of the sensor.
[0173] Furthermore, the server 901 further corrects the three-dimensional data in accordance with the performance of the sensor, thereby enabling the three-dimensional data creation method to improve the quality of the three-dimensional data.
[0174] Furthermore, when receiving sensor information, the server 901 receives a plurality of pieces of sensor information 1037 from a plurality of client devices 902, and selects the sensor information 1037 to be used to create the three-dimensional data 1134 based on a plurality of pieces of information indicating the performance of the sensors included in the plurality of pieces of sensor information 1037. This allows the server 901 to improve the quality of the three-dimensional data 1134.
[0175] Furthermore, the server 901 decodes or decompresses the received sensor information 1037, and creates three-dimensional data 1134 from the decoded or decompressed sensor information 1132. This allows the server 901 to reduce the amount of data to be transmitted.
[0176] For example, the server 901 includes a processor and a memory, and the processor uses the memory to perform the above-mentioned processing.
[0177] (Embodiment 5) In this embodiment, a modification of the above-mentioned embodiment 4 will be described. Fig. 19 is a diagram showing the configuration of a system according to this embodiment. The system shown in Fig. 19 includes a server 2001, a client device 2002A, and a client device 2002B.
[0178] Client device 2002A and client device 2002B are mounted on a moving body such as a vehicle, and transmit sensor information to server 2001. Server 2001 transmits a three-dimensional map (point cloud) to client device 2002A and client device 2002B.
[0179] The client device 2002A includes a sensor information acquisition unit 2011, a storage unit 2012, and a data transmission permission determination unit 2013. The client device 2002B has a similar configuration. In the following description, when there is no need to distinguish between the client device 2002A and the client device 2002B, they will also be referred to as the client device 2002.
[0180] FIG. 20 is a flowchart showing the operation of client device 2002 according to this embodiment.
[0181] The sensor information acquisition unit 2011 acquires various types of sensor information using a sensor (sensor group) mounted on the mobile object. That is, the sensor information acquisition unit 2011 acquires sensor information indicating the surrounding conditions of the mobile object, obtained by the sensor (sensor group) mounted on the mobile object. The sensor information acquisition unit 2011 also stores the acquired sensor information in the storage unit 2012. This sensor information includes at least one of LiDAR acquisition information, visible light images, infrared images, and depth images. The sensor information may also include at least one of sensor position information, speed information, acquisition time information, and acquisition location information. The sensor position information indicates the position of the sensor that acquired the sensor information. The speed information indicates the speed of the mobile object when the sensor acquired the sensor information. The acquisition time information indicates the time when the sensor information was acquired by the sensor. The acquisition location information indicates the position of the mobile object or the sensor when the sensor information was acquired by the sensor.
[0182] Next, the data transmission possibility determination unit 2013 determines whether the mobile object (client device 2002) is in an environment where it can transmit sensor information to the server 2001 (S2002). For example, the data transmission possibility determination unit 2013 may use information such as GPS to identify the location and time of the client device 2002 and determine whether data transmission is possible. Alternatively, the data transmission possibility determination unit 2013 may determine whether data transmission is possible based on whether connection to a specific access point is possible.
[0183] When the client device 2002 determines that the mobile object is in an environment where it can transmit sensor information to the server 2001 (Yes in S2002), the client device 2002 transmits the sensor information to the server 2001 (S2003). In other words, when the client device 2002 is in a situation where it can transmit the sensor information to the server 2001, the client device 2002 transmits the sensor information it holds to the server 2001. For example, a millimeter wave access point capable of high-speed communication is installed at an intersection or the like. When the client device 2002 enters the intersection, it uses millimeter wave communication to transmit the sensor information it holds to the server 2001 at high speed.
[0184] Next, the client device 2002 deletes the sensor information that has been transmitted to the server 2001 from the storage unit 2012 (S2004). Note that the client device 2002 may delete the sensor information that has not been transmitted to the server 2001 if the sensor information satisfies a predetermined condition. For example, the client device 2002 may delete the sensor information from the storage unit 2012 when the acquisition time of the stored sensor information becomes older than a predetermined time from the current time. That is, the client device 2002 may delete the sensor information from the storage unit 2012 when the difference between the time when the sensor information was acquired by the sensor and the current time exceeds a predetermined time. Furthermore, the client device 2002 may delete the sensor information from the storage unit 2012 when the acquisition location of the stored sensor information becomes more than a predetermined distance away from the current location. That is, the client device 2002 may delete the sensor information from the storage unit 2012 when the difference between the position of the mobile object or sensor when the sensor information was acquired by the sensor and the current position of the mobile object or sensor exceeds a predetermined distance. This makes it possible to reduce the capacity of the storage unit 2012 of the client device 2002 .
[0185] If the client device 2002 has not yet completed acquiring the sensor information (No in S2005), the client device 2002 repeats the processes from step S2001 onwards. If the client device 2002 has completed acquiring the sensor information (Yes in S2005), the client device 2002 ends the process.
[0186] Furthermore, the client device 2002 may select the sensor information to be transmitted to the server 2001 in accordance with the communication conditions. For example, when high-speed communication is possible, the client device 2002 transmits sensor information (e.g., LiDAR acquired information) having a large size stored in the storage unit 2012 with priority. When high-speed communication is difficult, the client device 2002 transmits sensor information (e.g., visible light images) having a small size stored in the storage unit 2012 with a high priority. This allows the client device 2002 to efficiently transmit the sensor information stored in the storage unit 2012 to the server 2001 in accordance with the network conditions.
[0187] Furthermore, the client device 2002 may acquire time information indicating the current time and location information indicating the current location from the server 2001. Furthermore, the client device 2002 may determine the acquisition time and acquisition location of the sensor information based on the acquired time information and location information. That is, the client device 2002 may acquire time information from the server 2001 and generate acquisition time information using the acquired time information. Furthermore, the client device 2002 may acquire location information from the server 2001 and generate acquisition location information using the acquired location information.
[0188] For example, with regard to time information, the server 2001 and the client device 2002 synchronize their time using a mechanism such as NTP (Network Time Protocol) or PTP (Precision Time Protocol). This allows the client device 2002 to acquire accurate time information. Furthermore, since time can be synchronized between the server 2001 and multiple client devices, the time in the sensor information acquired by different client devices 2002 can be synchronized. Therefore, the server 2001 can handle sensor information that indicates synchronized time. Note that the time synchronization mechanism may be any method other than NTP or PTP. Furthermore, GPS information may be used as the time information and location information.
[0189] The server 2001 may acquire sensor information from multiple client devices 2002 by specifying a time or a location. For example, when an accident occurs, the server 2001 broadcasts a sensor information transmission request to multiple client devices 2002 by specifying the time and location of the accident to search for clients who were nearby. Then, the client devices 2002 that have sensor information for the corresponding time and location transmit the sensor information to the server 2001. That is, the client device 2002 receives a sensor information transmission request from the server 2001, including designation information that designates the location and time. When the client device 2002 determines that the sensor information obtained at the location and time indicated by the designation information is stored in the memory unit 2012 and that a mobile object is in an environment where it can transmit sensor information to the server 2001, the client device 2002 transmits the sensor information obtained at the location and time indicated by the designation information to the server 2001. In this way, the server 2001 can acquire sensor information related to the occurrence of an accident from multiple client devices 2002 and use it for accident analysis, etc.
[0190] Note that the client device 2002 may refuse to transmit the sensor information when receiving a sensor information transmission request from the server 2001. Also, the client device 2002 may set in advance which of the multiple pieces of sensor information are transmittable. Alternatively, the server 2001 may inquire of the client device 2002 each time whether or not it is possible to transmit the sensor information.
[0191] In addition, points may be awarded to client device 2002 that transmits sensor information to server 2001. These points can be used to pay for, for example, gasoline purchases, EV (Electric Vehicle) charging fees, highway tolls, or rental car fees. After acquiring the sensor information, server 2001 may delete information for identifying client device 2002 that transmitted the sensor information. For example, this information may be information such as the network address of client device 2002. This allows the sensor information to be anonymized, so that the user of client device 2002 can transmit the sensor information from client device 2002 to server 2001 with peace of mind. In addition, server 2001 may be composed of multiple servers. For example, by sharing sensor information among multiple servers, even if one server fails, the other servers can communicate with client device 2002. This makes it possible to avoid service interruptions due to server failures.
[0192] Furthermore, the specified location specified in the sensor information transmission request indicates the location where an accident occurred, etc., and may differ from the location of the client device 2002 at the specified time specified in the sensor information transmission request. Therefore, the server 2001 can specify a range, such as within XX meters, as the specified location and request information acquisition from the client device 2002 that is located within that range. Similarly, for the specified time, the server 2001 may specify a range, such as within N seconds before and after a certain time. This allows the server 2001 to acquire sensor information from the client device 2002 that was located "at a location: within XX meters of absolute position S, from time: tN to t+N." When transmitting three-dimensional data such as LiDAR data, the client device 2002 may transmit data generated immediately after time t.
[0193] Furthermore, the server 2001 may separately specify, as the specified location, information indicating the location of the client device 2002 from which sensor information is to be acquired and the location from which the sensor information is desired. For example, the server 2001 specifies that sensor information covering at least a range of YYm from the absolute position S is to be acquired from the client device 2002 that is located within XXm of the absolute position S. When selecting three-dimensional data to transmit, the client device 2002 selects one or more randomly accessible units of three-dimensional data that include at least the sensor information in the specified range. Furthermore, when transmitting visible light images, the client device 2002 may transmit multiple temporally consecutive image data that include at least a frame immediately before or after time t.
[0194] When the client device 2002 can use multiple physical networks, such as 5G or WiFi, or multiple modes in 5G, to transmit sensor information, the client device 2002 may select a network to use according to the priority order notified by the server 2001. Alternatively, the client device 2002 itself may select a network that can ensure an appropriate bandwidth based on the size of the data to be transmitted. Alternatively, the client device 2002 may select a network to use based on the cost of transmitting data, etc. Furthermore, the transmission request from the server 2001 may include information indicating a transmission deadline, such as a request that the client device 2002 transmit if it can start transmission by time T. If the server 2001 is unable to acquire sufficient sensor information within the deadline, the server 2001 may issue a transmission request again.
[0195] The sensor information may include header information indicating characteristics of the sensor data along with compressed or uncompressed sensor data. The client device 2002 may transmit the header information to the server 2001 via a physical network or communication protocol different from that for transmitting the sensor data. For example, the client device 2002 transmits the header information to the server 2001 prior to transmitting the sensor data. The server 2001 determines whether to acquire the sensor data of the client device 2002 based on an analysis result of the header information. For example, the header information may include information indicating the point cloud acquisition density, elevation angle, or frame rate of the LiDAR, or the resolution, signal-to-noise ratio, or frame rate of the visible light image. This allows the server 2001 to acquire sensor information from the client device 2002 having sensor data of the determined quality.
[0196] As described above, client device 2002 is mounted on a mobile object, acquires sensor information indicating the surrounding conditions of the mobile object obtained by a sensor mounted on the mobile object, and stores the sensor information in storage unit 2012. Client device 2002 determines whether the mobile object is in an environment where it can transmit the sensor information to server 2001, and if it determines that the mobile object is in an environment where it can transmit the sensor information to the server, transmits the sensor information to server 2001.
[0197] Furthermore, the client device 2002 creates three-dimensional data of the surroundings of the mobile object from the sensor information, and estimates the mobile object's own position using the created three-dimensional data.
[0198] Furthermore, the client device 2002 further transmits a request to the server 2001 to send a three-dimensional map, and receives the three-dimensional map from the server 2001. The client device 2002 estimates its own location using the three-dimensional data and the three-dimensional map.
[0199] The above processing by the client device 2002 may be realized as an information transmission method in the client device 2002.
[0200] The client device 2002 may also include a processor and a memory, and the processor may use the memory to perform the above processing.
[0201] Next, a sensor information collection system according to this embodiment will be described. Fig. 21 is a diagram showing the configuration of the sensor information collection system according to this embodiment. As shown in Fig. 21, the sensor information collection system according to this embodiment includes a terminal 2021A, a terminal 2021B, a communication device 2022A, a communication device 2022B, a network 2023, a data collection server 2024, a map server 2025, and a client device 2026. When there is no particular need to distinguish between the terminal 2021A and the terminal 2021B, they are also referred to as terminals 2021. When there is no particular need to distinguish between the communication devices 2022A and 2022B, they are also referred to as communication devices 2022.
[0202] The data collection server 2024 collects data such as sensor data obtained by a sensor provided in the terminal 2021 as position-related data associated with a position in three-dimensional space.
[0203] The sensor data is, for example, data acquired by using a sensor provided in the terminal 2021, such as the state of the surroundings of the terminal 2021 or the state of the inside of the terminal 2021. The terminal 2021 transmits to the data collection server 2024 sensor data collected from one or more sensor devices that are located in positions that can communicate directly with the terminal 2021 or that can communicate via one or more relay devices using the same communication method.
[0204] The data included in the location-related data may include, for example, information indicating the operating status of the terminal itself or a device included in the terminal, an operation log, a service usage status, etc. Furthermore, the data included in the location-related data may include information associating an identifier of the terminal 2021 with the location or movement route of the terminal 2021, etc.
[0205] The information indicating a position included in the position-related data is associated with information indicating a position in three-dimensional data such as three-dimensional map data, etc. The information indicating a position will be described in detail later.
[0206] The position-related data may include, in addition to position information indicating a position, at least one of the time information described above and information indicating the attributes of the data included in the position-related data or the type of sensor that generated the data (e.g., model number). The position information and time information may be stored in a header field of the position-related data or in a header field of a frame that stores the position-related data. Furthermore, the position information and time information may be transmitted and / or stored separately from the position-related data as metadata associated with the position-related data.
[0207] The map server 2025 is connected to, for example, the network 2023, and transmits three-dimensional data such as three-dimensional map data in response to requests from other devices such as the terminal 2021. As described in the above-mentioned embodiments, the map server 2025 may also have a function of updating the three-dimensional data using sensor information transmitted from the terminal 2021.
[0208] The data collection server 2024 is connected to the network 2023, for example, and collects location-related data from other devices such as the terminal 2021, and stores the collected location-related data in a storage device internally or in another server. The data collection server 2024 also transmits the collected location-related data or metadata of three-dimensional map data generated based on the location-related data to the terminal 2021 in response to a request from the terminal 2021.
[0209] The network 2023 is a communication network such as the Internet. The terminal 2021 is connected to the network 2023 via a communication device 2022. The communication device 2022 communicates with the terminal 2021 by using one communication method or by switching between multiple communication methods. The communication device 2022 is, for example, (1) a base station such as LTE (Long Term Evolution), (2) an access point (AP) such as WiFi or millimeter wave communication, (3) a gateway of an LPWA (Low Power Wide Area) network such as SIGFOX, LoRaWAN, or Wi-SUN, or (4) a communication satellite that communicates using a satellite communication method such as DVB-S2.
[0210] The base station may communicate with the terminal 2021 using a method classified as LPWA, such as NB-IoT (Narrow Band-IoT) or LTE-M, or may communicate with the terminal 2021 by switching between these methods.
[0211] Here, an example is given in which the terminal 2021 has a function for communicating with a communication device 2022 that uses two types of communication methods, and communicates with the map server 2025 or the data collection server 2024 using one of these communication methods, or by switching between these multiple communication methods and the communication device 2022 that is the direct communication partner; however, the configuration of the sensor information collection system and the terminal 2021 is not limited to this. For example, the terminal 2021 may not have a communication function for multiple communication methods, but may have a function for communicating using any one of the communication methods. Furthermore, the terminal 2021 may support three or more communication methods. Furthermore, each terminal 2021 may support a different communication method.
[0212] The terminal 2021 has, for example, the configuration of the client device 902 shown in Fig. 11. The terminal 2021 performs position estimation such as its own position using the received three-dimensional data. The terminal 2021 also generates position-related data by associating the sensor data acquired from the sensor with the position information obtained by the position estimation process.
[0213] The location information added to the location-related data indicates, for example, a location in a coordinate system used in three-dimensional data. For example, the location information is a coordinate value expressed as latitude and longitude values. In this case, the terminal 2021 may include, in the location information, information indicating the coordinate system that serves as the basis for the coordinate value, and the three-dimensional data used for location estimation, along with the coordinate value. The coordinate value may also include altitude information.
[0214] Furthermore, the position information may be associated with a data unit or a spatial unit that can be used to encode the three-dimensional data. Examples of such units include WLD, GOS, SPC, VLM, and VXL. In this case, the position information is expressed by an identifier for identifying a data unit, such as an SPC, that corresponds to the position-related data. The position information may also include, in addition to an identifier for identifying a data unit, such as an SPC, information indicating three-dimensional data obtained by encoding a three-dimensional space that includes the data unit, such as the SPC, or information indicating a detailed position within the SPC. The information indicating the three-dimensional data may be, for example, the file name of the three-dimensional data.
[0215] In this way, by generating location-related data associated with location information based on location estimation using three-dimensional data, the system can assign location information to the sensor information with higher accuracy than when location information based on the self-location of the client device (terminal 2021) acquired using GPS is added to the sensor information. As a result, even when the location-related data is used by another device for another service, it may be possible to more accurately identify the location corresponding to the location-related data in real space by performing location estimation based on the same three-dimensional data.
[0216] In the present embodiment, the data transmitted from the terminal 2021 is location-related data, but the data transmitted from the terminal 2021 may be data that is not associated with location information. That is, the transmission and reception of the three-dimensional data or sensor data described in other embodiments may be performed via the network 2023 described in the present embodiment.
[0217] Next, different examples of location information indicating a position in a three-dimensional or two-dimensional real space or map space will be described. The location information added to the location-related data may be information indicating a relative position with respect to a feature point in the three-dimensional data. Here, the feature point serving as the reference for the location information is, for example, a feature point encoded as SWLD and notified to the terminal 2021 as three-dimensional data.
[0218] The information indicating the relative position with respect to the feature point may be expressed as a vector from the feature point to the point indicated by the position information, and may indicate the direction and distance from the feature point to the point indicated by the position information. Alternatively, the information indicating the relative position with respect to the feature point may be information indicating the amount of displacement along each of the X-axis, Y-axis, and Z-axis from the feature point to the point indicated by the position information. Furthermore, the information indicating the relative position with respect to the feature point may be information indicating the distance from each of three or more feature points to the point indicated by the position information. Note that the relative position may not be the relative position of the point indicated by the position information expressed with each feature point as the reference, but may be the relative position of each feature point expressed with the point indicated by the position information as the reference. An example of the position information based on the relative position with respect to the feature point includes information for identifying the reference feature point and information indicating the relative position of the point indicated by the position information with respect to the feature point. Furthermore, when the information indicating the relative position with respect to the feature point is provided separately from the three-dimensional data, the information indicating the relative position with respect to the feature point may include the coordinate axes used to derive the relative position, information indicating the type of three-dimensional data, and / or information indicating the size per unit amount (e.g., scale) of the value of the information indicating the relative position.
[0219] Furthermore, the position information may include information indicating the relative positions of multiple feature points with respect to each feature point. When the position information is expressed as relative positions with respect to multiple feature points, the terminal 2021 attempting to identify the position indicated by the position information in real space may calculate candidate points for the position indicated by the position information from the positions of each feature point estimated from sensor data, and determine that the point obtained by averaging the calculated candidate points is the point indicated by the position information. This configuration reduces the influence of errors when estimating the positions of feature points from sensor data, thereby improving the estimation accuracy of the point indicated by the position information in real space. Furthermore, when the position information includes information indicating the relative positions with respect to multiple feature points, even if there is a feature point that cannot be detected due to limitations such as the type or performance of the sensor equipped in the terminal 2021, it is possible to estimate the value of the point indicated by the position information as long as any one of the multiple feature points can be detected.
[0220] Points that can be identified from sensor data can be used as feature points. Points that can be identified from sensor data are points or points within an area that satisfy a predetermined condition for feature point detection, such as the above-mentioned three-dimensional feature amount or feature amount of visible light data being equal to or greater than a threshold.
[0221] Markers placed in real space may also be used as feature points. In this case, the markers may be detected and their positions identified from data acquired using sensors such as LiDAR or cameras. For example, the markers may be represented by changes in color or brightness (reflectance), or by three-dimensional shapes (such as unevenness). Alternatively, coordinate values indicating the position of the marker, or a two-dimensional code or barcode generated from the identifier of the marker, may be used.
[0222] Furthermore, a light source that transmits an optical signal may be used as a marker. When a light source of an optical signal is used as a marker, not only information for acquiring a position, such as coordinate values or an identifier, but also other data may be transmitted by the optical signal. For example, the optical signal may include information indicating the content of a service corresponding to the position of the marker, an address such as a URL for acquiring the content, or an identifier of a wireless communication device for receiving the service, and a wireless communication method for connecting to the wireless communication device. Using an optical communication device (light source) as a marker facilitates the transmission of data other than information indicating a position, and enables dynamic switching of the data.
[0223] The terminal 2021 grasps the correspondence between feature points between different data by using, for example, an identifier commonly used between the data, or information or a table indicating the correspondence between feature points between the data. Furthermore, if there is no information indicating the correspondence between feature points, the terminal 2021 may determine that the feature points that are closest when the coordinates of a feature point in one of the three-dimensional data are converted to positions in the three-dimensional data space of the other are corresponding feature points.
[0224] When using the position information based on the relative positions described above, even between terminals 2021 or services that use different three-dimensional data, it is possible to identify or estimate the position indicated by the position information based on common feature points included in or associated with each piece of three-dimensional data. As a result, it is possible to identify or estimate the same position with higher accuracy between terminals 2021 or services that use different three-dimensional data.
[0225] Furthermore, even when using map data or three-dimensional data expressed using different coordinate systems, the effect of errors associated with coordinate system conversion can be reduced, enabling the integration of services based on more accurate location information.
[0226] Below, an example of a function provided by the data collection server 2024 will be described. The data collection server 2024 may transfer the received location-related data to another data server. If there are multiple data servers, the data collection server 2024 determines to which data server the received location-related data should be transferred, and transfers the location-related data to the data server determined as the transfer destination.
[0227] The data collection server 2024 determines the destination of transfer, for example, based on a determination rule for the destination server that is set in advance in the data collection server 2024. The determination rule for the destination server is set, for example, in a transfer destination table that associates an identifier associated with each terminal 2021 with a destination data server.
[0228] The terminal 2021 adds an identifier associated with the terminal 2021 to the location-related data to be transmitted, and transmits the data to the data collection server 2024. The data collection server 2024 identifies a destination data server corresponding to the identifier added to the location-related data based on a destination server determination rule using a destination table or the like, and transmits the location-related data to the identified data server. The destination server determination rule may be specified by a determination condition using the time or place at which the location-related data was acquired. Here, the identifier associated with the above-mentioned transmission source terminal 2021 is, for example, an identifier unique to each terminal 2021, or an identifier indicating a group to which the terminal 2021 belongs.
[0229] Furthermore, the transfer destination table does not necessarily have to directly associate an identifier associated with a source terminal with a destination data server. For example, the data collection server 2024 holds a management table storing tag information assigned to each unique identifier of the terminal 2021, and a transfer destination table associating the tag information with a destination data server. The data collection server 2024 may determine a destination data server based on the tag information using the management table and the transfer destination table. Here, the tag information is, for example, control information for management or control information for service provision assigned to the type, model number, owner, group to which the terminal 2021 corresponding to the identifier, or other identifier. Furthermore, the transfer destination table may use an identifier unique to each sensor instead of the identifier associated with the source terminal 2021. Furthermore, a rule for determining the destination server may be set from the client device 2026.
[0230] The data collection server 2024 may determine multiple data servers as transfer destinations and transfer the received location-related data to the multiple data servers. With this configuration, for example, when automatically backing up location-related data or when it is necessary to send location-related data to data servers that provide different services in order to share the location-related data, the intended data transfer can be achieved by changing the settings for the data collection server 2024. As a result, the number of steps required to build and change the system can be reduced compared to when the destination of location-related data is set in each individual terminal 2021.
[0231] In response to a transfer request signal received from a data server, the data collection server 2024 may register the data server specified in the transfer request signal as a new transfer destination, and transfer subsequently received location-related data to that data server.
[0232] The data collection server 2024 may store the location-related data received from the terminal 2021 in a recording device, and in response to a transmission request signal received from the terminal 2021 or the data server, may transmit the location-related data specified in the transmission request signal to the requesting terminal 2021 or data server.
[0233] The data collection server 2024 may determine whether or not it is possible to provide the location-related data to the requesting data server or terminal 2021, and if it is determined that it is possible to provide the location-related data, it may transfer or transmit the location-related data to the requesting data server or terminal 2021.
[0234] When a request for current location-related data is received from client device 2026, even if it is not the timing for terminal 2021 to transmit the location-related data, data collection server 2024 may request terminal 2021 to transmit the location-related data, and terminal 2021 may transmit the location-related data in response to the transmission request.
[0235] In the above explanation, it is assumed that the terminal 2021 transmits location information data to the data collection server 2024, but the data collection server 2024 may also have functions necessary for collecting location-related data from the terminal 2021, such as a function for managing the terminal 2021, or functions used when collecting location-related data from the terminal 2021.
[0236] The data collection server 2024 may have a function of transmitting a data request signal to the terminal 2021 to request the transmission of location information data, and collecting location-related data.
[0237] Management information such as an address for communicating with the terminal 2021 from which data is to be collected or an identifier unique to the terminal 2021 is registered in advance in the data collection server 2024. The data collection server 2024 collects location-related data from the terminal 2021 based on the registered management information. The management information may include information such as the type of sensor included in the terminal 2021, the number of sensors included in the terminal 2021, and the communication method supported by the terminal 2021.
[0238] The data collection server 2024 may collect information such as the operating status or current location of the terminal 2021 from the terminal 2021 .
[0239] The management information may be registered from the client device 2026, or the registration process may be initiated by the terminal 2021 sending a registration request to the data collection server 2024. The data collection server 2024 may have a function of controlling communication with the terminal 2021.
[0240] The communication between the data collection server 2024 and the terminal 2021 may be a dedicated line provided by a service provider such as an MNO (Mobile Network Operator) or an MVNO (Mobile Virtual Network Operator), or a virtual dedicated line configured by a VPN (Virtual Private Network). With this configuration, the communication between the terminal 2021 and the data collection server 2024 can be performed safely.
[0241] The data collection server 2024 may have a function of authenticating the terminal 2021 or a function of encrypting data transmitted and received between the terminal 2021. Here, the authentication process of the terminal 2021 or the encryption process of the data is performed using an identifier unique to the terminal 2021 or an identifier unique to a terminal group including multiple terminals 2021, which is shared in advance between the data collection server 2024 and the terminal 2021. This identifier is, for example, an International Mobile Subscriber Identity (IMSI), which is a unique number stored in a Subscriber Identity Module (SIM) card. The identifier used in the authentication process and the identifier used in the data encryption process may be the same or different.
[0242] The authentication or data encryption process between the data collection server 2024 and the terminal 2021 can be provided as long as both the data collection server 2024 and the terminal 2021 have the function of performing the process, and is not dependent on the communication method used by the relay communication device 2022. Therefore, a common authentication or encryption process can be used regardless of the communication method used by the terminal 2021, improving the convenience of system construction for users. However, being independent of the communication method used by the relay communication device 2022 means that it is not necessary to change the process depending on the communication method. In other words, for the purpose of improving transmission efficiency or ensuring security, the authentication or data encryption process between the data collection server 2024 and the terminal 2021 may be switched depending on the communication method used by the relay device.
[0243] The data collection server 2024 may provide the client device 2026 with a UI for managing data collection rules, such as the type of location-related data to be collected from the terminal 2021 and the data collection schedule. This allows the user to specify the terminal 2021 from which data is to be collected using the client device 2026, as well as the time and frequency of data collection. The data collection server 2024 may also specify an area on a map from which data is to be collected, and collect location-related data from the terminal 2021 included in that area.
[0244] When managing data collection rules for each terminal 2021, the client device 2026 presents, for example, a list of the terminals 2021 or sensors to be managed on a screen. The user sets whether or not data collection is necessary, the collection schedule, etc., for each item in the list.
[0245] When specifying an area on a map from which data is to be collected, the client device 2026 presents, for example, a two-dimensional or three-dimensional map of the area to be managed on the screen. The user selects the area from which data is to be collected on the displayed map. The area selected on the map may be a circular or rectangular area centered on a specified point on the map, or a circular or rectangular area that can be specified by dragging. The client device 2026 may also select the area in a predetermined unit, such as a city, an area within a city, a block, or a major road. Instead of specifying the area using a map, the area may be set by inputting latitude and longitude values, or the area may be selected from a list of candidate areas derived based on input text information. The text information may be, for example, the name of a region, city, or landmark.
[0246] Furthermore, the user may specify one or more terminals 2021 and set conditions such as a range of 100 meters around the terminal 2021, so that data may be collected while dynamically changing the specified area.
[0247] Furthermore, if the client device 2026 is equipped with a sensor such as a camera, an area on a map may be designated based on the position of the client device 2026 in real space obtained from sensor data. For example, the client device 2026 may estimate its own location using the sensor data and designate an area within a predetermined distance or a user-specified distance from a point on the map corresponding to the estimated location as an area from which data is to be collected. The client device 2026 may also designate the sensing area of the sensor, i.e., an area corresponding to the acquired sensor data, as an area from which data is to be collected. Alternatively, the client device 2026 may designate an area based on a position corresponding to the user-specified sensor data as an area from which data is to be collected. The area on the map or the location corresponding to the sensor data may be estimated by the client device 2026 or the data collection server 2024.
[0248] When designating an area on a map, the data collection server 2024 may identify the terminals 2021 within the designated area by collecting current location information of each terminal 2021, and may request the identified terminals 2021 to transmit location-related data. Alternatively, instead of the data collection server 2024 identifying the terminals 2021 within the area, the data collection server 2024 may transmit information indicating the designated area to the terminal 2021, and the terminal 2021 may determine whether or not it is within the designated area, and transmit the location-related data if it is determined that it is within the designated area.
[0249] The data collection server 2024 transmits data such as a list or a map for providing the above-mentioned UI (User Interface) in an application executed by the client device 2026 to the client device 2026. The data collection server 2024 may transmit not only data such as a list or a map but also an application program to the client device 2026. The above-mentioned UI may be provided as content created in HTML or the like that can be displayed in a browser. Note that some data, such as map data, may be provided from a server other than the data collection server 2024, such as a map server 2025.
[0250] When the user inputs information to notify completion of input, such as by pressing a setting button, the client device 2026 transmits the input information as setting information to the data collection server 2024. Based on the setting information received from the client device 2026, the data collection server 2024 transmits a signal to each terminal 2021 requesting location-related data or notifying the rules for collecting location-related data, and collects the location-related data.
[0251] Next, an example will be described in which the operation of the terminal 2021 is controlled based on additional information added to three-dimensional or two-dimensional map data.
[0252] In this configuration, object information indicating the position of a power supply unit such as a wireless power supply antenna or power supply coil buried in a road or parking lot is included in or associated with the three-dimensional data and provided to a terminal 2021, such as a car or a drone.
[0253] When a vehicle or drone acquires the object information to charge, it automatically moves its own position so that the position of its charging unit, such as a charging antenna or charging coil, faces the area indicated by the object information, and begins charging. In the case of a vehicle or drone without an autonomous driving function, the direction to move or the operation to be performed is displayed on the screen or audio is used to inform the driver or pilot. When it is determined that the position of the charging unit calculated based on the estimated self-position is within the area indicated by the object information or within a predetermined distance from that area, the displayed image or audio is switched to one instructing the driver or pilot to stop driving or piloting, and charging begins.
[0254] Furthermore, the object information may not be information indicating the position of the power supply unit, but may be information indicating an area in which a charging efficiency equal to or greater than a predetermined threshold can be obtained when a charging unit is placed within the area. The position of the object information may be represented by a point at the center of the area indicated by the object information, or may be represented by an area or line in a two-dimensional plane, or an area, line, or plane in three-dimensional space.
[0255] This configuration makes it possible to grasp the position of the power feeding antenna, which cannot be grasped from the LiDAR sensing data or the video captured by the camera, and therefore it is possible to align the wireless charging antenna provided in the terminal 2021 such as a car with the wireless power feeding antenna buried in the road, etc. with higher accuracy. As a result, it is possible to shorten the charging speed during wireless charging and improve the charging efficiency.
[0256] The object information may be an object other than the power supply antenna. For example, the three-dimensional data includes the position of a millimeter-wave wireless communication AP as object information. This allows the terminal 2021 to know the position of the AP in advance, and therefore can start communication by directing the beam direction in the direction of the object information. As a result, it is possible to improve communication quality by improving transmission speed, shortening the time until communication starts, and extending the period during which communication is possible.
[0257] The object information may include information indicating the type of object corresponding to the object information. The object information may also include information indicating a process to be performed by the terminal 2021 when the terminal 2021 is within an area in real space corresponding to the position of the object information in the three-dimensional data, or within a predetermined distance from the area.
[0258] The object information may be provided from a server different from the server that provides the three-dimensional data. When the object information is provided separately from the three-dimensional data, object groups that store object information used in the same service may be provided as separate data depending on the type of target service or target device.
[0259] The three-dimensional data used in combination with the object information may be point cloud data of the WLD or feature point data of the SWLD.
[0260] (Embodiment 6) The octree representation and the voxel scanning order will be explained below. A volume is converted into an octree structure (octreeing) and then encoded. The octree structure consists of nodes and leaves. Each node has eight nodes or leaves, and each leaf has voxel (VXL) information. Fig. 22 is a diagram showing an example of the structure of a volume including multiple voxels. Fig. 23 is a diagram showing an example of the volume shown in Fig. 22 converted into an octree structure. Here, among the leaves shown in Fig. 23, leaves 1, 2, and 3 represent voxels VXL1, VXL2, and VXL3 shown in Fig. 22, respectively, and represent a VXL including a point cloud (hereinafter referred to as an effective VXL).
[0261] An octree is represented by a binary sequence of, for example, 0 and 1. For example, if a node or a valid VXL is set to value 1 and the rest to value 0, then the binary sequence shown in FIG. 23 is assigned to each node and leaf. Then, this binary sequence is scanned according to the scan order of breadth-first or depth-first. For example, when scanned breadth-first, the binary sequence shown in A of FIG. 24 is obtained. When scanned depth-first, the binary sequence shown in B of FIG. 24 is obtained. The binary sequence obtained by this scan is coded by entropy coding to reduce the amount of information.
[0262] Next, we will explain depth information in octree representation. Depth in octree representation is used to control the granularity of the point cloud information contained in the volume to be retained. Setting a larger depth allows the point cloud information to be reproduced at a finer level, but the amount of data required to represent nodes and leaves increases. Conversely, setting a smaller depth reduces the amount of data, but since multiple point cloud information with different positions and colors is considered to be in the same position and with the same color, the information contained in the original point cloud information will be lost.
[0263] For example, FIG. 25 is a diagram showing an example in which the octree with depth=2 shown in FIG. 23 is expressed as an octree with depth=1. The octree shown in FIG. 25 has a smaller amount of data than the octree shown in FIG. 23. In other words, the octree shown in FIG. 25 has a smaller number of bits after binarization than the octree shown in FIG. 25. Here, leaf 1 and leaf 2 shown in FIG. 23 are expressed as leaf 1 shown in FIG. 24. In other words, the information that leaf 1 and leaf 2 shown in FIG. 23 were in different positions is lost.
[0264] FIG. 26 is a diagram showing volumes corresponding to the octree shown in FIG. 25. VXL1 and VXL2 shown in FIG. 22 correspond to VXL12 shown in FIG. 26. In this case, the three-dimensional data encoding device generates color information for VXL12 shown in FIG. 26 from the color information for VXL1 and VXL2 shown in FIG. 22. For example, the three-dimensional data encoding device calculates the average value, median value, or weighted average value of the color information for VXL1 and VXL2 as the color information for VXL12. In this way, the three-dimensional data encoding device may control the reduction of data amount by changing the depth of the octree.
[0265] The three-dimensional data encoding device may set the depth information of the octree in any unit of world, space, or volume. In this case, the three-dimensional data encoding device may add the depth information to the header information of the world, the header information of the space, or the header information of the volume. Furthermore, the same value may be used as the depth information for all worlds, spaces, and volumes at different times. In this case, the three-dimensional data encoding device may add the depth information to the header information that manages the worlds of all times.
[0266] (Embodiment 7) Hereinafter, a method using RAHT (Region Adaptive Hierarchical Transform) will be described as another method for encoding attribute information of three-dimensional points. Fig. 27 is a diagram for explaining encoding of attribute information using RAHT.
[0267] First, the three-dimensional data encoding device generates a Morton code based on the position information of the three-dimensional points, and sorts the attribute information of the three-dimensional points in Morton code order. For example, the three-dimensional data encoding device may sort in ascending order of the Morton code. Note that the sorting order is not limited to the Morton code order, and other orders may be used.
[0268] Next, the three-dimensional data encoding device applies a Haar transform to the attribute information of two adjacent three-dimensional points in Morton code order to generate high-frequency and low-frequency components of layer L. For example, the three-dimensional data encoding device may use a 2x2 matrix Haar transform. The generated high-frequency components are included in the encoding coefficients as high-frequency components of layer L, and the generated low-frequency components are used as input values for layer L+1, which is higher than layer L.
[0269] After generating high-frequency components for layer L using the attribute information for layer L, the three-dimensional data encoding device continues processing for layer L+1. In processing layer L+1, the three-dimensional data encoding device generates high-frequency and low-frequency components for layer L+1 by applying a Haar transform to two low-frequency components obtained by Haar transforming the attribute information for layer L. The generated high-frequency components are included in the coding coefficients as high-frequency components for layer L+1, and the generated low-frequency components are used as input values for layer L+2, which is higher than layer L+1.
[0270] The three-dimensional data encoding device repeats this hierarchical processing until it determines that it has reached the highest hierarchical level Lmax when only one low-frequency component is input to the hierarchical level. The three-dimensional data encoding device includes the low-frequency component of hierarchical level Lmax-1 input to hierarchical level Lmax in the encoding coefficients. The values of the low-frequency or high-frequency components included in the encoding coefficients are then quantized and encoded using entropy encoding or the like.
[0271] In addition, when applying the Haar transform, if there is only one three-dimensional point as two adjacent three-dimensional points, the three-dimensional data encoding device may use the value of the attribute information of the one existing three-dimensional point as the input value of the higher hierarchy.
[0272] In this way, the three-dimensional data encoding device applies a hierarchical Haar transform to the input attribute information to generate high-frequency and low-frequency components of the attribute information, and then performs encoding by applying quantization, etc., which will be described later, thereby improving encoding efficiency.
[0273] When the attribute information is N-dimensional, the three-dimensional data encoding device may apply a Haar transform to each dimension independently to calculate the respective encoding coefficients. For example, when the attribute information is color information (RGB, YUV, etc.), the three-dimensional data encoding device applies a Haar transform to each component to calculate the respective encoding coefficients.
[0274] The three-dimensional data encoding device may apply the Haar transform in the order of layer L, L+1, ..., layer Lmax. The closer to layer Lmax, the more encoding coefficients are generated that include low-frequency components of the input attribute information.
[0275] w0 and w1 shown in Fig. 27 are weights assigned to each three-dimensional point. For example, the three-dimensional data encoding device may calculate the weight based on distance information between two adjacent three-dimensional points to which the Haar transform is applied. For example, the three-dimensional data encoding device may improve encoding efficiency by increasing the weight as the distance becomes shorter. Note that the three-dimensional data encoding device may calculate this weight using a different method, or may not use a weight at all.
[0276] In the example shown in Fig. 27, the input attribute information is a0, a1, a2, a3, a4, and a5. Of the coding coefficients after Haar transform, Ta1, Ta5, Tb1, Tb3, Tc1, and d0 are coded. The other coding coefficients (b0, b2, c0, etc.) are intermediate values and are not coded.
[0277] 27, a high-frequency component Ta1 and a low-frequency component b0 are generated by performing a Haar transform on a0 and a1. Here, when the weights w0 and w1 are equal, the low-frequency component b0 is the average value of a0 and a1, and the high-frequency component Ta1 is the difference between a0 and a1.
[0278] Since there is no attribute information paired with a2, a2 is used as b1. Similarly, there is no attribute information paired with a3, so a3 is used as b2. Furthermore, by performing a Haar transform on a4 and a5, a high-frequency component Ta5 and a low-frequency component b3 are generated.
[0279] At layer L+1, a Haar transform is performed on b0 and b1 to generate a high-frequency component Tb1 and a low-frequency component c0. Similarly, a Haar transform is performed on b2 and b3 to generate a high-frequency component Tb3 and a low-frequency component c1.
[0280] At the layer Lmax-1, a Haar transform is performed on c0 and c1 to generate a high frequency component Tc1 and a low frequency component d0.
[0281] The three-dimensional data encoding device may quantize the encoding coefficients after applying the Haar transform before encoding. For example, the three-dimensional data encoding device performs quantization by dividing the encoding coefficients by a quantization scale (also called a quantization step (QS)). In this case, the smaller the quantization scale, the smaller the error (quantization error) that may occur due to quantization. Conversely, the larger the quantization scale, the larger the quantization error.
[0282] The three-dimensional data encoding device may change the value of the quantization scale for each layer. FIG. 28 is a diagram showing an example of setting the quantization scale for each layer. For example, the three-dimensional data encoding device may set a smaller quantization scale for higher layers and a larger quantization scale for lower layers. The coding coefficients of three-dimensional points belonging to higher layers contain more low-frequency components than lower layers, and are therefore likely to be important components in terms of human visual characteristics, etc. Therefore, by reducing the quantization scale for higher layers and suppressing quantization errors that may occur in the higher layers, visual degradation can be suppressed and encoding efficiency can be improved.
[0283] The three-dimensional data encoding device may add the quantization scale for each layer to a header, etc. This allows the three-dimensional data decoding device to correctly decode the quantization scale and appropriately decode the bitstream.
[0284] Furthermore, the three-dimensional data encoding device may adaptively switch the value of the quantization scale according to the importance of the target three-dimensional point to be encoded. For example, the three-dimensional data encoding device may use a small quantization scale for three-dimensional points of high importance and a large quantization scale for three-dimensional points of low importance. For example, the three-dimensional data encoding device may calculate the importance from weights used in the Haar transform. For example, the three-dimensional data encoding device may calculate the quantization scale using the sum of w0 and w1. By reducing the quantization scale for three-dimensional points of high importance in this way, the quantization error is reduced, thereby improving encoding efficiency.
[0285] Alternatively, the QS value may be decreased in higher layers, which increases the QW value in higher layers and improves prediction efficiency by reducing the quantization error of the 3D points.
[0286] Here, the coding coefficient Ta1q after quantization of the coding coefficient Ta1 of the attribute information a1 is expressed as Ta1 / QS_L. Note that QS may be the same value in all layers or in some layers.
[0287] QW (Quantization Weight) is a value that represents the importance of the 3D point to be coded. For example, the sum of the above-mentioned w0 and w1 may be used as QW. This makes the QW value larger in higher layers, and reduces the quantization error of the 3D point, thereby improving prediction efficiency.
[0288] For example, the three-dimensional data encoding device may initially initialize the QW values of all three-dimensional points to 1, and then update the QW values of each three-dimensional point using the values of w0 and w1 during the Haar transform. Alternatively, the three-dimensional data encoding device may change the initial value according to the layer, rather than initializing the QW values of all three-dimensional points to the value 1. For example, the quantization scale of a higher layer is reduced by setting a larger initial value for the QW. This reduces prediction errors in the higher layers, thereby improving prediction accuracy in the lower layers and encoding efficiency. Note that the three-dimensional data encoding device does not necessarily have to use the QW.
[0289] When QW is used, the quantized value Ta1q of Ta1 is calculated by (Equation K1) and (Equation K2).
[0290]
number
[0291] Furthermore, the three-dimensional data encoding device scans and encodes the quantized encoding coefficients (unsigned integer values) in a certain order. For example, the three-dimensional data encoding device encodes a plurality of three-dimensional points in order from the three-dimensional points included in the upper layer to the lower layer.
[0292] For example, in the example shown in Fig. 27, the three-dimensional data encoding device encodes multiple three-dimensional points included in the upper layer Lmax in the order of d0q to Tc1q, Tb1q, Tb3q, Ta1q, and Ta5q. Here, the lower the layer L, the more likely the coding coefficients after quantization are to become 0. The following factors can be cited as reasons for this.
[0293] The coding coefficients of the lower layer L have higher frequency components than the upper layers, and therefore tend to be 0 depending on the target 3D point. Also, by switching the quantization scale according to the importance, etc., as described above, the quantization scale becomes larger in the lower layers, and the coding coefficients after quantization tend to be 0.
[0294] In this way, the lower the layer, the more likely the coding coefficient after quantization is to become 0, and the more likely it is that consecutive 0s will occur in the first code string. Fig. 29 is a diagram showing examples of the first code string and the second code string.
[0295] The three-dimensional data encoding device counts the number of times the value 0 occurs in the first code string, and encodes the number of times the value 0 occurs in succession instead of consecutive values of 0. In other words, the three-dimensional data encoding device generates a second code string by replacing consecutive coding coefficients of the value 0 in the first code string with the number of consecutive 0s (ZeroCnt). This makes it possible to improve encoding efficiency by encoding the number of consecutive 0s rather than encoding a large number of 0s when consecutive values of 0 occur in coding coefficients after quantization.
[0296] Furthermore, the three-dimensional data encoding device may entropy-encode the value of ZeroCnt. For example, the three-dimensional data encoding device binarizes the value of ZeroCnt using a truncated unary code with a total number T of three-dimensional points to be encoded, and then arithmetically encodes each bit after binarization. FIG. 30 is a diagram showing an example of a truncated unary code when the total number of three-dimensional points to be encoded is T. In this case, the three-dimensional data encoding device may improve encoding efficiency by using a different encoding table for each bit. For example, the three-dimensional data encoding device uses encoding table 1 for the first bit, encoding table 2 for the second bit, and encoding table 3 for the bits thereafter. In this way, the three-dimensional data encoding device can improve encoding efficiency by switching the encoding table for each bit.
[0297] Furthermore, the three-dimensional data encoding device may perform arithmetic coding after binarizing ZeroCnt using Exponential-Golomb. This can improve efficiency compared to binarized arithmetic coding using truncated unary codes when the value of ZeroCnt is likely to be large. The three-dimensional data encoding device may add a flag to the header for switching between using truncated unary codes and using Exponential-Golomb. This allows the three-dimensional data encoding device to improve encoding efficiency by selecting the optimal binarization method. Furthermore, the three-dimensional data decoding device can switch the binarization method by referring to the flag included in the header, and correctly decode the bitstream.
[0298] The three-dimensional data decoding device may convert the decoded quantized coding coefficients from unsigned integer values to signed integer values using a method reverse to that used by the three-dimensional data encoding device. This allows the three-dimensional data decoding device to properly decode the generated bitstream without considering the occurrence of negative integers when the coding coefficients are entropy coded. Note that the three-dimensional data decoding device does not necessarily have to convert the coding coefficients from unsigned integer values to signed integer values. For example, when decoding a bitstream containing coded bits that have been separately entropy coded, the three-dimensional data decoding device may decode the coded bits.
[0299] The three-dimensional data decoding device decodes the quantized coding coefficients converted into signed integer values by inverse quantization and inverse Haar transform. The three-dimensional data decoding device also uses the decoded coding coefficients for prediction of the three-dimensional point to be decoded and beyond. Specifically, the three-dimensional data decoding device calculates inverse quantized values by multiplying the quantized coding coefficients by the decoded quantization scale. Next, the three-dimensional data decoding device obtains decoded values by applying the inverse Haar transform described below to the inverse quantized values.
[0300] For example, the three-dimensional data decoding device converts the decoded unsigned integer value into a signed integer value in the following manner: If the LSB (least significant bit) of the decoded unsigned integer value a2u is 1, the signed integer value Ta1q is set to -((a2u+1)>>1). If the LSB of the decoded unsigned integer value a2u is not 1 (is 0), the signed integer value Ta1q is set to (a2u>>1).
[0301] The inverse quantization value of Ta1 is expressed as Ta1q×QS_L, where Ta1q is the quantization value of Ta1 and QS_L is the quantization step of layer L.
[0302] Furthermore, the QS may be the same value for all layers or for some layers. Furthermore, the three-dimensional data encoding device may add information indicating the QS to a header, etc. This allows the three-dimensional data decoding device to perform correct inverse quantization using the same QS as that used by the three-dimensional data encoding device.
[0303] Next, the inverse Haar transform will be described. Fig. 31 is a diagram for explaining the inverse Haar transform. The three-dimensional data decoding device decodes the attribute values of the three-dimensional points by applying the inverse Haar transform to the coding coefficients after dequantization.
[0304] First, the three-dimensional data decoding device generates a Morton code based on the position information of the three-dimensional points, and sorts the three-dimensional points in Morton code order. For example, the three-dimensional data decoding device may sort the three-dimensional points in ascending order of the Morton codes. Note that the sorting order is not limited to the Morton code order, and other orders may be used.
[0305] Next, the three-dimensional data decoding device applies an inverse Haar transform to the coding coefficients containing low-frequency components of layer L+1 and the coding coefficients containing high-frequency components of layer L to restore attribute information of adjacent three-dimensional points in Morton code order in layer L. For example, the three-dimensional data decoding device may use an inverse Haar transform of a 2×2 matrix. The restored attribute information of layer L is used as input values for the lower layer L−1.
[0306] The three-dimensional data decoding device repeats this hierarchical processing, and ends the processing when all the attribute information in the lowest layer has been decoded. Note that if only one three-dimensional point exists as two adjacent three-dimensional points in layer L-1 when applying the inverse Haar transform, the three-dimensional data decoding device may substitute the value of the coded component in layer L for the attribute value of the one existing three-dimensional point. In this way, the three-dimensional data decoding device can apply the Haar transform to all values of the input attribute information and correctly decode a bitstream with improved coding efficiency.
[0307] When the attribute information is N-dimensional, the three-dimensional data decoding device may apply an inverse Haar transform to each dimension independently to decode each encoding coefficient. For example, when the attribute information is color information (RGB, YUV, etc.), the three-dimensional data decoding device applies an inverse Haar transform to the encoding coefficient for each component to decode each attribute value.
[0308] The three-dimensional data decoding device may apply the inverse Haar transform in the order of layers Lmax, L+1, ..., layer L. Furthermore, w0 and w1 shown in FIG. 31 are weights assigned to each three-dimensional point. For example, the three-dimensional data decoding device may calculate a weight based on distance information between two adjacent three-dimensional points to which the inverse Haar transform is applied. For example, the three-dimensional data encoding device may decode a bitstream with improved encoding efficiency by increasing the weight as the distance becomes shorter.
[0309] In the example shown in FIG. 31, the coding coefficients after dequantization are Ta1, Ta5, Tb1, Tb3, Tc1, and d0, and the decoded values obtained are a0, a1, a2, a3, a4, and a5.
[0310] 32 is a diagram illustrating an example of the syntax of attribute information (attribute_data). The attribute information (attribute_data) includes the number of consecutive zeros (ZeroCnt), the number of attribute dimensions (attribute_dimension), and the coding coefficient (value[j][i]).
[0311] The number of consecutive zeros (ZeroCnt) indicates the number of consecutive 0s in the coding coefficient after quantization. Note that the three-dimensional data coding device may binarize ZeroCnt and then perform arithmetic coding.
[0312] 32, the three-dimensional data encoding device may determine whether the layer L (layer L) to which the encoding coefficient belongs is equal to or greater than a predetermined threshold TH_layer, and may switch the information to be added to the bitstream depending on the determination result. For example, if the determination result is true, the three-dimensional data encoding device may add all the encoding coefficients of the attribute information to the bitstream. Alternatively, if the determination result is false, the three-dimensional data encoding device may add only some of the encoding coefficients to the bitstream.
[0313] Specifically, if the determination result is true, the three-dimensional data encoding device adds the encoding result of the RGB or YUV three-dimensional color information to the bitstream. If the determination result is false, the three-dimensional data encoding device adds some of the color information, such as G or Y, to the bitstream, and does not need to add other components to the bitstream. In this way, the three-dimensional data encoding device can improve encoding efficiency by not adding some of the encoding coefficients of layers (layers lower than the TH_layer) that include encoding coefficients indicating high-frequency components whose degradation is less noticeable visually to the bitstream.
[0314] The attribute dimension number (attribute_dimension) indicates the number of dimensions of the attribute information. For example, if the attribute information is color information (RGB or YUV, etc.) of a three-dimensional point, the color information is three-dimensional, so the attribute dimension number is set to a value of 3. If the attribute information is reflectance, the reflectance is one-dimensional, so the attribute dimension number is set to a value of 1. The attribute dimension number may be added to the header of the attribute information of the bitstream, etc.
[0315] The coding coefficient (value[j][i]) indicates the coding coefficient of the j-th dimensional attribute information of the i-th 3D point after quantization. For example, if the attribute information is color information, value
[99] [1] indicates the coding coefficient of the second dimensional information (e.g., G value) of the 100th 3D point. Also, if the attribute information is reflectance information, value
[0119] [0] indicates the coding coefficient of the first dimensional information (e.g., reflectance) of the 120th 3D point.
[0316] If the following condition is satisfied, the three-dimensional data encoding device may subtract the value 1 from value[j][i] and entropy encode the resulting value. In this case, the three-dimensional data decoding device restores the encoding coefficient by adding the value 1 to value[j][i] after entropy decoding.
[0317] The above conditions are (1) when attribute_dimension = 1, or (2) when attribute_dimension is 1 or greater and all dimension values are equal. For example, if the attribute information is reflectance, attribute_dimension = 1, so the three-dimensional data encoder subtracts the value 1 from the encoding coefficient to calculate the value and encodes the calculated value. The three-dimensional data decoder adds the value 1 to the decoded value to calculate the encoding coefficient.
[0318] More specifically, for example, if the encoding coefficient for reflectance is 10, the three-dimensional data encoding device encodes the value 9 obtained by subtracting the value 1 from the encoding coefficient value 10. The three-dimensional data decoding device adds the value 1 to the decoded value 9 to calculate the encoding coefficient value 10.
[0319] Furthermore, since attribute_dimension=3 when the attribute information is color, for example, if the quantized coding coefficients of each R, G, and B component are the same, the three-dimensional data coding device subtracts a value of 1 from each coding coefficient and encodes the obtained value. The three-dimensional data decoding device adds a value of 1 to the decoded value. More specifically, for example, if the coding coefficients of R, G, and B=(1, 1, 1), the three-dimensional data coding device encodes (0, 0, 0). The three-dimensional data decoding device adds 1 to each component of (0, 0, 0) to calculate (1, 1, 1). Furthermore, if the coding coefficients of R, G, and B=(2, 1, 2), the three-dimensional data coding device encodes (2, 1, 2) as is. The three-dimensional data decoding device uses the decoded (2, 1, 2) as is as the coding coefficient.
[0320] In this way, by providing ZeroCnt, a pattern in which all dimensions of value are 0 is not generated, so that the value obtained by subtracting 1 from the value can be coded. This improves coding efficiency.
[0321] Also, value[0][i] shown in Fig. 32 indicates the coding coefficient after quantization of the first-dimensional attribute information of the i-th three-dimensional point. As shown in Fig. 32, if the layer L (layer L) to which the coding coefficient belongs is smaller than the threshold TH_layer, the first-dimensional attribute information may be added to the bitstream (attribute information from the second dimension onwards is not added to the bitstream), thereby reducing the amount of code.
[0322] The three-dimensional data encoding device may switch the calculation method of the ZeroCnt value depending on the value of attribute_dimension. For example, when attribute_dimension=3, the three-dimensional data encoding device may count the number of times the values of the encoding coefficients of all components (dimensions) are 0. FIG. 33 is a diagram showing an example of encoding coefficients and ZeroCnt in this case. For example, in the case of the color information shown in FIG. 33, the three-dimensional data encoding device counts the number of consecutive encoding coefficients in which the R, G, and B components are all 0, and adds the counted number to the bitstream as ZeroCnt. This eliminates the need to encode ZeroCnt for each component, thereby reducing overhead. This improves encoding efficiency. Note that the three-dimensional data encoding device may calculate ZeroCnt for each dimension even when attribute_dimension is 2 or more, and add the calculated ZeroCnt to the bitstream.
[0323] 34 is a flowchart of three-dimensional data encoding processing according to this embodiment. First, the three-dimensional data encoding device encodes position information (geometry) (S6601). For example, the three-dimensional data encoding device performs encoding using an octree representation.
[0324] Next, the three-dimensional data encoding device converts the attribute information (S6602). For example, if the position of a three-dimensional point changes due to quantization or the like after encoding the position information, the three-dimensional data encoding device reallocates the attribute information of the original three-dimensional point to the changed three-dimensional point. The three-dimensional data encoding device may perform the reallocation by interpolating the value of the attribute information according to the amount of change in position. For example, the three-dimensional data encoding device detects N pre-change three-dimensional points that are close to the changed three-dimensional position, weights the values of the attribute information of the N three-dimensional points based on the distance from the changed three-dimensional position to each of the N three-dimensional points, and sets the obtained value as the value of the attribute information of the changed three-dimensional point. Furthermore, 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 pre-change three-dimensional points as the value of the attribute information of the changed three-dimensional point.
[0325] Next, the three-dimensional data encoding device encodes the attribute information (S6603). For example, when encoding multiple pieces of attribute information, the three-dimensional data encoding device may encode the multiple pieces of attribute information in order. For example, when encoding color and reflectance as attribute information, the three-dimensional data encoding device generates a bitstream in which the encoding result of reflectance is added after the encoding result of color. Note that the encoding results of the multiple pieces of attribute information added to the bitstream may be in any order.
[0326] The three-dimensional data encoding device may also add information indicating the start location of the encoded data for each piece of attribute information in the bitstream to a header or the like. This allows the three-dimensional data decoding device to selectively decode attribute information that needs to be decoded, thereby omitting the decoding process for attribute information that does not need to be decoded. This reduces the amount of processing required by the three-dimensional data decoding device. The three-dimensional data encoding device may also encode multiple pieces of attribute information in parallel and combine the encoding results into a single bitstream. This allows the three-dimensional data encoding device to encode multiple pieces of attribute information at high speed.
[0327] 35 is a flowchart of the attribute information encoding process (S6603). First, the three-dimensional data encoding device generates encoding coefficients from the attribute information using Haar transform (S6611). Next, the three-dimensional data encoding device applies quantization to the encoding coefficients (S6612). Next, the three-dimensional data encoding device generates encoded attribute information (bit stream) by encoding the quantized encoding coefficients (S6613).
[0328] Furthermore, the three-dimensional data encoding device applies inverse quantization to the quantized coding coefficients (S6614). Next, the three-dimensional data decoding device decodes attribute information by applying an inverse Haar transform to the inverse quantized coding coefficients (S6615). For example, the decoded attribute information is referenced in subsequent encoding.
[0329] FIG. 36 is a flowchart of the coding coefficient coding process (S6613). First, the three-dimensional data coding device converts the coding coefficient from a signed integer value to an unsigned integer value (S6621). For example, the three-dimensional data coding device converts the signed integer value to an unsigned integer value as follows: If the signed integer value Ta1q is smaller than 0, the unsigned integer value is set to -1-(2×Ta1q). If the signed integer value Ta1q is 0 or greater, the unsigned integer value is set to 2×Ta1q. Note that if the coding coefficient does not become a negative value, the three-dimensional data coding device may code the coding coefficient as an unsigned integer value as is.
[0330] If all coding coefficients have not been processed (No in S6622), the three-dimensional data coding device determines whether the value of the coding coefficient to be processed is zero (S6623). If the value of the coding coefficient to be processed is zero (Yes in S6623), the three-dimensional data coding device increments ZeroCnt by 1 (S6624) and returns to step S6622.
[0331] If the value of the coding coefficient to be processed is not zero (No in S6623), the three-dimensional data coding device encodes ZeroCnt and resets ZeroCnt to 0 (S6625). The three-dimensional data coding device also arithmetically codes the coding coefficient to be processed (S6626) and returns to step S6622. For example, the three-dimensional data coding device performs binary arithmetic coding. The three-dimensional data coding device may also subtract a value of 1 from the coding coefficient and code the resulting value.
[0332] Furthermore, the processes of steps S6623 to S6626 are repeated for each coding coefficient. Furthermore, if all coding coefficients have been processed (Yes in S6622), the three-dimensional data coding device ends the process.
[0333] 37 is a flowchart of three-dimensional data decoding processing according to this embodiment. First, the three-dimensional data decoding device decodes position information (geometry) from the bit stream (S6631). For example, the three-dimensional data decoding device performs decoding using an octree representation.
[0334] Next, the three-dimensional data decoding device decodes the attribute information from the bitstream (S6632). For example, when decoding multiple pieces of attribute information, the three-dimensional data decoding device may decode the multiple pieces of attribute information in order. For example, when decoding color and reflectance as attribute information, the three-dimensional data decoding device decodes the encoding result of color and the encoding result of reflectance in the order in which they are added to the bitstream. For example, when the encoding result of reflectance is added after the encoding result of color in the bitstream, the three-dimensional data decoding device decodes the encoding result of color, and then decodes the encoding result of reflectance. Note that the three-dimensional data decoding device may decode the encoding results of the attribute information added to the bitstream in any order.
[0335] Furthermore, the three-dimensional data decoding device may obtain information indicating the start location of the coded data for each piece of attribute information in the bitstream by decoding a header or the like. This allows the three-dimensional data decoding device to selectively decode attribute information that needs to be decoded, thereby omitting the decoding process for attribute information that does not need to be decoded. This reduces the amount of processing required by the three-dimensional data decoding device. Furthermore, the three-dimensional data decoding device may decode multiple pieces 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 pieces of attribute information at high speed.
[0336] 38 is a flowchart of the attribute information decoding process (S6632). First, the three-dimensional data decoding device decodes the coding coefficients from the bitstream (S6641). Next, the three-dimensional data decoding device applies inverse quantization to the coding coefficients (S6642). Next, the three-dimensional data decoding device decodes the attribute information by applying an inverse Haar transform to the coding coefficients after the inverse quantization (S6643).
[0337] 39 is a flowchart of the coding coefficient decoding process (S6641). First, the three-dimensional data decoding device decodes ZeroCnt from the bitstream (S6651). If all coding coefficients have not been processed (No in S6652), the three-dimensional data decoding device determines whether ZeroCnt is greater than 0 (S6653).
[0338] If ZeroCnt is greater than zero (Yes in S6653), the three-dimensional data decoding device sets the coding coefficient to be processed to 0 (S6654). Next, the three-dimensional data decoding device subtracts 1 from ZeroCnt (S6655) and returns to step S6652.
[0339] If ZeroCnt is zero (No in S6653), the three-dimensional data decoding device decodes the coding coefficient to be processed (S6656). For example, the three-dimensional data decoding device uses binary arithmetic decoding. The three-dimensional data decoding device may also add a value of 1 to the decoded coding coefficient.
[0340] Next, the three-dimensional data decoding device decodes ZeroCnt, sets the obtained value to ZeroCnt (S6657), and returns to step S6652.
[0341] Furthermore, the processes of steps S6653 to S6657 are repeated for each coding coefficient. Furthermore, if all coding coefficients have been processed (Yes in S6652), the three-dimensional data decoding device converts the decoded coding coefficients from unsigned integer values to signed integer values (S6658). For example, the three-dimensional data decoding device may convert the decoded coding coefficients from unsigned integer values to signed integer values as follows: If the LSB (least significant bit) of the decoded unsigned integer value Ta1u is 1, the signed integer value Ta1q is set to -((Ta1u+1)>>1). If the LSB of the decoded unsigned integer value Ta1u is not 1 (is 0), the signed integer value Ta1q is set to (Ta1u>>1). Note that if the coding coefficient does not become a negative value, the three-dimensional data decoding device may use the decoded coding coefficient as a signed integer value as is.
[0342] 40 is a block diagram of an attribute information encoding unit 6600 included in the three-dimensional data encoding device. The attribute information encoding unit 6600 includes a sorting unit 6601, a Haar transform unit 6602, a quantization unit 6603, an inverse quantization unit 6604, an inverse Haar transform unit 6605, a memory 6606, and an arithmetic encoding unit 6607.
[0343] The sorting unit 6601 generates a Morton code using the position information of the 3D points and sorts the multiple 3D points in Morton code order. The Haar transform unit 6602 generates coding coefficients by applying a Haar transform to the attribute information. The quantization unit 6603 quantizes the coding coefficients of the attribute information.
[0344] The inverse quantization unit 6604 inversely quantizes the quantized coding coefficients. The inverse Haar transform unit 6605 applies an inverse Haar transform to the coding coefficients. The memory 6606 stores values of attribute information of multiple decoded 3D points. For example, the attribute information of the decoded 3D points stored in the memory 6606 may be used for predicting uncoded 3D points.
[0345] The arithmetic coding unit 6607 calculates ZeroCnt from the quantized coding coefficients and arithmetically codes the ZeroCnt. The arithmetic coding unit 6607 also arithmetically codes the quantized non-zero coding coefficients. The arithmetic coding unit 6607 may binarize the coding coefficients before arithmetic coding. The arithmetic coding unit 6607 may also generate and code various header information.
[0346] 41 is a block diagram of the attribute information decoding unit 6610 included in the three-dimensional data decoding device. The attribute information decoding unit 6610 includes an arithmetic decoding unit 6611, an inverse quantization unit 6612, an inverse Haar transform unit 6613, and a memory 6614.
[0347] The arithmetic decoding unit 6611 arithmetically decodes the ZeroCnt and coding coefficients included in the bitstream. Note that the arithmetic decoding unit 6611 may also decode various types of header information.
[0348] The inverse quantization unit 6612 inverse quantizes the arithmetically decoded coding coefficients. The inverse Haar transform unit 6613 applies inverse Haar transform to the inversely quantized coding coefficients. The memory 6614 stores values of attribute information of multiple decoded 3D points. For example, the attribute information of the decoded 3D points stored in the memory 6614 may be used to predict undecoded 3D points.
[0349] In the above embodiment, an example is shown in which the three-dimensional points are coded in the order from the lower layer to the upper layer as the coding order, but this is not necessarily limited to this. For example, a method of scanning the coding coefficients after Haar transform in the order from the upper layer to the lower layer may be used. In this case, the three-dimensional data coding device may also code the number of consecutive zeros as ZeroCnt.
[0350] Furthermore, the three-dimensional data encoding device may switch whether to use the encoding method using ZeroCnt described in this embodiment on a WLD, SPC, or volume basis. In this case, the three-dimensional data encoding device may add information indicating whether the encoding method using ZeroCnt has been applied to the header information. This allows the three-dimensional data decoding device to perform decoding appropriately. As an example of the switching method, the three-dimensional data encoding device counts the number of occurrences of coding coefficients with a value of 0 for one volume. If the count value exceeds a predetermined threshold, the three-dimensional data encoding device applies the method using ZeroCnt to the next volume. If the count value is equal to or less than the threshold, the three-dimensional data encoding device does not apply the method using ZeroCnt to the next volume. This allows the three-dimensional data encoding device to appropriately switch whether to apply the encoding method using ZeroCnt depending on the characteristics of the three-dimensional point to be encoded, thereby improving encoding efficiency.
[0351] Another technique (variant) of this embodiment will be described below. The three-dimensional data encoding device scans and encodes quantized encoding coefficients (unsigned integer values) in a certain order. For example, the three-dimensional data encoding device encodes multiple three-dimensional points in order from three-dimensional points included in a lower layer toward higher layers.
[0352] Fig. 42 is a diagram showing examples of the first code string and the second code string when this technique is used for the attribute information shown in Fig. 27. In this example, the three-dimensional data encoding device encodes multiple coding coefficients included in the lower layer L in the order Ta1q to Ta5q, Tb1q, Tb3q, Tc1q, and d0q. Here, the lower the layer, the more likely the coding coefficients after quantization are to become 0. The following factors can be cited as reasons for this.
[0353] The coding coefficients of the lower layer L have higher frequency components than the upper layers, and therefore tend to be 0 depending on the 3D point to be coded. Also, by switching the quantization scale according to the importance, etc., as described above, the quantization scale becomes larger in the lower layers, and the coding coefficients after quantization tend to be 0.
[0354] In this way, the lower the layer, the more likely the coding coefficient after quantization is to become 0, and the more likely consecutive 0s are to occur in the first code string. The three-dimensional data coding device counts the number of times that 0 occurs in the first code string, and encodes the number of times that 0 occurs in succession (ZeroCnt) instead of consecutive 0s. This makes it possible to improve coding efficiency when consecutive 0s occur in coding coefficients after quantization, by encoding the number of consecutive 0s rather than encoding a large number of 0s.
[0355] Furthermore, the three-dimensional data encoding device may encode information indicating the total number of occurrences of the value 0. This reduces the overhead of encoding ZeroCnt and improves encoding efficiency.
[0356] For example, the three-dimensional data encoding device encodes the total number of coding coefficients with a value of 0 as TotalZeroCnt. As a result, in the example shown in FIG. 42, when the three-dimensional data decoding device decodes the second ZeroCnt (value 1) included in the second code string, the total number of decoded ZeroCnt becomes N+1 (=TotalZeroCnt). Therefore, the three-dimensional data decoding device can determine that no more zeros will occur. Therefore, the three-dimensional data encoding device does not need to encode ZeroCnt for each value thereafter, and the amount of code can be reduced.
[0357] Furthermore, the three-dimensional data encoding device may perform entropy encoding on TotalZeroCnt. For example, the three-dimensional data encoding device may binarize the value of TotalZeroCnt using a truncated unary code with a total number T of encoded three-dimensional points, and then arithmetically encode each bit after binarization. In this case, the three-dimensional data encoding device may improve encoding efficiency by using a different encoding table for each bit. For example, the three-dimensional data encoding device may use encoding table 1 for the first bit, encoding table 2 for the second bit, and encoding table 3 for the bits thereafter. In this way, the three-dimensional data encoding device can improve encoding efficiency by switching the encoding table for each bit.
[0358] The three-dimensional data encoding device may also perform arithmetic coding after binarizing TotalZeroCnt using exponential Golomb coding. This can improve efficiency compared to binarized arithmetic coding using truncated unary codes when the value of TotalZeroCnt is likely to be large. The three-dimensional data encoding device may also add a flag to the header to switch between using truncated unary codes and exponential Golomb coding. This allows the three-dimensional data encoding device to improve encoding efficiency by selecting the optimal binarization method. The three-dimensional data decoding device can also switch binarization methods by referring to the flag included in the header, thereby correctly decoding the bitstream.
[0359] Fig. 43 is a diagram showing an example of the syntax of attribute information (attribute_data) in this modification. The attribute information (attribute_data) shown in Fig. 43 further includes a total number of zeros (TotalZeroCnt) in addition to the attribute information shown in Fig. 32. Note that other information is the same as in Fig. 32. The total number of zeros (TotalZeroCnt) indicates the total number of coding coefficients with a value of 0 after quantization.
[0360] Furthermore, the three-dimensional data encoding device may switch the calculation method for the values of TotalZereCnt and ZeroCnt depending on the value of attribute_dimension. For example, when attribute_dimension=3, the three-dimensional data encoding device may count the number of times the values of the encoding coefficients of all components (dimensions) are 0. FIG. 44 shows examples of the encoding coefficients, ZeroCnt, and TotalZeroCnt in this case. For example, in the case of the color information shown in FIG. 44, the three-dimensional data encoding device counts the number of consecutive encoding coefficients in which the R, G, and B components are all 0, and adds the counted numbers to the bitstream as TotalZeroCnt and ZeroCnt. This eliminates the need to encode TotalZeroCnt and ZeroCnt for each component, thereby reducing overhead. This improves encoding efficiency. Note that the three-dimensional data encoding device may calculate TotalZereCnt and ZeroCnt for each dimension even when attribute_dimension is 2 or more, and add the calculated TotalZeroCnt and ZeroCnt to the bitstream.
[0361] 45 is a flowchart of the coding coefficient coding process (S6613) in this modification. First, the three-dimensional data coding device converts the coding coefficients from signed integer values to unsigned integer values (S6661). Next, the three-dimensional data coding device codes TotalZeroCnt (S6662).
[0362] If all coding coefficients have not been processed (No in S6663), the three-dimensional data coding device determines whether the value of the coding coefficient to be processed is zero (S6664). If the value of the coding coefficient to be processed is zero (Yes in S6664), the three-dimensional data coding device increments ZeroCnt by 1 (S6665) and returns to step S6663.
[0363] If the value of the coding coefficient to be processed is not zero (No in S6664), the three-dimensional data coding device determines whether TotalZeroCnt is greater than 0 (S6666). If TotalZeroCnt is greater than 0 (Yes in S6666), the three-dimensional data coding device encodes ZeroCnt and sets TotalZeroCnt to TotalZeroCnt-ZeroCnt (S6667).
[0364] After step S6667, or if TotalZeroCnt is 0 (No in S6666), the three-dimensional data encoding device encodes the encoding coefficients, resets ZeroCnt to 0 (S6668), and returns to step S6663. For example, the three-dimensional data encoding device performs binary arithmetic encoding. Alternatively, the three-dimensional data encoding device may subtract a value of 1 from the encoding coefficients and encode the obtained values.
[0365] Furthermore, the processes of steps S6664 to S6668 are repeated for each coding coefficient. Furthermore, if all coding coefficients have been processed (Yes in S6663), the three-dimensional data coding device ends the process.
[0366] 46 is a flowchart of the coding coefficient decoding process (S6641) in this modification. First, the three-dimensional data decoding device decodes TotalZeroCnt from the bitstream (S6671). Next, the three-dimensional data decoding device decodes ZeroCnt from the bitstream and sets TotalZeroCnt to TotalZeroCnt-ZeroCnt (S6672).
[0367] If all the coding coefficients have not been processed (No in S6673), the three-dimensional data coding device determines whether ZeroCnt is greater than 0 (S6674).
[0368] If ZeroCnt is greater than zero (Yes in S6674), the three-dimensional data decoding apparatus sets the coding coefficient to be processed to 0 (S6675). Next, the three-dimensional data decoding apparatus subtracts 1 from ZeroCnt (S6676) and returns to step S6673.
[0369] If ZeroCnt is zero (No in S6674), the three-dimensional data decoding device decodes the coding coefficient to be processed (S6677). For example, the three-dimensional data decoding device uses binary arithmetic decoding. The three-dimensional data decoding device may also add a value of 1 to the decoded coding coefficient.
[0370] Next, the three-dimensional data decoding device determines whether TotalZeroCnt is greater than 0 (S6678). If TotalZeroCnt is greater than 0 (Yes in S6678), the three-dimensional data decoding device decodes ZeroCnt, sets the obtained value to ZeroCnt, sets TotalZeroCnt to TotalZeroCnt-ZeroCnt (S6679), and returns to step S6673. If TotalZeroCnt is 0 (No in S6678), the three-dimensional data decoding device returns to step S6673.
[0371] Furthermore, the processes of steps S6674 to S6679 are repeated for each coding coefficient. Furthermore, if all coding coefficients have been processed (Yes in S6673), the three-dimensional data coding device converts the decoded coding coefficients from unsigned integer values to signed integer values (S6680).
[0372] Fig. 47 is a diagram showing another syntax example of attribute information (attribute_data). The attribute information (attribute_data) shown in Fig. 47 includes value[j][i]_greater_zero_flag, value[j][i]_greater_one_flag, and value[j][i] instead of the coding coefficients (value[j][i]) shown in Fig. 32. Note that other information is the same as in Fig. 32.
[0373] The value[j][i]_greater_zero_flag indicates whether the value of the coding coefficient (value[j][i]) is greater than 0 (is greater than or equal to 1). In other words, the value[j][i]_greater_zero_flag indicates whether the value of the coding coefficient (value[j][i]) is 0.
[0374] For example, if the value of the coding coefficient is greater than 0, value[j][i]_greater_zero_flag is set to the value 1, and if the value of the coding coefficient is 0, value[j][i]_greater_zero_flag is set to the value 0. If the value of value[j][i]_greater_zero_flag is 0, the three-dimensional data coding device may not add value[j][i] to the bitstream. In this case, the three-dimensional data decoding device may determine that the value of value[j][i] is 0. This makes it possible to reduce the amount of coding.
[0375] value[j][i]_greater_one_flag indicates whether the value of the coding coefficient (value[j][i]) is greater than 1 (2 or more). In other words, value[j][i]_greater_one_flag indicates whether the value of the coding coefficient (value[j][i]) is 1.
[0376] For example, if the value of the coding coefficient is greater than 1, value[j][i]_greater_one_flag is set to the value 1. Otherwise (if the value of the coding coefficient is 1 or less), value[j][i]_greater_one_flag is set to the value 0. If the value of value[j][i]_greater_one_flag is 0, the three-dimensional data coding device may not add value[j][i] to the bitstream. In this case, the three-dimensional data decoding device may determine that the value of value[j][i] is 1.
[0377] Value[j][i] indicates the quantized coding coefficient of the j-th attribute information of the i-th 3D point. For example, if the attribute information is color information, value
[99] [1] indicates the coding coefficient of the second dimension (e.g., G value) of the 100th 3D point. Also, if the attribute information is reflectance information, value
[0119] [0] indicates the coding coefficient of the first dimension (e.g., reflectance) of the 120th 3D point.
[0378] The three-dimensional data encoding device may add value[j][i] to the bitstream when value[j][i]_greater_zero_flag=1 and value[j][i]_greater_one_flag=1. The three-dimensional data encoding device may also add a value obtained by subtracting 2 from value[j][i] to the bitstream. In this case, the three-dimensional data decoding device calculates the encoding coefficient by adding the value 2 to the decoded value[j][i].
[0379] The three-dimensional data encoding device may entropy-encode value[j][i]_greater_zero_flag and value[j][i]_greater_one_flag. For example, binary arithmetic encoding and binary arithmetic decoding may be used. This can improve encoding efficiency.
[0380] (Embodiment 8) In this embodiment, lossless attribute coding will be described. To achieve high compression, attribute information included in PCC (Point Cloud Compression) data is transformed using multiple methods such as Lifting, RAHT (Region Adaptive Hierarchical Transform), or other transformation methods. Here, Lifting is one of the transformation methods using LoD (Level of Detail).
[0381] Since important signal information tends to be contained in low-frequency components, quantizing high-frequency components reduces the amount of coding required. In other words, the transform process has strong energy compaction properties.
[0382] On the other hand, lossless compression is required to preserve the original information while reducing the number of bits. Existing transforms such as lifting or RAHT cannot achieve lossless compression because they involve division and square root operators. To achieve efficient and effective lossless compression, a low-complexity integer-to-integer transform is needed.
[0383] Fig. 48 is a diagram showing the configuration of a three-dimensional data encoding device. As shown in Fig. 48, the three-dimensional data encoding device includes an integer transform unit 8301 and an entropy encoding unit 8302. The integer transform unit 8301 generates coefficient values by integer transforming input point cloud data. The entropy encoding unit 8302 generates a bitstream by entropy encoding the coefficient values.
[0384] Fig. 49 is a diagram showing the configuration of a three-dimensional data decoding device. As shown in Fig. 49, the three-dimensional data decoding device includes an entropy decoding unit 8303 and an inverse integer transform unit 8304. The entropy decoding unit 8303 obtains coefficient values by decoding the bitstream. The inverse integer transform unit 8304 generates output point cloud data by performing an inverse integer transform on the coefficient values.
[0385] RAHT will be explained below. RAHT is an example of a transformation process applied to three-dimensional points. Figure 50 is a diagram for explaining RAHT. Also, the m-th low-frequency component L of layer l is l,m and high frequency component H l,m are the two low-frequency components C of layer l+1. l+1,2m and C l+1,2m+1 Therefore, it is expressed as the following (Equation O1). That is, the low frequency component L l,m is expressed by (Equation O2), and the high frequency component H l,m is expressed as (Equation O3).
[0386] The high frequency components are coded by quantization and entropy coding. The low frequency components are used in the next layer as shown in (Equation O4). The coefficients α and β are updated for each layer. The coefficients α and β are expressed by (Equation O5) and (Equation O6). The weight w l,m is expressed as (Equation O7).
[0387]
number
[0388] Next, we will explain integer-to-integer conversion. RAHT processing involves square root and division operations. This means that RAHT cannot achieve lossless compression because it loses information. On the other hand, integer-to-integer conversion can achieve lossless compression.
[0389] FIG. 51 is a diagram for explaining integer-to-integer transform. In the integer-to-integer transform, fixed values are used as coefficients in the RAHT. For example, the unnormalized Haar transform shown in the following (Equation O8) is used. That is, the low-frequency component L l,m is expressed by (Equation O9), and the high frequency component H l,m is expressed as (Equation O10).
[0390] The high frequency components are then coded by quantization and entropy coding, and the low frequency components are used in the next layer as shown in (Equation O11).
[0391]
number
[0392] Moreover, the unnormalized Haar transform can be rewritten as (Equation O12) and (Equation O13).
[0393]
number
[0394] The integer Haar transform is realized by (Equation O14) and (Equation O15), and the inverse integer Haar transform is realized by (Equation O16) and (Equation O17). Here, || is the floor function. In addition, |H l,m / 2| is included, the integer Haar transform and the inverse integer Haar transform can be used to transform this |H l,m / 2| is cancelled out. Thus, a reversible transformation is realized. Here, C i,j is defined as an integer, so H i,j and L i,j is also an integer.
[0395]
number
[0396] Therefore, efficient implementation can be achieved by the following (Equation O18) to (Equation O21). In other words, the conversion can be achieved by one addition, one subtraction, and one right shift (shift down).
[0397]
number
[0398] Next, we will explain recursive integer-to-integer transformation. FIG. 52 is a diagram for explaining hierarchical transformation processing. When applying the Haar transform to an image, a data pair is required to perform a transformation suitable for pixel transformation. On the other hand, in the Haar transform for a 3D point cloud, if a 3D point pair, which is a pair of point clouds, can be formed, integer Haar is applied, and if a 3D point pair cannot be used, the 3D point data is moved to the next layer (level). This processing is then performed recursively.
[0399] Next, the configuration of a three-dimensional data encoding device will be described. Fig. 53 is a block diagram of a three-dimensional data encoding device 8310. The three-dimensional data encoding device 8310 generates encoded data (encoded stream) by encoding point group data (point cloud). This three-dimensional data encoding device 8310 includes a position information encoding unit 8311, a lossless attribute information encoding unit 8312, an additional information encoding unit 8313, and a multiplexing unit 8314.
[0400] The position information encoding unit 8311 generates encoded position information by encoding the position information. For example, the position information encoding unit 8311 encodes the position information using an N-ary tree structure such as an octree. Specifically, in an octree, the target space is divided into eight nodes (subspaces), and 8-bit information (occupancy code) indicating whether or not a point cloud is included in each node is generated. Furthermore, the node including the point cloud is further divided into eight nodes, and 8-bit information indicating whether or not a point cloud is included in each of the eight nodes is generated. This process is repeated until the number of point clouds included in a predetermined layer or node falls below a threshold.
[0401] The lossless attribute information encoding unit 8312 encodes the attribute information using the configuration information generated by the position information encoding unit 8311, thereby generating encoded attribute information, which is encoded data.
[0402] The additional information encoding unit 8313 generates encoded additional information by encoding the additional information included in the point cloud data.
[0403] The multiplexing unit 8314 multiplexes the encoding position information, the encoding attribute information, and the encoding additional information to generate encoded data (encoded stream) and transmits the generated encoded data. The encoded additional information is also used during decoding.
[0404] 54 is a block diagram of the lossless attribute information encoding unit 8312. The lossless attribute information encoding unit 8312 includes an integer transform unit 8321 and an entropy encoding unit 8322. The integer transform unit 8321 generates coefficient values by performing integer transform (e.g., integer Haar transform) on the attribute information. The entropy encoding unit 8322 generates encoded attribute information by entropy encoding the coefficient values.
[0405] 55 is a block diagram of the integer conversion unit 8321. The integer conversion unit 8321 includes a sorting unit 8323 and an integer Haar conversion unit 8324. The sorting unit 8323 sorts the attribute information based on the position information. For example, the sorting unit 8323 sorts the attribute information into Morton order. The integer Haar conversion unit 8324 generates coefficient values by performing an integer Haar transform on the sorted attribute information.
[0406] Next, the configuration of a three-dimensional data decoding device according to this embodiment will be described. Fig. 56 is a block diagram showing the configuration of a three-dimensional data decoding device 8330. The three-dimensional data decoding device 8330 restores point cloud data by decoding coded data (coded stream) generated by encoding point cloud data. This three-dimensional data decoding device 8330 includes a demultiplexing unit 8331, a plurality of position information decoding units 8332, a plurality of lossless attribute information decoding units 8333, and an additional information decoding unit 8334.
[0407] The demultiplexing unit 8331 demultiplexes the coded data (coded stream) to generate coded position information, coded attribute information, and coded additional information.
[0408] The position information decoding unit 8332 generates position information by decoding the encoded position information. The lossless attribute information decoding unit 8333 generates attribute information by decoding the encoded attribute information. For example, the lossless attribute information decoding unit 8333 generates attribute information by performing an inverse integer transform (e.g., an inverse integer Haar transform) on the encoded attribute information. The additional information decoding unit 8334 generates additional information by decoding the encoded additional information.
[0409] 57 is a block diagram of the lossless attribute information decoding unit 8333. The lossless attribute information decoding unit 8333 includes an entropy decoding unit 8341 and an inverse integer transform unit 8342. The entropy decoding unit 8341 generates coefficient values by entropy decoding the encoded attribute information. The inverse integer transform unit 8342 generates attribute information by performing an inverse integer transform (for example, an inverse integer Haar transform) on the coefficient values.
[0410] 58 is a block diagram of the inverse integer transform unit 8342. The inverse integer transform unit 8342 includes a sorting unit 8343 and an inverse integer Haar transform unit 8344. The sorting unit 8343 sorts the coefficient values based on the position information. For example, the sorting unit 8343 sorts the coefficient values in Morton order. The inverse integer Haar transform unit 8344 generates attribute information by performing an inverse integer Haar transform on the sorted coefficient values.
[0411] Furthermore, the three-dimensional data encoding device may add information indicating whether lossless encoding or lossy encoding has been used to the header of the bitstream, etc. For example, the three-dimensional data encoding device adds lossless_enable_flag to the header. When lossless_enable_flag=1, the three-dimensional data decoding device applies the inverse integer Haar transform to decode the losslessly encoded bitstream. When lossless_enable_flag=0, the three-dimensional data decoding device applies the inverse RAHT to decode the lossy encoded bitstream. In this way, the three-dimensional data decoding device can correctly decode the bitstream by switching the inverse transform process depending on the value of lossless_enable_flag.
[0412] Note that the information indicating whether the bitstream has been encoded using lossless or lossy encoding is not necessarily limited to this, and for example, the value of the quantization parameter QP or the quantization step Qstep may be used. For example, if the value of the quantization parameter or the quantization step is a specific value (e.g., QP=4 or Qstep=1), the three-dimensional data decoding device may determine that the bitstream has been encoded using lossless encoding, and may apply an inverse integer Haar transform to decode the losslessly encoded bitstream. Also, for example, if the value of the quantization parameter or the quantization step is greater than a specific value (e.g., QP=4 or Qstep=1), the three-dimensional data decoding device may determine that the bitstream has been encoded using lossy encoding, and may apply an inverse RAHT to decode the lossy encoded bitstream.
[0413] Next, the lossless attribute information encoding process will be described with reference to the flowchart of FIG.
[0414] First, the three-dimensional data encoding device rearranges the attribute information of the three-dimensional point group (S8301). For example, the three-dimensional data encoding device rearranges the attribute information of the three-dimensional point group into Morton order.
[0415] Next, the three-dimensional data encoding device selects a target point to be processed from the three-dimensional point cloud (S8302). Specifically, the three-dimensional data encoding device selects the first three-dimensional point from the three-dimensional point cloud sorted in Morton order.
[0416] Next, the three-dimensional data encoding device determines whether or not a three-dimensional point pair exists, which is a three-dimensional point located adjacent to the target three-dimensional point in Morton order (S8303). If a three-dimensional point pair exists (Yes in S8304), the three-dimensional data encoding device performs an integer Haar transform using the three-dimensional point pair to generate coefficient values including high-frequency components and low-frequency components (S8305). Next, the three-dimensional data encoding device encodes (e.g., entropy encodes) the generated high-frequency components and stores the encoded high-frequency components in a bitstream (S8306). The three-dimensional data encoding device also stores the low-frequency components in a memory or the like for processing at the next layer (S8307).
[0417] On the other hand, if there is no 3D point pair (No in S8304), the 3D data encoding device stores the attribute information of the target 3D point in a memory or the like for the next layer (S8307).
[0418] If the target 3D point is not the last 3D point in the target layer, which is the layer to be processed (No in S8308), the 3D data encoding device selects the next 3D point in Morton order as the target 3D point (S8302), and performs processing from step S8303 onwards for the selected target 3D point. Note that the next 3D point in Morton order is the 3D point next to the 3D point pair if a 3D point pair exists, or the 3D point next to the target 3D point if no 3D point pair exists.
[0419] If the target 3D point is the last 3D point in the target layer (Yes in S8308), the three-dimensional data encoding device starts processing the next layer (the layer one level above) (S8309). Also, if the original target layer is not the last layer (the top layer) (No in S8310), the three-dimensional data encoding device selects the first 3D point in Morton order in the next layer as the target 3D point (S8302), and performs the processing from step S8303 onwards for the selected target 3D point.
[0420] Furthermore, if the original target layer is the last layer (Yes in S8310), the three-dimensional data encoding device encodes (e.g., entropy encodes) the low-frequency components generated in the last layer (top layer) and stores the encoded low-frequency components in the bitstream (S8311). Through the above processing, encoding attribute information is generated that includes the encoded high-frequency components for each three-dimensional point pair included in each layer and the encoded low-frequency components of the top layer.
[0421] Next, the lossless attribute information decoding process will be described with reference to Fig. 60, which is a flowchart of the lossless attribute information decoding process.
[0422] First, the three-dimensional data decoding device decodes coefficient values from the bitstream (S8321). These coefficient values include high-frequency components for each three-dimensional point pair included in each layer and low-frequency components for the top layer. Next, the three-dimensional data decoding device sorts the obtained coefficient values (S8322). For example, the three-dimensional data decoding device sorts multiple high-frequency components into Morton order.
[0423] Next, the 3D data decoding device acquires the low-frequency component and high-frequency component of the 3D point pair to be processed (S8323 and S8324). Specifically, the low-frequency component to be processed is the low-frequency component decoded from the bitstream in the top layer, and in layers other than the top, it is the low-frequency component obtained by inverse transform processing in the layer immediately above. Furthermore, the high-frequency component to be processed is the leading high-frequency component among the high-frequency components sorted in Morton order in the top layer. Note that if there is no 3D point pair, there is no high-frequency component to be processed.
[0424] Next, if a three-dimensional point pair exists (Yes in S8325), that is, if a high-frequency component to be processed exists, the three-dimensional data decoding device generates a low-frequency component of the next lower layer by performing an inverse integer Haar transform using the low-frequency component to be processed and the high-frequency component to be processed (S8326). Note that if the target layer is the bottom layer, attribute information is generated by the inverse integer Haar transform.
[0425] Next, the three-dimensional data decoding device stores the generated low-frequency components in a memory or the like for processing at the next layer (S8327).
[0426] On the other hand, if there is no three-dimensional point pair (No in S8325), the three-dimensional data decoding device stores the low-frequency components to be processed in a memory or the like for the next layer (S8327).
[0427] If the coefficient value (three-dimensional point pair) to be processed is not the last coefficient value in the target layer (No in S8328), the three-dimensional data decoding device selects the next three-dimensional point pair in Morton order as the three-dimensional point to be processed, and performs processing from step S8323 onwards on the selected three-dimensional point pair.
[0428] If the coefficient value to be processed is the last coefficient value in the target layer (Yes in S8328), the three-dimensional data decoding device starts processing the next layer (the layer one level lower) (S8329). Also, if the original target layer is not the last layer (the lowest layer) (No in S8330), the three-dimensional data decoding device selects the first three-dimensional point pair in Morton order in the next layer as the three-dimensional point pair to be processed, and performs the processing from step S8323 onwards on the selected three-dimensional point pair.
[0429] Furthermore, if the original target layer is the last layer (Yes in S8330), the three-dimensional data decoding device ends the process. Through the above process, attribute information of all three-dimensional points is obtained.
[0430] Next, an example configuration of the integer Haar transform unit 8324 and the inverse integer Haar transform unit 8344 will be described. Fig. 61 is a diagram showing an example configuration of the integer Haar transform unit 8324. As shown in Fig. 61, the integer Haar transform unit 8324 includes a subtraction unit 8351, a right shift unit 8352, and an addition unit 8353. Here, C1 and C2 are attribute information of 3D point pairs in the lowest layer, and in layers other than the lowest, are low-frequency components of the 3D point pairs obtained in the layer one level lower. Furthermore, H is the high-frequency component of the 3D point pair, and L is the low-frequency component of the 3D point pair. The configuration shown in the same figure realizes the calculations shown in (Equation O18) and (Equation O19).
[0431] Fig. 62 is a diagram showing an example configuration of the inverse integer Haar transform unit 8344. As shown in Fig. 62, the inverse integer Haar transform unit 8344 includes a right shift unit 8354, a subtraction unit 8355, and an addition unit 8356. The configuration shown in the diagram realizes the operations shown in (Equation O20) and (Equation O21).
[0432] In at least one of the forward transform and the inverse transform, the input data may be divided into a plurality of data pieces of a predetermined unit, and the divided data pieces may be processed in parallel, thereby speeding up the processing.
[0433] Next, an example of switching between lossless encoding (integer Haar transform) and lossy encoding (RAHT) will be described. Fig. 63 is a diagram showing the configuration of a three-dimensional data encoding device in this case. The three-dimensional data encoding device selectively performs lossless encoding (lossless compression) and lossy encoding (lossy compression). Furthermore, the three-dimensional data encoding device may indicate the encoding mode by a flag or QP.
[0434] The three-dimensional data encoding device shown in FIG. 63 includes a rearrangement unit 8361, a switching unit 8362, a RAHT unit 8363, a quantization unit 8364, an integer conversion unit 8365, and an entropy encoding unit 8366.
[0435] The sorting unit 8361 sorts the attribute information based on the position information, for example, in Morton order. The switching unit 8362 outputs the sorted attribute information to the RAHT unit 8363 or the integer conversion unit 8365. For example, the switching unit 8362 switches between using RAHT or integer Haar transform based on LOSSLESS_FLAG. Here, LOSSLESS_FLAG is a flag indicating whether to use RAHT (lossy coding) or integer Haar transform (lossless coding). When LOSSLESS_FLAG is on (for example, value 1), integer Haar transform (lossless coding) is used, and when LOSSLESS_FLAG is off (for example, value 0), RAHT (lossy coding) is used.
[0436] Alternatively, the three-dimensional data encoding device may determine that the encoding is lossless when the value of the quantization parameter QP is a certain value α. Here, the value α is, for example, a quantization value calculated from the QP value, or a value that makes the value of the quantization step Qstep 1. For example, when QP=4, and Qstep=1, then α=4.
[0437] Alternatively, the switching between RAHT and integer Haar transform may be performed by any method, not limited to LOSSLESS_FLAG or QP value. For example, the three-dimensional data encoding device may add an Enable_Integer_Haar_Transform flag to a header or the like, and apply integer Haar transform when Enable_Integer_Haar_Transform=1, and apply RAHT when Enable_Integer_Haar_Transform=0.
[0438] The RAHT unit 8363 generates coefficient values by applying RAHT to the attribute information. The quantization unit 8364 generates quantized coefficients by quantizing. The integer transform unit 8365 generates coefficient values by applying integer Haar transform to the attribute information. The entropy coding unit 8366 generates coded attribute information by entropy coding the quantized values generated by the quantization unit 8364 or the coefficient values generated by the integer transform unit 8365.
[0439] Figure 64 is a diagram showing the configuration of a three-dimensional data decoding device corresponding to the three-dimensional data encoding device shown in Figure 63. The three-dimensional data decoding device shown in Figure 64 includes an entropy decoding unit 8371, a rearrangement unit 8372, a switching unit 8373, an inverse quantization unit 8374, an inverse RAHT unit 8375, and an inverse integer transform unit 8376.
[0440] The entropy decoding unit 8371 generates coefficient values (or quantized coefficients) by entropy decoding the encoding attribute information. The sorting unit 8372 sorts the coefficient values, for example, in Morton order, based on the position information. The switching unit 8373 outputs the sorted coefficient values to the inverse quantization unit 8374 or the inverse integer transform unit 8376. For example, the switching unit 8373 switches between using RAHT or integer Haar transform based on LOSSLESS_FLAG. The switching method used by the switching unit 8373 is the same as the switching method used by the switching unit 8362 described above. The three-dimensional data decoding device acquires LOSSLESS_FLAG, the QP value, or the Enable_Integer_Haar_Transform flag from the bitstream.
[0441] The inverse quantization unit 8374 generates coefficient values by inverse quantizing the quantized coefficients. The inverse RAHT unit 8375 generates attribute information by applying inverse RAHT to the coefficient values. The inverse integer transform unit 8376 generates attribute information by applying inverse integer Haar transform to the coefficient values.
[0442] In the examples shown in Figures 63 and 64, quantization processing is not performed when integer Haar transform is applied, but quantization processing may be performed when integer Haar transform is applied. Figure 65 is a diagram showing the configuration of a three-dimensional data encoding device in this case. Figure 66 is a diagram showing the configuration of a three-dimensional data decoding device.
[0443] As shown in FIG. 65, the quantization unit 8364A quantizes the coefficient values generated by the RAHT unit 8363 and the coefficient values generated by the integer conversion unit 8365 to generate quantized coefficients.
[0444] 66, the inverse quantization unit 8374A generates coefficient values by inverse quantizing the quantized coefficients. The switching unit 8373A outputs the coefficient values to the inverse RAHT unit 8375 or the inverse integer transform unit 8376.
[0445] Figures 67 and 68 are diagrams showing configuration examples of bitstreams (encoding attribute information) generated by a three-dimensional data encoding device. For example, as shown in Figure 67, LOSSLESS_FLAG is stored in the header of the bitstream. Alternatively, as shown in Figure 68, a QP value is included in the header of the bitstream. When the QP value is a predetermined value α, lossless encoding is applied.
[0446] (Embodiment 9) In this embodiment, we will explain integer RAHT, which is a lossy transform that is closer to lossless than regular RAHT. To facilitate hardware implementation, fixed point RAHT can be introduced. Fixed point RAHT can be implemented using the following (Equation O22) and (Equation O23). Here, l is the low-frequency component and h is the high-frequency component. c1 and c2 are attribute information of 3D point pairs at the lowest layer, and at layers other than the lowest, they are the low-frequency components of the 3D point pairs obtained at the layer one level below. In addition, the transform is orthonormal, and (Equation O24) holds.
[0447]
number
[0448] Furthermore, the updated weight w is expressed as w=w1+w2 when c1 and c2 are a three-dimensional point pair, and as w=w1 when c1 and c2 are not paired.
[0449] Moreover, the above (Equation O22) can be transformed into the following (Equation O25) to (Equation O29).
[0450]
number
[0451] Therefore, the forward transformation is expressed by (Equation O30) to (Equation O32).
[0452]
number
[0453] Moreover, the inverse transformation is expressed by (Equation O33) to (Equation O34).
[0454]
number
[0455] The adjusted quantization step (Aqs) is expressed by (Equation O36) based on (Equation O35). Therefore, (Equation O37) holds. In this way, the integer RAHT is expressed by b 2 This can be achieved by fixed point implementation.
[0456]
number
[0457] The relationship between the integer RAHT and the integer Haar transform is explained below. The integer RAHT and the integer Haar transform can be realized using common processing. Specifically, the integer Haar transform can be realized by setting the weights in all layers of the RAHT to w1 = w2 = 1.
[0458] That is, the forward transformation in integer RAHT is expressed by (Equation O38) to (Equation O40), and the inverse transformation is expressed by (Equation O41) to (Equation O42). Also, (Equation O43) holds.
[0459]
number
[0460] If we set w1 = w2 = 1 in (Equation O38) to (Equation O43), the forward transform is expressed by (Equation O44) to (Equation O45), and the inverse transform is expressed by (Equation O46) to (Equation O47). In other words, an integer Haar transform is realized.
[0461]
number
[0462] Next, an example of switching between lossy encoding (RAHT), nearly lossless lossy encoding (integer RAHT), and lossless encoding (integer Haar transform) will be described. Fig. 69 is a diagram showing the configuration of a three-dimensional data encoding device in this case. The three-dimensional data encoding device selectively performs lossy encoding (RAHT), nearly lossless lossy encoding (integer RAHT), and lossless encoding (integer Haar transform). This switching is performed based on a flag or a QP value.
[0463] The three-dimensional data encoding device shown in FIG. 69 includes a rearrangement unit 8401, an integer RAHT-Haar transform unit 8402, a quantization unit 8403, and an entropy encoding unit 8404.
[0464] The sorting unit 8401 sorts the attribute information based on the position information, for example, in Morton order. The integer RAHT-Haar transform unit 8402 converts the attribute information by selectively using lossy coding (RAHT), nearly lossless lossy coding (integer RAHT), and lossless coding (integer Haar transform) to generate coefficient values.
[0465] Specifically, the three-dimensional data encoding device uses lossless encoding (integer Haar transform) when the value of the quantization parameter QP is a certain value α and RAHT-HAAR_FLAG=HAAR. Here, the value α is, for example, a quantization value calculated from the QP value, or a value that makes the value of the quantization step Qstep 1. For example, when QP=4, and Qstep=1, α=4. Also, different values of α may be used for RAHT and Haar.
[0466] For example, when RAHT-HAAR_FLAG=RAHT and QP is greater than α, lossy coding (RAHT) is used. When RAHT-HAAR_FLAG=RAHT and QP=α, near-lossless lossy coding (integer RAHT) is used. When RAHT-HAAR_FLAG=HAAR and QP=α, lossless coding (integer Haar transform) is used. Also, when RAHT-HAAR_FLAG=HAAR and QP is greater than α, lossy coding (RAHT) may be used.
[0467] Furthermore, when RAHT-HAAR_FLAG=HAAR, the integer RAHT-Haar transform unit 8402 executes the Haar transform by setting w1=w2=1.
[0468] The quantization unit 8403 generates quantized coefficients by quantizing coefficient values using the QP. The entropy coding unit 8404 generates coding attribute information by entropy coding the quantized coefficients.
[0469] Fig. 70 is a diagram showing the configuration of a three-dimensional data decoding device corresponding to the three-dimensional data encoding device shown in Fig. 69. The three-dimensional data decoding device shown in Fig. 70 includes an entropy decoding unit 8411, an inverse quantization unit 8412, a rearrangement unit 8413, and an inverse integer RAHT-Haar transform unit 8414.
[0470] The entropy decoding unit 8411 generates quantized coefficients by entropy decoding the coding attribute information. The inverse quantization unit 8412 generates coefficient values by inverse quantizing the quantized coefficients using QP. The sorting unit 8413 sorts the coefficient values based on the position information, for example, in Morton order.
[0471] The inverse integer RAHT-Haar transform unit 8414 generates attribute information by inversely transforming coefficient values using selectively lossy coding (RAHT), near-lossless lossy coding (integer RAHT), and lossless coding (integer Haar transform). Note that this switching method is the same as that of the integer RAHT-Haar transform unit 8402 described above. Note that the three-dimensional data decoding device acquires the LOSSLESS_FLAG and the QP value from the bitstream.
[0472] Fig. 71 is a diagram showing an example of the configuration of a bitstream (encoding attribute information) generated by a three-dimensional data encoding device. For example, as shown in Fig. 71, a RAHT-HAAR_FLAG and a QP value are stored in the header of the bitstream. RAHT-HAAR_FLAG is a flag indicating whether lossy encoding (RAHT), near-lossless lossy encoding (integer RAHT), or lossless encoding (integer Haar transform) is to be used. Note that RAHT-HAAR_FLAG may also indicate whether lossless encoding (integer Haar transform), lossy encoding (RAHT), or near-lossless lossy encoding (integer RAHT) is to be used.
[0473] Below, we will explain an example of an implementation of the configuration for integer RAHT. Integer RAHT can be implemented as follows. B is b 2 It indicates the integer precision of and is expressed as (Equation O48).
[0474]
number
[0475] kBit represents the precision of B. For example, in the case of 8-bit precision, kBit = 8. Also, kHal = (1 << (kBit-1)) represents the precision that supports rounding (truncation or rounding off, etc.). The adjusted quantization step (Aqs) can be implemented by (Equation O49).
[0476]
number
[0477] Here, QS represents the quantization step. The forward transform is expressed by (Equation O50) to (Equation O51).
[0478]
number
[0479] The quantized high frequency components are expressed by (Equation O52), and the inverse quantization of the high frequency components is expressed by (Equation O53).
[0480]
number
[0481] The inverse transformation is expressed by (Equation O54) to (Equation O55).
[0482]
number
[0483] Below is an example of implementing integer RAHT, where a conditional flag is used to set the rounding bit precision to 0 and Aqs to achieve integer Haar in RAHT. When integer Haar is applied, the three-dimensional data encoder sets the weights to 1 (w1 = w2 = 1). The three-dimensional data encoder also sets kHalf to 0 (kHalf = 0). The three-dimensional data encoder also switches Aqs as follows: When using integer Haar transform, the three-dimensional data encoder sets Aqs = QS. When using integer RAHT, the three-dimensional data encoder sets Aqs = sqrt_integer(((QS * QS) * (w1 + w2)) / (w1 * w2)). Here, sqrt_integer(n) indicates the integer part of the square root of n. Therefore, (Equation O56) holds.
[0484]
number
[0485] The integer Haar forward transform in RATH is expressed by (Equation O57) to (Equation O59).
[0486]
number
[0487] When lossless coding is used, QS is set to 1, so that (Equation O60) holds. Also, when lossless coding is used, quantization and dequantization may be skipped.
[0488]
number
[0489] The inverse quantization of high frequency components is expressed by (Equation O61). The inverse integer transform is expressed by (Equation O62) to (Equation O63).
[0490]
number
[0491] As another example of implementation of lossless encoding, the following bit shift operations may be used. These operations are performed on integer data types (fixed-point arithmetic). The attribute information is shifted up by kBit precision before the conversion process.
[0492] When integer Haar is applied, the three-dimensional data encoding device sets the weights to 1 (w1 = w2 = 1). Furthermore, the three-dimensional data encoding device sets kHalf to 0 (kHalf = 0). Furthermore, the three-dimensional data encoding device switches Aqs as follows: When using integer Haar transform, the three-dimensional data encoding device sets Aqs = QS. Furthermore, when using integer RAHT, the three-dimensional data encoding device sets Aqs = sqrt_integer(((QS * QS) * (w1 + w2)) / (w1 * w2)). Therefore, (Equation O64) holds.
[0493]
number
[0494] As shown in (Equation O65), the attribute information is shifted up to kBit precision before the conversion process.
[0495]
number
[0496] The integer Haar forward transform in RATH is expressed by (Equation O66) to (Equation O67) and is performed with k-bit precision.
[0497]
number
[0498] To remove the floating-point precision of B for the floor function, kBit precision of the low-frequency components is removed. Thus, the low-frequency components are expressed by (Equation O68).
[0499]
number
[0500] The inverse integer transform is expressed by (Equation O69) to (Equation O71). As a result, the changes from the integer RAHT can be reduced.
[0501]
number
[0502] An example configuration of the forward transform will be described below. Fig. 72 is a diagram showing an example configuration of the integer RAHT-Haar transform unit 8402. The integer RAHT-Haar transform unit 8402 includes left shift units 8421, 8422, and 8430, a subtraction unit 8423, a division unit 8424, right shift units 8425, 8427, and 8429, a multiplication unit 8426, a switching unit 8428, and an addition unit 8431.
[0503] If c1 and c2 are original signals of attribute information (signals located at the lowest layer of the RAHT), the left shift units 8421 and 8422 shift c1 and c2 up by kBit (left shift). This increases the bit precision of the original signals, thereby improving the calculation precision during the conversion process. This improves coding efficiency. Also, if c1 and c2 are signals located above the lowest layer of the RAHT, the kBit shift up does not need to be applied.
[0504] In addition, when the three-dimensional data encoding device applies the integer Haar transform and QS=1 (lossless encoding), it is not necessary to apply a k-bit shift-up to the original signal of the attribute information located at the bottom layer of the RAHT. This allows for lossless encoding while reducing the amount of processing.
[0505] A subtraction unit 8423 subtracts the shifted-up c1 from the shifted-up c2. A division unit 8424 divides the value obtained by the subtraction unit 8423 by Aqs. Here, Aqs is expressed by (Equation O72). integer_square_root(n) indicates the integer part of the square root of n. That is, Aqs depends on QS (quantization step) and the weight. Furthermore, when an integer Haar transform is used, Aqs=QS is set.
[0506]
number
[0507] A right shifter 8425 generates a high frequency component h by shifting down the value obtained by the divider 8424. A multiplier 8426 multiplies the value obtained by the subtractor 8423 by B. B is expressed by (Equation O73). Furthermore, when an integer Haar transform is used, w1 = w2 = 1 is set.
[0508]
number
[0509] The right shift unit 8427 shifts down the value obtained by the multiplication unit 8426. When the integer Haar transform is used, the switching unit 8428 outputs the value obtained by the right shift unit 8427 to the right shift unit 8429, and when the integer Haar transform is not used, the switching unit 8428 outputs the value obtained by the right shift unit 8427 to the addition unit 8431.
[0510] When the integer Haar transform is applied, the right shift unit 8429 and the left shift unit 8430 shift the value obtained by the right shift unit 8427 down by kBits and up by kBits. This sets the value of the lower kBits to 0. In other words, when the integer Haar transform is applied, the decimal points generated by division by the value 2 can be deleted, thereby realizing value truncation (floor processing). Note that any method may be applied as long as it can realize value truncation.
[0511] Note that when QS>1 (lossy coding) in the integer Haar transform, the k-bit shift down and k-bit shift up do not need to be applied to the value obtained by the right shift unit 8427. This allows the precision after the decimal point that occurs when dividing by the value 2 when applying the integer Haar transform to be maintained. This improves calculation precision and coding efficiency.
[0512] Furthermore, if the original signal of the attribute information (located at the bottom layer of the RAHT) is not shifted up by kBits, the kBit shift down and kBit shift up do not need to be applied to the value obtained by the right shift unit 8427. This allows the amount of processing to be reduced.
[0513] The adder 8431 generates a low-frequency component l by adding the value obtained by the left shifter 8430 or the right shifter 8427 to the value obtained by the left shifter 8421. In the top-layer calculation, the obtained low-frequency component l is shifted down by k bits.
[0514] Next, a configuration example of the inverse transform will be described. Fig. 73 is a diagram showing a configuration example of the inverse integer RAHT-Haar transform unit 8414. The inverse integer RAHT-Haar transform unit 8414 includes left shift units 8441 and 8447, multiplication units 8442, 8443, and 8449, right shift units 8444, 8446, 8450, and 8452, a switching unit 8445, and subtraction units 8448 and 8451.
[0515] The left shifter 8441 shifts up (left-shifts) the high frequency component h by k bits. The multiplier 8442 multiplies the value obtained by the left shifter 8441 by Aqs. Note that Aqs is the same as in the case of FIG. 72 described above. The multiplier 8443 multiplies the value obtained by the multiplier 8442 by B. Note that B is the same as in the case of FIG. 72 described above.
[0516] The right shift unit 8444 shifts down the value obtained by the multiplication unit 8443. When the integer Haar transform is used, the switching unit 8445 outputs the value obtained by the right shift unit 8444 to the right shift unit 8446, and when the integer Haar transform is not used, the switching unit 8445 outputs the value obtained by the right shift unit 8444 to the subtraction unit 8448.
[0517] When the integer Haar transform is applied, the right shift unit 8446 and the left shift unit 8447 shift the value obtained by the right shift unit 8444 down by kBits and up by kBits. This sets the value of the lower kBits to 0. In other words, since it is possible to delete the decimal points that occur when dividing by 2 when the integer Haar transform is applied, it is possible to realize a value truncation process (floor processing). Note that any method may be applied as long as it can realize a value truncation process.
[0518] Note that when QS>1 (lossy coding) in the integer Haar transform, the k-bit shift down and k-bit shift up do not need to be applied to the value obtained by the right shift unit 8444. This makes it possible to maintain the precision after the decimal point that occurs when dividing by the value 2 when applying the integer Haar transform. This improves calculation accuracy and allows for correct decoding of a bitstream with improved coding efficiency.
[0519] Furthermore, if the decoded signal of the attribute information (located at the bottom layer of the RAHT) is not shifted down by kBits, the kBit shift-down and kBit shift-up do not need to be applied to the value obtained by the right shift unit 8444. This reduces the amount of processing.
[0520] The subtraction unit 8448 subtracts from the low-frequency component l the value obtained by the left shift unit 8447 or the right shift unit 8444. In the calculation of the top layer, the low-frequency component l is shifted up by k bits, and the subtraction unit 8448 subtracts from the low-frequency component l the value obtained by the left shift unit 8447 or the right shift unit 8444 after the shift up.
[0521] The multiplication unit 8449 multiplies the value obtained by the subtraction unit 8448 by -1. The right shift unit 8450 shifts down the value obtained by the multiplication unit 8449 by kBits. The subtraction unit 8451 subtracts the value obtained by the subtraction unit 8448 from the value obtained by the multiplication unit 8442. The right shift unit 8452 shifts down the value obtained by the subtraction unit 8451 by kBits. This restores the bit precision of c1 and c2 to their original values. This processing makes it possible to obtain decoded results with the original bit precision while improving the calculation precision during the conversion process. Furthermore, the three-dimensional data decoding device does not need to apply kBit shift down to signals higher than the lowest layer of the RAHT.
[0522] In addition, when the 3D data decoding device applies the integer Haar transform and QS=1 (lossless encoding), it is not necessary to apply a kBit shift-up to the decoded signal of the attribute information located at the bottom layer of the RAHT. This reduces the amount of processing and enables the losslessly encoded bitstream to be correctly decoded.
[0523] As described above, the three-dimensional data encoding device according to this embodiment performs the processing shown in FIG. 74. The three-dimensional data encoding device converts multiple pieces of attribute information of multiple three-dimensional points included in point cloud data into multiple coefficient values (S8401), and generates a bitstream by encoding the multiple coefficient values (S8402). In the conversion (S8401), the three-dimensional data encoding device performs a weighting operation in a hierarchical manner to separate each piece of attribute information into high-frequency components and low-frequency components, thereby generating multiple coefficient values that belong to any of multiple layers. In the weighting operation, the three-dimensional data encoding device performs the weighting operation using multiple weights that are fixed or not fixed in multiple layers. The bitstream includes first information (at least one of RAHT-HAAR_FLAG and QP) that indicates whether the multiple weights are fixed in multiple layers.
[0524] According to this, the three-dimensional data encoding device can reduce loss due to conversion by fixing weights in multiple layers, thereby improving accuracy.
[0525] For example, when multiple weights are fixed in multiple layers, the multiple weights are set to 1.
[0526] For example, as shown in FIG. 72, in a weighting calculation, a three-dimensional data encoding device calculates a first value by subtracting first attribute information (e.g., c1) included in a plurality of attribute information from second attribute information (e.g., c2) included in the plurality of attribute information, and calculates a high-frequency component (e.g., h) by dividing the first value by a first coefficient (e.g., Aqs), where the first coefficient (e.g., Aqs) depends on a quantization step (e.g., QS) and weights (e.g., w1 and w2).
[0527] For example, as shown in FIG. 72, in a weighting calculation, a three-dimensional data encoding device calculates a second value by multiplying a first value by a second coefficient (e.g., B) that depends on the weight, calculates a third value by shifting the second value down by a predetermined number of bits and then shifting it up by a predetermined number of bits, and calculates a low-frequency component (e.g., l) by adding the third value to the first attribute information.
[0528] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor performs the above-mentioned processing using the memory.
[0529] Furthermore, the three-dimensional data decoding device according to this embodiment performs the processing shown in FIG. 75. The three-dimensional data decoding device acquires, from the bitstream, first information (at least one of RAHT-HAAR_FLAG and QP) indicating whether multiple weights are fixed in multiple layers (S8411), decodes multiple coefficient values from the bitstream (S8412), and inversely transforms the multiple coefficient values to generate multiple pieces of attribute information for multiple three-dimensional points in the point cloud data (S8413). The multiple coefficient values belong to any of the multiple layers. In the inverse transform, the three-dimensional data decoding device generates multiple pieces of attribute information by performing an inverse weighting operation on the multiple coefficient values, combining high-frequency components and low-frequency components. In the inverse weighting operation, the three-dimensional data decoding device performs a weighting operation using multiple weights that are fixed or not fixed in multiple layers according to the first information.
[0530] According to this, the three-dimensional data decoding device can reduce loss due to conversion by fixing weights in multiple layers, thereby improving accuracy.
[0531] For example, when multiple weights are fixed in multiple layers, the multiple weights are set to 1.
[0532] For example, as shown in FIG. 73, in an inverse weighting operation, a three-dimensional data decoding device calculates a first value by multiplying a high-frequency component by a first coefficient (e.g., Aqs), calculates first attribute information (e.g., c1) included in the plurality of attribute information from a second value based on a low-frequency component (e.g., l), and calculates second attribute information (e.g., c2) included in the plurality of attribute information by subtracting the second value from the first value, and the first coefficient (e.g., Aqs) depends on the quantization step (e.g., QS) and weights (e.g., w1 and w2).
[0533] For example, as shown in FIG. 73, in a weighting operation, a three-dimensional data decoding device calculates a third value by multiplying a first value by a second coefficient (e.g., B) that depends on the weight, calculates a fourth value by shifting the third value down by a predetermined number of bits and then up by a predetermined number of bits, and calculates a second value by subtracting low-frequency components from the fourth value.
[0534] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0535] (Embodiment 10) In this embodiment, a RAHT (Region Adaptive Hierarchical Transform) or Haar transform process using prediction will be described. FIG. 76 is a diagram for explaining the prediction process, showing a hierarchical structure in the RAHT or Haar transform process. A three-dimensional data encoding device may predict attribute values (attribute information) of a lower layer from attribute values of a higher layer during hierarchical encoding using the RAHT or Haar transform, and encode the difference between the attribute value and the predicted value obtained by the prediction. For example, when encoding attribute values of each layer by repeating hierarchical encoding from a higher layer to a lower layer, the three-dimensional data encoding device predicts attribute values of a lower layer (attribute values of a child node group) using attribute values calculated in the higher layer (attribute values of a parent node group). The three-dimensional data encoding device may encode the difference value obtained by subtracting a predicted value from the attribute value of each child node, instead of the attribute value of each child node. In this way, by generating an appropriate predicted value from the attribute value of a higher layer, the difference value of attribute values of a lower layer can be reduced, thereby improving encoding efficiency. Note that a similar prediction process may also be performed in a three-dimensional data decoding device.
[0536] FIG. 77 is a diagram showing an example of the relationship between nodes in an octree structure based on position information of three-dimensional points. As shown in FIG. 77, the three-dimensional data encoding device predicts the attribute value of a child node from the attribute value of a parent node or a neighboring parent node. Here, multiple nodes at the same level as a parent node are called a parent node group. Multiple child nodes of a parent node are called a child node group. A neighboring parent node is a node that is different from the parent node included in the parent node group and is adjacent to the parent node. Note that the parent node group may include some of the multiple nodes at the same level as the parent node. For example, the parent node group may include a parent node and multiple neighboring parent nodes. Alternatively, the parent node group may include nodes within a predetermined distance from the parent node (or target node).
[0537] Furthermore, the attribute information of a node in a higher hierarchy, such as a parent node, is calculated from the attribute information of the node in a lower hierarchy. For example, the attribute information of a parent node is the average value of the attribute information of the child nodes of the parent node. Note that the method for calculating the attribute information of the higher hierarchy is not limited to the average, and other calculation methods, such as a weighted average, may also be used.
[0538] For example, the three-dimensional data encoding device may calculate the distance d in three-dimensional space between a target node, which is a child node to be encoded, and a parent node or a neighboring parent node, and use a weighted average value using the distance d as a predicted value. For example, the predicted value cp of a child node c may be calculated using the following (Equation P1) and (Equation P2). Note that Ai is the value of the attribute information of the parent node pi, and d(c, pi) is the distance between the child node c and the parent node pi, for example, the Euclidean distance. n is the total number of parent nodes and neighboring parent nodes used to generate the predicted value.
[0539]
number
[0540] Furthermore, the three-dimensional data encoding device may use the attribute value of the parent node or a neighboring parent node as a predicted value. For example, the three-dimensional data encoding device may use the attribute value Ap of the parent node as a predicted value of the child node, or may use the attribute value Anp of a neighboring parent node as a predicted value of the child node. Furthermore, the three-dimensional data encoding device may select whether to use a calculated value (e.g., a weighted average value) calculated from attribute information of multiple nodes included in the parent node group, or to use the attribute value of the parent node or a neighboring parent node as is.
[0541] In this case, the three-dimensional data encoding device may add information (prediction mode) indicating which of the calculated value and the attribute value of the parent node or neighboring parent node was used as the predicted value to the bitstream, for example, for each child node group. This allows the three-dimensional data encoding device to select an appropriate prediction mode for each child node group, thereby improving encoding efficiency. Furthermore, by adding the prediction mode to the bitstream, the three-dimensional data decoding device can generate a predicted value using the prediction mode selected by the three-dimensional data encoding device. Therefore, the three-dimensional data decoding device can appropriately decode the bitstream.
[0542] Note that prediction modes may not be added to each child node group, but may be added to a unit larger than the child node group or a unit smaller than the child node group. For example, a three-dimensional data encoding device may add a prediction mode to each N child node group (N is an integer equal to or greater than 1), thereby reducing the overhead of encoding prediction modes and improving encoding efficiency. Furthermore, the three-dimensional data encoding device may add a prediction mode to a header such as an APS. Here, the APS is a parameter set of attribute information for each frame.
[0543] Next, a first example of a coding method using prediction will be described. Figure 78 is a diagram showing the first example of the coding method.
[0544] When calculating the difference between an attribute value and a predicted value, the three-dimensional data encoding device calculates the transform coefficient of the attribute value and the transform coefficient of the predicted value by applying the RAHT or Haar transform to each of the attribute value and the predicted value. The three-dimensional data encoding device obtains the difference between the transform coefficient of the attribute value and the transform coefficient of the predicted value. This makes it possible to reduce the difference value to be encoded, thereby improving encoding efficiency.
[0545] Note that when the three-dimensional data encoding device selects a predicted value from a calculated value and an attribute value of a parent node or a neighboring parent node (when a prediction mode is added to a bitstream), it may, for example, calculate a difference value of a transform coefficient using the predicted value of each prediction mode, calculate a cost value using the absolute sum of the difference values, and select a prediction mode that minimizes the cost. This allows the prediction mode that minimizes the difference value to be appropriately selected, thereby improving encoding efficiency. For example, the three-dimensional data encoding device may calculate the cost value cost using the following (Equation P3).
[0546]
number
[0547] Here, m is the number of child nodes included in the child node group. λ is an adjustment parameter. Predbit is the amount of bits for encoding the prediction mode. Ti is a transformation coefficient of the attribute value, and PTi is a transformation coefficient of the predicted value. Note that the method for selecting a prediction mode is not limited to this, and a prediction mode may be selected based on other conditions or external instructions, etc.
[0548] 78, the three-dimensional data encoding device applies RAHT or Haar transform to the attribute values of a child node group to calculate transform coefficients Ti of the attribute values (S9101). The three-dimensional data encoding device also generates predicted values of the child node group by predicting the attribute values of the child node group from the attribute values of the parent node group (S9102). Next, the three-dimensional data encoding device applies RAHT or Haar transform to the predicted values to calculate transform coefficients PTi of the predicted values (S9103).
[0549] Next, the three-dimensional data encoding device calculates a difference value, which is the difference between the transform coefficient Ti of the attribute value and the transform coefficient PTi of the predicted value (S9104). Next, the three-dimensional data encoding device quantizes the difference value (S9105) and arithmetically encodes the quantized difference value (S9106) to generate encoded data (bit stream). Note that the three-dimensional data encoding device may skip quantization (S9105) when lossless encoding is used.
[0550] Next, a first example of a decoding method for decoding the coded data (bit stream) generated by the above-mentioned first example of the coding method will be described. Figure 79 is a diagram showing the first example of the decoding method.
[0551] First, the three-dimensional data decoding device arithmetically decodes the coded data (bit stream) (S9111), and then inversely quantizes the resulting signal (S9112) to generate differential values of the transform coefficients of the child nodes. Note that the three-dimensional data decoding device may skip inverse quantization (S9112) when lossless decoding is used (when lossless coding is used).
[0552] The three-dimensional data decoding device also generates a predicted value by predicting the attribute values of the child node group from the attribute values of the parent node group (S9113). Note that, in the three-dimensional data encoding device, when it is selected whether to use the calculated value or the attribute value of the parent node or a neighboring parent node to generate the predicted value (when a prediction mode is added to the bitstream), the three-dimensional data decoding device generates the predicted value using the decoded prediction mode. Next, the three-dimensional data decoding device calculates the transform coefficient PTi of the predicted value by applying the RAHT or Haar transform to the predicted value (S9114).
[0553] Next, the three-dimensional data decoding device calculates the transform coefficients Ti of the child node group by adding the transform coefficients PTi of the predicted values to the difference values of the transform coefficients of the child node group (S9115). Next, the three-dimensional data decoding device generates decoded values of the attribute values of the child node group by applying the inverse RAHT or the inverse Haar transform to the transform coefficients Ti of the child node group (S9116). In this way, the three-dimensional data decoding device can properly decode the bitstream.
[0554] Next, a second example of the encoding method will be described. In this second example, an integer Haar transform is used instead of the RATH or Haar transform. Figure 80 is a diagram showing the second example of the encoding method.
[0555] When calculating the difference between an attribute value and a predicted value, the three-dimensional data encoding device may apply an integer Haar transform to each of the attribute value and the predicted value to calculate a transform coefficient of the attribute value and a transform coefficient of the predicted value, thereby obtaining the difference between the transform coefficient of the attribute value and the transform coefficient of the predicted value. This allows the three-dimensional data encoding device to reduce the difference value to be encoded, thereby improving encoding efficiency.
[0556] In addition, when the three-dimensional data encoding device selects a predicted value from the calculated value and the attribute value of the parent node or a neighboring parent node (when adding a prediction mode to a bitstream), for example, it may calculate a difference value of the transform coefficient using the predicted value of each prediction mode, calculate a cost value using the absolute sum of the difference values, and select a prediction mode that minimizes the cost. This allows the three-dimensional data encoding device to appropriately select a prediction mode that minimizes the difference value, thereby improving encoding efficiency. For example, the three-dimensional data encoding device may calculate the cost value cost using the above (Equation P3).
[0557] 80, the three-dimensional data encoding device calculates transformation coefficients Ti of the attribute values by applying an integer Haar transform to the attribute values of the child node group (S9101A). In addition, the three-dimensional data encoding device generates predicted values of the child node group by predicting the attribute values of the child node group from the attribute values of the parent node group (S9102).
[0558] When applying the integer Haar transform, the three-dimensional data encoding device truncates the decimal point of the predicted value (S9107). Alternatively, the three-dimensional data encoding device may apply rounding or the like to the predicted value and set the decimal point of the predicted value to 0. For example, when kBit represents the decimal portion of the bits of the attribute value, the three-dimensional data encoding device performs a kBit shift-down and kBit shift-up process on the predicted value, thereby performing a value truncation process (flooring process) and setting the value of the kBit decimal portion to 0. In this way, by converting the predicted value to an integer value before applying the integer Haar transform, the transform coefficient of the predicted value after the integer Haar transform also becomes an integer value. As a result, the difference value between the transform coefficient Ti of the attribute value of the child node group and the transform coefficient PTi of the predicted value also becomes an integer value. Therefore, lossless encoding using the integer Haar transform can be realized. Note that any method may be applied as long as it sets the decimal point of the predicted value to 0.
[0559] Furthermore, the three-dimensional data encoding device stores a flag in the bitstream indicating whether or not to apply the integer Haar transform, and when applying the integer Haar transform, sets the decimal part of the predicted value to 0, and when not applying the integer Haar transform, does not need to set the decimal part to 0. Note that the three-dimensional data encoding device does not need to apply the process of setting the decimal part of the predicted value to 0 when the integer Haar transform is QS>1 (lossy encoding). This improves calculation accuracy by maintaining the decimal precision of the predicted value when applying the integer Haar transform. This can improve encoding efficiency.
[0560] Next, the three-dimensional data encoding device calculates the transform coefficients PTi of the predicted values by applying an integer Haar transform to the predicted values after the truncation process (S9103A). Next, the three-dimensional data encoding device calculates the difference between the transform coefficients Ti of the attribute values and the transform coefficients PTi of the predicted values (S9104).
[0561] Here, the differential values of the transform coefficients may be converted into integer values and then arithmetically coded. In this case, information in the fractional part is lost. Therefore, in order to support lossless coding, the three-dimensional data coding device sets the value of the fractional part of the differential values of the transform coefficients to 0 in advance. This prevents information from being lost even when the differential values are converted into integer values before arithmetic coding, enabling lossless coding to be achieved.
[0562] Next, the three-dimensional data encoding device quantizes the difference values (S9105) and arithmetically encodes the quantized difference values (S9106) to generate encoded data (bit stream). Note that the three-dimensional data encoding device may skip quantization (S9105) when lossless encoding is used.
[0563] Next, a second example of a decoding method for decoding the coded data (bit stream) generated by the second example of the coding method will be described. Figure 81 is a diagram showing the second example of the decoding method.
[0564] First, the three-dimensional data decoding device arithmetically decodes the coded data (bit stream) (S9111), and then inversely quantizes the resulting signal (S9112) to generate differential values of the transform coefficients of the child nodes. Note that the three-dimensional data decoding device may skip inverse quantization (S9112) when lossless decoding is used (when lossless coding is used).
[0565] The three-dimensional data decoding device also generates a predicted value by predicting the attribute values of the child node group from the attribute values of the parent node group (S9113). Note that, in the three-dimensional data encoding device, when it is selected to use either the calculated value or the attribute value of the parent node or a neighboring parent node to generate a predicted value (when a prediction mode is added to the bitstream), the three-dimensional data decoding device generates a predicted value using the decoded prediction mode.
[0566] When applying the integer Haar transform, the three-dimensional data decoding device truncates the decimal point of the predicted value (S9117). Alternatively, the three-dimensional data decoding device may apply rounding or the like to the predicted value and set the decimal point of the predicted value to 0. For example, if kBit represents the decimal portion of the bits of the attribute value, the three-dimensional data decoding device may perform a kBit shift-down and kBit shift-up to the predicted value, thereby performing a value truncation process (flooring) and setting the value of the kBit decimal portion to 0. In this way, by converting the predicted value to an integer value before applying the integer Haar transform, the transform coefficient of the predicted value after the integer Haar transform also becomes an integer value. As a result, the sum of the transform coefficient Ti of the attribute value of the child node group and the transform coefficient PTi of the predicted value also becomes an integer value. Therefore, the three-dimensional data decoding device can appropriately decode a bitstream losslessly encoded using the integer Haar transform. Note that any method may be applied as long as it sets the decimal point of the predicted value to 0.
[0567] Furthermore, the three-dimensional data decoding device acquires from the bitstream a flag indicating whether or not to apply the integer Haar transform, and when applying the integer Haar transform, sets the decimal part of the predicted value to 0, and when not applying the integer Haar transform, does not have to set the decimal part to 0. Note that when the integer Haar transform is QS>1 (lossy decoding), the three-dimensional data decoding device does not have to apply the process of setting the decimal part of the predicted value to 0. In this way, the three-dimensional data decoding device maintains the decimal precision of the predicted value when applying the integer Haar transform, thereby improving calculation accuracy and enabling appropriate decoding of a bitstream with improved coding efficiency.
[0568] Next, the three-dimensional data decoding device calculates transform coefficients PTi of the predicted value by applying an integer Haar transform to the predicted value after the truncation process (S9114A). Next, the three-dimensional data decoding device calculates transform coefficients Ti of the child node group by adding the transform coefficients PTi of the predicted value to the difference values of the transform coefficients of the child node group (S9115). Next, the three-dimensional data decoding device generates decoded values of the attribute values of the child node group by applying an inverse integer Haar transform to the transform coefficients Ti of the child node group (S9116A). In this way, the three-dimensional data decoding device can properly decode the bitstream.
[0569] Next, a third example of the encoding method will be described. In this third example, the integer Haar transform is used as in the second example. Another difference from the second example is that the timing of the truncation process (S9108) is after the application of the integer Haar transform (S9103A).
[0570] 82 is a diagram showing a third example of the encoding method. Note that the following mainly describes the differences from the second example, and overlapping descriptions will be omitted.
[0571] 82, the three-dimensional data encoding device calculates transformation coefficients Ti of the attribute values by applying an integer Haar transform to the attribute values of the child node group (S9101A).The three-dimensional data encoding device also generates predicted values of the child node group by predicting the attribute values of the child node group from the attribute values of the parent node group (S9102).
[0572] Next, the three-dimensional data encoding device calculates transform coefficients PTi of the predicted values by applying an integer Haar transform to the predicted values (S9103A). Next, the three-dimensional data encoding device performs a rounding process on the transform coefficients PTi to set the decimal parts of the transform coefficients to 0 (S9108). Note that the details of this rounding process are the same as those of step S9107 described above, although they differ depending on whether the signal to be processed is a predicted value or a transform coefficient PTi.
[0573] Next, the three-dimensional data encoding device calculates a difference value which is the difference between the transform coefficient Ti of the attribute value and the transform coefficient PTi of the predicted value after the truncation process (S9104).
[0574] Next, a third example of a decoding method for decoding the coded data (bit stream) generated by the third example of the coding method will be described. Figure 83 is a diagram showing the third example of the decoding method.
[0575] First, the three-dimensional data decoding device arithmetically decodes the coded data (bit stream) (S9111), and then inversely quantizes the resulting signal (S9112) to generate differential values of the transform coefficients of the child nodes. Note that the three-dimensional data decoding device may skip inverse quantization (S9112) when lossless decoding is used (when lossless coding is used).
[0576] Furthermore, the three-dimensional data decoding device generates predicted values by predicting the attribute values of the child node group from the attribute values of the parent node group (S9113).
[0577] Next, the three-dimensional data decoding device calculates transform coefficients PTi of the predicted values by applying an integer Haar transform to the predicted values (S9114A). Next, the three-dimensional data decoding device performs a truncation process on the transform coefficients PTi to set the decimal parts of the transform coefficients to 0 (S9118). Note that the details of this truncation process are the same as those of step S9117 described above, although they differ depending on whether the signal to be processed is a predicted value or a transform coefficient PTi.
[0578] Next, the three-dimensional data decoding device calculates the transform coefficients Ti of the child nodes by adding the transform coefficients PTi of the predicted values after the truncation process to the differential values of the transform coefficients of the child nodes (S9115). Next, the three-dimensional data decoding device generates decoded values of the attribute values of the child nodes by applying an inverse integer Haar transform to the transform coefficients Ti of the child nodes (S9116A). In this way, the three-dimensional data decoding device can properly decode the bitstream.
[0579] Next, a fourth example of the encoding method will be described. In the first to third examples, a transform process is applied to an attribute value and a predicted value, and a difference value between the transform coefficient of the generated attribute value and the transform coefficient of the predicted value is calculated. In the fourth example, a three-dimensional data encoding device calculates a difference value between an attribute value and a predicted value, and calculates a transform coefficient of the difference value by applying an RAHT or Haar transform to the difference value. This allows the three-dimensional data encoding device to reduce the transform coefficient of the difference value to be encoded while suppressing the amount of processing, thereby improving encoding efficiency.
[0580] Note that when the three-dimensional data encoding device selects a predicted value from a calculated value and an attribute value of a parent node or a neighboring parent node (when a prediction mode is added to a bitstream), it may, for example, calculate a difference value of the attribute value using the predicted value of each prediction mode, calculate the following cost value using the absolute sum of the difference values, and select the prediction mode that minimizes the cost. This allows the three-dimensional data encoding device to appropriately select the prediction mode that minimizes the difference value, thereby improving encoding efficiency. For example, the three-dimensional data encoding device may calculate the cost value cost using the following (Equation P4).
[0581]
number
[0582] Here, m is the number of child nodes included in the child node group, λ is an adjustment parameter, Predbit is the amount of bits required to encode the prediction mode, and Di is the difference between the attribute value and the predicted value.
[0583] The three-dimensional data encoding device may calculate the cost value cost using the following (Equation P5). This allows the three-dimensional data encoding device to select a prediction mode that reduces the value of the transform coefficient of the difference value, thereby improving encoding efficiency.
[0584]
number
[0585] Here, Ti is a transform coefficient of the difference value. Note that the method for selecting a prediction mode is not limited to this, and a prediction mode may be selected based on other conditions or an external instruction, etc.
[0586] Fig. 84 is a diagram showing a fourth example of an encoding method. As shown in Fig. 84, the three-dimensional data encoding device generates a predicted value Pi by predicting the attribute value of a child node group from the attribute values of a parent node group (S9121). Next, the three-dimensional data encoding device calculates a difference value Di, which is the difference between the attribute value Ai of the child node group and the predicted value Pi (S9122). Next, the three-dimensional data encoding device calculates a transform coefficient Ti of the difference value Di by applying the RAHT or Haar transform to the difference value Di (S9123).
[0587] Next, the three-dimensional data encoding device quantizes the transform coefficients Ti of the difference values (S9124) and arithmetically encodes the quantized transform coefficients Ti (S9125) to generate encoded data (bit stream). Note that the three-dimensional data encoding device may skip quantization (S9124) when using lossless encoding.
[0588] Next, a fourth example of a decoding method for decoding the coded data (bit stream) generated by the fourth example of the coding method will be described. Figure 85 is a diagram showing the fourth example of the decoding method.
[0589] First, the three-dimensional data decoding device arithmetically decodes the coded data (bit stream) (S9131), and inversely quantizes the obtained signal (S9132) to generate transform coefficients Ti of the difference values of the child node group. Note that the three-dimensional data decoding device may skip the inverse quantization (S9132) when using lossless decoding (when lossless coding is used). Next, the three-dimensional data decoding device applies an inverse RAHT or inverse Haar transform to the transform coefficients Ti to generate difference values Di of the attribute values (S9133).
[0590] The three-dimensional data decoding device also generates a predicted value by predicting the attribute values of the child node group from the attribute values of the parent node group (S9134). Note that, in the three-dimensional data encoding device, when it is selected to use either the calculated value or the attribute value of the parent node or a neighboring parent node to generate a predicted value (when a prediction mode is added to the bitstream), the three-dimensional data decoding device generates a predicted value using the decoded prediction mode.
[0591] Next, the three-dimensional data decoding device generates a decoded value of the attribute value of the child node group by adding the difference value Di and the predicted value Pi (S9135). In this way, the three-dimensional data decoding device can appropriately decode the bit stream.
[0592] Next, a fifth example of the encoding method will be described. This fifth example differs from the fourth example in that an integer Haar transform is used instead of the RATH or Haar transform. Figure 86 is a diagram showing the fifth example of the encoding method.
[0593] The three-dimensional data encoding device generates a predicted value Pi by predicting the attribute values of the child node group from the attribute values of the parent node group (S9121). Next, the three-dimensional data encoding device performs a rounding process on the predicted value Pi to set the decimal part of the predicted value to 0 (S9126). Note that the details of this process are the same as, for example, step S9107 shown in FIG. 80.
[0594] Next, the three-dimensional data encoding device calculates a difference value Di, which is the difference between the attribute value Ai of the child node group and the predicted value Pi after the truncation process (S9122). Next, the three-dimensional data encoding device calculates a transform coefficient Ti of the difference value by applying an integer Haar transform to the difference value Di (S9123A).
[0595] Next, the three-dimensional data encoding device quantizes the transform coefficients Ti of the difference values (S9124) and arithmetically encodes the quantized transform coefficients Ti (S9125) to generate encoded data (bit stream). Note that the three-dimensional data encoding device may skip quantization (S9124) when using lossless encoding.
[0596] Here, the transform coefficients of the differential values may be converted into integer values and then arithmetically coded, during which time the information of the decimal parts of the transform coefficients is lost. In response to this, the three-dimensional data coding device pre-sets the value of the decimal parts of the transform coefficients of the differential values to 0. This allows information not to be lost even when the transform coefficients Ti of the differential values are converted into integer values before arithmetic coding, thereby achieving lossless coding.
[0597] Next, a fifth example of a decoding method for decoding the coded data (bit stream) generated by the fifth example of the coding method will be described. Fig. 87 is a diagram showing the fifth example of the decoding method.
[0598] First, the three-dimensional data decoding device arithmetically decodes the coded data (bit stream) (S9131), and inversely quantizes the obtained signal (S9132) to generate transform coefficients Ti of the difference values of the child node group. Note that the three-dimensional data decoding device may skip the inverse quantization (S9132) when using lossless decoding (when lossless coding is used). Next, the three-dimensional data decoding device applies an inverse integer Haar transform to the transform coefficients Ti to generate difference values Di of the attribute values (S9133A).
[0599] The three-dimensional data decoding device also generates a predicted value by predicting the attribute values of the child node group from the attribute values of the parent node group (S9134). Next, the three-dimensional data decoding device performs a rounding down process on the predicted value Pi to set the decimal part of the predicted value to 0 (S9136). Note that the details of this process are the same as, for example, step S9117 shown in FIG. 81.
[0600] Next, the three-dimensional data decoding device generates a decoded value of the attribute value of the child node group by adding the difference value Di and the predicted value Pi after the truncation process (S9135). In this way, the three-dimensional data decoding device can appropriately decode the bit stream.
[0601] As described above, the three-dimensional data encoding device according to this embodiment performs the processing shown in Fig. 88. First, the three-dimensional data encoding device generates a predicted value of attribute information of a target node in an N-ary tree structure (e.g., an octal tree structure) of multiple three-dimensional points included in point cloud data (N is an integer equal to or greater than 2). Next, the three-dimensional data encoding device encodes the attribute information of the target node using the predicted value and a transform process (e.g., RAHT, Haar transform, or integer Haar transform) that hierarchically repeats an operation to separate each of multiple input signals into high-frequency components and low-frequency components (S9142). In generating the predicted value (S9141), the three-dimensional data encoding device selects the attribute information of a node from multiple first nodes (e.g., a group of parent nodes) that include the parent node of the target node and belong to the same hierarchical level as the parent node, to be used to generate the predicted value of the target node.
[0602] This allows the three-dimensional data encoding device to appropriately select attribute information used to generate predicted values, thereby improving encoding efficiency.
[0603] For example, the three-dimensional data encoding device selects whether to use attribute information of a second node included in the plurality of first nodes as a predicted value as is, or to calculate a predicted value from multiple pieces of attribute information of the plurality of first nodes, where the second node is, for example, a parent node.
[0604] For example, a three-dimensional data encoding device generates a plurality of predicted values of a plurality of third nodes (e.g., a group of child nodes) that include a target node and belong to the same layer as the target node. In encoding (S9142), the three-dimensional data encoding device generates a plurality of first transform coefficients by performing a transform process on a plurality of attribute information of the plurality of third nodes (e.g., S9101 in FIG. 78), generates a plurality of second transform coefficients by performing a transform process on a plurality of predicted values of the plurality of third nodes (e.g., S9103), calculates a difference value between the corresponding first transform coefficient and second transform coefficient (e.g., S9104), and encodes the calculated difference value (e.g., S9106).
[0605] For example, the transform process is an integer-to-integer transform (e.g., an integer Haar transform). In generating the second transform coefficients, the three-dimensional data encoding device performs a process of truncating the decimal parts of the predicted values of the third nodes (e.g., S9107 in FIG. 80), and then performs a transform process on the processed predicted values to generate the second transform coefficients (e.g., S9103A).
[0606] For example, the transform process is an integer-to-integer transform (e.g., an integer Haar transform). In calculating the difference value, the three-dimensional data encoding device performs a process of truncating the decimal parts of the plurality of second transform coefficients (e.g., S9108 in FIG. 82), and calculates the difference value using the plurality of second transform coefficients after the process (S9104).
[0607] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor performs the above-mentioned processing using the memory.
[0608] Furthermore, the three-dimensional data decoding device according to this embodiment performs the processing shown in Fig. 89. First, the three-dimensional data decoding device acquires, from the bit stream, a difference value between attribute information of a target node in an N-ary tree structure (e.g., an octal tree structure) of multiple three-dimensional points included in point cloud data (N is an integer equal to or greater than 2) and a predicted value (S9151), generates a predicted value (S9152), and decodes the attribute information of the target node using the difference value, the predicted value, and an inverse transform process of a transform process (e.g., RAHT, Haar transform, or integer Haar transform) that hierarchically repeats an operation to separate each of multiple input signals into high-frequency components and low-frequency components (S9153). In generating the predicted value (S9152), the three-dimensional data decoding device selects the attribute information of a node from multiple first nodes (e.g., a parent node group) that include the parent node of the target node and belong to the same hierarchical level as the parent node, to be used to generate the predicted value of the target node.
[0609] This allows the three-dimensional data decoding device to appropriately select attribute information to be used in generating predicted values, thereby improving coding efficiency.
[0610] For example, the three-dimensional data decoding device selects whether to use attribute information of a second node included in the plurality of first nodes as a predicted value as is, or to calculate a predicted value from multiple pieces of attribute information of the plurality of first nodes, where the second node is a parent node, for example.
[0611] For example, the three-dimensional data decoding device acquires, from the bitstream, a plurality of difference values of a plurality of third nodes (e.g., a group of child nodes) that include a target node and belong to the same layer as the target node (e.g., S9111 in FIG. 79), and generates a plurality of predicted values of the plurality of third nodes (S9113). In decoding (S9153), the three-dimensional data decoding device generates a plurality of second transform coefficients by performing a transform process on the plurality of predicted values of the plurality of third nodes (e.g., S9114), generates a plurality of first transform coefficients by adding the corresponding difference values and second transform coefficients to the plurality of difference values and the plurality of second transform coefficients (e.g., S9115), and generates a plurality of attribute information of the plurality of third nodes by performing an inverse transform process on the first transform coefficients (e.g., S9116).
[0612] For example, the transform process is an integer-to-integer transform (e.g., an integer Haar transform). In generating the second transform coefficients, the three-dimensional data decoding device performs a process of truncating the decimal parts of the predicted values of the third nodes (e.g., S9117 in FIG. 81 ), and then performs a transform process on the processed predicted values to generate the second transform coefficients (e.g., S9114A).
[0613] For example, the transform process is an integer-to-integer transform (e.g., an integer Haar transform). In generating the plurality of first transform coefficients, the three-dimensional data decoding device performs a process of truncating the decimal parts of the plurality of second transform coefficients (e.g., S9118 in FIG. 83), and calculates the plurality of second transform coefficients using the plurality of second transform coefficients after the process (e.g., S9115).
[0614] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0615] (Embodiment 11) In this embodiment, RAHT (Region Adaptive Hierarchical Transform) or Haar transform processing using prediction will be described. Fig. 90 is a diagram for explaining the prediction processing, and is a diagram showing a hierarchical structure in RAHT or Haar transform processing.
[0616] The three-dimensional data encoding device performs hierarchical predictive encoding, which predicts attribute values (attribute information) of a lower layer from attribute values of a higher layer during hierarchical encoding using RAHT or Haar transform, and encodes the difference value between the attribute information and the predicted value obtained by the prediction. Furthermore, the three-dimensional data encoding device adaptively switches whether or not to perform this hierarchical predictive encoding based on certain conditions. For example, the following conditions may be used as certain conditions.
[0617] Condition 1 is that the number of effective nodes is greater than a predetermined threshold (THnode). If the number of effective nodes is greater than the threshold, the three-dimensional data encoding device applies hierarchical predictive encoding, and if the number of effective nodes is equal to or less than the threshold, it does not apply hierarchical predictive encoding.
[0618] Here, a valid node is a node that has an attribute value used for prediction among multiple nodes (parent node and neighboring parent node) included in the parent node group of the child node group to be coded. In other words, a valid node is a node that includes a 3D point in that node or in its subordinate nodes (descendant nodes). The child node group includes multiple nodes (child nodes) to be coded. The parent node group also includes a parent node and multiple neighboring parent nodes. A neighboring parent node is a node that belongs to the same hierarchical level as the parent node and is adjacent to the parent node.
[0619] For example, in the example shown in FIG. 90, the number of effective nodes, which is the total number of effective nodes included in the parent node group, is 11. For example, when THnode=5, the number of effective nodes (=11)>THnode, so the three-dimensional data encoding device encodes the child node group using hierarchical predictive coding. When THnode=12, the number of effective nodes (=11)<=THnode, so the three-dimensional data encoding device does not encode the child node group using hierarchical predictive coding. As a result, when the number of effective nodes is greater than the threshold, the three-dimensional data encoding device can generate a highly accurate predicted value using the attribute value of the parent node or a neighboring parent node, and therefore, by applying hierarchical predictive coding, the encoding efficiency can be improved. Furthermore, when the number of effective nodes is equal to or less than the threshold, the three-dimensional data encoding device can reduce the amount of processing by not applying hierarchical predictive coding.
[0620] When hierarchical predictive coding is not applied, the three-dimensional data coding device applies, for example, RAHT or Haar transform to the attribute values of the child node group, and entropy codes the resulting transform coefficients.
[0621] Fig. 91 is a diagram showing a first example of encoding processing. When calculating a difference value between an attribute value and a predicted value, the three-dimensional data encoding device calculates a transform coefficient of the attribute value and a transform coefficient of the predicted value by applying RAHT or Haar transform to each of the attribute value and the predicted value. The three-dimensional data encoding device obtains a difference value between the transform coefficient of the attribute value and the transform coefficient of the predicted value. This makes it possible to reduce the difference value to be encoded, thereby improving encoding efficiency.
[0622] Note that when the three-dimensional data encoding device selects a predicted value from a calculated value and an attribute value of a parent node or a neighboring parent node (when a prediction mode is added to a bitstream), it may, for example, calculate a difference value of a transform coefficient using the predicted value of each prediction mode, calculate a cost value using the absolute sum of the difference values, and select a prediction mode that minimizes the cost value. This allows the prediction mode that minimizes the difference value to be appropriately selected, thereby improving encoding efficiency. For example, the three-dimensional data encoding device may calculate the cost value cost using the following (Equation R1).
[0623]
number
[0624] Here, m is the number of child nodes included in the child node group. λ is an adjustment parameter. Predbit is the amount of bits for encoding the prediction mode. Ti is a transformation coefficient of the attribute value, and PTi is a transformation coefficient of the predicted value. Note that the method for selecting a prediction mode is not limited to this, and a prediction mode may be selected based on other conditions or external instructions, etc.
[0625] As shown in FIG. 91, the three-dimensional data encoding device calculates the transformation coefficient Ti of the attribute value by applying the RAHT or Haar transform to the attribute value of the child node group (S9501).
[0626] In the example shown in Figure 91, the number of effective nodes is 2, and the number of effective nodes (= 2) <= THnode (for example, 11). In this case, the three-dimensional data encoding device does not generate a predicted value. For example, the three-dimensional data encoding device uses a predicted value = 0.
[0627] Next, the three-dimensional data encoding device calculates a difference value, which is the difference between the transform coefficient Ti of the attribute value and the predicted value = 0 (S9502). In other words, the three-dimensional data encoding device outputs the transform coefficient Ti as is as the difference value.
[0628] Next, the three-dimensional data encoding device quantizes the difference values (transform coefficients Ti) (S9503) and arithmetically encodes the quantized difference values (S9504) to generate encoded data (bit stream). Note that the three-dimensional data encoding device may skip quantization (S9504) when lossless encoding is used.
[0629] If the number of effective nodes is greater than THnode, the three-dimensional data encoding device generates predicted values of the child node group by predicting the attribute values of the child node group from the attribute values of the parent node group. Next, the three-dimensional data encoding device calculates transform coefficients PTi of the predicted values by applying the RAHT or Haar transform to the predicted values. Furthermore, in step S9502, the three-dimensional data encoding device calculates a difference value that is the difference between the transform coefficient Ti of the attribute value and the transform coefficient PTi of the predicted value.
[0630] Next, an example of a decoding process for decoding the coded data (bit stream) generated by the first example of the coding process will be described. Fig. 92 is a diagram showing the first example of the decoding process.
[0631] First, the three-dimensional data decoding device arithmetically decodes the coded data (bit stream) (S9511), and then inversely quantizes the resulting signal (S9512) to generate differential values of the transform coefficients of the child node group. Note that the three-dimensional data decoding device may skip inverse quantization (S9512) when lossless decoding is used (when lossless coding is used).
[0632] In the example shown in Fig. 92, the number of valid nodes is 2, and the number of valid nodes (= 2) <= THnode (for example, 11). In this case, the three-dimensional data decoding device does not generate a predicted value. For example, the three-dimensional data decoding device uses a predicted value = 0.
[0633] Next, the three-dimensional data decoding device calculates the transform coefficients Ti of the child node group by adding the predicted value = 0 to the difference values of the transform coefficients of the child node group (S9513). In other words, the three-dimensional data decoding device outputs the difference values as they are as the transform coefficients Ti.
[0634] Next, the three-dimensional data decoding device generates decoded values of the attribute values of the child node group by applying the inverse RAHT or the inverse Haar transform to the transform coefficients Ti of the child node group (S9514). In this way, the three-dimensional data decoding device can appropriately decode the bitstream.
[0635] Note that, when the number of effective nodes is greater than THnode, the three-dimensional data decoding device generates a predicted value by predicting the attribute values of the child node group from the attribute values of the parent node group. Note that, when the three-dimensional data encoding device selects whether to use a calculated value or an attribute value of a parent node or a neighboring parent node to generate a predicted value (when a prediction mode is added to the bitstream), the three-dimensional data decoding device generates a predicted value using the decoded prediction mode. Next, the three-dimensional data decoding device calculates transform coefficients PTi of the predicted value by applying RAHT or Haar transform to the predicted value. Furthermore, in step S9513, the three-dimensional data decoding device calculates transform coefficients Ti of the child node group by adding the transform coefficients PTi of the predicted value to the difference value of the transform coefficients of the child node group.
[0636] 93 is a diagram showing an example of the syntax of the attribute information header (attribute_header). The attribute information header is a header of attribute information included in a bitstream, and is, for example, a header for each frame or multiple frames.
[0637] As shown in Fig. 93, the attribute information header includes RAHTPredictionFlag (hierarchical predictive coding flag) and THnode (first threshold information). RAHTPredictionFlag is information for switching whether to apply hierarchical predictive coding, which predicts attribute values of lower layers from attribute values of higher layers, during hierarchical coding by RAHT or Haar. RAHTPredictionFlag = 1 indicates that hierarchical predictive coding is applied. RAHTPredictionFlag = 0 indicates that hierarchical predictive coding is not applied.
[0638] THnode is information for switching whether or not to apply hierarchical coding for each child node group. THnode is added to the attribute information header when RAHTPredictionFlag = 1, and is not added to the attribute information header when RAHTPredictionFlag = 0. If the number of effective nodes in the parent node group is greater than THnode, hierarchical predictive coding is applied, and if the number of effective nodes is THnode or less, hierarchical predictive coding is not applied.
[0639] Fig. 94 is a diagram showing another syntax example of an attribute information header. The attribute information header shown in Fig. 94 does not include RAHTPredictionFlag, but does include THnode. If the minimum number of valid nodes of a parent node is 1, the three-dimensional data encoding device can always apply hierarchical predictive coding to each child node group by setting THnode=0. Therefore, in this case, RAHTPredictionFlag can be omitted. This allows the data size of the header to be reduced.
[0640] The three-dimensional data encoding device may entropy-encode the RAHTPredictionFlag or THnode and then add it to the header. For example, the three-dimensional data encoding device may binarize and arithmetically encode each value. Furthermore, the three-dimensional data encoding device may encode each value in a fixed length to reduce the amount of processing.
[0641] Furthermore, RAHTPredictionFlag or THnode does not necessarily have to be added to the header. For example, the value of RAHTPredictionFlag or THnode may be defined by a profile or level of a standard, etc. This allows the amount of header bits to be reduced.
[0642] FIG. 95 is a flowchart of three-dimensional data encoding processing (processing for switching between hierarchical predictive encoding). First, the three-dimensional data encoding device calculates the number of effective nodes in the parent node group (S9521). Next, the three-dimensional data encoding device determines whether the number of effective nodes is greater than THnode (S9522). If the number of effective nodes is greater than THnode (Yes in S9522), the three-dimensional data encoding device performs hierarchical predictive encoding on the attribute values of the child node group (S9523). On the other hand, if the number of effective nodes is equal to or less than THnode (No in S9522), the three-dimensional data encoding device performs hierarchical non-predictive encoding on the attribute values of the child node group (S9524). Hierarchical non-predictive encoding is encoding that does not use hierarchical predictive encoding, for example, encoding that does not include prediction processing.
[0643] 96 is a flowchart of the three-dimensional data decoding process (layer prediction decoding switching process). First, the three-dimensional data decoding device calculates the number of valid nodes in the parent node group (S9531). Next, the three-dimensional data decoding device determines whether the number of valid nodes is greater than THnode (S9532).
[0644] If the number of valid nodes is greater than THnode (Yes in S9532), the three-dimensional data decoding device performs hierarchical predictive decoding on the attribute values of the child node group (S9533). Here, hierarchical predictive decoding is a process of decoding a signal generated by the above-mentioned hierarchical predictive coding. In other words, in hierarchical predictive decoding, a decoded value (attribute value) is generated by adding a predicted value obtained by prediction to a decoded difference value.
[0645] On the other hand, if the number of valid nodes is equal to or less than THnode (No in S9532), the three-dimensional data decoding device performs hierarchical non-predictive decoding on the attribute values of the child node group (S9534). Here, hierarchical non-predictive decoding is a process of decoding a signal generated by the above-mentioned hierarchical non-predictive coding. Hierarchical non-predictive decoding is decoding that does not use hierarchical predictive decoding, for example, decoding that does not include prediction processing.
[0646] Next, a second example of the encoding process will be described. The following Condition 2 may be used as a condition for switching whether or not to use hierarchical predictive encoding.
[0647] Condition 2 is that the number of effective nodes in the grandfather node group is greater than a predetermined threshold (THpnode). The three-dimensional data encoding device applies hierarchical predictive encoding when the number of effective nodes in the grandfather node group is greater than the threshold, and does not apply hierarchical predictive encoding when the number of effective nodes in the grandfather node group is equal to or less than the threshold. Here, the grandfather node group includes the grandfather node and the adjacent node of the grandfather node. In other words, the grandfather node group includes the parent node of the parent node and the parent node of the adjacent parent node. Also, the grandfather node is the parent node of the parent node of the target node. In other words, the number of effective nodes in the grandfather node is the number of effective nodes when the parent node is encoded.
[0648] Furthermore, it is also possible to combine Condition 1 and Condition 2. In other words, the three-dimensional data encoding device applies hierarchical predictive coding if the number of effective nodes in the grandparent node group is greater than the threshold value THpnode and the number of effective nodes in t...
Claims
1. A coding method using RAHT (Region Adaptive Hierarchical Transform), comprising: determining whether a count value indicating the number of adjacent nodes containing the coefficient is greater than or equal to a threshold value or less than the threshold value; If the count value is equal to or greater than the threshold, performing a first transformation process on a plurality of coefficients of a plurality of child nodes, the first transformation process including a prediction process using one or more adjacent nodes, to generate a plurality of first coefficients; If the count value is less than the threshold, a second transformation process not including the prediction process using the one or more adjacent nodes is performed on a plurality of coefficients of a plurality of child nodes to generate a plurality of second coefficients. Encoding method.
2. A decoding method using RAHT (Region Adaptive Hierarchical Transform), comprising: determining whether a count value indicating the number of adjacent nodes containing the coefficient is greater than or equal to a threshold value or less than the threshold value; If the count value is equal to or greater than the threshold, generating a plurality of first inverse transform coefficients by performing a first inverse transform process on a plurality of first coefficients, the first inverse transform process including a prediction process using one or more adjacent nodes; If the count value is less than the threshold, a second inverse transform process that does not include the prediction process using the one or more adjacent nodes is performed on the second coefficients to generate a plurality of second inverse transform coefficients. Decryption method.
3. A coding device using RAHT (Region Adaptive Hierarchical Transform), a processor; a memory; The processor uses the memory to: determining whether a count value indicating the number of adjacent nodes containing the coefficient is greater than or equal to a threshold value or less than the threshold value; If the count value is equal to or greater than the threshold, performing a first transformation process on a plurality of coefficients of a plurality of child nodes, the first transformation process including a prediction process using one or more adjacent nodes, to generate a plurality of first coefficients; If the count value is less than the threshold, a second transformation process not including the prediction process using the one or more adjacent nodes is performed on a plurality of coefficients of a plurality of child nodes to generate a plurality of second coefficients. Encoding device.
4. A decoding device using RAHT (Region Adaptive Hierarchical Transform), a processor; a memory; The processor uses the memory to: determining whether a count value indicating the number of adjacent nodes containing the coefficient is greater than or equal to a threshold value or less than the threshold value; If the count value is equal to or greater than the threshold, generating a plurality of first inverse transform coefficients by performing a first inverse transform process on a plurality of first coefficients, the first inverse transform process including a prediction process using one or more adjacent nodes; If the count value is less than the threshold, a second inverse transform process that does not include the prediction process using the one or more adjacent nodes is performed on the second coefficients to generate a plurality of second inverse transform coefficients. Decryption device.
Citation Information
Patent Citations
Encoder and control method therefor
JP2017126890A
Point Cloud Compression using Prediction and Shape-Adaptive Transforms
US20170214943A1
Scalable point cloud compression with transform, and corresponding decompression
US20170347122A1
Map display device
WO2014020663A1
Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
WO2019082837A1