Point cloud decoding device, point cloud decoding method, and program

The point cloud decoding device enhances prediction and coding efficiency by employing linear prediction with multiple decoded nodes' coordinate values, addressing suboptimal performance in existing predictive geometry coding.

JP7829505B2Active Publication Date: 2026-03-13KDDI CORP
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2023-01-06
Publication Date
2026-03-13

AI Technical Summary

Technical Problem

Existing methods of predictive geometry coding do not utilize coordinate values of multiple decoded nodes, leading to suboptimal prediction performance and coding efficiency.

Method used

A point cloud decoding device and method that performs linear prediction using the coordinate values of multiple decoded nodes in Angular mode and adaptive azimuth quantization mode, incorporating a tree synthesis unit to calculate and reconstruct azimuth step numbers.

Benefits of technology

Improves prediction performance and coding efficiency by utilizing the coordinate values of parent nodes and their parents in Angular mode and adaptive azimuth quantization mode.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007829505000001
    Figure 0007829505000001
  • Figure 0007829505000002
    Figure 0007829505000002
  • Figure 0007829505000003
    Figure 0007829505000003
Patent Text Reader

Abstract

To improve coding efficiency by improving prediction performance.SOLUTION: According to the present invention, a point group decoding device 200 is provided with a tree synthesizing unit 2020 for performing linear prediction by using coordinate values of a plurality of decoded nodes in an angular mode and an adaptive azimuth quantization mode.SELECTED DRAWING: Figure 2
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0004] , , , ,

[0005] , , , ,

[0001] The present invention relates to a point cloud decoding device, a point cloud decoding method, and a program.

Background Art

[0002] In Non-Patent Document 2, a method of predicting position information by using information of a parent node or a node that has already been decoded in the Angular mode and the adaptive azimuth quantization mode of Predictive geometry coding is disclosed.

Prior Art Documents

Non-Patent Documents

[0003]

Non-Patent Document 1

Non-Patent Document 2

Summary of the Invention

Problems to be Solved by the Invention

[0004] However, the method of Non-Patent Document 2 has a problem that prediction is not performed using coordinate values of a plurality of decoded nodes including a parent node.

[0005] Therefore, the present invention has been made in view of the above problems, and when using Predictive geometry coding, in the Angular mode and the adaptive azimuth quantization mode, by calculating a predictor using the coordinate value of the parent node and the coordinate value of the parent node of the parent node, it is an object to provide a point cloud decoding device, a point cloud decoding method, and a program that can improve prediction performance and improve coding efficiency.

Means for Solving the Problems

[0006] The first feature of the present invention is a point cloud decoding device comprising a tree synthesis unit that performs linear prediction using the coordinate values ​​of multiple decoded nodes in Angular mode and adaptive azimuth quantization mode.

[0007] A second feature of the present invention is a point cloud decoding device comprising a tree synthesis unit, the tree synthesis unit selecting an azimuth step number predictor, calculating a predicted value for the azimuth step number based on the selected predictor, decoding the residual of the azimuth step number, and reconstructing the azimuth step number by adding the residual to the predicted value.

[0008] The third feature of the present invention is a point cloud decoding method comprising the step of performing linear prediction using the coordinate values ​​of a plurality of decoded nodes in Angular mode and adaptive azimuthal quantization mode.

[0009] A fourth feature of the present invention is a program that causes a computer to function as a point cloud decoder, wherein the point cloud decoder includes a tree synthesis unit that performs linear prediction using the coordinate values ​​of a plurality of decoded nodes in Angular mode and adaptive azimuth quantization mode. [Effects of the Invention]

[0010] According to the present invention, when using predictive geometry coding, a point cloud decoder, a point cloud decoding method, and a program can be provided that can improve prediction performance and coding efficiency by calculating a predictor using the coordinate values ​​of the parent node and the coordinate values ​​of the parent node's parent node in Angular mode and adaptive azimuth quantization mode. [Brief explanation of the drawing]

[0011] [Figure 1] Figure 1 shows an example of the configuration of a point cloud processing system 10 according to one embodiment. [Figure 2] Figure 2 shows an example of the functional block of a point cloud decoding device 200 according to one embodiment. [Figure 3] Figure 3 shows an example of the configuration of encoded data (bitstream) received by the geometric information decoding unit 2010 of a point cloud decoding device 200 according to one embodiment. [Figure 4] Figure 4 shows an example of the syntax configuration of GPS2011. [Figure 5] Figure 5 is a flowchart illustrating an example of the operation of the tree synthesis unit 2020 of the point cloud decoding device 200 according to one embodiment. [Figure 6] Figure 6 is a flowchart showing an example of the location information prediction process in step S505. [Figure 7] Figure 7 is a flowchart showing an example of the location information prediction process using the reservation list in step S602. [Figure 8] Figure 8 is a flowchart showing an example of the location information prediction process using the predictor list in step S602. [Figure 9] Figure 9 is a flowchart showing an example of the predictor selection process, including the linear predictor, in step S803. [Figure 10] Figure 10 is a flowchart showing an example of the predictor selection process, including the linear predictor, in step S803. [Figure 11] Figure 11 is a flowchart showing an example of the predictor list update process in step S806. [Figure 12] Figure 12 is a flowchart showing an example of the spherical residual decoding process in step S504. [Figure 13] Figure 13 is a flowchart showing an example of the location information prediction process in step S505. [Figure 14] Figure 14 is a flowchart showing an example of the process for calculating the predicted number of azimuth steps in step S1304. [Figure 15]FIG. 15 is a flowchart showing an example of the update process of the azimuth angle step number prediction value table in step S1405. [Figure 16] FIG. 16 is a diagram showing an example of the functional blocks of the point cloud encoding device 100 according to the present embodiment.

Embodiments for Carrying Out the Invention

[0012] Hereinafter, embodiments of the present invention will be described with reference to the drawings. Note that the components in the following embodiments can be appropriately replaced with existing components, etc., and various variations including combinations with other existing components are possible. Therefore, the description of the following embodiments does not limit the content of the invention described in the claims.

[0013] (First Embodiment) Hereinafter, the point cloud processing system 10 according to the first embodiment of the present invention will be described with reference to FIGS. 1 to 16. FIG. 1 is a diagram showing the point cloud processing system 10 according to the present embodiment.

[0014] As shown in FIG. 1, the point cloud processing system 10 includes a point cloud encoding device 100 and a point cloud decoding device 200.

[0015] The point cloud encoding device 100 is configured to generate encoded data (bit stream) by encoding an input point cloud signal. The point cloud decoding device 200 is configured to generate an output point cloud signal by decoding the bit stream.

[0016] Note that the input point cloud signal and the output point cloud signal are composed of the position information and attribute information of each point in the point cloud. The attribute information is, for example, the color information or reflectivity of each point.

[0017] Here, such a bitstream may be transmitted from the point cloud encoding device 100 to the point cloud decoding device 200 via a transmission line. Alternatively, the bitstream may be stored in a storage medium and then provided from the point cloud encoding device 100 to the point cloud decoding device 200.

[0018] (Point cloud decoder 200) The point cloud decoder 200 according to this embodiment will be described below with reference to Figure 2. Figure 2 is a diagram showing an example of the functional block of the point cloud decoder 200 according to this embodiment.

[0019] As shown in Figure 2, the point cloud decoding device 200 includes a geometric information decoding unit 2010, a tree synthesis unit 2020, an approximate surface synthesis unit 2030, a geometric information reconstruction unit 2040, an inverse coordinate transformation unit 2050, an attribute information decoding unit 2060, an inverse quantization unit 2070, an RAHT unit 2080, an LoD calculation unit 2090, an inverse lifting unit 2100, an inverse color transformation unit 2110, and a frame buffer 2120.

[0020] The geometric information decoding unit 2010 is configured to take the bitstream related to geometric information (geometric information bitstream) from the bitstream output from the point cloud coding device 100 as input and decode the syntax.

[0021] The decoding process is, for example, a context-adaptive binary arithmetic decoding process. Here, for example, the syntax includes control data (flags and parameters) to control the decoding process of the location information.

[0022] The tree synthesis unit 2020 is configured to generate tree information indicating which regions within the decoding target space contain points, by taking as input the control data decoded by the geometric information decoding unit 2010 and the occupancy code, which indicates which node in the tree (described later) contains the point cloud.

[0023] The system may also be configured to perform the decoding of the occupancy code within the tree synthesis unit 2020.

[0024] This process divides the space to be decoded into rectangular prisms, determines whether a point exists within each rectangular prism by referring to the occupancy code, divides the rectangular prism containing a point into multiple rectangular prisms, and recursively repeats the process of referring to the occupancy code, thereby generating tree information.

[0025] Here, interpretation, as described later, may be used when decoding such occupancy code.

[0026] In this embodiment, a method called "Octree" can be used, which recursively performs octree partitioning by always treating the cuboid as a cube, and a method called "QtBt" can be used, which performs quadtree partitioning and binary partitioning in addition to octree partitioning. Whether or not to use "QtBt" is transmitted as control data from the point cloud encoding device 100.

[0027] Alternatively, if the control data specifies that predictive geometry coding should be used, the tree synthesis unit 2020 is configured to decode the coordinates of each point based on an arbitrary tree configuration determined by the point cloud coding device 100.

[0028] The approximate surface synthesis unit 2030 is configured to generate approximate surface information using tree information generated by the tree synthesis unit 2020, and to decode the point cloud based on this approximate surface information.

[0029] Approximate surface information is used, for example, when decoding 3D point cloud data of an object, in cases where the point cloud is densely distributed on the object's surface. Instead of decoding each individual point cloud, the region where the point cloud exists is approximated and represented by a small plane.

[0030] Specifically, the approximate surface synthesis unit 2030 can generate approximate surface information and decode point clouds using a method called "Trisoup," for example. A specific example of the "Trisoup" process will be described later. Furthermore, this process can be omitted when decoding sparse point clouds acquired by Lidar or the like.

[0031] The geometric information reconstruction unit 2040 is configured to reconstruct the geometric information (position information in the coordinate system assumed by the decoding process) of each point in the point cloud data to be decoded, based on the tree information generated by the tree synthesis unit 2020 and the approximate surface information generated by the approximate surface synthesis unit 2030.

[0032] The inverse coordinate transformation unit 2050 is configured to take the geometric information reconstructed by the geometric information reconstruction unit 2040 as input, transform it from the coordinate system assumed by the decoding process to the coordinate system of the output point cloud signal, and output position information.

[0033] The frame buffer 2120 is configured to take the geometric information reconstructed by the geometric information reconstruction unit 2040 as input and store it as a reference frame. The stored reference frame is read from the frame buffer 2130 and used as a reference frame when the tree synthesis unit 2020 performs interpretation of frames that are different in time.

[0034] Here, the choice of which time reference frame to use for each frame may be determined, for example, based on control data transmitted as a bitstream from the point cloud encoding device 100.

[0035] The attribute information decoding unit 2060 is configured to take the bitstream related to attribute information (attribute information bitstream) from the bitstream output from the point cloud coding device 100 as input and decode the syntax.

[0036] The decoding process is, for example, a context-adaptive binary arithmetic decoding process. Here, for example, the syntax includes control data (flags and parameters) to control the decoding process of attribute information.

[0037] Furthermore, the attribute information decoding unit 2060 is configured to decode quantized residual information from the decoded syntax.

[0038] The inverse quantization unit 2070 is configured to perform inverse quantization processing based on the quantized residual information decoded by the attribute information decoding unit 2060 and the quantization parameter, which is one of the control data decoded by the attribute information decoding unit 2060, in order to generate inverse quantized residual information.

[0039] The inversely quantized residual information is output to either the RAHT unit 2080 or the LoD calculation unit 2090, depending on the characteristics of the point cloud to be decoded. Which unit it is output to is specified by the control data decoded by the attribute information decoding unit 2060.

[0040] The RAHT unit 2080 is configured to take the inversely quantized residual information generated by the inverse quantization unit 2070 and the geometric information reconstruction unit 2040 as input, and decode the attribute information of each point using a type of Haar transform called RAHT (Region Adaptive Hierarchical Transform) (inverse Haar transform in the decoding process). As a specific example of the RAHT processing, the method described in Non-Patent Document 1 can be used.

[0041] The LoD calculation unit 2090 is configured to take geometric information generated by the geometric information reconstruction unit 2040 as input and generate LoD (Level of Detail).

[0042] LoD (Level of Data) is information used to define reference relationships (referring points and referenced points) for implementing predictive coding, which involves predicting the attribute information of one point from the attribute information of another point and then encoding or decoding the prediction residual.

[0043] In other words, LoD is information that defines a hierarchical structure in which each point included in geometric information is classified into multiple levels, and the attributes of points belonging to lower levels are encoded or decoded using the attribute information of points belonging to higher levels.

[0044] As for a specific method for determining the LoD, for example, the method described in Non-Patent Document 1 above may be used.

[0045] The inverse lifting unit 2100 is configured to decode the attribute information of each point based on the hierarchical structure defined by the LoD, using the LoD generated by the LoD calculation unit 2090 and the inversely quantized residual information generated by the inverse quantization unit 2070. As a specific processing method for inverse lifting, for example, the method described in Non-Patent Document 1 above can be used.

[0046] The reverse color conversion unit 2110 is configured to perform reverse color conversion on the attribute information output from the RAHT unit 2080 or the reverse lifting unit 2100 if the attribute information to be decoded is color information and color conversion has been performed on the point cloud encoding device 100 side. Whether or not such reverse color conversion processing is performed is determined by the control data decoded by the attribute information decoding unit 2060.

[0047] The point cloud decoder 200 is configured to decode and output attribute information for each point in the point cloud through the above processing.

[0048] (Geometric information decoding unit 2010) The control data decoded by the geometric information decoding unit 2010 will be explained below using Figures 3 and 4.

[0049] Figure 3 shows an example of the configuration of encoded data (bitstream) received by the geometric information decoding unit 2010.

[0050] Firstly, the bitstream may include GPS2011. GPS2011, also known as the geometry parameter set, is a set of control data related to the decoding of geometric information. Specific examples will be discussed later. Each GPS2011 includes at least GPS ID information to identify each individual GPS2011 if multiple GPS2011s exist.

[0051] Secondly, the bitstream may include GSH2012A / 2012B. GSH2012A / 2012B, also called geometry slice headers or geometry data unit headers, are sets of control data corresponding to slices, which will be described later. Hereafter, we will use the term "slice," but you can also read "slice" as "data unit." Specific examples will be given later. Each GSH2012A / 2012B includes at least GPS ID information to specify the GPS2011 corresponding to each GSH2012A / 2012B.

[0052] Thirdly, the bitstream may include slice data 2013A / 2013B after GSH2012A / 2012B. Slice data 2013A / 2013B contains data that encodes geometric information.

[0053] As described above, the bitstream is configured so that each slice data 2013A / 2013B corresponds to one GSH2012A / 2012B and one GPS2011.

[0054] As described above, GSH2012A / 2012B allows you to specify which GPS2011 to refer to using GPS ID information, so a common GPS2011 can be used for multiple slice data 2013A / 2013B.

[0055] In other words, GPS2011 does not necessarily need to be transmitted for each slice. For example, as shown in Figure 3, the bitstream can be configured so that GPS2011 is not encoded immediately before GSH2012B and slice data 2013B.

[0056] Note that the configuration in Figure 3 is merely an example. As long as each slice data 2013A / 2013B corresponds to GSH2012A / 2012B and GPS2011, other elements besides those mentioned above may be added as components of the bitstream.

[0057] For example, as shown in Figure 3, the bitstream may include a sequence parameter set (SPS) 2001. Similarly, it may be formatted to a different configuration than that shown in Figure 3 during transmission. Furthermore, it may be combined with the bitstream decoded by the attribute information decoding unit 2060 described later and transmitted as a single bitstream.

[0058] Figure 4 shows an example of the GPS2011 syntax configuration.

[0059] Please note that the syntax names described below are merely examples. If the functionality of the syntax described below is the same, the syntax names may differ.

[0060] GPS2011 may include GPS ID information (gps_geom_parameter_set_id) to identify each GPS2011.

[0061] In Figure 4, the Descriptor column indicates how each syntax is encoded. ue(v) means it is an unsigned zero-order exponential Golomb code, and u(1) means it is a 1-bit flag.

[0062] GPS2011 may include a flag (geom_tree_type) for controlling the tree type in the tree synthesis unit 2020.

[0063] For example, if the value of geom_tree_type is "1", it may be defined to use predictive geometry coding, and if the value of geom_tree_type is "0", it may be defined to use Octree.

[0064] GPS2011 may include a flag (geom_angular_enabled) to control whether or not to process in Angular mode in the tree synthesis unit 2020.

[0065] For example, if the value of geom_angular_enabled is "1", it may be defined that predictive geometry coding is performed in Angular mode, and if the value of geom_angular_enabled is "0", it may be defined that predictive geometry coding is not performed in Angular mode.

[0066] GPS2011 may include a flag (ptree_ang_azimuth_scaling_enabled) in the tree synthesis unit 2020 to control whether to perform adaptive azimuth quantization according to the radius in Angular mode (i.e., whether to process in adaptive azimuth quantization mode).

[0067] For example, a value of "ptree_ang_azimuth_scaling_enabled" could be defined as "1" to mean that adaptive azimuth angle quantization based on radius is performed, and a value of "0" to mean that adaptive azimuth angle quantization based on radius is not performed.

[0068] Furthermore, it may be used as a flag to control whether or not to use the predictor list in the calculation (selection) of predictors in Angular mode. In this embodiment, the predictor is a concept that includes linear predictors.

[0069] For example, if the value of ptree_azimuth_scaling_enabled is "1", it may be defined that the predictor list is used in the calculation of such a predictor, and if the value of ptree_ang_azimuth_scaling_enabled is "0", it may be defined that the predictor list is not used in the calculation of such a predictor.

[0070] GPS2011 may include a value (ptree_ang_azimuth_step_minus1) relating to the laser rotation speed, which is used in the tree synthesis unit 2020 to calculate the predicted azimuth angle in Angular mode.

[0071] GPS2011 may include a threshold (ptree_ang_pred_list_radius_resid_threshold) used in the process of dynamically updating the predictor list when the predictor list is used in the calculation of the predictor described above in the tree synthesis unit 2020.

[0072] For example, if the absolute value of the decoded radius residual is greater than the value of ptree_ang_pred_list_radius_resid_threshold, the decoded location information may be added to the predictor list as a new predictor. Conversely, if the absolute value of the decoded radius residual is less than the value of ptree_ang_pred_list_radius_resid_threshold, the decoded location information may not be added to the predictor list as a new predictor.

[0073] GPS2011 may include a flag (ptree_ang_linear_predictor_enabled_flag) in the tree synthesis unit 2020 to control whether to use a predictor based on the coordinate values ​​of the parent node of the node to be processed and the coordinate values ​​of the parent node's parent node in Angular mode.

[0074] For example, if the value of ptree_ang_linear_predictor_enabled_flag is "1", it may be defined that a predictor based on the coordinate values ​​of the parent node of the node being processed and the coordinate values ​​of the parent node of that parent node will be used, and if the value of ptree_ang_linear_predictor_enabled_flag is "0", it may be defined that a predictor based on the coordinate values ​​of the parent node of the node being processed and the coordinate values ​​of the parent node of that parent node will not be used.

[0075] GPS2011 may, in the tree synthesis unit 2020, maintain the number of patterns for the number of azimuth steps (ptree_ang_max_qphi_table_pattern) to be held in the azimuth step number prediction value table in Angular mode.

[0076] (Tree Synthesis Department 2020) Below, an example of the operation of the tree synthesis unit 2020 will be explained using Figures 5 to 9.

[0077] Figure 5 is a flowchart showing an example of processing in the tree synthesis unit 2020. The following section describes an example of tree synthesis using "Predictive geometry coding".

[0078] Predictive geometry coding is also known as Predictive Tree. Predictive geometry coding is a method for decoding the position information of point cloud data by decoding the residuals of the position information predicted based on an arbitrary tree structure determined by the point cloud coding device 100 and the position information of the point cloud data, and then adding the two together.

[0079] As shown in Figure 5, in step S501, the tree synthesis unit 2020 determines whether the decoding of the positional information of all point cloud data contained within the slice has been completed.

[0080] This process, for example, involves transmitting information to GSH indicating the number of point cloud data points included in the slice, and then comparing this number of point cloud data points with the number of data points already processed to determine whether or not processing of all points has been completed.

[0081] If the decoding of the positional information of all point cloud data is complete, this operation proceeds to step S513 and terminates. If the decoding of the positional information of all point cloud data is not complete, this operation proceeds to step S502.

[0082] In step S502, the tree synthesis unit 2020 sets the parent node of the node to be decoded (processing node) of the point cloud data.

[0083] For example, the tree synthesis unit 2020 decodes the number of child nodes of each node and stores the node index for each node equal to the number of child nodes.

[0084] Furthermore, if the tree synthesis unit 2020 processes a node to be decrypted after a certain node, it may refer to an array of indices for that node, obtain one index stored at the end of the array, and set the node with the obtained index as the parent node of the node to be decrypted.

[0085] After the parent node configuration is complete, the process proceeds to step S503.

[0086] In step S503, the tree synthesis unit 2020 determines whether to process in Angular mode.

[0087] For example, the tree synthesis unit 2020 can refer to the value of geom_angular_enabled mentioned above to determine whether to process in Angular mode.

[0088] If processing is performed in Angular mode, this operation proceeds to step S504; otherwise, this operation proceeds to step S510.

[0089] In step S504, the tree synthesis unit 2020 decodes the spherical coordinate residual. Once this decoding is complete, the operation proceeds to step S505.

[0090] In step S505, the tree synthesis unit 2020 predicts location information. In this process, the tree synthesis unit 2020 first determines the type of predictor to be used for the prediction.

[0091] For example, the tree synthesis unit 2020 may determine whether or not to process in adaptive azimuth quantization mode based on the value of ptree_ang_azimuth_scaling_enabled, and then determine the type of predictor to use based on this determination result.

[0092] For example, when performing the calculation in adaptive azimuth quantization mode, the tree synthesis unit 2020 may select the type of predictor to use from among multiple predictors calculated using a tree structure based on the decoded predictor mode.

[0093] Alternatively, when processing in adaptive azimuth quantization mode, the tree synthesis unit 2020 may keep the position information of the decoded nodes in a list as predictors, refer to the list for the predictors assigned to the decoded predictor index, and select them as the type of predictor to use.

[0094] Once the type of predictor is determined, the tree synthesis unit 2020 uses that predictor as the predicted value for the location information. A specific example of this process will be described later.

[0095] After the prediction of such location information is completed, this operation proceeds to step S506.

[0096] In step S506, the tree synthesis unit 2020 reconstructs the spherical coordinates. In this process, the tree synthesis unit 2020 reconstructs the spherical coordinates by adding the decoded spherical coordinate residuals with the predictor.

[0097] After this reconstruction is complete, the operation proceeds to step S507.

[0098] In step S507, the tree synthesis unit 2020 reconstructs the orthogonal integer coordinates. In this process, the tree synthesis unit 2020 can convert the spherical coordinates to orthogonal integer coordinates based on the reconstructed spherical coordinates. A specific method for this can be, for example, the method described in Non-Patent Document 1.

[0099] After the reconstruction of the orthogonal integer coordinates is complete, the operation proceeds to step S508.

[0100] In step S508, the tree synthesis unit 2020 performs decoding of the orthogonal integer coordinate residuals.

[0101] After decoding of the orthogonal integer coordinate residuals is complete, the operation proceeds to step S509.

[0102] In step S509, the tree synthesis unit 2020 reconstructs the original coordinates. In this process, the tree synthesis unit 2020 reconstructs the original coordinates by adding the decoded orthogonal integer coordinate residuals to the reconstructed orthogonal integer coordinates.

[0103] After the reconstruction of the original coordinates is complete, this operation returns to step S501.

[0104] In step S510, the tree synthesis unit 2020 predicts location information. Specifically, the tree synthesis unit 2020 selects a predictor and uses that predictor as the predicted value of the location information.

[0105] For example, the tree synthesis unit 2020 may select a predictor from among multiple predictors calculated based on the tree structure, based on the decoded predictor mode.

[0106] After the prediction of such location information is completed, this operation proceeds to step S511.

[0107] In step S511, the tree synthesis unit 2020 performs decoding of the orthogonal integer coordinate residuals.

[0108] After decoding of the orthogonal integer coordinate residuals is complete, the operation proceeds to step S512.

[0109] In step S512, the tree synthesis unit 2020 reconstructs the original coordinates. In this process, the tree synthesis unit 2020 reconstructs the original coordinates by adding the residuals of the orthogonal integer coordinates decoded in step S511 with the position information predicted in step S510.

[0110] After the reconstruction of the original coordinates is complete, this operation returns to step S501.

[0111] Figure 6 is a flowchart showing an example of the location information prediction process in step S506.

[0112] As shown in Figure 6, in step S601, the tree synthesis unit 2020 determines whether to use the predictor list for predictor calculation.

[0113] For example, the tree synthesis unit 2020 can refer to the value of ptree_ang_azimuth_scaling_enabled to determine whether to use the predictor list in the predictor calculation.

[0114] If it is determined that the predictor list should be used, this process proceeds to step S602; otherwise, this process proceeds to step S603.

[0115] In step S602, the tree synthesis unit 2020 calculates a predictor using the predictor list and predicts the location information.

[0116] In this process, the tree synthesis unit 2020 may obtain the location information assigned to the decoded predictor index from the predictor list, which is held as the predictor list of decoded nodes.

[0117] Alternatively, the tree synthesis unit 2020 may use the position information of the parent node of the node to be decoded as a predictor, based on the decoded predictor index.

[0118] The tree synthesis unit 2020 calculates a predictor and then uses that predictor to calculate predicted location information. A specific example of the process for calculating these predicted values ​​will be described later.

[0119] Once the prediction of such location information is complete, this process proceeds to step S604 and terminates.

[0120] In step S603, the tree synthesis unit 2020 selects a predictor to use from among multiple predictors calculated using a tree structure, based on the decoded predictor mode, and uses that predictor as the predicted value of the location information.

[0121] For example, the tree synthesis unit 2020 may select a mode to use from among a no-prediction mode, a mode that predicts based only on the parent node of the node to be processed, a mode that predicts based on the parent node and its parent node, and a mode that predicts based on the parent node and its parent node's parent node, based on the decoded predictor mode. Specifically, for example, the tree synthesis unit 2020 can implement such processing using the method described in Non-Patent Document 1.

[0122] After the prediction of such location information is completed, this process proceeds to step S604 and terminates.

[0123] Figure 7 is a flowchart showing an example of the location information prediction process using the reservation list in step S602.

[0124] As shown in Figure 7, in step S701, the tree synthesis unit 2020 decodes the predictor index. The predictor index will be used in the predictor selection described later.

[0125] After the decoding of the predictor index is complete, the operation proceeds to step S702.

[0126] In step S702, the tree synthesis unit 2020 determines whether to use a predictor based on the coordinate values ​​of the parent node of the node to be decoded and the coordinate values ​​of the parent node's parent node.

[0127] For example, the tree synthesis unit 2020 can refer to the aforementioned ptree_ang_linear_predictor_enabled_flag to determine whether or not to use such a predictor.

[0128] Furthermore, the tree synthesis unit 2020 may determine whether or not to use a particular predictor based on whether or not the decoded predictor index is a specific predictor index.

[0129] For example, the tree synthesis unit 2020 may decide to use a predictor if the decoded predictor index is "0", and not to use a predictor if the decoded predictor index is anything other than "0".

[0130] If it is determined that such a predictor should be used, this operation proceeds to step S703; if it is determined that such a predictor should not be used, this operation proceeds to step S704.

[0131] In step S703, the tree synthesis unit 2020 decodes the prediction mode. This prediction mode will be used in the selection of the predictor described later. After the decoding of this prediction mode is completed, the operation proceeds to step S704.

[0132] In step S704, the tree synthesis unit 2020 selects a predictor.

[0133] Here, the tree synthesis unit 2020 selects a predictor using the predictor index decoded in step S702 and the prediction mode decoded in step S703.

[0134] For example, the tree synthesis unit 2020 may select such predictors in the manner described in step S902 below.

[0135] The tree synthesis unit 2020 may assign a different index number to such predictor index or prediction mode; for example, predictor index "1" may be used as such predictor.

[0136] For example, the tree synthesis unit 2020 may obtain a predictor corresponding to the decoded predictor index mentioned above from the decoded node position information held as a predictor list, as a predictor other than a linear predictor.

[0137] Furthermore, the tree synthesis unit 2020 may use the position information of the parent node of the node to be processed as a predictor other than a linear predictor, based on the decoded predictor index.

[0138] After the selection of such predictors is complete, this operation proceeds to step S705.

[0139] In step S705, the tree synthesis unit 2020 calculates the predicted values.

[0140] Specifically, the tree synthesis unit 2020 retrieves the predictor corresponding to the decoded predictor index from the predictor list, and calculates the predicted value based on the retrieved predictor. This predictor includes the azimuth and radius of the already decoded node.

[0141] The tree synthesis unit 2020 can calculate such a predictor, for example, using the method described in Non-Patent Document 2, based on information obtained by adding the decoded laser ID of the parent node of the node to be processed to the azimuth angle and radius of already decoded nodes.

[0142] After the recalculation of the predictor is complete, this operation proceeds to step S706.

[0143] In step S706, the tree synthesis unit 2020 updates the predictor list. This predictor list stores the decoded radius and azimuth angle as predictors.

[0144] Specifically, the tree synthesis unit 2020 updates the predictor list by storing the decoded radius and azimuth angle at index 0 of the predictor list.

[0145] Alternatively, if the decoded prediction mode is a predictor, the tree synthesis unit 2020 may store the predictor used for the prediction at index 0 of the predictor list.

[0146] Here, the tree synthesis unit 2020 can perform updates to the index from the first element onward using, for example, the method described in Non-Patent Document 2.

[0147] After the update of the predictor list is complete, this operation proceeds to step S707 and terminates.

[0148] As described above, the tree synthesis unit 2020 may be configured to decode the predictor index and predictor mode, select a predictor using the decoded predictor index and predictor mode, and use it for prediction.

[0149] This configuration improves prediction performance, resulting in smaller radius residuals and thus improved coding efficiency.

[0150] Figure 8 is a flowchart showing an example of the location information prediction process using the predictor list in step S602.

[0151] As shown in Figure 8, in step S801, the tree synthesis unit 2020 decodes the predictor index. This predictor index is used in the predictor selection described later.

[0152] After the decoding of the predictor index is complete, the operation proceeds to step S802.

[0153] In step S802, the tree synthesis unit 2020 determines whether to use a predictor based on the coordinate values ​​of the parent node of the node to be processed and the coordinate values ​​of the parent node's parent node.

[0154] For example, the tree synthesis unit 2020 can refer to the ptree_ang_linear_predictor_enabled_flag to determine whether to use such a predictor.

[0155] If it is determined that such a predictor should be used, this operation proceeds to step S803; if it is determined that such a predictor should not be used, this operation proceeds to step S804.

[0156] In step S803, the tree synthesis unit 2020 selects such predictors.

[0157] In this process, the tree synthesis unit 2020 selects a linear predictor or a non-linear predictor based on the decoded predictor index. The specifics will be described later.

[0158] Once the selection of such predictors is complete, this operation proceeds to step S805.

[0159] In step S804, the tree synthesis unit 2020 selects a predictor other than a linear predictor.

[0160] Specifically, the tree synthesis unit 2020 may obtain the location information of the decoded nodes that corresponds to the decoded predictor index from the decoded node location information held as the predictor list.

[0161] Alternatively, the tree synthesis unit 2020 may use the position information of the parent node of the node to be processed as a predictor, based on the decoded predictor index.

[0162] After the selection of such predictors is complete, this operation proceeds to step S805.

[0163] In step S805, the tree synthesis unit 2020 calculates the predicted values.

[0164] Specifically, the tree synthesis unit 2020 retrieves the predictor corresponding to the decoded predictor index from the predictor list and calculates the predicted value based on the retrieved predictor. This predictor includes the azimuth and radius of the already decoded node.

[0165] The tree synthesis unit 2020 can calculate the predictor, for example, using the method described in Non-Patent Document 2, based on information obtained by adding the decoded laser ID of the parent node of the node to be processed to the azimuth angle and radius of already decoded nodes.

[0166] After the recalculation of the predictor is complete, this operation proceeds to step S806.

[0167] In step S806, the tree synthesis unit 2020 updates the predictor list. This predictor list stores the decoded radius and azimuth angle as predictors.

[0168] The tree synthesis unit 2020 determines whether the radius residual is greater than or equal to a threshold, and updates the predictor list accordingly. The details will be described later.

[0169] After the update of the predictor list is complete, this operation proceeds to step S807 and terminates.

[0170] As described above, the tree synthesis unit 2020 may be configured to decode the predictor index, select a predictor based on the decoded predictor index, and use it for prediction.

[0171] This configuration improves prediction performance, resulting in smaller radius residuals and thus improved coding efficiency.

[0172] Figure 9 is a flowchart showing an example of the predictor selection process, including the linear predictor, in step S803.

[0173] As shown in Figure 9, in step S901, the tree synthesis unit 2020 determines whether the decoded predictor index is the index of the linear predictor.

[0174] For example, if the index of a linear predictor is defined as "1", and the index of the decoded predictor is "1", the tree synthesis unit 2020 determines that the index of the decoded predictor is the index of the linear predictor.

[0175] The index of such a linear predictor may be assigned a number other than "1".

[0176] If the decoded predictor index is determined to be the index of the linear predictor, this operation proceeds to step S902; otherwise, this operation proceeds to step S903.

[0177] In step S902, the tree synthesis unit 2020 selects a linear predictor.

[0178] The tree synthesis unit 2020 may use the position information P_0=(r_0,φ_0) of the parent node of the node to be processed and the position information P_1=(r_0,φ_1) of the parent node of that parent node to set the linear predictor P_(pred_linear)=(r_0,φ_1) to P_(pred_linear)=P_0+(P_0-P_1). Here, r represents the radius and φ represents the azimuth angle.

[0179] Alternatively, the tree synthesis unit 2020 may calculate only the radius r_(pred_linear) of the linear predictor P_(pred_linear)=(r_(pred_linear),φ_(pred_linear)) as r_(pred_linear)=r_0-r_1, and for the azimuth angle φ_(pred_linear), it may set φ_(pred_linear)=φ_0.

[0180] After the selection of such linear predictors is complete, this operation terminates.

[0181] In step S903, the tree synthesis unit 2020 selects a predictor other than a linear predictor.

[0182] For example, the tree synthesis unit 2020 may obtain the location information of the decoded nodes that corresponds to the decoded predictor index from the decoded node location information held as the predictor list.

[0183] Alternatively, the tree synthesis unit 2020 may use the position information of the parent node of the node to be processed as a predictor, based on the decoded predictor index.

[0184] After the selection of predictors other than the linear predictor is complete, this operation proceeds to step S904 and terminates.

[0185] As described above, the tree synthesis unit 2020 may be configured to decode the predictor index, and if the decoded predictor index is an index assigned to a linear predictor, select the linear predictor and use it for prediction.

[0186] This configuration improves prediction performance, resulting in smaller radius residuals and thus improved coding efficiency.

[0187] Figure 10 is a flowchart showing an example of the predictor selection process, including the linear predictor, in step S803.

[0188] As shown in Figure 10, in step S1001, the tree synthesis unit 2020 determines whether or not to assign the linear predictor to predictor index 0.

[0189] Specifically, the tree synthesis unit 2020 refers to the linear predictor usage flag list and makes such a determination based on the linear predictor usage history of the decoded nodes.

[0190] For example, if a linear predictor is used in the parent node of the node to be processed, the tree synthesis unit 2020 may set the linear predictor to predictor index 0.

[0191] The linear predictor usage flag list mentioned above is updated in the process described later. This linear predictor usage flag list is a list that holds a flag indicating whether or not a linear predictor was used for each decoded node.

[0192] If it is determined that the parent node used a linear predictor, this operation proceeds to step S1002; otherwise, this operation proceeds to step S1003.

[0193] In step S1002, the tree synthesis unit 2020 determines whether the predictor index is 0 or not. The tree synthesis unit 2020 makes this determination using the decoded predictor index.

[0194] If the predictor index is 0, the process proceeds to step S1004 to select a linear predictor; if the predictor index is not 0, the process proceeds to step S1005 to select a predictor other than a linear predictor.

[0195] In step S1003, the tree synthesis unit 2020 determines whether the predictor index is 1 or not. The tree synthesis unit 2020 makes this determination using the decoded predictor index.

[0196] If the predictor index is 1, the process proceeds to step S1004 to select a linear predictor; if the predictor index is not 0, the process proceeds to step S1005 to select a predictor other than a linear predictor.

[0197] In step S1004, the tree synthesis unit 2020 selects a linear predictor.

[0198] The tree synthesis unit 2020 may use the position information P_0=(r_0,φ_0) of the parent node of the node to be processed and the position information P_1=(r_0,φ_1) of the parent node of that parent node to set the linear predictor P_(pred_linear)=(r_0,φ_1) to P_(pred_linear)=P_0+(P_0-P_1). Here, r represents the radius and φ represents the azimuth angle.

[0199] Alternatively, the tree synthesis unit 2020 may calculate only the radius r_(pred_linear) of the linear predictor P_(pred_linear)=(r_(pred_linear),φ_(pred_linear)) as r_(pred_linear)=r_0-r_1, and for the azimuth angle φ_(pred_linear), it may set φ_(pred_linear)=φ_0.

[0200] After the selection of such linear predictors is complete, this operation proceeds to step S1006.

[0201] In step S1005, the tree synthesis unit 2020 selects a predictor other than a linear predictor.

[0202] For example, the tree synthesis unit 2020 may obtain the location information of the decoded nodes that corresponds to the decoded predictor index from the decoded node location information held as the predictor list.

[0203] Alternatively, the tree synthesis unit 2020 may use the position information of the parent node of the node to be processed as a predictor, based on the decoded predictor index.

[0204] After the selection of such predictors is complete, this operation proceeds to step S1006.

[0205] In step S1006, the tree synthesis unit 2020 updates the linear predictor usage flag list.

[0206] In this process, the tree synthesis unit 2020 updates the linear predictor usage flag list with the index of the node to be decoded and a flag indicating whether a linear predictor was used.

[0207] In the process of updating the linear predictor usage flag list, the tree synthesis unit 2020 updates a flag indicating whether a linear predictor was used in the node that was decoded this time.

[0208] This linear predictor usage flag list is used in step S1001 to determine whether or not to assign the linear predictor to reserved index 0.

[0209] After the update of the linear predictor usage flag list is complete, this operation proceeds to step S1007 and terminates.

[0210] As described above, the tree synthesis unit 2020 may be configured to decode the predictor index, determine the index of the linear predictor using the linear predictor usage flag list, and then select a linear predictor based on the determined linear predictor index and the decoded predictor index for use in prediction.

[0211] This configuration improves prediction performance, resulting in smaller radius residuals and allowing the predictor index of the linear predictor to be assigned to a situation-appropriate number, thereby improving coding efficiency.

[0212] Figure 11 is a flowchart showing an example of the predictor list update process in step S806.

[0213] As shown in Figure 11, in step S1101, the tree synthesis unit 2020 determines whether the absolute value of the spherical coordinate residual decoded in step S504 is greater than a threshold.

[0214] The tree synthesis unit 2020 may use, for example, the value set in ptree_ang_pred_list_radius_resid_threshold as such a threshold.

[0215] If it is determined that the absolute value of the spherical coordinate residual is less than the threshold, the process proceeds to step S1102. If it is determined that the absolute value of the spherical coordinate residual is greater than the threshold, the process proceeds to step 1103.

[0216] In step S1102, the tree synthesis unit 2020 partially updates the predictor list.

[0217] Specifically, the tree synthesis unit 2020 uses the number of the predictor index used as j, and stores the predictor index numbers 1 to j-1 that exist in the reserved list, incrementing them by 1, in the predictor list.

[0218] After this storage is complete, the operation proceeds to step S1104.

[0219] In step S1103, the tree synthesis unit 2020 updates the entire predictor list.

[0220] Specifically, the tree synthesis unit 2020 increments each predictor index number by 1 and stores them in the predictor list.

[0221] After this storage is complete, the operation proceeds to step S1104.

[0222] In step S1104, the tree synthesis unit 2020 stores the location information of the node to be decoded in the predictor list.

[0223] Specifically, for example, the tree synthesis unit 2020 may store the radius and azimuth angle from the position information reconstructed in step S506 as the 0th and 1st indices of the predictor list.

[0224] Alternatively, if the tree synthesis unit 2020 selects a linear predictor in step S803, it may store the selected linear predictor as the first element in the predictor list.

[0225] After this storage is complete, the operation proceeds to step S1105 and terminates.

[0226] Figure 12 is a flowchart showing an example of the spherical residual decoding process in step S504.

[0227] As shown in Figure 12, in step S1201, the tree synthesis unit 2020 decodes the residuals of the radius, azimuth angle, and laser ID.

[0228] After the decoding is complete, the operation proceeds to step S1202.

[0229] In step S1202, the tree synthesis unit 2020 decodes the residual of the azimuth step number.

[0230] Here, the azimuth step number is the difference between the azimuth angle of the predictor selected in Angular mode and the actual azimuth angle, divided by the laser's rotation speed.

[0231] The rotational speed of the laser may be calculated by referring to the value of ptree_ang_azimuth_step_minus1 and using the method described in Non-Patent Document 1.

[0232] The azimuth step count is a value calculated by the point cloud coding device 100. The point cloud decoding device 200 may decode the residual with the predicted value described above, or it may reconstruct the azimuth step count by adding it to the predicted value of the azimuth step count calculated in the process described later.

[0233] After the decoding is complete, the process proceeds to step S1203 and terminates.

[0234] Figure 13 is a flowchart showing an example of the location information prediction process in step S505.

[0235] As shown in Figure 13, in step S1301, the tree synthesis unit 2020 determines whether to use the predictor list for predictor calculation.

[0236] For example, the tree synthesis unit 2020 can refer to the value of ptree_ang_azimuth_scaling_enabled to determine whether to use the predictor list in the predictor calculation.

[0237] If it is determined that the predictor list should be used, this operation proceeds to step S1302; if it is determined that the predictor list should not be used, this operation proceeds to step S1303.

[0238] In step S1302, the tree synthesis unit 2020 selects a predictor using the predictor list.

[0239] In this process, the tree synthesis unit 2020 may obtain from the list of decoded node position information held as a predictor list the one that corresponds to the decoded predictor index.

[0240] Alternatively, the tree synthesis unit 2020 may use the position information of the parent node of the node to be processed as a predictor, based on the decoded predictor index.

[0241] Once the selection of such predictors is complete, this operation proceeds to step S1304.

[0242] In step S1303, the tree synthesis unit 2020 selects a predictor to use from among multiple predictors calculated using a tree structure, based on the decoded predictor mode, and uses that predictor as the predicted value of the location information.

[0243] For example, the tree synthesis unit 2020 may select a mode to use from among a no-prediction mode, a mode that predicts based only on the parent node of the node to be processed, a mode that predicts based on the parent node and its parent node, and a mode that predicts based on the parent node and its parent node's parent node, based on the decoded predictor mode.

[0244] Specifically, for example, the tree synthesis unit 2020 can perform such processing using the method described in Non-Patent Document 1.

[0245] After the selection of such predictors is complete, this operation proceeds to step S1304.

[0246] In step S1304, the tree synthesis unit 2020 calculates a predicted value for the azimuth step number.

[0247] The tree synthesis unit 2020 may, for example, use a laser ID to calculate a predicted value for the number of azimuth steps.

[0248] Specifically, the tree synthesis unit 2020 may calculate a predicted value for the azimuth step count using a value given according to the laser ID. Alternatively, the tree synthesis unit 2020 may record the azimuth step count for each laser ID and calculate a predicted value for the azimuth step count using the average or median of these azimuth step counts. Alternatively, the tree synthesis unit 2020 may calculate a predicted value for the azimuth step count using the pattern of the most recently decoded azimuth step count. Specific details will be described later.

[0249] Alternatively, the tree synthesis unit 2020 may define multiple methods for calculating predicted values ​​as separate predictors, select a predictor for each point or laser ID, and calculate the predicted values ​​based on the method defined by the selected predictor.

[0250] After the calculation of the predicted number of azimuth steps is completed, this operation proceeds to step S1305.

[0251] In step S1305, the tree synthesis unit 2020 reconstructs the azimuth step count.

[0252] Specifically, the tree synthesis unit 2020 reconstructs the azimuth step count by adding the residual of the decoded azimuth step count to the predicted value of the predicted azimuth step count.

[0253] After this reconstruction is complete, the operation proceeds to step S1306.

[0254] In step S1306, the tree synthesis unit 2020 calculates the predicted values.

[0255] Specifically, the tree synthesis unit 2020 retrieves the predictor corresponding to the decoded predictor index from the predictor list, and calculates the predicted value based on the retrieved predictor. This predictor includes the azimuth and radius of the already decoded node.

[0256] The tree synthesis unit 2020 can perform predictor calculations, for example, using the method described in Non-Patent Document 2, based on information obtained by adding the decoded laser ID of the parent node of the node to be processed to the azimuth angle and radius of already decoded nodes.

[0257] After the calculation by the predictor is completed, this operation proceeds to step S1307 and terminates.

[0258] As described above, the tree synthesis unit 2020 may be configured to calculate a predicted value for the number of azimuth steps, predict the number of azimuth steps, decode the residual for the number of azimuth steps, and reconstruct the number of azimuth steps by adding the residual to the predicted value.

[0259] This configuration allows only the residual of the azimuth step count to be decoded, thereby improving coding efficiency.

[0260] Figure 14 is a flowchart showing an example of the process for calculating the predicted number of azimuth steps in step S1304.

[0261] As shown in Figure 14, in step S1401, the tree synthesis unit 2020 determines whether the number of decoded nodes is greater than N+1.

[0262] If it is determined that there are fewer than N+1 items, the operation proceeds to step S1402. If it is determined that there are N+1 or more items, the operation proceeds to step S1403.

[0263] In step S1402, the tree synthesis unit 2020 obtains a predicted value for the azimuth step number.

[0264] Specifically, the tree synthesis unit 2020 traces back N recently decoded nodes from the decoded azimuth step count list, obtains them as a pattern of azimuth step counts, and retrieves predicted values ​​corresponding to the obtained azimuth step count pattern from the azimuth step count prediction value table.

[0265] The decoded azimuth step count list is a list that holds the number of decoded azimuth steps for each decoded node.

[0266] The azimuth step count prediction value table stores multiple pairs of N patterns of azimuth step counts and the corresponding predicted values ​​for those patterns.

[0267] Furthermore, the tree synthesis unit 2020 may use the value of ptree_ang_max_qphi_table_pattern as the number N.

[0268] The tree synthesis unit 2020 updates the decoded azimuth step count list and the azimuth step count prediction value table in the processing described below.

[0269] After the acquisition of these predicted values ​​is complete, the process proceeds to step S1405.

[0270] In step S1403, the tree synthesis unit 2020 obtains a predicted value from the decoded azimuth step number list.

[0271] If the number of decoded nodes is less than N+1, the azimuth step count prediction table does not yet contain any patterns greater than or equal to N, so the tree synthesis unit 2020 retrieves the prediction value from the decoded azimuth step count list.

[0272] For example, the tree synthesis unit 2020 may obtain the azimuth step number of the most recently decoded node and use it as the predicted value mentioned above.

[0273] After the acquisition of these predicted values ​​is complete, the process proceeds to step S1404.

[0274] In step S1404, the tree synthesis unit 2020 determines whether the number of decoded nodes is greater than N.

[0275] If it is determined to be greater than N, this operation proceeds to step S1405. If it is determined to be less than N, this operation proceeds to step S1406.

[0276] In step S1405, the tree synthesis unit 2020 updates the azimuth step number prediction value table.

[0277] In such processing, when the pattern of the most recent N decoded azimuth step numbers does not exist in the azimuth step number prediction value table, the tree synthesis unit 2020 updates such a pattern and the azimuth step number of the decoding target node as prediction values. On the other hand, when the pattern of the most recent N decoded azimuth step numbers exists in the azimuth step number prediction value table, the tree synthesis unit 2020 updates the prediction value corresponding to such a pattern. Specifically, it will be described later.

[0278] After the update of the azimuth step number prediction value table is completed, this operation proceeds to step S1406.

[0279] In step S1406, the tree synthesis unit 2020 updates the decoded azimuth step number list.

[0280] Specifically, the tree synthesis unit 2020 updates the index and azimuth step number of the node decoded this time in order to hold the azimuth step number decoded at each decoded node.

[0281] After the update of such a decoded azimuth step number list is completed, this operation proceeds to step S1407 and the process ends.

[0282] FIG. 15 is a flowchart showing an example of the update process of the azimuth step number prediction value table in step S1405.

[0283] As shown in FIG. 15, in step S1501, the tree synthesis unit 2020 acquires the most recent N decoded azimuth step numbers from the decoded azimuth step number list.

[0284] The tree synthesis unit 2020 uses the acquired N azimuth step counts as a set of patterns in the processing described later.

[0285] After this acquisition is complete, the operation proceeds to step S1502.

[0286] In step S1502, the tree synthesis unit 2020 determines whether the pattern of the most recent decoded azimuth step number obtained in step S1501 exists in the azimuth predictor table.

[0287] If it is determined that the item does not exist, the operation proceeds to step S1503. If it is determined that the item does exist, the operation proceeds to step S1504.

[0288] In step S1503, the tree synthesis unit 2020 adds the above-mentioned patterns and predicted values ​​to the azimuth predictor table.

[0289] Specifically, the tree synthesis unit 2020 uses the pattern of azimuth step numbers obtained in step S1502 and the predicted number of azimuth step numbers decoded in the node to be decoded in this case as the predicted values, and adds these patterns and predicted values ​​as pairs.

[0290] After such additions are completed, the operation proceeds to step S1505 and terminates.

[0291] In step 1504, the tree synthesis unit 2020 updates the predicted values ​​in the azimuth predictor table.

[0292] Specifically, the tree synthesis unit 2020 updates the predicted values ​​corresponding to the patterns of azimuth step numbers obtained in step S1502 that exist on the azimuth predictor table.

[0293] The tree synthesis unit 2020 may, for example, update the number of azimuth steps decoded in the node to be decoded this time as a predicted value, or it may keep the past predicted values ​​for patterns of azimuth step numbers as history and update the predicted value with the average or median of such predicted values.

[0294] Furthermore, the tree synthesis unit 2020 may create and update the azimuth angle predictor table independently for each laser ID.

[0295] After such updates are complete, the process proceeds to step S1505 and terminates.

[0296] (Point cloud encoding device 100) The point cloud coding device 100 according to this embodiment will be described below with reference to Figure 16. Figure 16 is a diagram showing an example of the functional blocks of the point cloud coding device 100 according to this embodiment.

[0297] As shown in Figure 16, the point cloud coding device 100 includes a coordinate transformation unit 1010, a geometric information quantization unit 1020, a tree analysis unit 1030, an approximate surface analysis unit 1040, a geometric information coding unit 1050, a geometric information reconstruction unit 1060, a color conversion unit 1070, an attribute transfer unit 1080, a RAHT unit 1090, a LoD calculation unit 1100, a lifting unit 1110, an attribute information quantization unit 1120, an attribute information coding unit 1130, and a frame buffer 1140.

[0298] The coordinate transformation unit 1010 is configured to perform a transformation process from the 3D coordinate system of the input point cloud to any different coordinate system. The coordinate transformation may be performed, for example, by rotating the input point cloud to transform the x, y, and z coordinates of the input point cloud into arbitrary s, t, and u coordinates. Alternatively, as one variation of the transformation, the coordinate system of the input point cloud may be used as is.

[0299] The geometric information quantization unit 1020 is configured to perform quantization of the position information of the input point cloud after coordinate transformation and removal of points with overlapping coordinates. When the quantization step size is 1, the position information of the input point cloud coincides with the quantized position information. That is, when the quantization step size is 1, it is equivalent to the case where quantization is not performed.

[0300] The tree analysis unit 1030 is configured to generate an occupancy code indicating in which node of the encoding target space a point exists based on the tree structure described later, with the position information of the quantized point cloud as input.

[0301] In this process, the tree analysis unit 1030 is configured to generate a tree structure by recursively dividing the encoding target space into rectangular parallelepipeds.

[0302] Here, when there is a point in a certain rectangular parallelepiped, a tree structure can be generated by recursively executing the process of dividing such a rectangular parallelepiped into a plurality of rectangular parallelepipeds until the rectangular parallelepiped reaches a predetermined size. Each such rectangular parallelepiped is called a node. Also, each rectangular parallelepiped generated by dividing a node is called a child node, and the occupancy code is a representation of whether a point is included in the child node as 0 or 1.

[0303] As described above, the tree analysis unit 1030 is configured to generate an occupancy code while recursively dividing nodes until they reach a predetermined size.

[0304] In this embodiment, a method called "Octree" that always uses a cube as the above-mentioned rectangular parallelepiped and recursively performs octree division, and a method called "QtBt" that performs quadtree division and binary tree division in addition to octree division can be used.

[0305] Here, whether to use "QtBt" is transmitted to the point cloud decoder 200 as control data.

[0306] Alternatively, it may be specified to use predictive geometry coding with an arbitrary tree configuration. In this case, the tree analysis unit 1030 determines the tree structure, and the determined tree structure is transmitted to the point cloud decoder 200 as control data.

[0307] For example, the control data in a tree structure may be configured to be decryptable using the procedure described in Figures 7 and 8.

[0308] The approximate surface analysis unit 1040 is configured to generate approximate surface information using the tree information generated by the tree analysis unit 1030.

[0309] Approximate surface information is used, for example, when decoding 3D point cloud data of an object, in cases where the point cloud is densely distributed on the object's surface. Instead of decoding each individual point cloud, the region where the point cloud exists is approximated and represented by a small plane.

[0310] Specifically, the approximate surface analysis unit 1040 may be configured to generate approximate surface information using a method called "Trisoup," for example. Furthermore, this process can be omitted when decoding sparse point clouds acquired by Lidar or the like.

[0311] The geometric information encoding unit 1050 is configured to encode the syntax of the occupancy code generated by the tree analysis unit 1030 and the approximate surface information generated by the approximate surface analysis unit 1040, and generate a bitstream (geometric information bitstream). Here, the bitstream may include, for example, the syntax described in Figure 4.

[0312] The encoding process is, for example, context-adaptive binary arithmetic encoding. Here, for example, the syntax includes control data (flags and parameters) to control the decoding process of the location information.

[0313] The geometric information reconstruction unit 1060 is configured to reconstruct the geometric information of each point in the point cloud data to be encoded (the coordinate system assumed by the encoding process, i.e., the position information after the coordinate transformation in the coordinate transformation unit 1010) based on the tree information generated by the tree analysis unit 1030 and the approximate surface information generated by the approximate surface analysis unit 1040.

[0314] The frame buffer 1140 is configured to take the geometric information reconstructed by the geometric information reconstruction unit 1060 as input and store it as a reference frame.

[0315] The saved reference frames are read from the frame buffer 1140 and used as reference frames when the tree analysis unit 1030 performs interval prediction of frames that are different in time.

[0316] Here, the choice of which time reference frame to use for each frame may be determined, for example, based on the value of a cost function representing coding efficiency, and information about the reference frame to be used may be transmitted to the point cloud decoder 200 as control data.

[0317] The color conversion unit 1070 is configured to perform color conversion if the input attribute information is color information. Color conversion is not always necessary; whether or not the color conversion process is performed is encoded as part of the control data and transmitted to the point cloud decoder 200.

[0318] The attribute transfer unit 1080 is configured to correct attribute values ​​so as to minimize distortion of attribute information, based on the position information of the input point cloud, the position information of the point cloud after reconstruction by the geometric information reconstruction unit 1060, and the attribute information after color change by the color conversion unit 1070. For example, the method described in Non-Patent Document 1 can be applied as a specific correction method.

[0319] The RAHT unit 1090 is configured to take the attribute information after the attribute transfer by the attribute transfer unit 1080 and the geometric information reconstruction unit 1060 as input, and generate residual information for each point using a type of Haar transform called RAHT (Region Adaptive Hierarchical Transform). As for the specific processing of RAHT, for example, the method described in Non-Patent Document 1 above can be used.

[0320] The LoD calculation unit 1100 is configured to take geometric information generated by the geometric information reconstruction unit 1060 as input and generate LoD (Level of Detail).

[0321] LoD (Level of Data) is information used to define reference relationships (referring points and referenced points) for implementing predictive coding, which involves predicting the attribute information of one point from the attribute information of another point and then encoding or decoding the prediction residual.

[0322] In other words, LoD is information that defines a hierarchical structure in which each point included in geometric information is classified into multiple levels, and the attributes of points belonging to lower levels are encoded or decoded using the attribute information of points belonging to higher levels.

[0323] As for a specific method for determining the LoD, for example, the method described in Non-Patent Document 1 above may be used.

[0324] The lifting unit 1110 is configured to generate residual information through a lifting process using the LoD generated by the LoD calculation unit 1100 and the attribute information after attribute transfer in the attribute transfer unit 1080.

[0325] As for the specific lifting process, for example, the method described in Non-Patent Document 1 above may be used.

[0326] The attribute information quantization unit 1120 is configured to quantize the residual information output from the RAHT unit 1090 or the lifting unit 1110. Here, when the quantization step size is 1, it is equivalent to not performing quantization.

[0327] The attribute information encoding unit 1130 is configured to encode the quantized residual information output from the attribute information quantization unit 1120 as syntax, and to generate a bitstream related to attribute information (attribute information bitstream).

[0328] The encoding process is, for example, context-adaptive binary arithmetic encoding. Here, for example, the syntax includes control data (flags and parameters) to control the decoding process of attribute information.

[0329] The point cloud encoding device 100 is configured to perform encoding processing on the positional information and attribute information of each point in the point cloud as input, and to output a geometric information bitstream and an attribute information bitstream.

[0330] Furthermore, the point cloud coding device 100 and point cloud decoding device 200 described above may be implemented as programs that cause a computer to execute each function (each process).

[0331] In the above embodiments, the present invention was described using the application to a point cloud coding device 100 and a point cloud decoding device 200 as an example. However, the present invention is not limited to such examples and can be similarly applied to a point cloud coding / decoding system equipped with the functions of the point cloud coding device 100 and the point cloud decoding device 200. [Industrial applicability]

[0332] Furthermore, according to this embodiment, for example, it is possible to achieve an overall improvement in service quality in video communication, thereby contributing to Goal 9 of the United Nations-led Sustainable Development Goals (SDGs), "Build resilient infrastructure, promote sustainable industrialization and foster innovation." [Explanation of symbols]

[0333] 10…Point cloud processing system 100...Point cloud encoding device 1010... Coordinate transformation section 1020...Geometric information quantization section 1030...Tree Analysis Unit 1040…Approximate surface analysis section 1050...Geometric information encoding unit 1060...Geometric information reconstruction unit 1070...Color conversion unit 1080... Attribute Transfer Section 1090...RAHT Department 1100...LoD calculation unit 1110... Lifting Section 1120...Attribute information quantization section 1130...Attribute information encoding unit 1140... Frame buffer 200... Point cloud decoder 2010...Geometric Information Decoding Unit 2020... Tree Composition Section 2030…Approximate surface synthesis part 2040...Geometric information reconstruction unit 2050... Inverse coordinate transformation section 2060... Attribute Information Decoding Unit 2070...Inverse quantization section 2080…RAHT Department 2090...LoD calculation unit 2100... Reverse lifting section 2110... Reverse color conversion unit 2120... Frame buffer

Claims

1. A point cloud decoder, A point cloud decoder characterized by comprising a tree synthesis unit that performs linear prediction using a predictor obtained from a predictor list storing the radius and azimuth of decoded nodes in Angular mode and adaptive azimuth quantization mode.

2. The point cloud decoding device according to claim 1, characterized in that the tree synthesis unit obtains a predictor from the predictor list based on the coordinate values ​​of the parent node of the node to be processed and the coordinate values ​​of the parent node's parent node.

3. The point cloud decoding device according to claim 2, characterized in that the tree synthesis unit selects the predictor based on the decoded predictor index and predictor mode.

4. The point cloud decoding device according to claim 2, characterized in that the tree synthesis unit selects the predictor based on the decoded predictor index.

5. The point cloud decoding device according to claim 4, characterized in that the tree synthesis unit selects a predictor corresponding to the predictor index as the predictor.

6. The aforementioned tree synthesis unit, The index of the predictor is determined using the linear predictor usage flag list. The point cloud decoding device according to claim 4, characterized in that the predictor is selected based on the determined predictor index and the predictor index.

7. The aforementioned tree synthesis unit, Determine whether the parent node used the predictor, The point cloud decoding device according to claim 6, characterized in that it selects the predictor based on the determination result and the predictor index.

8. The point cloud decoding device according to claim 1, characterized in that the tree synthesis unit updates the predictor list based on the absolute value of the decoded spherical coordinate residual.

9. A point cloud decoding method, A point cloud decoding method characterized by comprising the steps of performing linear prediction using a predictor obtained from a list of predictors storing the radius and azimuth of a decoded node, in Angular mode and adaptive azimuth quantization mode.

10. A program that makes a computer function as a point cloud decoder, The point cloud decoding device is, A program characterized by comprising a tree synthesis unit that performs linear prediction using a predictor obtained from a predictor list containing the radius and azimuth of decoded nodes, in Angular mode and adaptive azimuth quantization mode.