Point group decoding device, point group decoding method and program
Patent Information
- Application Number
- JP2024095955
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2024-06-13
- Publication Date
- 2025-03-26
- Estimated Expiration
- 2040-09-29
AI Technical Summary
【0009】 本発明によれば、不要なシンタックスの復号を省略し、ビット量を削減することができる点群復号装置、点群復号方法及びプログラムを提供することができる。
Smart Images

Figure 0007651762000001 
Figure 0007651762000002 
Figure 0007651762000003
Abstract
Description
[Technical field]
[0001] The present invention relates to a point group decoding device, a point group decoding method, and a program. [Background technology]
[0002] Non-Patent Document 1 discloses a technique for searching for a nearest node using a buffer when decoding information related to the planar mode. [Prior art documents] [Non-patent literature]
[0003] [Non-Patent Document 1] G-PCC Future Enhancement, ISO / IEC / JTC1 / SC29 / WG11 N19328 Summary of the Invention [Problem to be solved by the invention]
[0004] However, in Non-Patent Document 1, there was a problem in that a flag that controls whether or not to perform a nearest node search using a buffer was decoded when decoding information related to the planar mode, regardless of whether or not the planar mode was used.
[0005] Therefore, the present invention has been made in consideration of the above-mentioned problems, and aims to provide a point group decoding device, a point group decoding method, and a program that can omit decoding of unnecessary syntax and reduce the amount of bits. [Means for solving the problem]
[0006] A first feature of the present invention is a point cloud decoding device comprising a geometric information decoding unit configured to decode a syntax that specifies a sample interval for each LoD level from a bitstream, and the value of the syntax is defined as the actual sample interval minus 2, and is therefore equal to or less than the maximum number of points included in one data unit minus 2.
[0007] A second feature of the present invention is a point cloud decoding method, comprising the steps of: decoding a syntax that specifies a sample interval for each LoD level from a bitstream; and setting a value of the syntax to be equal to or less than a value obtained by subtracting 2 from the maximum number of points included in one data unit, when the value is defined as the actual sample interval minus 2.
[0008] A third feature of the present invention is a program for use in a point cloud decoding device, comprising the steps of: causing a computer to decode from a bitstream a syntax that specifies a sample interval for each LoD level; and setting a value of the syntax to be equal to or less than a value obtained by subtracting 2 from the maximum number of points included in one data unit, when the value is defined as the actual sample interval minus 2. Effect of the Invention
[0009] According to the present invention, it is possible to provide a point group decoding device, a point group decoding method, and a program that can omit decoding of unnecessary syntax and reduce the amount of bits. [Brief description of the drawings]
[0010] [Figure 1] FIG. 1 is a diagram illustrating an example of a configuration of a point cloud processing system 10 according to an embodiment. [Diagram 2] FIG. 2 is a diagram illustrating an example of functional blocks of a point group decoding device 200 according to an embodiment. [Diagram 3] 1 shows an example of the configuration of encoded data (bit stream) received by a geometric information decoding unit 2010 of a point cloud decoding device 200 according to an embodiment. [Figure 4]1 is an example of a syntax configuration of GPS2011 according to an embodiment. [Diagram 5] 1 is an example of a syntax configuration of GSH2012A and 2012B according to an embodiment; [Figure 6] 13 is a flowchart showing an example of processing by a tree synthesis unit 2020 of the point group decoding device 200 according to an embodiment. [Figure 7] 13 is an example of the configuration of encoded data (bit stream) received by an attribute information decoding unit 2060 of the point group decoding device 200 according to an embodiment. [Figure 8] 1 is an example of a syntax configuration of SPS2001 according to an embodiment. [Figure 9] 1 is an example of a syntax configuration of APS2061 according to an embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0011] Hereinafter, the 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, 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.
[0012] (First embodiment) A point cloud processing system 10 according to a first embodiment of the present invention will be described below with reference to Figures 1 to 9. Figure 1 is a diagram showing a point cloud processing system 10 according to the embodiment.
[0013] As shown in FIG. 1, a point cloud processing system 10 includes a point cloud encoding device 100 and a point cloud decoding device 200.
[0014] 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.
[0015] The input point cloud signal and the output point cloud signal are composed of position information and attribute information of each point in the point cloud, such as color information and reflectance of each point.
[0016] Here, such a bit stream may be transmitted from the point group encoding device 100 to the point group decoding device 200 via a transmission path. Also, the bit stream may be stored in a storage medium and then provided from the point group encoding device 100 to the point group decoding device 200.
[0017] (Point Cloud Decoding Device 200) Hereinafter, the point group decoding device 200 according to this embodiment will be described with reference to Fig. 2. Fig. 2 is a diagram showing an example of functional blocks of the point group decoding device 200 according to this embodiment.
[0018] As shown in FIG. 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, a RAHT unit 2080, an LoD calculation unit 2090, an inverse lifting unit 2100, and an inverse color transformation unit 2110.
[0019] The geometric information decoding unit 2010 is configured to receive as input a bit stream relating to geometric information (geometric information bit stream) out of the bit streams output from the point group encoding device 100, and to decode the syntax.
[0020] The decoding process is, for example, a context adaptive binary arithmetic decoding process. Here, for example, the syntax includes control data (flags and parameters) for controlling the decoding process of the position information.
[0021] The tree synthesis unit 2020 is configured to receive as input the control data decoded by the geometric information decoding unit 2010 and an occupancy code indicating which node in the tree described below the point group exists in, and generate tree information indicating in which area in the space to be decoded the point exists.
[0022] This process divides the space to be decoded into rectangles, determines whether a point exists in each rectangle by referring to the occupancy code, divides the rectangle in which the point exists into multiple rectangles, and then generates tree information by recursively repeating the process of referring to the occupancy code.
[0023] In this embodiment, a method called "Octree" that always treats the above-mentioned rectangular parallelepiped as a cube and performs octree division recursively, and a method called "QtBt" that performs quadtree division and binary tree division in addition to octree division can be used. Whether or not to use "QtBt" is transmitted from the point cloud encoding device 100 as control data.
[0024] Alternatively, when the use of predictive coding is specified by the control data, the tree synthesis unit 2020 is configured to decode the coordinates of each point based on an arbitrary tree structure determined in the point cloud encoding device 100.
[0025] The approximate surface synthesis unit 2030 is configured to generate approximate surface information using the tree information generated by the tree synthesis unit 2020.
[0026] Approximate surface information is used when, for example, decoding three-dimensional point cloud data of an object, in cases where the point cloud is densely distributed on the object surface, to approximate the area in which the point cloud exists using a small plane, rather than decoding each individual point cloud.
[0027] Specifically, the approximate surface synthesis unit 2030 can generate approximate surface information, for example, by a method called "Trisoup". As a specific process of "Trisoup", for example, the method described in Non-Patent Document 1 can be used. In addition, when decoding a sparse point group acquired by Lidar or the like, this process can be omitted.
[0028] The geometric information reconstruction unit 2040 is configured to reconstruct geometric information (position information in the coordinate system assumed by the decoding process) of each point of 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.
[0029] The inverse coordinate transformation unit 2050 is configured to receive the geometric information reconstructed by the geometric information reconstruction unit 2040 as input, transform the information from the coordinate system assumed by the decoding process to the coordinate system of the output point cloud signal, and output position information.
[0030] The attribute information decoding unit 2060 is configured to receive as input a bit stream relating to attribute information (attribute information bit stream) out of the bit streams output from the point group encoding device 100, and to decode the syntax.
[0031] The decoding process is, for example, a context-adaptive binary arithmetic decoding process. Here, for example, the syntax includes control data (flags and parameters) for controlling the decoding process of the attribute information.
[0032] Moreover, the attribute information decoding unit 2060 is configured to decode the quantized residual information from the decoded syntax.
[0033] 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 a quantization parameter, which is one of the control data decoded by the attribute information decoding unit 2060, to generate inverse quantized residual information.
[0034] The dequantized residual information is output to either the RAHT unit 2080 or the LoD calculation unit 2090 according to the features of the point group to be decoded. Control data decoded by the attribute information decoding unit 2060 specifies which unit the dequantized residual information is output to.
[0035] The RAHT unit 2080 is configured to receive the inverse quantized residual information generated by the inverse quantization unit 2070 and the geometric information generated by the geometric information reconstruction unit 2040 as input, and to decode the attribute information of each point using a type of Haar transform (inverse Haar transform in the decoding process) called RAHT (Region Adaptive Hierarchical Transform). As a specific process of RAHT, for example, the method described in Non-Patent Document 1 can be used.
[0036] The LoD calculation unit 2090 is configured to receive the geometric information generated by the geometric information reconstruction unit 2040 as an input and generate a Level of Detail (LoD).
[0037] LoD is information for defining a reference relationship (a referencing point and a referenced point) to realize predictive coding, such as predicting attribute information of a certain point from attribute information of another point and encoding or decoding the prediction residual.
[0038] In other words, LoD is information that defines a hierarchical structure in which each point contained in geometric information is classified into multiple levels, and attributes of points belonging to lower levels are encoded or decoded using attribute information of points belonging to higher levels.
[0039] As a specific method for determining the LoD, for example, the method described in Non-Patent Document 1 may be used.
[0040] The inverse lifting unit 2100 is configured to decode 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 inverse quantized residual information generated by the inverse quantization unit 2070. As a specific process of inverse lifting, for example, the method described in Non-Patent Document 1 can be used.
[0041] The inverse color conversion unit 2110 is configured to perform inverse color conversion processing on the attribute information output from the RAHT unit 2080 or the inverse lifting unit 2100 when 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 to perform such inverse color conversion processing is determined by the control data decoded by the attribute information decoding unit 2060.
[0042] The point group decoding device 200 is configured to decode and output the attribute information of each point in the point group through the above processing.
[0043] (Geometric Information Decoding Part 2010) The control data decoded by the geometric information decoding unit 2010 will be described below with reference to FIGS.
[0044] FIG. 3 shows an example of the structure of the coded data (bit stream) received by the geometric information decoding unit 2010. In FIG.
[0045] First, the bit stream may include a GPS 2011. The GPS 2011 is also called a geometry parameter set, and is a set of control data related to decoding of geometric information. A specific example will be described later. Each GPS 2011 includes at least GPS ID information for identifying each GPS 2011 when there are multiple GPS 2011s.
[0046] Secondly, the bit stream may include GSH2012A / 2012B. GSH2012A / 2012B is also called a geometry slice header or geometry data unit header, and is a set of control data corresponding to a slice described later. In the following description, the term "slice" is used, but slice can also be read as data unit. A specific example will be described later. GSH2012A / 2012B includes at least GPS id information for specifying GPS2011 corresponding to each GSH2012A / 2012B.
[0047] Thirdly, the bit stream may include slice data 2013A / 2013B following the GSH 2012A / 2012B. The slice data 2013A / 2013B includes data that encodes geometric information. An example of the slice data 2013A / 2013B is an occupancy code, which will be described later.
[0048] As described above, the bit stream is configured such that each slice data 2013A / 2013B corresponds to one GSH 2012A / 2012B and one GPS 2011.
[0049] As described above, since the GPS ID information is used to specify which GPS 2011 to refer to in the GSH 2012A / 2012B, a common GPS 2011 can be used for a plurality of slice data 2013A / 2013B.
[0050] In other words, it is not necessary to transmit the GPS 2011 for each slice. For example, as shown in Fig. 3, the bit stream may be configured such that the GPS 2011 is not coded immediately before the GSH 2012B and the slice data 2013B.
[0051] The configuration in Fig. 3 is merely an example. As long as the GSH 2012A / 2012B and the GPS 2011 correspond to each slice data 2013A / 2013B, elements other than those described above may be added as components of the bit stream. For example, as shown in Fig. 3, the bit stream may include a sequence parameter set (SPS) 2001. Similarly, when transmitting, the bit stream may be shaped into a configuration different from that shown in Fig. 3. Furthermore, the bit stream may be combined with a bit stream decoded by an attribute information decoding unit 2060 (described later) and transmitted as a single bit stream.
[0052] FIG. 4 is an example of the syntax configuration of GPS2011.
[0053] Note that the syntax names described below are merely examples. If the syntax functions described below are similar, the syntax names may be different.
[0054] The GPS 2011 may include GPS ID information (gps_geom_parameter_set_id) for identifying each GPS 2011.
[0055] The Descriptor column in Fig. 4 indicates how each syntax is coded. ue(v) indicates an unsigned zeroth-order exponential Golomb code, and u(1) indicates a 1-bit flag.
[0056] The GPS 2011 may include a flag (geom_tree_type) for controlling whether or not the tree synthesis unit 2020 uses predicitive coding.
[0057] For example, if the value of geom_tree_type is "1", it may be defined that predicitive coding is used, and if the value of geom_tree_type is "0", it may be defined that predicitive coding is not used and "Octree" (including the case when "QtBt" is used) is used instead.
[0058] The GPS 2011 may include a flag (trisoup_enabled_flag) that controls whether or not Trisoup is used in the approximate surface synthesis unit 2030 .
[0059] For example, when the value of trisoup_enabled_flag is "1", it may be defined that Trisoup is used, and when the value of trisoup_enabled_flag is "0", it may be defined that Trisoup is not used.
[0060] When Trisoup is not used, that is, when the value of trisoup_enabled_flag is "0", GPS2011 may additionally include a flag (inferred_direct_coding_mode_enabled_flag) that controls whether or not to use Direct coding mode.
[0061] For example, when the value of inferred_direct_coding_mode_enabled_flag is "1", it may be defined that the Direct coding mode is used, and when the value of inferred_direct_coding_mode_enabled_flag is "0", it may be defined that the Direct coding mode is not used.
[0062] The GPS 2011 may include a flag (geom_tree_coded_axis_list_present_flag) for controlling whether or not the tree synthesis unit 2020 performs “QtBt”.
[0063] For example, if the value of geom_tree_coded_axis_list_present_flag is "1", it may be defined that "QtBt" is performed, and if the value of geom_tree_coded_axis_list_present_flag is "0", it may be defined that only "Octree" is performed.
[0064] Alternatively, if the value of geom_tree_coded_axis_list_present_flag is "1", it can be defined that node shapes other than cubes are also allowed (i.e., "QtBt" is also used), and if the value of geom_tree_coded_axis_list_present_flag is "0", it can be defined that only cubes are allowed as node shapes (i.e., only "Octree" is used).
[0065] Any definition other than the above may be used as long as it controls whether "QtBt" is available.
[0066] The GPS 2011 may include a flag (geometry_planar_mode_flag) that controls whether the tree synthesis unit 2020 uses the planar mode.
[0067] For example, when the value of geometry_planar_mode_flag is "1", it may be defined that planar mode is used, and when the value of geometry_planar_mode_flag is "0", it may be defined that planar mode is not used.
[0068] If geometry_planar_mode_flag is not included, the geometry information decoding unit 2010 may be configured to regard the value of geometry_planar_mode_flag as "0", that is, to regard the planar mode as not being used.
[0069] In addition, trisoup_enabled_flag, inferred_direct_coding_mode_enabled_flag, geometry_planar_mode_flag, and geom_tree_coded_axis_list_present_flag may be defined to be decoded only when predicitive coding is not used.
[0070] GPS2011 may include a flag (geometry_angular_mode_flag) that controls whether or not to use angular mode.
[0071] For example, when the value of geometry_angular_mode_flag is "1", it may be defined that Angular mode is used, and when the value of geometry_angular_mode_flag is "0", it may be defined that Angular mode is not used.
[0072] GPS2011 may additionally include planar_buffer_disabled_flag when using angular mode and when using planar mode.
[0073] Here, if the value of planar_buffer_disabled_flag is "0", it may be defined that a nearest node search using a buffer is performed when decoding information related to the planar mode.
[0074] On the other hand, if the value of planar_buffer_disabled_flag is "1", it may be defined that a nearest node search using a buffer is not performed when decoding information related to the planar mode.
[0075] If planar_buffer_disabled_flag is not included, the geometric information decoding unit 2010 may be configured to regard the value of planar_buffer_disabled_flag as "1", i.e., not to perform a nearest node search using a buffer when decoding information related to the planar mode.
[0076] When the value of planar_buffer_disabled_flag is “0”, i.e., when performing a nearest node search using a buffer when decoding information related to the planar mode, the specific operation may be the same as, for example, the operation described in Non-Patent Document 1.
[0077] As described above, the flag indicating whether or not to use planar mode may be decoded from the bitstream, and if the flag is not included in the bitstream, the value of the flag may be regarded as being the same as when planar mode is not used.
[0078] With this configuration, even when the flag indicating whether or not to use planar mode is not decoded, for example when using predicitive coding (when the value of geom_tree_type is "1"), it is possible to explicitly define that planar mode will not be used, thereby preventing unintended malfunctions (such as some processing related to planar mode being executed even when predicitive coding is being used).
[0079] Furthermore, as described above, when the flag indicating whether or not to use the planar mode indicates that the planar mode is to be used, the device may be configured to decode a flag that controls whether or not to perform a nearest node search using a buffer when decoding information related to the planar mode.
[0080] With this configuration, when planar mode is not used, i.e., when the value of geom_tree_type is "1", and when the value of geom_tree_type is "0" and the value of geometry_planar_mode_flag is "0", it is possible to avoid decoding the flag that controls whether or not to perform a nearest node search using a buffer when decoding information related to planar mode under a single condition, thereby reducing the amount of GPS bits and the amount of processing related to decoding.
[0081] Furthermore, as described above, if a flag that controls whether or not to perform a nearest node search using a buffer when decoding information related to the planar mode is not decoded, the value of the flag may be configured to be regarded as the same value as when a nearest node search using a buffer is not performed when decoding information related to the planar mode.
[0082] With this configuration, it is possible to explicitly define that nearest node search using a buffer is not performed when decoding information related to the planar mode, thereby preventing unintended malfunctions.
[0083] GPS2011 may include a flag (geom_scaling_enabled_flag) that controls whether or not to quantize the location information (inverse quantization from the decoding point of view). For example, it may be defined that inverse quantization is performed when the value of geom_scaling_enabled_flag is "1," and inverse quantization is not performed when the value of geom_scaling_enabled_flag is "0."
[0084] When performing inverse quantization, GPS2011 may include syntax (geom_base_qp) that indicates the base value of the quantization parameter (QP) when performing additional inverse quantization, for example, when the value of geom_scaling_enabled_flag is "1". When geom_base_qp is not included in GPS2011, its value may be defined as "0".
[0085] When performing inverse quantization, GPS2011 may additionally include geom_qp_multiplier_log2, for example when the value of geom_scaling_enabled_flag is "1". The value of this syntax may be specified to take an integer value from 0 to 3. An example of the use of this syntax will be described later.
[0086] GPS2011 may include a syntax (geom_qp_offset_intvl_log2) that specifies an interval for transmitting an offset value of a quantization parameter when inverse quantization is performed and predictive coding is used, i.e., when the value of geom_scaling_enabled_flag is "1" and the value of geom_tree_type is "1", for example. The range of values that this syntax can take may include a constraint that the value must be 0 or more. In addition, the range of values that this syntax can take may include a constraint that the value must be equal to or less than the maximum value of the number of nodes included in one slice (one data unit) defined for each profile or level (for example, "Max points in a slice" in Non-Patent Document 1). In addition, when geom_qp_offset_intvl_log2 is a value obtained by taking the logarithm to the base 2 of the actual transmission interval, the maximum value may be, for example, the logarithm to the base 2 of "Max points in a slice".
[0087] In addition, after decoding the syntax, the following clipping process may be performed so that the value of geom_qp_offset_intvl_log2 is greater than or equal to "0" and less than or equal to the logarithm to the base 2 of "Max points in a slice."
[0088] geom_qp_offset_intvl_log2 = Min(Max(geom_qp_offset_intvl_log2,0),log2(Max points in a slice)) Here, Min() is a function that returns the minimum value among the arguments, and Max() is a function that returns the maximum value among the arguments.
[0089] An example of processing using the value of geom_qp_offset_intvl_log2 is described below.
[0090] First, calculate PtnQpInterval as follows: PtnQpInterval = 1 << geom_qp_offset_intvl_log2 Secondly, in predictive coding, when the position information of each point of the point cloud data is decoded in sequence, the offset value of the quantization parameter used for inverse quantization of the residual of the position information is decoded every PtnQpInterval point. That is, when the remainder obtained by dividing n by PtnQpInterval for the nth point to be decoded is 0, the offset value of the quantization parameter is decoded.
[0091] Thirdly, the quantization parameter offset value, geom_base_qp, and a geom_slice_qp_offset (to be described later) are all added together to calculate the quantization parameter, and inverse quantization processing is performed.
[0092] Note that predictive coding is a method for decoding the position information of each point by adding the predicted value of the position information estimated on the decoding side to the residual of the position information transmitted from the encoding side. Details are described in Non-Patent Document 1 and will not be repeated here.
[0093] As described above, the geometric information decoding unit 2010 may be configured to decode the syntax that specifies the interval for transmitting the offset value of the quantization parameter so that the value of the syntax is always “0” or greater.
[0094] That is, the value of the syntax defining the interval for transmitting the offset value of the quantization parameter decoded by the geometric information decoding unit 2010 is configured to be "0" or greater.
[0095] With this configuration, it is possible to prevent the occurrence of an unrealizable bitstream in which the spacing between nodes is negative.
[0096] Furthermore, as described above, when a maximum number of nodes per slice or per data unit is specified as a specification constraint, the geometric information decoding unit 2010 may be configured to decode a syntax that specifies the interval for transmitting the offset value of the quantization parameter such that the value of such syntax is always equal to or less than the maximum number of nodes per slice or per data unit.
[0097] In other words, the value of the syntax that specifies the interval for transmitting the offset value of the quantization parameter decoded by the geometric information decoding unit 2010 may be configured to be equal to or less than the maximum number of nodes per slice or data unit.
[0098] In this way, by defining the maximum possible value of the syntax that specifies the interval for transmitting the offset value of the quantization parameter, it is possible to define the maximum number of bits required to decode such syntax, which helps to define the maximum bit length of the entire GPS.
[0099] Furthermore, by restricting the maximum value of such syntax to be less than or equal to the maximum number of nodes per slice or data unit, it is possible to prevent an effectively meaningless bitstream from being created in which the spacing between nodes exceeds the maximum number of nodes per slice or data unit.
[0100] GPS2011 may additionally include a quantization parameter offset value (geom_direct_coding_mode_qp_offset) for Direct coding mode when inverse quantization is performed, when predictive coding is not used (when Octree is used) and when Direct coding mode is used, that is, for example, when the value of geom_scaling_enabled_flag is "1", the value of geom_tree_type is "0" and the value of inferred_direct_coding_mode_enabled_flag is "1".
[0101] If the GPS 2011 does not include geom_direct_coding_mode_qp_offset, the geometric information decoding unit 2010 may be configured to regard the value of geom_direct_coding_mode_qp_offset as "0".
[0102] Figure 5 shows an example of the syntax configuration of GSH2012A and 2012B. Hereinafter, GSH2012A and 2012B will be collectively referred to as GSH2012.
[0103] Note that the syntax names described below are merely examples. If the syntax functions described below are similar, the syntax names may be different.
[0104] The GSH2012 may include syntax (gsh_geometry_parameter_set_id) for identifying the GPS corresponding to such a GSH.
[0105] GSH2012 may include syntax (geom_tree_depth_minus1) indicating the number of tree levels when decoding Octree if the corresponding GPS is defined to use Octree, i.e., for example, if the value of geom_tree_type is "0".
[0106] For example, the value of geom_tree_depth_minus1 may be set to the actual number of layers minus "1", and the geometric information decoding unit 2010 may be configured to decode the final number of layers by adding "1" to the value of geom_tree_depth_minus1.
[0107] In addition, a restriction that the range of possible values of the syntax indicating the number of layers of the tree when decoding an Octree must be "0" or more may be stipulated.
[0108] If it is defined in GPS that "QtBt" is not used, i.e., if the value of geom_tree_coded_axis_list_present_flag is "0", the range of values that this syntax can take may be restricted to be less than or equal to MaxRootNodeDimLog2-1, using the logarithm to the base 2 of the maximum node size defined for each profile or level (for example, "MaxRootNodeDimLog2" in non-patent document 1).
[0109] When it is defined that "QtBt" is used in GPS, that is, when the value of geom_tree_coded_axis_list_present_flag is "1", the range of values that this syntax can take may be restricted to be less than or equal to MaxRootNodeDimLog2-1+N (N is a natural number) using the logarithm to the base 2 of the maximum node size defined for each profile or level (for example, "MaxRootNodeDimLog2" in Non-Patent Document 1). For example, the value of N may be "4". Alternatively, the maximum value may be defined as MaxRootNodeDimLog2+N. For example, the value of N may be "3".
[0110] Furthermore, after decoding the syntax, the geometric information decoding unit 2010 may perform the following clipping process so that the value of geom_tree_depth_minus1 is equal to or greater than "0" and equal to or less than "MaxRootNodeDimLog2-1+N".
[0111] geom_tree_depth_minus1 = Min(Max(geom_tree_depth_minus1,0),MaxRootNodeDimLog2-1+N) Here, Min() is a function that returns the minimum value among the arguments, and Max() is a function that returns the maximum value among the arguments.
[0112] As described above, when a maximum node size per slice or per data unit is specified as a specification constraint, the geometric information decoding unit 2010 may be configured to decode the octree so that the syntax value indicating the number of tree levels when decoding the octree is always equal to or less than the value obtained by adding a predetermined natural number to the above-mentioned maximum node size.
[0113] In other words, the syntax value indicating the number of levels of the tree when decoding an Octree decoded by the geometric information decoding unit 2010 may be configured to be equal to or less than the value obtained by adding a predetermined natural number to the above-mentioned maximum node size.
[0114] With this configuration, the values of the above syntax can be defined to the minimum necessary range according to the maximum node size defined for each profile or level, and the maximum number of bits required for such syntax can be kept to the minimum necessary value.
[0115] Furthermore, as described above, the geometric information decoding unit 2010 may be configured to decode a flag indicating whether or not to apply "QtBt", and if the flag indicates that "QtBt" is to be applied, to decode the value of the syntax indicating the number of levels of the tree when decoding the Octree so that it is always equal to or less than the value obtained by adding a predetermined natural number to the above-mentioned maximum node size, and if the flag indicates that "QtBt" is not to be applied, to decode the value of the syntax indicating the number of levels of the tree when decoding the Octree so that it is always equal to or less than the above-mentioned maximum node size.
[0116] In other words, when the above-mentioned flag indicates that "QtBt" is applied, the value of the syntax indicating the number of levels of the tree when decoding the Octree decoded by the geometric information decoding unit 2010 may be less than or equal to the value obtained by adding a predetermined natural number to the above-mentioned maximum node size, and when the flag indicates that "QtBt" is not applied, the value of the syntax indicating the number of levels of the tree when decoding the Octree decoded by the geometric information decoding unit 2010 may be less than or equal to the above-mentioned maximum node size.
[0117] By adopting such a configuration, when applying "QtBt", it is possible to restrict the maximum total number of depths while allowing freedom in selecting the axial direction for dividing nodes for each depth, making it easier to estimate the maximum processing volume when implementing a device that reflects such specifications.
[0118] Furthermore, when "QtBt" is not applied, by matching the maximum number of nodes with the depth number, it is possible to define the value of such syntax within the minimum necessary range, and the maximum number of bits required for such syntax can be kept to the minimum necessary value.
[0119] GSH2012 may include an offset value (geom_slice_qp_offset) in slice units of the quantization parameter when it is defined in GPS that inverse quantization of position information is performed, that is, for example, when the value of geom_scaling_enabled_flag is "1."
[0120] If the GSH 2012 does not include geom_slice_qp_offset, the geometric information decoding unit 2010 may be configured to regard the value of geom_slice_qp_offset as "0."
[0121] GSH2012 may include syntax (geom_octree_qp_offsets_depth) that defines the depth of the tree using offset values of the quantization parameters of the location information when it is defined in GPS that inverse quantization of location information is performed and when it is defined in GPS that octree is used, i.e., for example, when the value of geom_scaling_enabled_flag is "1" and the value of geom_tree_type is "0".
[0122] GSH2012 may include syntax (log2_trisoup_node_size) indicating the node size to which Trisoup is applied when it is defined that Trisoup is used in GPS, that is, for example, when the value of trisoup_enabled_flag is "1."
[0123] Such syntax may be defined as the base 2 logarithm of the node size to which Trisoup is applied.
[0124] In addition, the range of values that can be taken by such syntax may be restricted to be equal to or greater than "0."
[0125] The range of possible values for such syntax may be restricted to be less than or equal to the logarithm to the base 2 of the maximum node size defined for each profile or level (for example, "MaxRootNodeDimLog2" in Non-Patent Document 1).
[0126] Also, the range of values that can be taken by such syntax may be restricted to be equal to or less than the logarithm of the root node size of the slice (or data unit) with base 2. The root node size can be calculated using geom_tree_coded_axis_flag, for example, as described in Non-Patent Document 1.
[0127] Furthermore, after decoding the syntax, the geometric information decoding unit 2010 may perform the following clipping process so that the value of log2_trisoup_node_size is equal to or greater than "0" and equal to or less than the root node size.
[0128] log2_trisoup_node_size = Min(Max(log2_trisoup_node_size,0),log2(RootNodeSize)) Here, Min() is a function that returns the minimum value among the arguments, Max() is a function that returns the maximum value among the arguments, and RootNodeSize is a variable that indicates the root node size.
[0129] As described above, the geometric information decoding unit 2010 may be configured to decode the value of the syntax indicating the node size to which Trisoup is applied so that it is always equal to or smaller than the maximum node size of the slice or data unit.
[0130] In other words, the value of the syntax indicating the node size to which Trisoup is applied, which is decoded by the geometric information decoding unit 2010, may be configured to be equal to or smaller than the maximum node size of the slice or data unit.
[0131] With this configuration, the values of the above syntax can be defined to the minimum necessary range according to the maximum node size defined for each profile or level, and the maximum number of bits required for such syntax can be kept to the minimum necessary value.
[0132] As described above, the geometric information decoding unit 2010 may be configured to decode the value of the syntax indicating the node size to which Trisoup is applied so that it is always equal to or smaller than the root node size of the slice or data unit.
[0133] In other words, the value of the syntax indicating the node size to which Trisoup is applied, which is decoded by the geometric information decoding unit 2010, may be configured to be equal to or smaller than the root node size of the slice or data unit.
[0134] With this configuration, the values of the above syntax can be defined to the minimum necessary extent for each slice or data unit according to the root node size, and the maximum number of bits required for such syntax can be kept to the minimum necessary value.
[0135] (Tree Synthesis Department 2020) An example of the processing of the tree merging unit 2020 will be described with reference to Fig. 6. Fig. 6 is a flowchart showing an example of the processing of the tree merging unit 2020.
[0136] As shown in FIG. 6, in step S601, the tree synthesis unit 2020 checks whether or not processing of all depths has been completed for the tree structure when "Octree" or "QtBt" is applied.
[0137] The value of the Depth of the slice is, for example, the number of layers decoded from geom_tree_depth_minus1 transmitted by the GSH. The tree synthesis unit 2020 can determine whether the processing for all Depths is completed by comparing the Depth value of the slice with the already processed Depth values.
[0138] If the tree merging unit 2020 has completed the processing for all depths, the tree merging unit 2020 proceeds to the processing of step S607 and ends the processing. On the other hand, if the tree merging unit 2020 has not completed the processing for all depths, the tree merging unit 2020 proceeds to the processing of step S602.
[0139] In step S602, the tree synthesis unit 2020 determines whether or not the processing has been completed for all nodes within the relevant Depth.
[0140] The number of nodes included in the depth can be calculated from the result of the node information decoding process (step S606) at the depth processed immediately before. The number of nodes included in the first processed depth is "1".
[0141] If the tree merging unit 2020 has completed the processing of all nodes included in the Depth, the tree merging unit 2020 returns to the processing of step S601. On the other hand, if the tree merging unit 2020 has not completed the processing of all nodes, the tree merging unit 2020 proceeds to the processing of step S603.
[0142] In step S603, the tree merging unit 2020 determines whether or not to decode nodeQpOffset to be used in the process of subsequent step S605.
[0143] If all the predetermined conditions are satisfied, the tree merging unit 2020 proceeds to step S604 and decodes the nodeQpOffset. On the other hand, if even one of the predetermined conditions is not satisfied, the tree merging unit 2020 omits decoding the nodeQpOffset and proceeds to step S605.
[0144] Such a predetermined condition may include a condition that the value of depth is equal to GeomScalingDepth.
[0145] The value of GeomScalingDepth may be set depending on, for example, whether or not it is defined in GPS that inverse quantization of position information is performed.
[0146] It may be defined that if the value of geom_scaling_enabled_flag is "1", the value of GeomScalingDepth is the same as geom_octree_qp_offsets_depth, and if the value of geom_scaling_enabled_flag is "0", the value of GeomScalingDepth is "0".
[0147] The predetermined condition may also include a condition that it is defined in GPS that inverse quantization of location information is performed, that is, for example, that the value of geom_scaling_enabled_flag is "1."
[0148] In step S604, the tree synthesis unit 2020 decodes nodeQpOffset.
[0149] Here, first, the tree synthesis unit 2020 decodes the syntax (geom_node_qp_offset_eq0_flag) indicating whether the value of nodeQpOffset is "0" or not.
[0150] Secondly, if the value of geom_node_qp_offset_eq0_flag is "0", the tree synthesis unit 2020 additionally decodes a syntax (geom_node_qp_offset_sign_flag) indicating the sign (positive or negative) of nodeQpOffset and a syntax (geom_node_qp_offset_abs_minus1) indicating the absolute value of nodeQpOffset.
[0151] Third, the tree merging unit 2020 decodes the value of nodeQpOffset using the syntax decoded above. If the value of geom_node_qp_offset_eq0_flag is "1", the tree merging unit 2020 sets the value of nodeQpOffset to "0". If the value of geom_node_qp_offset_eq0_flag is "0", the tree merging unit 2020 performs decoding as follows. nodeQpOffset = (2×geom_node_qp_offset_sign_flag−1)×(geom_node_qp_offset_abs_minus1+1) If the process of step S604 is skipped, that is, if geom_node_qp_offset_eq0_flag is not decoded, the tree merging unit 2020 may regard the value of geom_node_qp_offset_eq0_flag as "1." In other words, if the process of step S604 is skipped, the tree merging unit 2020 may regard the value of nodeQpOffset as "0."
[0152] As described above, the tree synthesis unit 2020 may be configured to decode a flag indicating whether or not to perform inverse quantization of position information from the bit stream, and if the flag indicates that inverse quantization of position information is not to be performed, to set the value of the quantization parameter offset value nodeQpOffset for each node to “0”.
[0153] With this configuration, when inverse quantization is not performed, the value of nodeQpOffset can always be set to "0", making it easy to ensure that the value of NodeQp, described later, is "0", i.e., a value that does not perform inverse quantization.
[0154] Furthermore, as described above, when the flag indicating whether or not to perform inverse quantization of the position information indicates that inverse quantization of the position information is not to be performed, the tree synthesis unit 2020 may be configured to omit the decoding process of the syntax related to the above-mentioned nodeQpOffset.
[0155] With this configuration, when the position information is not inversely quantized, unnecessary decoding processing can be omitted, and the amount of processing can be reduced.
[0156] Furthermore, as described above, the tree synthesis unit 2020 may be configured to decode a flag indicating whether the value of nodeQpOffset is "0" or not as one of the syntaxes related to nodeQpOffset, and if decoding of such flag is omitted, to regard the value of such flag as a value indicating that the value of nodeQpOffset is "0".
[0157] With this configuration, when decoding of the flag indicating whether the value of nodeQpOffset is "0" or not is omitted, i.e., when inverse quantization is not performed, the value of nodeQpOffset can always be set to "0", making it easy to ensure that the value of NodeQp, described later, is "0", i.e., a value that does not perform inverse quantization.
[0158] After decoding the value of nodeQpOffset through the above procedure, the tree synthesis unit 2020 proceeds to step S605.
[0159] In step S605, the tree synthesis unit 2020 decodes the value of NodeQp.
[0160] First, when the current depth is equal to GeomScalingDepth, the tree synthesis unit 2020 may calculate the value of NodeQp by the following formula. NodeQp = (geom_base_qp+geom_slice_qp_offset+nodeQpOffset)<< geom_qp_multiplier_log2 Here, if it is defined in GPS that inverse quantization of location information is not performed, that is, if the value of geom_scaling_ is "0", the value of NodeQp may be defined to be "0".
[0161] If it is defined in GPS that inverse quantization of location information is not performed, i.e., if the value of geom_scaling_enabled_flag is "0", the values of geom_base_qp, geom_slice_qp_offset, and nodeQpOffset may each be defined to be "0".
[0162] A conformance constraint may be defined for the bitstream, such that the value of NodeQp must be greater than or equal to 0.
[0163] Furthermore, the tree synthesis unit 2020 may calculate NodeQp using the following formula so that the value of NodeQp is always 0 or greater. NodeQp = Max(geom_base_qp+geom_slice_qp_offset+nodeQpOffset,0)<< geom_qp_multiplier_log2 Here, Max() is a function that returns the largest value among the arguments.
[0164] Secondly, when the current depth is greater than GeomScalingDepth, the tree synthesis unit 2020 may define the value of NodeQp to be the same as the value of the parent node of the node, that is, the value of NodeQp used when the depth is one less than that of the node.
[0165] Thirdly, when the current depth is smaller than GeomScalingDepth, the tree synthesis unit 2020 may calculate the value of NodeQp by the following formula.
[0166] dcmQp = (geom_base_qp + geom_direct_coding_mode_qp_offset) << geom_qp_multiplier_log2 NodeQp = Min(minScalingNodeDimLog2×8, dcmQp) Here, Min() is a function that returns the smallest value among the arguments. Also, minScalingNodeDimLog2 is a value obtained by taking the logarithm to the base 2 of the size in the smallest axis direction among the three axis directions (e.g., x-axis, y-axis, z-axis) that define the node size at the depth.
[0167] Here, if it is defined in the GPS that inverse quantization of location information is not performed, that is, if the value of geom_scaling_enabled_flag is "0", the value of NodeQp may be defined to be "0".
[0168] If it is defined in GPS that inverse quantization of location information is not performed, i.e., if the value of geom_scaling_enabled_flag is "0", the values of geom_base_qp and geom_direct_coding_mode_qp_offset may be defined to be "0".
[0169] A conformance constraint may be defined for the bitstream, such that the value of NodeQp must be greater than or equal to 0.
[0170] That is, when the value of NodeQp is less than "0", the tree synthesis unit 2020 may determine that the bitstream violates the specifications.
[0171] Furthermore, the tree synthesis unit 2020 may calculate NodeQp using the following formula so that the value of NodeQp is always equal to or greater than "0".
[0172] NodeQp = Max(Min(minScalingNodeDimLog2×8, dcmQp),0) The NodeQp obtained as described above is used for the inverse quantization process of the position information. The inverse quantization process can be executed, for example, as follows. Note that if it is defined in the GPS that the inverse quantization of the position information is not performed, that is, if the value of geom_scaling_enabled_flag is "0", the following inverse quantization process may not be performed.
[0173] First, the tree synthesis unit 2020 separates the coordinate value val (any of the x component, y component, or z component) of the node before inverse quantization into a highPart and a lowPart as follows.
[0174] highPart = val >> (ScalingNodeSizeLog2[cIdx]―scalingExpansionLog2) lowPart = val & ((1 << (ScalingNodeSizeLog2[cIdx]―scalingExpansionLog2))―1) Here, ScalingNodeSizeLog2[cIdx] is the logarithm, with base 2 taken, of the node size before quantization in the axis direction (x, y, or z direction) corresponding to the value of cIdx. Also, scalingExpansionLog2 is the value obtained by integer-dividing NodeQp by 8. In other words, scalingExpansionLog2 is the value obtained by dividing NodeQp by 4, and then truncating the decimal places of the quotient obtained to an integer.
[0175] Second, the tree synthesis unit 2020 calculates the scale factor sF using the following formula.
[0176] sF = 8+(qP & 7) << qP / 8 Here, the value of qP is the same as that of NodeQp. In addition, & is an operator that calculates a logical AND for each bit. In other words, qP&3 is equivalent to a process of extracting the lowest two digits when the value of qP is expressed in binary.
[0177] As described above, when a logical AND is taken with the value of qP, or when a bit shift is performed according to the value calculated from qP, the value of qP, i.e., the value of NodeQp, is expected to be an integer greater than or equal to "0".
[0178] Third, the tree synthesis unit 2020 calculates the coordinate value pos after inverse quantization using the following formula.
[0179] highPartS = highPart << ScalingNodeSizeLog2[cIdx] lowPartS = (lowPart × sF + 4) >> 3 pos = highPartS | Min(lowPartS, (1 << ScalingNodeSizeLog2``cIdx'')―1) Here, | is the bitwise OR operator.
[0180] In the above inverse quantization process, when the value of qP, i.e., the value of NodeQp, is "0", the input value val and the output value pos will be the same value. Note that when it is specified in the GPS that inverse quantization of position information is not to be performed, i.e., for example, when the value of geom_scaling_enabled_flag is "0", the above inverse quantization process may be skipped. Also, as described above, when it is specified in the GPS that inverse quantization of position information is not to be performed, i.e., when the value of geom_scaling_enabled_flag is "0", for example, it may be specified that the value of NodeQp is always "0".
[0181] As described above, the tree synthesis unit 2020 may be configured to perform decoding so that the value of the quantization parameter NodeQp for each node is always equal to or greater than a predetermined value.
[0182] For example, when the subsequent processing is premised on the value of NodeQp being equal to or greater than a predetermined value, such a configuration can maintain the consistency of the entire decoding processing.
[0183] Furthermore, as described above, the tree synthesis unit 2020 may be configured to perform clipping processing after calculating the value of NodeQp so that it is equal to or greater than a predetermined value.
[0184] With this configuration, it is possible to ensure that the value of NodeQp is always equal to or greater than a predetermined value, regardless of the values of parameters such as geom_base_qp.
[0185] Furthermore, as described above, the tree synthesis unit 2020 may be configured to determine that the specification is violated when the value of NodeQp is less than a predetermined value or equal to or less than a predetermined value.
[0186] With this configuration, it is possible to ensure that the value of NodeQp is equal to or greater than a predetermined value for a bitstream that complies with the specifications, without using additional processing such as clipping.
[0187] As described above, the predetermined value may be set to "0."
[0188] For example, if the subsequent processing is premised on the value of NodeQp being equal to or greater than "0", then such a configuration can maintain the consistency of the entire decryption processing.
[0189] Furthermore, if the value of NodeQp is configured to be "0", the processing result is the same as when inverse quantization is not performed, by including "0" in the range of NodeQp values, it is possible to determine whether or not inverse quantization needs to be performed based solely on the value of NodeQp.
[0190] After calculating NodeQp in the above manner, the tree synthesis unit 2020 proceeds to step S606.
[0191] In step S606, when "Octree" is used, the tree synthesis unit 2020 divides the node into 8 child nodes, and when "QtBt" is used, the tree synthesis unit 2020 divides the node into 8, 4, or 2 child nodes, and decodes an occupancy map indicating whether each child node contains point cloud data based on information such as the occupancy code.
[0192] For example, when the value of the occupancy map is "1", it can be defined that point cloud data exists in the corresponding child node. Also, when the value of the occupancy map is "0", it can be defined that point cloud data does not exist in the corresponding child node or that the child node itself does not exist.
[0193] Therefore, the tree synthesis unit 2020 can know the number of nodes in the next depth to be processed by counting the number of child nodes in the same depth whose occupancy map value is "1".
[0194] When the tree synthesis unit 2020 completes the generation of the occupancy map for one node, the process returns to step S602.
[0195] (Attribute information decoding unit 2060) Hereinafter, the control data decoded by the attribute information decoding unit 2060 will be described with reference to FIGS.
[0196] FIG. 7 shows an example of the structure of the coded data (bit stream) received by the geometric information decoding unit 2060. In FIG.
[0197] First, the bit stream may include APS2061. APS2061 is also called an attribute parameter set, and is a set of control data related to the decoding of attribute information. A specific example will be described later. Each APS2061 includes at least APS id information for identifying each APS2061 when multiple APS2061 exist.
[0198] Secondly, the bitstream may include ASH2062A / 2062B. ASH2062A / 2062B is also called an attribute slice header and is a set of control data corresponding to slices described later. A specific example will be described later. ASH2062A / 2062B includes at least APS id information for specifying APS2061 corresponding to each ASH2062A / 2062B.
[0199] Thirdly, the bit stream may include slice data 2063A / 2063B following ASH 2062A / 2062B. The slice data 2063A / 2063B includes data in which attribute information is encoded.
[0200] As described above, the bit stream is configured such that each slice data 2063A / 2063B corresponds to one ASH 2062A / 2062B and one APS 2061.
[0201] As described above, in ASH2062A / 2062B, which APS2061 to refer to is specified by APS id information, so that a common APS2061 can be used for a plurality of slice data 2063A / 2063B.
[0202] In other words, it is not necessary to transmit the APS 2061 for each slice. For example, as shown in Fig. 7, the bit stream may be configured such that the APS 2061 is not coded immediately before the ASH 2062B and slice data 2063B.
[0203] Note that the configuration shown in Fig. 7 is merely an example. As long as the ASH2062A / 2062B and the APS2061 correspond to each slice data 2063A / 2063B, elements other than those described above may be added as components of the bit stream. For example, as shown in Fig. 7, the bit stream may include a sequence parameter set (SPS).
[0204] Similarly, when transmitted, the data may be shaped into a configuration different from that shown in Fig. 7. Furthermore, the data may be combined with a bit stream decoded by the geometric information decoding unit 2010 and transmitted as a single bit stream. For example, the slice data 2013A and 2063A, and the slice data 2013B and 2063B may each be treated as a single slice data, and GSH2012A and ASH2062A, and GSH2012B and ASH2062B may each be arranged immediately before each slice. In this case, GPS2011 and APS2061 may be arranged prior to each GSH and ASH.
[0205] FIG. 8 is an example of the syntax configuration of SPS2001.
[0206] SPS2001 may include syntax (level_idc) that defines a level.
[0207] The SPS 2001 may include an index (sps_seq_parameter_set_id) for identifying multiple SPSs.
[0208] SPS2001 may include a syntax (sps_num_attribute_sets) that indicates the number of attribute sets included in the bitstream.
[0209] SPS2001 may include a syntax (attribute_dimension_minus1[i]) indicating the number of dimensions of each of sps_num_attribute_sets pieces of attribute information included in the bitstream. When the number of dimensions is "1", the attribute information corresponds to, for example, a reflectance or luminance signal. When the number of dimensions is "3", the attribute information corresponds to, for example, dimensional data composed of a luminance signal and a color difference signal (Cb signal, Cr signal).
[0210] Here, it can be seen that the bitstream does not include chrominance data when the number of dimensions of all sps_num_attribute_sets pieces of attribute information is "1". Therefore, when the number of dimensions of all sps_num_attribute_sets pieces of attribute information is "1", the value of attr_secondary_dim_present_flag may be defined as "0".
[0211] Furthermore, if the number of dimensions for at least one piece of attribute information is "2" or more, the value of attr_secondary_dim_present_flag may be defined as "1".
[0212] In the above, we have described an example of setting the value of attr_secondary_dim_present_flag, which is a flag indicating whether or not chrominance data is included in the bit stream, by referring to the number of dimensions of the attribute information, but other methods of determining whether or not chrominance data is included may also be used.
[0213] For example, the syntax indicating the type of attribute information may be decoded, and if it indicates that they are all "reflection coefficients", it may be determined that the bitstream does not contain chrominance data, and the value of attr_secondary_dim_present_flag may be defined as "0".
[0214] Alternatively, the value of attr_secondary_dim_present_flag may be included in the bitstream, and the value of the flag may be decoded from the bitstream to determine whether or not the bitstream includes chrominance data. That is, if the value of attr_secondary_dim_present_flag decoded from the bitstream is "0", it may be determined that the bitstream does not include chrominance data.
[0215] FIG. 9 shows an example of the syntax configuration of APS2061.
[0216] The APS 2061 may include APS id information (aps_attr_parameter_set_id) for identifying each APS 2061.
[0217] The APS 2061 may include information (attr_coding_type) indicating a decoding method of the attribute information. For example, it may be specified that when the value of attr_coding_type is "0", the inverse lifting unit 2100 performs variable weighted lifting prediction, when the value of attr_coding_type is "1", the RAHT unit 2080 performs RAHT, and when the value of attr_coding_type is "2", the inverse lifting unit 2100 performs lifting prediction with a fixed weight.
[0218] When the value of attr_secondary_dim_present_flag is “1”, the APS2061 may include an offset value of the quantization parameter of the color difference signal (aps_attr_chroma_qp_offset).
[0219] If APS 2061 does not include aps_attr_chroma_qp_offset, the attribute information decoding unit 2060 may be defined to regard the value of aps_attr_chroma_qp_offset as "0".
[0220] APS2061 may include a flag (lifting_last_component_prediction_enabled_flag) that controls whether or not to perform residual prediction between color difference signals when the value of attr_secondary_dim_present_flag is "1" and the value of attr_coding_type is "2."
[0221] It may be defined that when the value of lifting_last_component_prediction_enabled_flag is "1", residual prediction is performed between color difference signals, and when the value of lifting_last_component_prediction_enabled_flag is "0", residual prediction is not performed between color difference signals.
[0222] When APS2061 does not include lifting_last_component_prediction_enabled_flag, the attribute information decoding unit 2060 may be defined to regard the value of lifting_last_component_prediction_enabled_flag as “0”.
[0223] APS2061 may include a flag (inter_component_prediction_enabled_flag) that controls whether or not prediction is performed between luminance signals and between chrominance signals when the value of attr_secondary_dim_present_flag is "1" and the value of attr_coding_type is "1."
[0224] It may be defined that when the value of inter_component_prediction_enabled_flag is "1", prediction is performed between the luminance signal and the chrominance signal, and when the value of inter_component_prediction_enabled_flag is "0", prediction is not performed between the luminance signal and the chrominance signal.
[0225] When the APS 2061 does not include inter_component_prediction_enabled_flag, the attribute information decoding unit 2060 may be defined to regard the value of the inter_component_prediction_enabled_flag as "0".
[0226] As described above, the attribute information decoding unit 2060 may be configured to determine whether or not a color difference signal is included in the bit stream, and if it is determined that a color difference signal is not included, to omit decoding of syntax related to the color difference signal.
[0227] With this configuration, it is possible to omit decoding processing of unnecessary syntax and reduce the amount of processing.
[0228] As described above, the attribute information decoding unit 2060 may be configured to decode the number of dimensions of the attribute information included in the bitstream, and if the number of dimensions of all the attribute information is “1”, determine that the bitstream does not include a color difference signal.
[0229] With this configuration, when the bit stream contains only reflection coefficients (one-dimensional) or only a luminance signal (one-dimensional), processing related to the color difference signal can be omitted.
[0230] As described above, the attribute information decoding unit 2060 may be configured to regard the value of the syntax as "0" when the offset value of the quantization parameter of the color difference signal is not decoded.
[0231] With this configuration, it is possible to prevent an unnecessary offset value from being unintentionally set when no color difference signal is present.
[0232] As described above, the attribute information decoding unit 2060 may be configured to, when a flag that controls whether or not to perform residual prediction between color difference signals is not decoded, regard the value of the flag as being the same as the value in the case where residual prediction between color difference signals is not performed.
[0233] With this configuration, when a color difference signal does not exist, it is possible to prevent unnecessary prediction of the residual between color difference signals.
[0234] As described above, the attribute information decoding unit 2060 may be configured to, when a flag that controls whether or not prediction is performed between luminance signals and chrominance signals is not decoded, regard the value of the flag as being the same as the value in the case where prediction is not performed between luminance signals and chrominance signals.
[0235] With this configuration, when no color difference signal exists, it is possible to prevent unnecessary prediction between the luminance signal and the color difference signal from being performed.
[0236] The APS 2061 may include a flag (lifting_scalability_enabled_flag) indicating whether to apply scalable lifting.
[0237] When the value of lifting_scalability_enabled_flag is "0", it may be specified that scalable lifting is not applied, and when the value of lifting_scalability_enabled_flag is "1", it may be specified that scalable lifting is applied.
[0238] The APS 2061 may include a syntax (lifting_num_detail_levels_minus1) that specifies the number of LoD levels calculated by the LoD calculation unit 2090.
[0239] Since the LoD value must be an integer value greater than or equal to 1, for example, the syntax may be set to an integer value greater than or equal to "0", and the value of the syntax may be added with "1" to represent the number of LoD levels.
[0240] APS2061 may include a flag (lifting_lod_regular_sampling_enabled_flag) indicating whether or not to sample points belonging to each LoD at equal intervals when the number of levels of the LoD is greater than "1", i.e., when the value of lifting_num_detail_levels_minus1 is greater than "0".
[0241] For example, it may be defined that when the value of lifting_lod_regular_sampling_enabled_flag is "1", sampling is performed at equal intervals, and when the value of lifting_lod_regular_sampling_enabled_flag is "0", sampling is not performed at equal intervals.
[0242] When sampling is performed at equal intervals, i.e., when the value of lifting_lod_regular_sampling_enabled_flag is "1", APS2061 may include syntax (lifting_sampling_period_minus2[idx]) that specifies the sample interval for each LoD level.
[0243] The sample interval may be defined as an integer equal to or greater than 2, and the value of lifting_sampling_period_minus2[idx] may be defined as the actual sample interval minus 2. Here, the range of values that this syntax can take may be restricted to be equal to or greater than 0.
[0244] In addition, the range of possible values for such syntax may be restricted to be less than or equal to the maximum number of nodes contained in one slice (one data unit) defined for each profile or level (e.g., "Max points in a slice" in Non-Patent Document 1).
[0245] As mentioned above, when the value of lifting_sampling_period_minus2[idx] is defined as the actual sample interval minus 2, a constraint may be specified that it must be less than or equal to "Max points in a slice" minus 2.
[0246] Furthermore, the attribute information decoding unit 2060 may perform the following clipping process after decoding the syntax so that the value of lifting_sampling_period_minus2[idx] is equal to or greater than "0" and equal to or less than "Max points in a slice-2."
[0247] geom_qp_offset_intvl_log2 = Min(Max(lifting_sampling_period_minus2[idx],0),Max points in a slice―2) Here, Min() is a function that returns the minimum value among the arguments, and Max() is a function that returns the maximum value among the arguments.
[0248] As described above, the attribute information decoding unit 2060 may be configured to decode the syntax that specifies the sample interval for each LoD level so that the value of the syntax is always "0" or greater.
[0249] In other words, the value of the syntax specifying the sample interval for each level of each LoD decoded by the attribute information decoding unit 2060 may be configured to be "0" or greater.
[0250] With this configuration, it is possible to prevent the occurrence of an unrealizable bitstream in which the spacing between nodes is negative.
[0251] Furthermore, when the maximum number of nodes per slice or data unit is specified as a specification constraint as described above, the attribute information decoding unit 2060 may be configured to decode the syntax specifying the sample interval for each LoD level such that the value of the syntax is always equal to or less than the maximum number of nodes per slice or data unit.
[0252] In other words, the value of the syntax specifying the sample interval for each level of each LoD decoded by the attribute information decoding unit 2060 may be configured to be equal to or less than the maximum number of nodes per slice or data unit.
[0253] In this way, by defining the maximum possible value of the syntax that specifies the sample interval for each LoD level, it is possible to define the maximum number of bits required to decode the syntax, which helps to specify the maximum bit length for the entire GPS.
[0254] In addition, by restricting the maximum value that can be taken as the value of the syntax specifying the sample interval for each LoD level to be less than the maximum number of nodes per slice or data unit, it is possible to prevent an effectively meaningless bitstream from being created in which the interval between nodes exceeds the maximum number of nodes per slice or data unit.
[0255] Furthermore, the above-mentioned point group encoding device 100 and point group decoding device 200 may be realized as a program that causes a computer to execute each function (each process).
[0256] In each of the above embodiments, the present invention has been described using the point cloud encoding device 100 and the point cloud decoding device 200 as examples, but the present invention is not limited to such examples and can be similarly applied to a point cloud encoding / decoding system having the functions of the point cloud encoding device 100 and the point cloud decoding device 200. [Explanation of symbols]
[0257] 10...Point cloud processing system 100...Point cloud encoding device 200...Point cloud decoding device 2010…Geometric Information Decoding Department 2020…Tree synthesis section 2030…Approximate surface synthesis part 2040...Geometric information reconstruction unit 2050…Inverse coordinate conversion section 2060…Attribute information decoding unit 2070...Inverse quantization section 2080…RAHT Division 2090…LoD calculation section 2100…Reverse lifting section 2110…Color inversion unit
Claims
1. A point cloud decoding device, comprising: A geometry information decoding unit configured to decode a syntax for specifying a sample interval for each LoD level from a bit stream, A point cloud decoding device characterized in that, when the value of the syntax is defined as a value obtained by subtracting 2 from the actual sample interval, the value is equal to or less than the maximum number of points contained in one data unit minus 2.
2. decoding from the bitstream a syntax specifying a sample interval for each LoD level; A point cloud decoding method characterized in that the value of the syntax is defined as the actual sample interval minus 2, and is therefore less than or equal to the maximum number of points contained in one data unit minus 2.
3. A program for use in a point group decoding device, comprising: decoding from the bitstream a syntax specifying a sample interval for each LoD level; A program characterized in that the value of the syntax is equal to or less than the maximum number of points contained in one data unit minus 2 when defined as the actual sample interval minus 2.
Citation Information
Patent Citations
Context determination for planar mode in octree-based point cloud coding
US10693492B1