Three-dimensional data decoding method, three-dimensional data encoding method, three-dimensional data decoding device, and three-dimensional data encoding device
Patent Information
- Application Number
- JP2023573895
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2022-01-12
- Filing Date
- 2022-12-01
- Publication Date
- 2026-10-13
- Estimated Expiration
- 2042-12-01
AI Technical Summary
【0011】 本開示は、符号化効率を向上できる三次元データ復号方法、三次元データ符号化方法、三次元データ復号装置、又は三次元データ符号化装置を提供できる。
Smart Images

Figure 0007933803000001 
Figure 0007933803000002 
Figure 0007933803000003
Abstract
Description
Technical Field
[0001] The present disclosure relates to a three-dimensional data decoding method, a three-dimensional data encoding method, a three-dimensional data decoding apparatus, and a three-dimensional data encoding apparatus.
Background Art
[0002] In a wide range of fields such as computer vision for autonomous operation of automobiles or robots, map information, surveillance, infrastructure inspection, and video distribution, the spread of devices or services utilizing three-dimensional data is expected in the future. Three-dimensional data is acquired by various methods such as a distance sensor like a range finder, a stereo camera, or a combination of a plurality of monocular cameras.
[0003] As one of the representation methods for three-dimensional data, there is a representation method called a point cloud that represents the shape of a three-dimensional structure using a point group in a three-dimensional space. In a point cloud, the positions and colors of the point group are stored. Point clouds are expected to become the mainstream as a representation method for three-dimensional data, but the data volume of point groups is extremely large. Therefore, in the storage or transmission of three-dimensional data, similar to two-dimensional moving images (examples include MPEG-4 AVC or HEVC standardized by MPEG), compression of the data volume by encoding is essential.
[0004] In addition, point cloud compression is partially supported by public libraries that perform point cloud-related processing, such as the Point Cloud Library.
[0005] Furthermore, a technique is known that uses three-dimensional map data to search for and display facilities located around a vehicle (see, for example, Patent Document 1).
Prior Art Documents
Patent Documents
[0006]
Patent Document 1
[0007] In the encoding and decoding of three-dimensional data, it is desirable to be able to improve encoding efficiency.
[0008] The purpose of this disclosure is to provide a three-dimensional data decoding method, a three-dimensional data encoding method, a three-dimensional data decoding device, or a three-dimensional data encoding device that can improve encoding efficiency. [Means for solving the problem]
[0009] A three-dimensional data decoding method according to one aspect of the present disclosure acquires a bitstream containing a plurality of encoded three-dimensional points generated by encoding a plurality of three-dimensional points, each represented by a first angle, a second angle, and a distance; determines a reference three-dimensional point from the plurality of three-dimensional points; and generates information of the target three-dimensional point contained in the plurality of three-dimensional points, excluding the first angle, by performing at least one of arithmetic decoding and inverse binarization on the encoded information of the target encoded three-dimensional point contained in the plurality of encoded three-dimensional points according to the first angle of the reference three-dimensional point.
[0010] A three-dimensional data encoding method according to one aspect of the present disclosure determines a reference three-dimensional point from a plurality of three-dimensional points, each represented by a first angle, a second angle, and a distance, and performs at least one of arithmetic encoding and binarization on the information of the target three-dimensional point included in the plurality of three-dimensional points, excluding the first angle, according to the first angle of the reference three-dimensional point. [Effects of the Invention]
[0011] This disclosure provides a three-dimensional data decoding method, a three-dimensional data encoding method, a three-dimensional data decoding device, or a three-dimensional data encoding device that can improve encoding efficiency. [Brief explanation of the drawing]
[0012] [Figure 1]Figure 1 is a diagram illustrating an example of the relationship between a laser ID and a prediction residual of distance or horizontal angle according to an embodiment. [Figure 2] Figure 2 is a block diagram of a three-dimensional data encoding device according to an embodiment. [Figure 3] Figure 3 is a block diagram of a three-dimensional data decoding device according to an embodiment. [Figure 4] Figure 4 is a block diagram of an entropy encoding unit according to an embodiment. [Figure 5] Figure 5 is a block diagram of an entropy decoding unit according to an embodiment. [Figure 6] Figure 6 is a diagram illustrating an example of Exponential-Golomb codes according to an embodiment. [Figure 7] Figure 7 is a diagram illustrating an example of Exponential-Golomb codes according to an embodiment. [Figure 8] Figure 8 is a diagram illustrating an example of Exponential-Golomb codes according to an embodiment. [Figure 9] Figure 9 is a diagram illustrating an example of the syntax of a header of encoded position information according to an embodiment. [Figure 10] Figure 10 is a diagram illustrating another example of the syntax of a header of encoded position information according to an embodiment. [Figure 11] Figure 11 is a flowchart of encoding method switching processing according to an embodiment. [Figure 12] Figure 12 is a flowchart of decoding method switching processing according to an embodiment. [Figure 13] Figure 13 is a diagram illustrating an example of the syntax of encoded data of position information according to an embodiment. [Figure 14] Figure 14 is a flowchart of three-dimensional data decoding processing according to an embodiment. [Figure 15] Figure 15 is a flowchart of three-dimensional data encoding processing according to an embodiment. [Mode for Carrying Out the Invention]
[0013] A three-dimensional data decoding method according to one aspect of the present disclosure obtains a bitstream including a plurality of encoded three-dimensional points generated by encoding a plurality of three-dimensional points each represented by a first angle, a second angle, and a distance, determines a reference three-dimensional point from the plurality of three-dimensional points, and performs at least one of arithmetic decoding and inverse binarization on the encoding information of a target encoded three-dimensional point included in the plurality of encoded three-dimensional points in accordance with the first angle of the reference three-dimensional point, thereby generating information excluding the first angle of a target three-dimensional point included in the plurality of three-dimensional points.
[0014] According to this, a three-dimensional data encoding device that generates a bitstream can improve encoding efficiency by using at least one method (aspect) of arithmetic encoding and binarization corresponding to the tendency when the information of three-dimensional points has a tendency corresponding to the first angle. The three-dimensional data decoding method can appropriately decode the bitstream with improved encoding efficiency. In addition, since the data amount of the bitstream can be reduced by improving the encoding efficiency of the bitstream, the processing amount in the three-dimensional data decoding method can be reduced.
[0015] Note that the tendency corresponding to the first angle includes, for example, a relationship in which the larger the first angle, the larger the value of the encoded information, a relationship in which the larger the first angle, the smaller the value of the encoded information, a relationship in which the range of the value of the encoded information is limited when the first angle is substantially equal to a predetermined value, and the like. That is, the tendency corresponding to the first angle is a tendency in which the value of the encoded information is specified from the first angle.
[0016] For example, the reference three-dimensional point may be the same as the target three-dimensional point.
[0017] According to this, a three-dimensional data encoding device that generates a bitstream can switch at least one of the methods of arithmetic decoding and inverse binarization of the information of a target three-dimensional point, excluding the first angle, according to the first angle of the target three-dimensional point. That is, in this embodiment, the information excluding the first angle is decoded after the first angle, according to the first angle that is decoded earlier for the target three-dimensional point. Here, the first angle of the target three-dimensional point is more likely to represent the trend of the information of the target three-dimensional point than the first angle of three-dimensional points other than the target three-dimensional point. Therefore, the three-dimensional data encoding device may be able to improve encoding efficiency compared to the case where the first angle of three-dimensional points other than the target three-dimensional point is referenced. The three-dimensional data decoding method can appropriately decode this bitstream with improved encoding efficiency. Furthermore, since the amount of data in the bitstream can be reduced by improving the encoding efficiency of the bitstream, the amount of processing required in the three-dimensional data decoding method can be reduced.
[0018] For example, the reference three-dimensional point may correspond to the parent node of the target three-dimensional point in the prediction tree of the plurality of three-dimensional points.
[0019] A prediction tree is a data structure generated according to the prediction process of three-dimensional points. Therefore, there is a high probability that a trend exists between the first angle of the reference three-dimensional point corresponding to the parent node and the information of the target three-dimensional point corresponding to its child node. Furthermore, this three-dimensional data decoding method can reduce processing delays related to the decoding of the first angle because the reference three-dimensional point corresponding to the parent node is decoded before the target three-dimensional point.
[0020] For example, if the first angle is greater than the threshold, the first method of arithmetic decoding and inverse binarization is used, and if the first angle is less than or equal to the threshold, a second method different from the first method of arithmetic decoding and inverse binarization may be used.
[0021] According to this, a three-dimensional data encoding device that generates a bitstream can improve its encoding efficiency by using at least one of arithmetic encoding and binarization methods that correspond to the trend in the information of three-dimensional points, such as whether the first angle is greater than a threshold, i.e., according to the range of the first angle. The three-dimensional data decoding method can appropriately decode this bitstream with improved encoding efficiency. Furthermore, since the amount of data in the bitstream can be reduced by improving the encoding efficiency of the bitstream, the processing load in the three-dimensional data decoding method can be reduced.
[0022] For example, the first context used in the first method of arithmetic decoding may be different from the second context used in the second method of arithmetic decoding.
[0023] According to this, a three-dimensional data encoding device that generates a bitstream can improve encoding efficiency by switching the context according to the first angle, especially when the information of the three-dimensional points shows a tendency corresponding to the first angle. The three-dimensional data decoding method can appropriately decode this bitstream with improved encoding efficiency. Furthermore, since the amount of data in the bitstream can be reduced by improving the encoding efficiency of the bitstream, the processing load in the three-dimensional data decoding method can be reduced.
[0024] For example, the first bit length of the binarized symbol in the first method of inverse binarization may be different from the second bit length of the binarized symbol in the second method of inverse binarization.
[0025] According to this, a three-dimensional data encoding device that generates a bitstream can improve encoding efficiency by switching binarization symbols according to a first angle, especially when the information of a three-dimensional point shows a tendency corresponding to a first angle. The three-dimensional data decoding method can appropriately decode this bitstream with improved encoding efficiency. Furthermore, since the amount of data in the bitstream can be reduced by improving the encoding efficiency of the bitstream, the processing load in the three-dimensional data decoding method can be reduced.
[0026] For example, the plurality of encoded three-dimensional points are decoded in ascending order of the first angle of the plurality of three-dimensional points, and if the first angle exceeds a threshold, the context of the arithmetic decoding may be initialized.
[0027] According to this, a three-dimensional data encoding device that generates a bitstream can use different contexts depending on whether the first angle is greater than or less than the threshold, by initializing the context when the first angle exceeds a threshold. Therefore, the three-dimensional data encoding device can improve encoding efficiency when the information of the three-dimensional points has a tendency corresponding to the first angle, etc. The three-dimensional data decoding method can appropriately decode this bitstream with improved encoding efficiency. In addition, since the amount of data in the bitstream can be reduced by improving the encoding efficiency of the bitstream, the processing load in the three-dimensional data decoding method can be reduced.
[0028] For example, the information excluding the first angle may include at least one of the second angle of the target three-dimensional point, the distance, and prediction information.
[0029] According to this, the three-dimensional data decoding method can appropriately decode a bitstream in which the encoding efficiency of at least one of the second angle, distance, and prediction information has been improved.
[0030] For example, the first angle and the second angle are the elevation angle and the horizontal angle, respectively, and the first angle may correspond to the laser ID used to generate the plurality of three-dimensional points.
[0031] According to this, a three-dimensional data encoding device that generates a bitstream can improve its encoding efficiency by using at least one of arithmetic encoding and binarization methods that correspond to the trend in the information of three-dimensional points, such as when there is a trend in the information of three-dimensional points depending on the range of their vertical position. The three-dimensional data decoding method can appropriately decode this bitstream with improved encoding efficiency. Furthermore, since the amount of data in the bitstream can be reduced by improving the encoding efficiency of the bitstream, the processing load in the three-dimensional data decoding method can be reduced.
[0032] A three-dimensional data encoding method according to one aspect of the present disclosure determines a reference three-dimensional point from a plurality of three-dimensional points, each represented by a first angle, a second angle, and a distance, and performs at least one of arithmetic encoding and binarization on the information of the target three-dimensional point included in the plurality of three-dimensional points, excluding the first angle, according to the first angle of the reference three-dimensional point.
[0033] According to this, the three-dimensional data encoding method can improve encoding efficiency by using at least one of arithmetic encoding and binarization methods that correspond to the tendency of the three-dimensional point information, such as when the information of the three-dimensional point has a tendency corresponding to a first angle.
[0034] For example, the reference three-dimensional point may be the same as the target three-dimensional point.
[0035] According to this, the three-dimensional data encoding method can switch between at least one method of arithmetic encoding and binarization of information excluding the first angle of the target three-dimensional point, according to the first angle of the target three-dimensional point. Here, the first angle of the target three-dimensional point is more likely to represent the trend of the information of the target three-dimensional point than the first angle of three-dimensional points other than the target three-dimensional point. Therefore, the three-dimensional data encoding method may be able to improve encoding efficiency compared to the case where the first angle of three-dimensional points other than the target three-dimensional point is referenced.
[0036] For example, the reference three-dimensional point may correspond to the parent node of the target three-dimensional point in the prediction tree of the plurality of three-dimensional points.
[0037] A prediction tree is a data structure generated according to the prediction process of three-dimensional points. Therefore, there is a high probability that a trend exists between the first angle of the reference three-dimensional point corresponding to the parent node and the information of the target three-dimensional point corresponding to its child node. Furthermore, a three-dimensional data decoding device that decodes the bitstream generated by this three-dimensional data encoding method can reduce the processing delay related to the decoding of the first angle because the reference three-dimensional point corresponding to the parent node is decoded before the target three-dimensional point.
[0038] For example, if the first angle is greater than a threshold, the first method of arithmetic coding and the first method of binarization is used, and if the first angle is less than or equal to the threshold, a second method different from the first method of arithmetic coding and the first method of binarization may be used.
[0039] According to this, the three-dimensional data encoding method can improve encoding efficiency when the information of a three-dimensional point has a tendency depending on whether the first angle is greater than a threshold, that is, depending on the range of the first angle, by using at least one of arithmetic encoding and binarization methods that corresponds to that tendency.
[0040] For example, the first context used in the first method of the arithmetic coding may be different from the second context used in the second method of the arithmetic coding.
[0041] According to this, the three-dimensional data encoding method can improve encoding efficiency when the information of a three-dimensional point has a tendency corresponding to the first angle, by switching the context according to the first angle.
[0042] For example, the first bit length of the binarization symbol in the first method of binarization may be different from the second bit length of the binarization symbol in the second method of binarization.
[0043] According to this, the three-dimensional data encoding method can improve encoding efficiency when the information of a three-dimensional point has a tendency corresponding to the first angle, by switching the binarization symbol according to the first angle.
[0044] For example, the plurality of three-dimensional points may be encoded in ascending order of the first angle of the plurality of three-dimensional points, and the context of the arithmetic encoding may be initialized if the first angle exceeds a threshold.
[0045] According to this, the three-dimensional data encoding method can use different contexts depending on whether the first angle is greater than or less than the threshold, by initializing the context when the first angle exceeds the threshold. Therefore, the three-dimensional data encoding device can improve encoding efficiency when the information of the three-dimensional point has a tendency corresponding to the first angle, etc.
[0046] For example, the information excluding the first angle may include at least one of the second angle of the target three-dimensional point, the distance, and prediction information.
[0047] According to this, the three-dimensional data encoding method can improve the encoding efficiency of at least one of the second angle, distance, and prediction information.
[0048] For example, the first angle and the second angle are the elevation angle and the horizontal angle, respectively, and the first angle may correspond to the laser ID used to generate the plurality of three-dimensional points.
[0049] According to this, the three-dimensional data encoding method can improve encoding efficiency when there is a trend in the information of three-dimensional points depending on the range of the vertical position of the three-dimensional points, by using at least one of arithmetic encoding and binarization methods that corresponds to that trend.
[0050] Furthermore, a three-dimensional data decoding device according to one aspect of the present disclosure comprises a processor and a memory, wherein the processor uses the memory to acquire a bitstream containing a plurality of encoded three-dimensional points generated by encoding a plurality of three-dimensional points each represented by a first angle, a second angle, and a distance, determines a reference three-dimensional point from the plurality of three-dimensional points, and generates information of the target three-dimensional point excluding the first angle by performing at least one of arithmetic decoding and inverse binarization on the encoded information of the target encoded three-dimensional point according to the first angle of the reference three-dimensional point.
[0051] According to this, a three-dimensional data encoding device that generates a bitstream can improve its encoding efficiency by using at least one of arithmetic encoding and binarization methods that correspond to the tendency of the three-dimensional point information, such as when the information has a tendency corresponding to a first angle. The three-dimensional data decoding device can appropriately decode this bitstream with improved encoding efficiency. Furthermore, since the amount of data in the bitstream can be reduced by improving the encoding efficiency of the bitstream, the processing load on the three-dimensional data decoding device can be reduced.
[0052] Furthermore, a three-dimensional data encoding device according to one aspect of the present disclosure comprises a processor and a memory, wherein the processor uses the memory to determine a reference three-dimensional point from a plurality of three-dimensional points, each represented by a first angle, a second angle, and a distance, and performs at least one of arithmetic encoding and binarization on the information of the target three-dimensional point included in the plurality of three-dimensional points, excluding the first angle, according to the first angle of the reference three-dimensional point.
[0053] According to this, the three-dimensional data encoding device can improve its encoding efficiency by using at least one of arithmetic encoding and binarization methods that correspond to the tendency of the three-dimensional point information, such as when the information of the three-dimensional point has a tendency corresponding to a first angle.
[0054] These comprehensive or specific embodiments may be implemented as a system, method, integrated circuit, computer program, or recording medium such as a computer-readable CD-ROM, or as any combination of a system, method, integrated circuit, computer program, and recording medium.
[0055] The embodiments will be described in detail below with reference to the drawings. Note that the embodiments described below are all specific examples of this disclosure. The numerical values, shapes, materials, components, arrangement and connection configurations of components, steps, and the order of steps shown in the following embodiments are examples only and are not intended to limit this disclosure. Furthermore, components in the following embodiments that are not described in an independent claim will be described as optional components.
[0056] (Embodiment) First, an overview of the three-dimensional data encoding device and the three-dimensional data decoding device according to this embodiment will be described.
[0057] The three-dimensional data encoding device according to this embodiment switches the encoding method according to the value of the laser ID (laser_id) of a three-dimensional point when encoding the positional information of a three-dimensional point cloud in a polar coordinate system. Specifically, the data to be encoded for which the encoding method is switched includes at least one of the predicted residual of the polar coordinate distance d and the predicted residual of the horizontal angle Φ. The data to be encoded may also include information related to various encoding modes, including the prediction mode (for example, intra information or inter information).
[0058] Here, the laser ID is an identifier assigned to each rotation of a laser sensor that uses rotational scanning, such as LiDAR. For example, this rotational scanning is a rotation around the vertical axis. In other words, the laser ID corresponds to the elevation angle θ in polar coordinates, and points assigned the same laser ID have essentially the same elevation angle θ. Therefore, the laser ID can be used instead of the elevation angle θ. The laser ID can also be said to be a quantized value of the elevation angle θ. Furthermore, the laser ID can be said to correspond to the vertical position (height) of a three-dimensional point.
[0059] Furthermore, switching the encoding method can be, for example, switching the binarization method. Specifically, the three-dimensional data encoding device may switch the type of exponential Golomb code used for binarization according to the value of the laser ID.
[0060] Furthermore, switching the encoding method can be done, for example, by switching the context. Specifically, the three-dimensional data encoding device may prepare a context for arithmetic encoding for each laser ID value and switch the context used according to the laser ID value.
[0061] The laser ID used to determine the switch may be the laser ID of the target three-dimensional point to be encoded or decoded, the laser ID of the three-dimensional point corresponding to the parent node of the target three-dimensional point (an example of a reference three-dimensional point), or the laser ID of the three-dimensional point corresponding to the node encoded or decoded immediately before the target three-dimensional point (another example of a reference three-dimensional point).
[0062] Note that the reference 3D point is not limited to the example above. The reference 3D point only needs to be encoded or decoded before the target 3D point. The encoding or decoding of the reference 3D point may be performed, for example, using intra-prediction or inter-prediction.
[0063] Furthermore, a threshold for the laser ID used to switch the encoding method may be provided, and information indicating this threshold may be added to the bitstream.
[0064] Alternatively, instead of switching contexts, the context may be initialized. The elevation angle θ may be used instead of the laser ID. The method of this embodiment may be applied when low-latency coding is applied.
[0065] Figure 1 shows an example of the relationship between laser ID (laser_id) and the predicted residual of distance d or horizontal angle Φ. In this example, the trend of the predicted residual differs between laser ID range A (laser ID = 0~5), range B (laser ID = 6~11), and range C (laser ID = 12~17). However, in this example, multiple three-dimensional points are generated by rotational scanning around the vertical axis.
[0066] For example, range A corresponds to the point cloud near the ground. In range A, points with the same laser ID tend to be located at regular intervals. This improves the accuracy of the prediction and reduces the prediction residual.
[0067] Range C corresponds to the point cloud above the ground. In range C, whether points exist at regular intervals depends on the objects present in that space. Therefore, points do not necessarily exist at regular intervals in point clouds with the same laser ID. This leads to lower prediction accuracy and a larger prediction residual.
[0068] Range B is the range between Range A and Range C, and the trend of the predicted residuals in Range B is the same as the trend between Range A and Range C.
[0069] Thus, the trend of the predicted residual may differ depending on the laser ID value. Therefore, it may be possible to improve coding efficiency by changing the processing of the predicted residual (binarization, arithmetic coding) according to the laser ID.
[0070] Next, the configuration of the three-dimensional data encoding device and the three-dimensional data decoding device according to this embodiment will be described. First, the overall configuration of the three-dimensional data encoding device and the three-dimensional data decoding device will be described. Figure 2 is a block diagram showing the configuration of the three-dimensional data encoding device 100. The three-dimensional data encoding device 100 generates a bitstream (encoded stream) by encoding point cloud data, which is three-dimensional data.
[0071] A point cloud is a collection of multiple three-dimensional points that represent the three-dimensional shape of an object. Point cloud data includes positional and attribute information for the multiple three-dimensional points. This positional information indicates the three-dimensional position of each point. This positional information is sometimes also referred to as geometry information.
[0072] For example, positional information is expressed in polar coordinates and includes one distance component and two directional components (angle components). Specifically, positional information includes distance d, elevation angle θ, and horizontal angle Φ. Point cloud data is, for example, data obtained from a laser sensor such as LiDAR. Note that positional information may also be expressed in Cartesian coordinates.
[0073] Attribute information can include, for example, color, reflectance, or normal vector. A single three-dimensional point may have one attribute or multiple attribute pieces of information.
[0074] Note that the three-dimensional data is not limited to point cloud data; it may also be other types of three-dimensional data such as mesh data. Mesh data (also called three-dimensional mesh data) is a data format used in computer graphics (CG), and it represents the three-dimensional shape of an object as a collection of surface information. For example, mesh data includes point cloud information (e.g., vertex information). Therefore, the same methods as those used for point cloud data can be applied to this point cloud information.
[0075] Although Figure 2 shows the processing unit for encoding the positional information of the point cloud data, the three-dimensional data encoding device 100 may also include other processing units, such as a processing unit for encoding attribute information.
[0076] The three-dimensional data encoding device 100 includes a subtraction unit 102, a quantization unit 103, an entropy encoding unit 104, an inverse quantization unit 105, an addition unit 106, a buffer 108, an intra prediction unit 109, a buffer 110, a motion detection compensation unit 111, an inter prediction unit 112, and a switching unit 113.
[0077] The subtraction unit 102 generates a predicted residual by subtracting the predicted value from the position information contained in the input point cloud data to be encoded. The quantization unit 103 quantizes the predicted residual. The entropy encoding unit 104 generates a bitstream by entropy encoding the quantized predicted residual. The entropy encoding unit 104 also entropy encodes control information and adds the encoded information to the bitstream.
[0078] The inverse quantization unit 105 generates prediction residuals by inverse quantization of the quantized prediction residuals obtained by the quantization unit 103. The addition unit 106 restores the position information by adding the prediction value to the prediction residuals generated by the inverse quantization unit 105. The buffer 108 holds the restored position information as a reference point set for intra-prediction. The buffer 110 holds the restored position information as a reference point set for inter-prediction.
[0079] Note that the reconstructed position information may not perfectly match the original position information because it contains quantization errors. The three-dimensional points reconstructed through this encoding and decoding process are referred to as the encoded three-dimensional points, the decoded three-dimensional points, or the processed three-dimensional points.
[0080] The intra-prediction unit 109 calculates a predicted value using the position information of one or more reference points, which are other processed three-dimensional points belonging to the same frame as the three-dimensional point to be processed (hereinafter referred to as the target point). For example, the intra-prediction unit 109 performs intra-prediction using a prediction tree. A prediction tree is a tree structure that shows the reference relationships in the prediction process. For example, the position information of the parent node is referenced in the prediction process of the target node (target point). In addition, the position information of multiple nodes including the parent node (for example, a grandparent node and a great-grandparent node) may be referenced in the prediction process.
[0081] The motion detection and compensation unit 111 detects the displacement (motion detection) between the target frame, which is the frame containing the target points, and the reference frame, which is a different frame from the target frame, and corrects (motion compensation) the position information of the point cloud contained in the reference frame based on the detected displacement. The information indicating the detected displacement (motion information) is stored, for example, in a bitstream.
[0082] The interpretation unit 112 calculates predicted values using the positional information of one or more reference points included in the motion-compensated point cloud. Motion detection and motion compensation are not required.
[0083] The switching unit 113 selects either the predicted value calculated by the intra-prediction unit 109 or the predicted value obtained by the inter-prediction unit 112, and outputs the selected predicted value to the subtraction unit 102 and the addition unit 106. In other words, the switching unit 113 switches between using intra-prediction or inter-prediction.
[0084] Next, the configuration of the three-dimensional data decoding device 200, which decodes the bitstream generated by the three-dimensional data encoding device 100, will be described. Figure 3 is a block diagram of the three-dimensional data decoding device 200 according to this embodiment. Although Figure 3 shows the processing unit for decoding the position information of the point cloud, the three-dimensional data decoding device 200 may also include other processing units, such as a processing unit for decoding the attribute information of the point cloud. For example, the three-dimensional data decoding device 200 generates decoded point cloud data by decoding the bitstream generated by the three-dimensional data encoding device 100 shown in Figure 1.
[0085] The three-dimensional data decoding device 200 includes an entropy decoding unit 201, an inverse quantization unit 202, an addition unit 203, a buffer 205, an intra prediction unit 206, a buffer 207, a motion compensation unit 208, an inter-prediction unit 209, and a switching unit 210.
[0086] The three-dimensional data decoding device 200 acquires the bitstream generated by the three-dimensional data encoding device 100.
[0087] The entropy decoding unit 201 generates quantized prediction residuals and control information by entropy decoding the bitstream.
[0088] The inverse quantization unit 202 generates predicted residuals by inverse quantization of the quantized predicted residuals obtained by the entropy decoding unit 201. The addition unit 203 restores the position information by adding the predicted value to the predicted residuals generated by the inverse quantization unit 202. This position information is output as decoded point cloud data.
[0089] Buffer 205 holds the restored position information as a set of reference points for intra-prediction. Buffer 207 holds the restored position information as a set of reference points for intra-prediction. The intra-prediction unit 206 calculates the predicted value using the position information of one or more reference points, which are other three-dimensional points belonging to the same frame as the target point. For example, the intra-prediction unit 206 performs intra-prediction using a prediction tree.
[0090] The motion compensation unit 208 acquires motion information from the bitstream that indicates the displacement between the target frame and the reference frame, and corrects (motion compensates for) the position information of the point cloud included in the reference frame based on the displacement indicated by the motion information. The interpretation unit 209 calculates a predicted value using the position information of one or more reference points included in the motion-compensated point cloud. Motion compensation is not required.
[0091] The switching unit 210 selects either the predicted value calculated by the intra prediction unit 206 or the predicted value obtained by the inter prediction unit 209, and outputs the selected predicted value to the addition unit 203.
[0092] Next, the configurations of the entropy coding unit 104 and the entropy decoding unit 201 will be described. Figure 4 is a block diagram showing the configuration of the entropy coding unit 104. The entropy coding unit 104 comprises a binarization unit 121, a context control unit 122, a normal coding unit 123, and a bypass coding unit 124.
[0093] The binarization unit 121 binarizes the predicted residual. Here, the predicted residual is, for example, the quantized predicted residual generated by the quantization unit 103. The predicted residual is at least one of the predicted residual of distance d and the predicted residual of horizontal angle Φ. The binarization unit 121 also switches the binarization method using the laser ID. Details of switching the binarization method will be described later. Alternatively, the binarization unit 121 may switch whether or not to perform binarization according to the laser ID, instead of switching the binarization method, or in addition to switching the binarization method. Alternatively, the binarization unit 121 may use the elevation angle θ instead of the laser ID, or in addition to the laser ID.
[0094] The context control unit 122 controls the context used for arithmetic coding (entropy coding). Specifically, the context control unit 122 uses a laser ID to select the context to be used for arithmetic coding from among multiple contexts. Details of context selection will be described later.
[0095] Here, the context (probability table) indicates the probability of a symbol (signal value) appearing. The probabilities are updated according to the processed symbols, and these updated probabilities are used for the arithmetic coding of subsequent signals. Furthermore, the correspondence between input and output values in arithmetic coding is determined according to these probabilities.
[0096] The context control unit 122 may, in addition to or instead of selecting a context, switch whether or not to perform arithmetic coding using an updated context. Furthermore, the context control unit 122 may use the elevation angle θ in addition to or instead of the laser ID.
[0097] The normal encoding unit 123 generates encoded data (bitstream) by arithmetic encoding the binarized prediction residuals using the context selected by the context control unit 122.
[0098] The bypass coding unit 124 generates coded data (bitstream) by arithmetic coding the binarized prediction residuals using a context with fixed probabilities (not updateable). Depending on the laser ID, it may be decided whether coding is performed by the normal coding unit 123 or the bypass coding unit 124. For example, coding by the bypass coding unit 124 may be selected for signals in a range of laser IDs that tend to have low prediction accuracy (large prediction residuals).
[0099] Figure 5 is a block diagram showing the configuration of the entropy decoding unit 201. The entropy decoding unit 201 comprises a context control unit 221, a normal decoding unit 222, a bypass decoding unit 223, and an inverse binarization unit 224.
[0100] The context control unit 221 controls the context used for arithmetic decoding (entropy decoding). Specifically, the context control unit 221 uses the laser ID to select the context to be used for arithmetic decoding from among multiple contexts. Details of context selection will be described later.
[0101] Here, the context (probability table) indicates the probability of a symbol (signal value) appearing. The probabilities are updated according to the processed symbols, and these updated probabilities are used for arithmetic decoding of subsequent signals. Furthermore, the correspondence between input and output values in arithmetic decoding is determined according to these probabilities.
[0102] The context control unit 221 may, in addition to or instead of selecting a context, switch whether or not to perform arithmetic decoding using an updated context. Furthermore, the context control unit 221 may use the elevation angle θ instead of, or in addition to, the laser ID.
[0103] The normal decoding unit 222 generates binarized prediction residuals by arithmetic decoding the encoded data (bitstream) using the context selected by the context control unit 221.
[0104] The bypass decoding unit 223 generates binarized prediction residuals by arithmetic coding the encoded data (bitstream) using a context with fixed probabilities (not update-type). Depending on the laser ID, it may be decided whether decoding is performed by the normal decoding unit 222 or the bypass decoding unit 223. For example, decoding by the bypass decoding unit 223 may be selected for signals in a range of laser IDs that tend to have low prediction accuracy (large prediction residuals).
[0105] The inverse binarization unit 224 generates predicted residuals by inverse binarizing (multileveling) the binarized predicted residuals. These predicted residuals are, for example, the predicted residuals after quantization and are output to the inverse quantization unit 202. The predicted residuals are at least one of the predicted residuals of distance d and the predicted residuals of horizontal angle Φ. The inverse binarization unit 224 also switches the inverse binarization method (binarization method) using the laser ID. Details of the inverse binarization method switching will be described later. Alternatively, the inverse binarization unit 224 may switch whether or not to perform inverse binarization according to the laser ID, either instead of switching the inverse binarization method or in addition to switching the inverse binarization method. Alternatively, the inverse binarization unit 224 may use the elevation angle θ instead of the laser ID, or in addition to the laser ID.
[0106] Next, a specific example of a method for switching the encoding method according to the laser ID will be explained. For example, the target point cloud to be encoded is in polar coordinates. The three-dimensional data encoding device 100 may convert the input Cartesian coordinate point cloud into a polar coordinate point cloud and encode the resulting polar coordinate point cloud. In polar coordinates, the position information of a point is expressed as (d, Φ, θ) using, for example, the distance d from the sensor position to the target point, the horizontal angle Φ, and the elevation angle θ. Alternatively, the position information of a point may be expressed using sensor information such as the LiDAR laser ID (laser_id) instead of the elevation angle θ. For example, by using the laser_id with the scan angle closest to the elevation angle θ as a substitute for the elevation angle θ, the position information of a point may be expressed as (d, Φ, laser_id). Here, since laser_id can be considered a quantized version of the elevation angle θ, the amount of information can be reduced by using laser_id instead of the elevation angle θ. Therefore, the encoding efficiency can be improved.
[0107] Here, when polar coordinates are expressed as (d, Φ, laser_id), the values of distance d and horizontal angle Φ may change significantly depending on the value of laser_id. For example, if three-dimensional points with laser_id=0 to L (where L is a value greater than or equal to 0) represent measurement points on the ground (hereinafter referred to as three-dimensional point cloud A), and three-dimensional points with laser_id=L+1 to M (where M is a value greater than or equal to L+1) represent measurement points of objects located higher than the ground (hereinafter referred to as three-dimensional point cloud B), then the trends in the values of distance d and horizontal angle Φ may differ significantly between three-dimensional point cloud A and three-dimensional point B.
[0108] More specifically, in the three-dimensional point cloud A representing measurement points on the ground, points tend to exist at regular intervals on the same laser_id. Also, the distance d values of three-dimensional points with the same laser_id tend to be similar the closer their horizontal angle Φ values are. Therefore, by using the values of three-dimensional points with the same laser_id and similar horizontal angle Φ values as predicted values, the predicted residuals of the distance d and horizontal angle Φ of the target point tend to be smaller.
[0109] On the other hand, in the three-dimensional point cloud B, which represents measurement points of objects located above ground level, the distance d or horizontal angle Φ values change significantly even for three-dimensional points with the same laser_id depending on the presence or absence of the object. Therefore, even if the values of three-dimensional points with similar horizontal angle Φ values and the same laser_id are used as predicted values, the predicted residuals for the distance d and horizontal angle Φ of the target point may be large.
[0110] Thus, the trend of the predicted residual of a target point can change significantly depending on the value of laser_id. Therefore, in this embodiment, the three-dimensional data encoding device 100 switches the encoding method of the predicted residual of the three-dimensional point depending on the value of laser_id. For example, the three-dimensional data encoding device 100 may switch the binarization method of the predicted residual of the three-dimensional point depending on the value of laser_id. More specifically, when the laser_id of the target point corresponds to a region where the predicted residual tends to be small, for example, a region scanned above the ground (first method), the three-dimensional data encoding device 100 applies a binarization method that assigns a shorter bit length to the symbol the smaller the predicted residual (closer to 0). Also, when the laser_id of the target point corresponds to a region where the predicted residual tends to be large, for example, a region scanned above the ground (second method), the three-dimensional data encoding device 100 applies a binarization method that assigns a shorter bit length to the symbol the closer it is to a certain predicted residual R (where R is a number greater than 0). As a result, the three-dimensional data encoding device 100 can improve encoding efficiency by using an appropriate binarization method when the predicted residual changes depending on the laser_id, thereby shortening the bit length of the binarized predicted residual.
[0111] Furthermore, the three-dimensional data encoding device 100 may, as a switching method for encoding, prepare a context for arithmetic encoding of the predicted residuals of three-dimensional points for each laser_id, and switch the context used according to the value of laser_id. More specifically, the three-dimensional data encoding device 100 uses context A when arithmetic encoding of the predicted residuals if the laser_id of the target point corresponds to a region where the predicted residuals tend to be small, for example, a region scanned above the ground (first method). The three-dimensional data encoding device 100 uses a different context B than context A when arithmetic encoding of the predicted residuals if the laser_id of the target point indicates a region where the predicted residuals tend to be large, for example, a region scanned above the ground (second method). Context A is suitable for small predicted residuals. Context B is suitable for large predicted residuals. As a result, when the predicted residuals change according to laser_id, the three-dimensional data encoding device 100 can shorten the number of bits generated after arithmetic encoding by selecting an appropriate context for arithmetic encoding. Therefore, encoding efficiency can be improved.
[0112] Note that switching the encoding method based on the laser_id value does not necessarily need to be applied to all prediction residuals. For example, the encoding method switching may be applied to at least one of d and Φ in the polar coordinates (d, Φ, laser_id). This allows for improved encoding efficiency by appropriately switching the encoding method for d or Φ, which tend to change significantly depending on the laser_id value.
[0113] Furthermore, when encoding polar coordinates (d, Φ, laser_id), the three-dimensional data encoding device 100 may store information indicating the correspondence between the laser_id value and the θ value in the bitstream header or the like. In this case, the three-dimensional data decoding device 200 may convert the laser_id included in the decoded polar coordinates (d, Φ, laser_id) to θ using the above information.
[0114] Furthermore, the first and second methods are not limited to the examples described above. Also, in the examples described above, the first and second methods were defined for binarization and arithmetic coding respectively, but they may also be defined for combinations of binarization and arithmetic coding.
[0115] Next, an example of a method for encoding prediction residuals will be described. The three-dimensional data encoding device 100 encodes the prediction residuals of three-dimensional points using entropy encoding. For example, the three-dimensional data encoding device 100 separates the prediction residual into signed information (residual_sign) and an unsigned integer value. Here, the signed information indicates whether the prediction residual is a positive or negative value. The unsigned integer value indicates the absolute value of the prediction residual. The three-dimensional data encoding device 100 binarizes both the signed information and the unsigned integer value, and applies arithmetic encoding to the resulting binarized data.
[0116] First, let's explain the coding of the code information. For example, the code information is a 1-bit signal where 0 indicates a positive value and 1 indicates a negative value. In this case, the three-dimensional data coding device 100 selects a context from among several contexts according to the laser_id value of the target point, and uses the selected context to arithmetic code the code information. For example, one context is provided for each range of laser_id values. The three-dimensional data coding device 100 selects a context associated with the range that includes the laser_id value of the target point.
[0117] In this way, the three-dimensional data encoding device 100 can select an appropriate context even when the trend of the predicted residual value changes due to a change in laser_id, by switching between different contexts depending on the value of laser_id. Therefore, encoding efficiency can be improved.
[0118] The laser_id of the target point used for switching may be the laser_id of the target point before encoding, or the laser_id of the target point after encoding and decoding. The laser_id after encoding and decoding is, for example, the laser_id included in the position information output from the adder 106 in Figure 2. This allows the three-dimensional data decoding device 200 to switch contexts using the same decoded laser_id as the three-dimensional data encoding device 100, so that the three-dimensional data decoding device 200 can decode the bitstream appropriately. In addition, in this case, the laser_id of the target point can be used, which improves the accuracy of the switching.
[0119] Furthermore, the laser_id used to determine the switch may be something other than the laser_id of the target point. In other words, the laser_id used to determine the switch may be the laser_id of the reference 3D point corresponding to the target point.
[0120] For example, the reference 3D point may be the parent node of the target point (target node) in the prediction tree. In this case, the 3D data decoding device 200 can obtain the laser_id of the parent node used for switching determination before decoding the laser_id of the target point, and can select the context for the target point before decoding the laser_id of the target point. Therefore, processing speed can be increased by enabling parallel processing, etc.
[0121] Alternatively, the reference three-dimensional point may be the point immediately preceding or preceding the target point in the processing order (encoding order or decoding order). In this case as well, the three-dimensional data decoding device 200 can obtain the laser_id used for switching determination before decoding the laser_id of the target point, and can select the context for the target point before decoding the laser_id of the target point. Therefore, processing speed can be increased by enabling parallel processing, etc.
[0122] Next, we will explain an example of a method for encoding unsigned integer values. Figures 6, 7, and 8 show examples of exponential Golomb coding. The tables of exponential Golomb coding shown in Figures 6, 7, and 8 show the correspondence between the input value and the binarized data (bits) after binarization.
[0123] The exponential Golomb code consists of a prefix and a suffix, and the bit length assigned to each value changes depending on the bit length of the suffix assigned to the value 0. For example, in table EG0 shown in Figure 6, the bit length of the suffix assigned to the value 0 is 0, in table EG1 shown in Figure 7, the bit length of the suffix assigned to the value 0 is 1, and in table EG2 shown in Figure 8, the bit length of the suffix assigned to the value 0 is 2. Thus, the bits assigned to the same value differ between EG0 and EG2.
[0124] Specifically, the binarized data corresponding to Value=0 is "1" in EG0, "10" in EG1, and "100" in EG2. Therefore, using EG0 results in a shorter bit length for the binarized data of Value=0. On the other hand, the binarized data corresponding to Value=3 is "00100" in EG0, "0101" in EG1, and "111" in EG2. Therefore, using EG2 results in a shorter bit length for the binarized data of Value=3.
[0125] Therefore, the three-dimensional data encoding device 100 selects EG0 when the Value tends to be small, and selects EG2 when the Value tends to be large. This allows the three-dimensional data encoding device 100 to reduce the code size of the binarized data.
[0126] The three-dimensional data coding device 100 applies the above method to coding the unsigned integer value of the prediction residual. In other words, the three-dimensional data coding device 100 switches the exponential Golomb coding used depending on the value of laser_id. This improves coding efficiency.
[0127] For example, the three-dimensional data encoding device 100 may use EG(k1) (where k1 is a non-negative integer) if the laser_id of the target point is less than or equal to the value L, and EG(k2) (where k2 is an integer satisfying k2 > k1) if the laser_id is greater than the value L. This allows the three-dimensional data encoding device 100 to binarize the predicted residuals by using EG(k1) when encoding three-dimensional point cloud A, which tends to have small predicted residuals, and by using EG(k2) when encoding three-dimensional point cloud B, which tends to have large predicted residuals. As a result, the three-dimensional data encoding device 100 can adaptively shorten the bit length of the binarized data, thereby improving encoding efficiency.
[0128] Furthermore, the three-dimensional data encoding device 100 switches the context used for arithmetic encoding of the binarized data according to the value of laser_id. There may be one context provided for each range of laser_id values, or there may be multiple contexts provided. In other words, the three-dimensional data encoding device 100 may switch the set of contexts used for arithmetic encoding of the binarized data according to the value of laser_id. Here, the set of contexts may include, for example, a context for prefixes and a context for suffixes. Alternatively, the set of contexts may include multiple contexts provided for each bit of prefixes and suffixes.
[0129] For example, if the laser_id of the target point is less than or equal to the value L, the three-dimensional data encoding device 100 selects a context from the context group C for each bit of the prefix and suffix included in the binarized data, and arithmetically encodes each bit using the context corresponding to that bit. If the laser_id is greater than the value L, the three-dimensional data encoding device 100 selects a context from the context group D for each bit of the prefix and suffix included in the binarized data. As a result, the three-dimensional data encoding device 100 can appropriately select a context even when the prediction residual changes due to differences in laser_id, thereby improving encoding efficiency.
[0130] Furthermore, the Golomb codes shown in Figures 6, 7, and 8, which have the prefix and suffix values inverted (0 and 1 respectively), may be used as exponential Golomb codes. Also, the exponential Golomb codes shown in Figures 6, 7, and 8 are just examples, and other exponential Golomb codes may be used.
[0131] Furthermore, the three-dimensional data encoding device 100 may store in the bitstream information indicating a table or scheme of exponential Golomb codes (exponential Golomb codes used for binarization) selected according to laser_id.
[0132] Furthermore, in the three-dimensional data decoding device 200, similar to the three-dimensional data encoding device 100, a table of exponential Golomb codes corresponding to laser_id and a context or group of contexts are selected. In the three-dimensional data decoding device 200, arithmetic decoding is performed using the selected context, and inverse binarization is performed according to the selected exponential Golomb codes. If the bitstream contains information indicating the table of exponential Golomb codes used for binarization, the three-dimensional data decoding device 200 may select the table of exponential Golomb codes to be used for inverse binarization based on this information.
[0133] Next, we will explain an example of the syntax of the signals involved in the above processing included in the encoded data (bitstream). Figure 9 shows an example of the syntax of the encoded location information header (geometry_header). The location information header shown in Figure 9 includes NumLaserTh and LaserTh[i].
[0134] NumLaserTh indicates the number of LaserTH values, which are thresholds for switching the encoding method according to the laser_id value. Note that if the three-dimensional data encoding device 100 does not apply the encoding method switching process based on laser_id, it may add NumLaserTH=0 to the bitstream and not add LaserTh to the bitstream. This reduces the amount of code in the header. If NumLaserTH=0, the three-dimensional data decoding device 200 may not apply the decoding method switching process based on laser_id. Alternatively, the three-dimensional data decoding device 200 may estimate the value of the threshold LaserTh[0] to be 0. This allows the three-dimensional data decoding device 200 to properly decode the bitstream without applying the decoding method switching based on laser_id.
[0135] LaserTh[i] indicates the i-th threshold for switching the encoding method according to the value of laser_id. Using this threshold, at least one of the following is performed: the binarization method (inverse binarization method) of the predicted residual, and the switching of the context for arithmetic coding (arithmetic decoding). For example, if NumLaserTh=2, the three-dimensional data encoding device 100 performs arithmetic coding using context A if the laser_id of the target point is less than LaserTh[0]. The three-dimensional data encoding device 100 performs arithmetic coding using context B if the laser_id is greater than or equal to the threshold LaserTh[0] and less than LaserTh[1]. The three-dimensional data encoding device 100 performs arithmetic coding using context C if the laser_id is greater than or equal to the threshold LaserTh[1]. As a result, the three-dimensional data encoding device 100 can select the appropriate context according to the laser_id, thereby improving encoding efficiency. Furthermore, information indicating the difference between LaserTh[i] and LaserTh[i+1] may be stored in the bitstream as information representing LaserTh[i+1]. This reduces the amount of code in the header.
[0136] Figure 10 shows another example of the syntax for the encoded location information header (geometry_header). The location information header shown in Figure 10 includes NumLaser_minus1 and LaserGroupID[i].
[0137] NumLaser_minus1 represents the NumLaser, which is the number of laser_ids contained in the bitstream. In other words, NumLaser represents the number of possible values that laser_id can take. Specifically, NumLaser_minus1 represents the value obtained by subtracting 1 from NumLaser. That is, for example, NumLaser can be expressed as NumLaser = NumLaser_minus1 + 1, given NumLaser_minus1.
[0138] LaserGroupID[i] is information used to identify the group of laser_id. For example, LaserGroupID[i] indicates the group number to which the i-th laser_id belongs. Specifically, for example, if NumLaser_minus1=3, then laser_id can be 0, 1, 2, or 3. In this case, if LaserGroupID[0]=0, LaserGroupID[1]=0, LaserGroupID[2]=1, and LaserGroupID[3]=2, then laser_id=0 and 1 belong to group 0, laser_id=1 belongs to group 1, and laser_id=2 belongs to group 2.
[0139] In this case, the three-dimensional data encoding device 100 identifies a group from the laser_id value of the target point and performs at least one of the following depending on the identified group: a method for binarizing the predicted residuals and a context switch for arithmetic coding. For example, regarding the context switch for arithmetic coding, if the laser_id of the target point belongs to group 0, the three-dimensional data encoding device 100 performs arithmetic coding using context A. If the laser_id of the target point belongs to group 1, the three-dimensional data encoding device 100 performs arithmetic coding using context B. If the laser_id of the target point belongs to group 2, the three-dimensional data encoding device 100 performs arithmetic coding using context C. As a result, the three-dimensional data encoding device 100 can select the appropriate context according to the group to which the laser_id belongs, thereby improving coding efficiency.
[0140] Furthermore, if the three-dimensional data encoding device 100 does not apply the switching process for encoding based on laser_id, it does not need to add NumLaser_minus1=0 to the bitstream and does not need to add LaserGroupID to the bitstream. This reduces the amount of code in the header. The three-dimensional data decoding device 200 does not need to apply the switching process for decoding based on laser_id if NumLaser_minus1=0. Alternatively, the three-dimensional data decoding device 200 may estimate the value of LaserGroupID[0] to be 0. This allows the three-dimensional data decoding device 200 to properly decode the bitstream without applying the switching process for decoding based on laser_id.
[0141] Furthermore, the three-dimensional data encoding device 100 may entropy encode at least one of NumLaserTh, LaserTH[i], NumLaser_minus1, and LaserGroupID[i] and then add it to the header. For example, the three-dimensional data encoding device 100 may binarize each value and then compute encode it. Alternatively, the three-dimensional data encoding device 100 may encode these signals with a fixed length to reduce the amount of processing required.
[0142] Furthermore, the location information header shown in Figure 9 or Figure 10 may also include information indicating a table or scheme of exponential Golomb codes (exponential Golomb codes used for binarization) selected according to laser_id.
[0143] Figure 11 is a flowchart of the switching process for the encoding method when using the syntax shown in Figure 9. First, the three-dimensional data encoding device 100 determines whether the laser_id of the target point is smaller than LaserTH[0] (S101).
[0144] If laser_id is less than LaserTH[0] (Yes in S101), the three-dimensional data encoding device 100 binarizes the predicted residuals of the distance d and horizontal angle Φ of the target point using binarization method A, and arithmetically encodes each bit of the obtained binarized data using context A (S102).
[0145] On the other hand, if laser_id is greater than or equal to LaserTH[0] (No in S101), the three-dimensional data encoding device 100 binarizes the predicted residuals of the distance d and horizontal angle Φ of the target point using binarization method B, and arithmetically encodes each bit of the obtained binarized data using context B (S103). Here, binarization method B is different from binarization method A, and context B is different from context A.
[0146] Here, we have shown an example where the switch is applied to both the predicted residuals of distance d and horizontal angle Φ, but it is also possible to apply the switch to only one of the predicted residuals of distance d or horizontal angle Φ. Furthermore, here we have shown an example where the switch is applied to both the binarization method and the context, but it is also possible to apply the switch to only one of the binarization method or the context.
[0147] Figure 12 is a flowchart of the switching process for the decoding method when using the syntax shown in Figure 9. First, the three-dimensional data decoding device 200 determines whether laser_id is less than LaserTH[0] (S111).
[0148] If laser_id is less than LaserTH[0] (Yes in S111), the three-dimensional data decoding device 200 arithmetically decodes the encoded data of the predicted residuals of the distance d and horizontal angle Φ of the target point using context A, and de-binarizes the obtained binarized data using binarization method A (inverse binarization method A) to decode the predicted residuals (S112).
[0149] On the other hand, if laser_id is greater than or equal to LaserTH[0] (No in S111), the three-dimensional data decoding device 200 arithmetically decodes the encoded data of the predicted residuals of the distance d and horizontal angle Φ of the target point using context B, and de-binarizes the obtained binarized data using binarization method B (inverse binarization method B) to decode the predicted residuals (S113). Here, binarization method B is different from binarization method A, and context B is different from context A.
[0150] Here, we have shown an example where the switch is applied to both the predicted residuals of distance d and horizontal angle Φ, but it is also possible to apply the switch to only one of the predicted residuals of distance d or horizontal angle Φ. Furthermore, here we have shown an example where the switch is applied to both the binarization method and the context, but it is also possible to apply the switch to only one of the binarization method or the context.
[0151] Furthermore, while the above describes an example of applying the binarization method (inverse binarization method) and context switching to the coding and decoding of the predicted residuals of distance d and horizontal angle Φ, this switching may also be applied to the coding and decoding of other signals (e.g., prediction information, etc.) included in the coded location information shown below.
[0152] Figure 13 shows an example of the syntax for encoded location data (geometry_data). The encoded location data includes child_count, intra_pred_flag, pred_mode, num_virtual_node_gt0, num_virtual_node_gt1, num_virtual_node_minus2, residual_is_zero, residual_sign, residual_bitcount_minus1, and residual_bit[k]. These signals are provided for each three-dimensional point.
[0153] `child_count` indicates the number of child nodes of the i-th three-dimensional point (node[i]).
[0154] The intra_pred_flag indicates whether the prediction method at the target point to be encoded or decoded is intraprediction or not (i.e., whether it is intraprediction or interprediction).
[0155] `pred_mode` indicates the prediction mode for encoding or decoding the position information of the i-th three-dimensional point. `pred_mode` takes a value from 0 to M-1 (where M is the total number of prediction modes). If `pred_mode` is not included in the bitstream (i.e., the conditions `distdiff >= Thfix[i] && NumPredMode > 1 && intra_pred_flag` are not met), `pred_mode` may be estimated to be value α. Here, `Thfix[i]` is a threshold for determining whether or not to fix the prediction mode. `distdiff` is the absolute difference between the distance d0 between points p1 and p0 used for prediction and the distance d1 between points p2 and p1. Points p0, p1, and p2 are the parent node, grandparent node, and great-grandparent node of the target point (target node), respectively. `NumPredMode` indicates the total number M of prediction modes used for predicting position information.
[0156] α is the prediction mode used to calculate the predicted value using linear prediction, and is, for example, 2. Note that α is not limited to a value of 2, but can be any value from 0 to M-1. In addition, an estimated value may be added separately to the header or the like if pred_mode is not included in the bitstream. Furthermore, the three-dimensional data encoding device 100 may arithmetically encode pred_mode after binarizing it with a truncated unary code using the number of prediction modes to which the predicted value is assigned.
[0157] Furthermore, if intra_pred_flag=0, i.e., interpretation is used, the three-dimensional data encoding device 100 does not need to add pred_mode to the bitstream. This reduces the amount of code. In this case, the three-dimensional data decoding device 200 may estimate pred_mode to be a value α (for example, α=0). Note that α is not limited to a value of 0, but can be any value from 0 to M-1. In addition, an estimated value for when pred_mode is not included in the bitstream may be added separately to the header or the like.
[0158] num_virtual_node_gt0, num_virtual_node_gt1, and num_virtual_node_minus2 are pieces of information that indicate a num_virtual_node.
[0159] num_virtual_node indicates the number of virtual nodes for the i-th three-dimensional point. A virtual node is a virtual node (point) used for prediction, for example, one or more points virtually arranged based on the spacing between multiple existing points. The three-dimensional data encoding device 100 and the three-dimensional data decoding device 200 may use the value of num_virtual_node to correct the predicted value calculated in pred_mode.
[0160] Furthermore, if pred_mode=0 (for example, no prediction), the three-dimensional data encoding device 100 does not need to add num_virtual_node to the bitstream. This reduces the amount of code used when pred_mode=0. Also, if num_virtual_node is not added to the bitstream, the three-dimensional data decoding device 200 may estimate the value of num_virtual_node to be 0. This allows the three-dimensional data decoding device 200 to decode the bitstream appropriately.
[0161] Furthermore, the three-dimensional data encoding device 100 adds num_virtual_node to the bitstream when using a coordinate system other than Cartesian coordinates, such as polar coordinates, in the point cloud encoding or decoding process (when gps_alt_coordinates_flag=1), but does not need to add num_virtual_node to the bitstream when using a Cartesian coordinate system in the point cloud encoding or decoding process (when gps_alt_coordinates_flag=0). This allows the three-dimensional data encoding device 100 to improve encoding efficiency by using num_virtual_node when encoding polar coordinate position information. Also, the three-dimensional data encoding device 100 can reduce the amount of encoding by not adding num_virtual_node to the bitstream when encoding Cartesian coordinate position information.
[0162] The gps_alt_coordinates_flag indicates whether the point cloud encoding or decoding is performed using Cartesian coordinates (value 0) or non-Cartesian coordinates (e.g., polar coordinates) (value 1). This gps_alt_coordinates_flag is added to the bitstream.
[0163] Furthermore, num_virtual_node can be expressed as num_virtual_node = num_virtual_node_gt0 + num_virtual_node_gt1 + num_virtual_node_minus2, where num_virtual_node_gt0, num_virtual_node_gt1, and num_virtual_node_minus2 are used.
[0164] Here, num_virtual_node_gt0 indicates whether num_virtual_node is greater than 0 or not. For example, a value of 0 indicates that num_virtual_node is 0, and a value of 1 indicates that num_virtual_node is greater than 0. Note that the three-dimensional data decoding device 200 may estimate num_virtual_node_gt0 = 0 if num_virtual_node_gt0 is not attached to the bitstream.
[0165] num_virtual_node_gt1 indicates whether num_virtual_node is greater than 1 or not. For example, a value of 0 indicates that num_virtual_node is 1, and a value of 1 indicates that num_virtual_node is greater than 1. Note that the three-dimensional data decoding device 200 may estimate num_virtual_node_gt1 = 0 if num_virtual_node_gt1 is not attached to the bitstream.
[0166] num_virtual_node_minus2 represents the number of num_virtual_nodes minus 2. For example, a value of 0 indicates that there are 2 num_virtual_nodes, and a value of 1 indicates that there are 3 num_virtual_nodes. The three-dimensional data decoding device 200 may estimate num_virtual_node_minus2 = 0 if num_virtual_node_minus2 is not attached to the bitstream.
[0167] residual_is_zero, residual_sign, residual_bitcount_minus1, and residual_bit[k] are information that indicates the residual_value, which is the residual of the position information of a three-dimensional point.
[0168] residual_is_zero indicates whether residual_value is 0 or not. For example, a value of 1 indicates residual_value=0, and a value of 0 indicates that residual_value is not 0. Note that if pred_mode=0 (for example, no prediction, predicted value 0), the probability of residual_value being 0 is low, so the three-dimensional data encoding device 100 does not need to add residual_is_zero to the bitstream. If pred_mode=0, the three-dimensional data decoding device 200 may not decode residual_is_zero from the bitstream and may estimate residual_is_zero=0.
[0169] The residual_sign is a sign bit that indicates whether the residual_value is positive or negative. For example, a value of 1 indicates that the residual_value is negative, and a value of 0 indicates that the residual_value is positive. Note that, as shown in Figure 13, if condition 1 ((j>0 && gps_alt_coordinates_flag) || pred_mode > 0 || intra_pred_flag=0) is not met, the residual_value will be positive, and the three-dimensional data encoding device 100 does not need to add the residual_sign to the bitstream. If condition 1 is not met, the three-dimensional data decoding device 200 may not decode the residual_sign from the bitstream and may estimate that residual_sign=0.
[0170] Here, j represents one element of the position information. For example, if gps_alt_coordinates_flag=1 (in polar coordinates), j=0 represents distance (radius), j=1 represents the horizontal angle Φ, and j=2 represents the elevation angle θ.
[0171] Furthermore, if the condition (j>0 && gps_alt_coordinates_flag) is met, that is, in a polar coordinate system and the position information element is Φ or θ, then residual may be negative. Therefore, the three-dimensional data encoding device 100 may add residual_sign to the bitstream if condition 1 is met, but may not add residual_sign to the bitstream if condition 1 is not met. This reduces the amount of code.
[0172] Furthermore, if intra_pred_flag=0, i.e., if interpretation is used, the residual of all elements of the position information may be negative. Therefore, the three-dimensional data encoding device 100 may add residual_sign to the bitstream if condition 1 is met, and may not add residual_sign to the bitstream if condition 1 is not met. This reduces the amount of code.
[0173] Furthermore, if pred_mode=0 (for example, no prediction, a predicted value of 0, or a prediction residual of 0 or greater because the predicted value attached to the header is used), residual_value will be a positive value. Therefore, the three-dimensional data encoding device 100 does not need to encode residual_sign and attach it to the bitstream if condition 1 is not met. Note that if residual_sign is not attached to the bitstream, the three-dimensional data decoding device 200 may not decode residual_sing from the bitstream and may estimate residual_sing=0.
[0174] residual_bitcount_minus1 represents the value obtained by subtracting 1 from the number of bits in residual_bit. In other words, residual_bitcount = residual_bitcount_minus1 + 1.
[0175] residual_bit[k] represents the value of the k-th bit when the absolute value of residual_value is binarized to match the value of residual_bitcount using a fixed length.
[0176] The three-dimensional data encoding device 100 entropy encodes at least one of the above information, such as child_count, intra_pred_flag, pred_mode, num_virtual_node_gt0, num_virtual_node_gt1, num_virtual_node_minus2, residual_is_zero, residual_sign, residual_bitcount_minus1, and residual_bit, and then adds it to the header. For example, the three-dimensional data encoding device 100 binarizes each value and then arithmetic encodes it.
[0177] Furthermore, in the binarization or arithmetic coding of these signals, the switching of the binarization method or the switching of the context according to the laser_id described above may be applied. This can improve coding efficiency. In other words, the switching of the binarization method or the switching of the context according to the laser_id described above may be applied to information indicating the prediction residual (e.g., residual_is_zero, residual_sign, residual_bitcount_minus1, and residual_bit), or to prediction information related to the prediction (e.g., child_count, intra_pred_flag, pred_mode, num_virtual_node_gt0, num_virtual_node_gt1, num_virtual_node_minus2).
[0178] The following describes modifications of this embodiment. In the above embodiment, an example was shown where the target point is expressed in polar coordinates (d, Φ, laser_id), but it is not limited to this, and for example, the target point may be expressed in polar coordinates (d, Φ, θ). Here, d is the distance from the sensor position to the target point, Φ is the horizontal angle, and θ is the elevation angle. In other words, the elevation angle θ may be used instead of laser_id. In that case, instead of laser_id, the encoding method of the encoded information such as the predicted residual or prediction mode of the three-dimensional point described above may be switched according to the value of θ. For example, the three-dimensional data encoding device 100 may switch the binarization method of the predicted residual of the three-dimensional point according to the value of θ. Alternatively, the three-dimensional data encoding device 100 may prepare a context for arithmetic encoding of the predicted residual of the three-dimensional point for each θ and switch the context used according to the value of θ. This makes it possible to improve encoding efficiency while reducing the amount of processing required to calculate laser_id from θ.
[0179] Furthermore, in the above embodiment, when arithmetic encoding coded information such as the predicted residual or prediction mode of a three-dimensional point, an example was shown in which a context is prepared for each laser_id and the context used is switched according to the value of the laser_id, but this is not necessarily the only example. For example, the three-dimensional data encoding device 100 may initialize the context used for arithmetic encoding when the value of the laser_id of a target point changes from the laser_id of a previously encoded three-dimensional point. In this case, the three-dimensional data encoding device 100 encodes the position information of multiple three-dimensional points in ascending or descending order of laser_id, for example. The three-dimensional data encoding device 100 initializes the context when a change in laser_id causes a change in the characteristics of the predicted residual or prediction mode. Therefore, the three-dimensional data encoding device 100 can use a context that is not affected by the characteristics before the change when encoding the information after the change in characteristics, thereby improving encoding efficiency.
[0180] Furthermore, the method shown in this embodiment may be applied when scanning and encoding (or decoding) processing is performed prioritizing either the horizontal angle Φ or the elevation angle θ (or laser_id). Note that scanning here refers to scanning (processing order) of the encoded points, not scanning for laser measurement. In other words, the method shown in this embodiment may be applied when processing in ascending (or descending) order of elevation angle θ, or when processing in ascending (or descending) order of horizontal angle Φ. To put it another way, the former is a case where multiple point clouds with corresponding (same or similar) elevation angles θ are processed in ascending (or descending) order of elevation angle θ, and in the processing of each point cloud, multiple points included in that point cloud are processed in ascending (or descending) order of horizontal angle Φ. The latter is a case where multiple point clouds with corresponding (same or similar) horizontal angles Φ are processed in ascending (or descending) order of horizontal angle Φ, and in the processing of each point cloud, multiple points included in that point cloud are processed in ascending (or descending) order of elevation angle θ. In other words, the latter method involves first scanning vertically to the ground at a certain horizontal angle, then changing the horizontal angle and scanning vertically at that horizontal angle, and repeating these steps. In particular, when the latter method is used, the value of the elevation angle θ (or laser_id) may change significantly for each point being processed. Therefore, in processes that switch the encoding method for each group according to the processing order, for example, it may not be possible to switch the encoding method appropriately. On the other hand, when using the method of this embodiment, the encoding method can be switched according to the value of the elevation angle θ or laser_id regardless of the processing order, so the encoding method can be selected appropriately.
[0181] Furthermore, the three-dimensional data encoding device 100 may determine LaserTH using, for example, the elevation angle θ value used when calculating laser_id. For example, if the three-dimensional data encoding device 100 defines an elevation angle of 0 degrees as the angle horizontal to the ground, it sets laser_id_theta0 to laser_id_theta0, which corresponds to a θ close to an elevation angle of 0 degrees, and sets the value of laser_id_theta0 to LaserTH. In this case, if laser_id is smaller than laser_id_theta0, that is, if the elevation angle is less than 0 degrees (a negative value), the three-dimensional point cloud of the ground region is scanned, and if laser_id is greater than or equal to laser_id_theta0, that is, if the elevation angle is greater than or equal to 0 degrees, the three-dimensional point cloud of the region above the ground is scanned. As a result, the three-dimensional data encoding device 100 can apply an appropriate encoding method to the three-dimensional point cloud of the ground region and the three-dimensional point cloud of the region above the ground, respectively, according to the value of laser_id, thereby improving encoding efficiency.
[0182] Furthermore, the three-dimensional data encoding device 100 may, by applying pre-recognition processing to the input three-dimensional point cloud, identify the ground region A and the region B above the ground, set the laser_id for scanning region A to LaserGroupID[0], and the laser_id for scanning region B to LaserGroupID[1]. Then, the three-dimensional data encoding device 100 switches the encoding method according to the LaserGroupID to which the laser_id of the target point belongs. As a result, the three-dimensional data encoding device 100 can select an appropriate encoding method according to the characteristics of the region to which the laser_id belongs, thereby improving encoding efficiency.
[0183] As described above, the three-dimensional data decoding device according to this embodiment performs the processing shown in Figure 14. The three-dimensional data decoding device acquires a bitstream containing a plurality of encoded three-dimensional points, each of which is represented by a first angle, a second angle, and a distance, and the encoding of these plurality of three-dimensional points (S201). For example, the positional information of the plurality of three-dimensional points is represented by polar coordinates.
[0184] The three-dimensional data decoding device determines a reference three-dimensional point from a plurality of three-dimensional points (S202), and generates information of the target three-dimensional point included in the plurality of three-dimensional points, excluding the first angle, by performing arithmetic decoding and inverse binarization on the encoded information of the target three-dimensional point included in the plurality of three-dimensional points according to the first angle of the reference three-dimensional point (S203).
[0185] According to this, a three-dimensional data encoding device that generates a bitstream can improve its encoding efficiency by using at least one method (or mode) of arithmetic encoding and binarization that corresponds to the tendency of the three-dimensional point information according to the first angle. A three-dimensional data decoding device can appropriately decode this bitstream with improved encoding efficiency. Furthermore, since the amount of data in the bitstream can be reduced by improving the encoding efficiency of the bitstream, the processing load on the three-dimensional data decoding device can be reduced.
[0186] The tendencies associated with the first angle include, for example, the relationship that the larger the first angle, the larger the value of the encoded information; the relationship that the larger the first angle, the smaller the value of the encoded information; and the relationship that the range of values of the encoded information is restricted when the first angle is substantially equal to a predetermined value. In other words, the tendencies associated with the first angle are the tendencies that the value of the encoded information is determined from the first angle.
[0187] For example, the reference 3D point is the same as the target 3D point. According to this, the 3D data encoding device generating the bitstream can switch at least one of the methods of arithmetic decoding and inverse binarization of the information excluding the first angle of the target 3D point, according to the first angle of the target 3D point. That is, in this embodiment, information excluding the first angle is decoded after the first angle, according to the first angle decoded earlier for the target 3D point. Here, the first angle of the target 3D point is more likely to represent the information trend of the target 3D point than the first angle of 3D points other than the target 3D point. Therefore, the 3D data encoding device may be able to improve encoding efficiency compared to the case where the first angle of 3D points other than the target 3D point is referenced. The 3D data decoding device can appropriately decode this bitstream with improved encoding efficiency. Furthermore, since the amount of data in the bitstream can be reduced by improving the encoding efficiency of the bitstream, the processing load on the 3D data decoding device can be reduced.
[0188] For example, a reference 3D point corresponds to the parent node of the target 3D point in a prediction tree of multiple 3D points. In other words, the reference 3D point may be a 3D point other than the target 3D point. Also, the reference 3D point may be a decoded 3D point. For example, the reference 3D point may be the 3D point immediately preceding the target 3D point in the decoding order (encoding order).
[0189] A prediction tree is a data structure generated according to the prediction process of three-dimensional points. Therefore, there is a high probability that a trend exists between the first angle of the reference three-dimensional point corresponding to the parent node and the information of the target three-dimensional point corresponding to its child node. Furthermore, since the three-dimensional data decoding device decodes the reference three-dimensional point corresponding to the parent node before the target three-dimensional point, the processing delay related to the decoding of the first angle can be reduced.
[0190] For example, if the first angle is greater than the threshold, a first method of at least one of arithmetic decoding and inverse binarization is used, and if the first angle is less than or equal to the threshold, a second method different from the first method of at least one of arithmetic decoding and inverse binarization is used.
[0191] According to this, a three-dimensional data encoding device that generates a bitstream can improve its encoding efficiency by using at least one of arithmetic encoding and binarization methods that correspond to the trend in the information of three-dimensional points, such as whether the first angle is greater than a threshold, i.e., according to the range of the first angle. A three-dimensional data decoding device can appropriately decode this bitstream with improved encoding efficiency. Furthermore, since the amount of data in the bitstream can be reduced by improving the encoding efficiency of the bitstream, the processing load on the three-dimensional data decoding device can be reduced.
[0192] For example, the first context used in the first method of arithmetic decoding is different from the second context used in the second method of arithmetic decoding. Note that multiple contexts may be used in each method. That is, the first method of arithmetic decoding may use a first set of contexts, while the second method of arithmetic decoding may use a second set of contexts different from the first set.
[0193] According to this, a three-dimensional data encoding device that generates a bitstream can improve encoding efficiency by switching the context according to the first angle, especially when the information of the three-dimensional points shows a tendency corresponding to the first angle. A three-dimensional data decoding device can appropriately decode this bitstream with improved encoding efficiency. Furthermore, since the amount of data in the bitstream can be reduced by improving the encoding efficiency of the bitstream, the processing load on the three-dimensional data decoding device can be reduced.
[0194] For example, the first bit length of the binarized symbol in the first method of inverse binarization is different from the second bit length of the binarized symbol in the second method of inverse binarization. In other words, the first binarization table used in the first method, which shows the relationship between the value before conversion and the binarized symbol after conversion, may be different from the second binarization table used in the second method.
[0195] According to this, a three-dimensional data encoding device that generates a bitstream can improve encoding efficiency by switching binarization symbols according to the first angle, especially when the information of a three-dimensional point shows a tendency corresponding to the first angle. A three-dimensional data decoding device can appropriately decode this bitstream with improved encoding efficiency. Furthermore, since the amount of data in the bitstream can be reduced by improving the encoding efficiency of the bitstream, the processing load on the three-dimensional data decoding device can be reduced.
[0196] For example, multiple encoded three-dimensional points are decoded in ascending order of their first angles, and the arithmetic decoding context is initialized if the first angle exceeds a threshold. Alternatively, multiple encoded three-dimensional points may be decoded in descending order of their first angles, and the arithmetic decoding context may be initialized if the first angle falls below a threshold.
[0197] According to this, a three-dimensional data encoding device that generates a bitstream can use different contexts depending on whether the first angle is greater than or less than the threshold, by initializing the context when the first angle exceeds a threshold. Therefore, the three-dimensional data encoding device can improve encoding efficiency when the information of the three-dimensional points has a tendency corresponding to the first angle. The three-dimensional data decoding device can appropriately decode this bitstream with improved encoding efficiency. In addition, since the amount of data in the bitstream can be reduced by improving the encoding efficiency of the bitstream, the processing load on the three-dimensional data decoding device can be reduced.
[0198] For example, the information excluding the first angle includes at least one of the second angle, distance, and prediction information of the target three-dimensional point. The prediction information refers to information indicating the content of the prediction process for at least a part of the position information (first angle, second angle, distance) of the target three-dimensional point. The prediction information may include information related to interpretation or information related to intrapretation. For example, the prediction information may include at least one of the following shown in Figure 13: child_count, intra_pred_flag, pred_mode, num_virtual_node_gt0, num_virtual_node_gt1, and num_virtual_node_minus2. Furthermore, the information excluding the first angle may also include information on the prediction residual of at least one of the second angle and distance. For example, the prediction residual information may include at least one of the following shown in Figure 13: residual_is_zero, residual_sign, residual_bitcount_minus1, and residual_bit.
[0199] According to this, the three-dimensional data decoding device can properly decode a bitstream in which the encoding efficiency of at least one of the second angle, distance, and prediction information has been improved.
[0200] For example, the first angle and the second angle are the elevation angle and the horizontal angle, respectively, and the first angle corresponds to the laser ID used to generate multiple three-dimensional points.
[0201] According to this, a three-dimensional data encoding device that generates a bitstream can improve its encoding efficiency by using at least one of arithmetic encoding and binarization methods that correspond to the trend in the information of three-dimensional points, such as when there is a trend in the information of three-dimensional points depending on the range of their vertical position. A three-dimensional data decoding device can appropriately decode this bitstream with improved encoding efficiency. Furthermore, since the amount of data in the bitstream can be reduced by improving the encoding efficiency of the bitstream, the processing load on the three-dimensional data decoding device can be reduced.
[0202] For example, a three-dimensional data decoding device comprises a processor and memory, and the processor uses the memory to perform the above processing.
[0203] Furthermore, the three-dimensional data encoding device according to this embodiment performs the processing shown in Figure 15. The three-dimensional data encoding device determines a reference three-dimensional point from a plurality of three-dimensional points, each represented by a first angle, a second angle, and a distance (S211), and performs at least one of arithmetic coding and binarization on the information of the target three-dimensional point included in the plurality of three-dimensional points, excluding the first angle, according to the first angle of the reference three-dimensional point (S212). For example, the three-dimensional data encoding device generates a bitstream containing the information excluding the first angle after at least one of arithmetic coding and binarization has been performed.
[0204] According to this, a three-dimensional data encoding device can improve its encoding efficiency by using at least one of arithmetic encoding and binarization methods that correspond to the tendency of the three-dimensional point information, such as when the information of the three-dimensional point has a tendency corresponding to a first angle.
[0205] For example, the reference 3D point is the same as the target 3D point. According to this, the 3D data encoding device can switch at least one of the methods of arithmetic encoding and binarization of the information of the target 3D point, excluding the first angle, according to the first angle of the target 3D point. Here, the first angle of the target 3D point is more likely to represent the information trend of the target 3D point than the first angle of a 3D point other than the target 3D point. Therefore, the 3D data encoding device may be able to improve encoding efficiency compared to the case where the first angle of a 3D point other than the target 3D point is referenced.
[0206] For example, a reference 3D point corresponds to the parent node of the target 3D point in a prediction tree of multiple 3D points. In other words, the reference 3D point may be a 3D point other than the target 3D point. Also, the reference 3D point may be a decoded 3D point. For example, the reference 3D point may be the 3D point immediately preceding the target 3D point in the coding order.
[0207] A prediction tree is a data structure generated according to the prediction process of three-dimensional points. Therefore, there is a high probability that a trend exists between the first angle of the reference three-dimensional point corresponding to the parent node and the information of the target three-dimensional point corresponding to its child node. Furthermore, a three-dimensional data decoder that decodes the bitstream generated by a three-dimensional data encoding device can reduce the processing delay related to the decoding of the first angle because the reference three-dimensional point corresponding to the parent node is decoded before the target three-dimensional point.
[0208] For example, if the first angle is greater than a threshold, a first method of at least one of arithmetic coding and binarization is used, and if the first angle is less than or equal to the threshold, a second method of at least one of arithmetic coding and binarization, different from the first method, is used.
[0209] According to this, a three-dimensional data encoding device can improve its encoding efficiency by using at least one of arithmetic encoding and binarization methods that correspond to the trend in the information of a three-dimensional point, such as when the first angle is greater than a threshold, i.e., when there is a trend depending on the range of the first angle.
[0210] For example, the first context used in the first arithmetic coding scheme is different from the second context used in the second arithmetic coding scheme. Note that multiple contexts may be used in each scheme. That is, the first arithmetic coding scheme may use a first set of contexts, while the second arithmetic coding scheme may use a second set of contexts different from the first set.
[0211] According to this, a three-dimensional data encoding device can improve encoding efficiency when the information of a three-dimensional point has a tendency corresponding to the first angle, for example, by switching the context according to the first angle.
[0212] For example, the first bit length of the binarization symbol in the first binarization method is different from the second bit length of the binarization symbol in the second binarization method. In other words, the first binarization table used in the first method, which shows the relationship between the value before conversion and the binarized symbol after conversion, may be different from the second binarization table used in the second method.
[0213] According to this, a three-dimensional data encoding device can improve encoding efficiency in cases where the information of a three-dimensional point has a tendency corresponding to the first angle, by switching the binarization symbol according to the first angle.
[0214] For example, multiple three-dimensional points are encoded in ascending order of their first angles, and the arithmetic coding context is initialized if the first angle exceeds a threshold. Alternatively, multiple three-dimensional points may be decoded in descending order of their first angles, and the arithmetic coding context may be initialized if the first angle falls below a threshold.
[0215] According to this, the three-dimensional data encoding device can use different contexts depending on whether the first angle is greater than or less than the threshold, by initializing the context when the first angle exceeds the threshold. Therefore, the three-dimensional data encoding device can improve encoding efficiency when the information of the three-dimensional point has a tendency corresponding to the first angle, for example.
[0216] Furthermore, the information excluding the first angle includes at least one of the second angle, distance, and prediction information of the target three-dimensional point. According to this, the three-dimensional data encoding device can improve the encoding efficiency of at least one of the second angle, distance, and prediction information.
[0217] The first and second angles are the elevation and horizontal angles, respectively, and the first angle corresponds to the laser ID used to generate multiple three-dimensional points.
[0218] According to this, a three-dimensional data encoding device can improve encoding efficiency by using at least one of arithmetic encoding and binarization methods that correspond to the trend in the information of three-dimensional points, such as when there is a trend in the information of three-dimensional points depending on the range of the vertical position of the three-dimensional points.
[0219] For example, a three-dimensional data encoding device comprises a processor and memory, and the processor uses the memory to perform the above processing.
[0220] Although embodiments and modified examples of the three-dimensional data encoding device and three-dimensional data decoding device, etc., of the present disclosure have been described above, the present disclosure is not limited to these embodiments.
[0221] Furthermore, each processing unit included in the three-dimensional data encoding device and the three-dimensional data decoding device, etc., according to the above embodiment is typically implemented as an integrated circuit (LSI). These may be individually integrated into a single chip, or some or all of them may be integrated into a single chip.
[0222] Furthermore, integrated circuit implementation is not limited to LSIs; it may also be achieved using dedicated circuits or general-purpose processors. Field-Programmable Gate Arrays (FPGAs), which can be programmed after LSI manufacturing, or reconfigurable processors, which allow for the reconfiguration of the connections and settings of circuit cells within the LSI, may also be used.
[0223] Furthermore, in each of the above embodiments, each component may be implemented by being composed of dedicated hardware or by executing a software program suitable for each component. Each component may also be implemented by a program execution unit such as a CPU or processor reading and executing a software program recorded on a recording medium such as a hard disk or semiconductor memory.
[0224] Furthermore, this disclosure may be implemented as a three-dimensional data encoding method or a three-dimensional data decoding method, etc., performed by a three-dimensional data encoding device and a three-dimensional data decoding device, etc.
[0225] Furthermore, the division of functional blocks in the block diagram is just one example; multiple functional blocks can be implemented as a single functional block, a single functional block can be divided into multiple parts, or some functions can be moved to other functional blocks. In addition, the functions of multiple functional blocks with similar functions can be processed in parallel or time-sharing by a single piece of hardware or software.
[0226] Furthermore, the order in which each step in the flowchart is performed is illustrative for the purpose of specifically illustrating this disclosure, and may be in a different order. Also, some of the above steps may be performed simultaneously (in parallel) with other steps.
[0227] Although a three-dimensional data encoding device and a three-dimensional data decoding device, etc., relating to one or more embodiments have been described above based on embodiments, this disclosure is not limited to these embodiments. Without departing from the spirit of this disclosure, various modifications that a person skilled in the art can conceive of may be applied to these embodiments, and forms constructed by combining components from different embodiments may also be included within the scope of one or more embodiments. [Industrial applicability]
[0228] This disclosure is applicable to three-dimensional data encoding devices and three-dimensional data decoding devices. [Explanation of Symbols]
[0229] 100 3D data encoding device 102 Subtraction Unit 103 Quantization section 104 Entropy coding unit 105, 202 Inverse quantization section 106, 203 Addition section 108, 110, 205, 207 buffers 109, 206 Intra Prediction Unit 111 Motion detection compensation unit 112, 209 Interpretation Unit 113, 210 Switching section 121 Binarization section 122, 221 Context Control Unit 123 Normal encoding section 124 Bypass coding section 200 Three-dimensional data decoding device 201 Entropy Decoder 208 Motion compensation unit 222 Normal Decoding Section 223 Bypass decoding section 224 Inverse binarization section
Claims
1. Obtain a bitstream containing multiple encoded three-dimensional points, each represented by a first angle, a second angle, and a distance, which are then encoded. A reference three-dimensional point is determined from the aforementioned plurality of three-dimensional points, By performing arithmetic decoding and inverse binarization on the encoded information of the target encoded three-dimensional points included in the plurality of encoded three-dimensional points according to the first angle of the reference three-dimensional point, information of the target three-dimensional points included in the plurality of three-dimensional points, excluding the first angle, is generated. Three-dimensional data decoding method.
2. The aforementioned reference three-dimensional point is the same as the aforementioned target three-dimensional point. The method for decoding three-dimensional data according to claim 1.
3. The aforementioned reference three-dimensional point corresponds to the parent node of the target three-dimensional point in the prediction tree of the plurality of three-dimensional points. The method for decoding three-dimensional data according to claim 1.
4. If the first angle is greater than the threshold, at least one of the first methods of arithmetic decoding and inverse binarization is used. If the first angle is less than or equal to the threshold, a second method different from the first method is used for at least one of the arithmetic decoding and inverse binarization. The method for decoding three-dimensional data according to claim 1.
5. The first context used in the first method of arithmetic decoding is different from the second context used in the second method of arithmetic decoding. The method for decoding three-dimensional data according to claim 4.
6. The first bit length of the binarized symbol in the first method of inverse binarization is different from the second bit length of the binarized symbol in the second method of inverse binarization. The method for decoding three-dimensional data according to claim 4.
7. The plurality of encoded three-dimensional points are decoded in ascending order of the first angle of the plurality of three-dimensional points, If the first angle exceeds the threshold, the context for arithmetic decoding is initialized. The method for decoding three-dimensional data according to claim 1.
8. The information, excluding the first angle, includes at least one of the second angle of the target three-dimensional point, the distance, and prediction information. The method for decoding three-dimensional data according to claim 1.
9. The first angle and the second angle are the elevation angle and the horizontal angle, respectively. The first angle corresponds to the laser ID used to generate the plurality of three-dimensional points. The method for decoding three-dimensional data according to claim 1.
10. A reference three-dimensional point is determined from multiple three-dimensional points, each represented by a first angle, a second angle, and a distance. According to the first angle of the reference three-dimensional point, at least one of arithmetic coding and binarization is performed on the information of the target three-dimensional point included in the plurality of three-dimensional points, excluding the first angle. Three-dimensional data encoding method.
11. The aforementioned reference three-dimensional point is the same as the aforementioned target three-dimensional point. The three-dimensional data encoding method according to claim 10.
12. The aforementioned reference three-dimensional point corresponds to the parent node of the target three-dimensional point in the prediction tree of the plurality of three-dimensional points. The three-dimensional data encoding method according to claim 10.
13. If the first angle is greater than the threshold, at least one of the first methods of arithmetic coding and binarization is used. If the first angle is less than or equal to the threshold, a second method different from the first method is used for at least one of the arithmetic coding and binarization. The three-dimensional data encoding method according to claim 10.
14. The first context used in the first method of the arithmetic coding is different from the second context used in the second method of the arithmetic coding. The three-dimensional data encoding method according to claim 13.
15. The first bit length of the binarized symbol in the first method of binarization is different from the second bit length of the binarized symbol in the second method of binarization. The three-dimensional data encoding method according to claim 13.
16. The plurality of three-dimensional points are encoded in ascending order of the first angle of the plurality of three-dimensional points, If the first angle exceeds the threshold, the context of the arithmetic coding is initialized. The three-dimensional data encoding method according to claim 10.
17. The information, excluding the first angle, includes at least one of the second angle of the target three-dimensional point, the distance, and prediction information. The three-dimensional data encoding method according to claim 10.
18. The first angle and the second angle are the elevation angle and the horizontal angle, respectively. The first angle corresponds to the laser ID used to generate the plurality of three-dimensional points. The three-dimensional data encoding method according to claim 10.
19. Processor and Equipped with memory, The processor uses the memory to: Obtain a bitstream containing multiple encoded three-dimensional points, each represented by a first angle, a second angle, and a distance, which are then encoded. A reference three-dimensional point is determined from the aforementioned plurality of three-dimensional points, By performing arithmetic decoding and inverse binarization on the encoded information of the target encoded three-dimensional point according to the first angle of the reference three-dimensional point, information of the target three-dimensional point excluding the first angle is generated. Three-dimensional data decoding device.
20. Processor and Equipped with memory, The processor uses the memory to: A reference three-dimensional point is determined from multiple three-dimensional points, each represented by a first angle, a second angle, and a distance. According to the first angle of the reference three-dimensional point, at least one of arithmetic coding and binarization is performed on the information of the target three-dimensional point included in the plurality of three-dimensional points, excluding the first angle. Three-dimensional data encoding device.
Citation Information
Patent Citations
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
WO2020075861A1