WO2022070469A1 - 点群復号装置、点群復号方法及びプログラム - Google Patents
点群復号装置、点群復号方法及びプログラム Download PDFInfo
- Publication number
- WO2022070469A1 WO2022070469A1 PCT/JP2021/010068 JP2021010068W WO2022070469A1 WO 2022070469 A1 WO2022070469 A1 WO 2022070469A1 JP 2021010068 W JP2021010068 W JP 2021010068W WO 2022070469 A1 WO2022070469 A1 WO 2022070469A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- value
- flag
- syntax
- color difference
- decoding
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
Definitions
- the present invention relates to a point cloud decoding device, a point cloud decoding method and a program.
- Non-Patent Document 1 discloses a technique for decoding a syntax that controls processing for a color difference signal.
- Non-Patent Document 1 has a problem that the syntax that controls the processing for the color difference signal is always decoded regardless of whether or not the attribute information includes the color difference signal data.
- the present invention has been made in view of the above-mentioned problems, and provides a point cloud decoding device, a point cloud decoding method, and a program capable of reducing the bit amount by omitting unnecessary syntax decoding.
- the purpose is to do.
- the first feature of the present invention is the point group decoding device, in which it is determined whether or not the bit stream contains the color difference signal, and when it is determined that the bit stream does not contain the color difference signal, the above is described.
- the gist is to include an attribute information decoding unit configured to omit decoding of the syntax related to the color difference signal.
- the second feature of the present invention is a point group decoding method, in which a step of determining whether or not a color difference signal is included in a bit stream and a case where it is determined that the bit stream does not contain the color difference signal.
- the gist is to have a step of omitting decoding of the syntax relating to the color difference signal.
- a third feature of the present invention is a program used in a point group decoding device, wherein a computer includes a step of determining whether or not a color difference signal is included in a bit stream, and the bit stream includes the color difference signal. If it is determined that this is not the case, the gist is to execute the step of omitting the decoding of the syntax related to the color difference signal.
- FIG. 10 It is a figure which shows an example of the structure of the point cloud processing system 10 which concerns on one Embodiment. It is a figure which shows an example of the functional block of the point cloud decoding apparatus 200 which concerns on one Embodiment.
- This is an example of the configuration of coded data (bit stream) received by the geometric information decoding unit 2010 of the point cloud decoding device 200 according to the embodiment.
- This is an example of the syntax configuration of GPS 2011 according to one embodiment.
- FIG. 1 is a diagram showing a point cloud processing system 10 according to an embodiment according to the present embodiment.
- the point cloud processing system 10 includes a point cloud coding device 100 and a point cloud decoding device 200.
- the point cloud coding device 100 is configured to generate coded data (bitstream) by encoding the input point cloud signal.
- the point cloud decoding device 200 is configured to generate an output point cloud signal by decoding a bit stream.
- 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.
- the attribute information is, for example, color information or reflectance of each point.
- such a bit stream may be transmitted from the point cloud coding device 100 to the point cloud decoding device 200 via a transmission path. Further, the bit stream may be stored in the storage medium and then provided from the point cloud coding device 100 to the point cloud decoding device 200.
- FIG. 2 is a diagram showing an example of a functional block of the point cloud decoding device 200 according to the present embodiment.
- the point group decoding device 200 includes a geometric information decoding unit 2010, a tree composition unit 2020, an approximate surface composition unit 2030, a geometric information reconstruction unit 2040, an inverse coordinate conversion unit 2050, and attributes. It has an information decoding unit 2060, an inverse quantization unit 2070, a RAHT unit 2080, a LoD calculation unit 2090, an inverse lifting unit 2100, and an inverse color conversion unit 2110.
- the geometric information decoding unit 2010 is configured to input a bit stream (geometric information bit stream) related to geometric information among the bit streams output from the point group coding device 100 and decode the syntax.
- the decoding process is, for example, a context-adaptive binary arithmetic decoding process.
- the syntax includes control data (flags and parameters) for controlling the decoding process of the position information.
- the tree synthesizing unit 2020 inputs the control data decoded by the geometric information decoding unit 2010 and the occupation code indicating which node in the tree described later has the point cloud, and the point is located in which area in the decoding target space. It is configured to generate tree information as to whether it exists.
- the decoding target space is divided by a rectangular parallelepiped
- the occurrence code is referred to to determine whether a point exists in each rectangular parallelepiped
- the rectangular parallelepiped in which the point exists is divided into a plurality of rectangular parallelepipeds
- the occurrence code is referred to.
- Tree information can be generated by repeating the process recursively.
- the tree synthesizer 2020 is configured to decode the coordinates of each point based on any tree configuration determined by the point cloud coding device 100. ing.
- the approximate surface synthesis unit 2030 is configured to generate approximate surface information using the tree information generated by the tree synthesis unit 2020.
- the approximate surface information is not to decode individual point clouds but to decode points when the point clouds are densely distributed on the surface of the object, for example, when decoding the three-dimensional point cloud data of the object. It is a representation of the existing area of a group by approximating it with a small plane.
- the approximate surface synthesis unit 2030 can generate approximate surface information by a method called "Trisoop", for example.
- Trisoop a specific process of "Trisoop”, for example, the method described in Non-Patent Document 1 can be used. Further, when decoding a sparse point cloud acquired by Lidar or the like, this process can be omitted.
- the geometric information reconstruction unit 2040 is 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, and the geometric information (decoding process) of each point of the point group data to be decoded is used. It is configured to reconstruct the position information in the coordinate system assumed by.
- the inverse coordinate conversion unit 2050 uses the geometric information reconstructed by the geometric information reconstruction unit 2040 as an input, converts the coordinate system assumed by the decoding process into the coordinate system of the output point cloud signal, and converts the position information into the coordinate system. It is configured to output.
- the attribute information decoding unit 2060 is configured to input a bit stream (attribute information bit stream) related to attribute information among the bit streams output from the point group coding device 100 and decode the syntax.
- the decoding process is, for example, a context-adaptive binary arithmetic decoding process.
- the syntax includes control data (flags and parameters) for controlling the decoding process of the attribute information.
- attribute information decoding unit 2060 is configured to decode the quantized residual information from the decoded syntax.
- the inverse quantization unit 2070 is 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. It is configured to perform dequantization processing and generate dequantized residual information.
- the dequantized residual information is output to either the RAHT unit 2080 or the LoD calculation unit 2090 according to the characteristics of the point cloud to be decoded. Which is output is specified by the control data decoded by the attribute information decoding unit 2060.
- the RAHT unit 2080 receives the dequantized residual information generated by the dequantization unit 2070 and the geometric information generated by the geometric information reconstruction unit 2040 as inputs, and has a Har conversion (Haar transformation) called RAHT (Region Adaptive Thermal Transfer). In the decoding process, it is configured to decode the attribute information of each point by using a kind of inverse Haar conversion). As a specific treatment of RAHT, for example, the method described in Non-Patent Document 1 can be used.
- the LoD calculation unit 2090 is configured to generate LoD (Level of Detail) by inputting the geometric information generated by the geometric information reconstruction unit 2040.
- LoD predicts the attribute information of another point from the attribute information of one point, and encodes or decodes the predicted residual. ) Is the information for defining.
- LoD classifies each point contained in the geometric information into multiple levels, and for points belonging to the lower level, the attributes are encoded or decoded using the attribute information of the points belonging to the upper level. Information that defines the structure.
- Non-Patent Document 1 As a specific method for determining LoD, for example, the method described in Non-Patent Document 1 may be used.
- the inverse lifting unit 2100 uses the LoD generated by the LoD calculation unit 2090 and the inverse quantized residual information generated by the inverse quantization unit 2070, and the attribute information of each point is based on the hierarchical structure defined by LoD. Is configured to decrypt. As a specific process of reverse lifting, for example, the method described in Non-Patent Document 1 can be used.
- the reverse color conversion unit 2110 outputs the attribute information output from the RAHT unit 2080 or the reverse lifting unit 2100 when the attribute information to be decoded is color information and the color conversion is performed on the point group coding device 100 side. It is configured to perform reverse color conversion processing. Whether or not the reverse color conversion process is executed is determined by the control data decoded by the attribute information decoding unit 2060.
- the point cloud decoding device 200 is configured to decode and output the attribute information of each point in the point cloud by the above processing.
- FIG. 3 is an example of the configuration of the coded data (bit stream) received by the geometric information decoding unit 2010.
- the bitstream may include GPS 2011.
- GPS2011 also called a geometry parameter set, is a set of control data relating to the decoding of geometric information. Specific examples will be described later.
- Each GPS 2011 contains at least GPS id information for identifying each when a plurality of GPS 2011s are present.
- the bitstream may include GSH2012A / 2012B.
- GSH2012A / 2012B is also called a geometry slice header or a geometry data unit header, and is a set of control data corresponding to slices described later. In the following, although the description will be made using the term slice, the slice can be read as a data unit. Specific examples will be described later.
- GSH2012A / 2012B includes at least GPS id information for designating GPS2011 corresponding to each GSH2012A / 2012B.
- the bitstream may include slice data 2013A / 2013B next to GSH2012A / 2012B.
- the slice data 2013A / 2013B includes data in which geometric information is encoded.
- an occupancy code described later can be mentioned.
- the bitstream has a configuration in which GSH2012A / 2012B and GPS2011 correspond to each slice data 2013A / 2013B one by one.
- a common GPS2011 can be used for a plurality of slice data 2013A / 2013B.
- GPS2011 does not necessarily have to be transmitted slice by slice.
- a bitstream configuration that does not encode GPS 2011 can be configured.
- the configuration in FIG. 3 is just an example. If GSH2012A / 2012B and GPS2011 correspond to each slice data 2013A / 2013B, an element other than the above may be added as a component of the bitstream.
- the bitstream may include a sequence parameter set (SPS) 2001.
- SPS sequence parameter set
- the configuration may be different from that shown in FIG. Further, it may be combined with a bit stream decoded by the attribute information decoding unit 2060 described later and transmitted as a single bit stream.
- FIG. 4 is an example of the syntax configuration of GPS2011.
- syntax names explained below are just examples. As long as the functions of the syntax described below are the same, the syntax names may be different.
- GPS2011 may include GPS id information (gps_geom_parameter_set_id) for identifying each GPS2011.
- Descriptor column in FIG. 4 means how each syntax is encoded.
- ue (v) means that it is an unsigned 0th-order exponential Golomb code, and u (1) means that it is a 1-bit flag.
- GPS 2011 may include a flag (geom_tree_type) for controlling whether or not to use programming in the tree synthesizing unit 2020.
- goom_tree_type For example, if the value of goom_tree_type is "1”, it is defined to use “Pricitive coding”, and if the value of game_tree_type is "0", “Ocree” (“QB") is used instead of using “Predictive coding”. It may be defined to use).
- GPS 2011 may include a flag (trisoop_enabled_flag) that controls whether or not Trisoop is used in the approximate surface synthesis unit 2030.
- Trisoop_enabled_flag a flag that controls whether or not Trisoop is used in the approximate surface synthesis unit 2030.
- trisoop_enable_flag if the value of trisoop_enable_flag is "1", it may be defined to use Trisoop, and if the value of trisoop_enable_flag is "0", it may be defined not to use Trisoop.
- GPS2011 also includes a flag (inferred_direct_coding_mode_enable_flag) that controls whether or not to additionally use Direct coding mode when Trisoop is not used, that is, when the value of trisoop_enable_flag is "0".
- flag inferred_direct_coding_mode_enable_flag
- inferred_direct_coding_mode_enable_flag For example, if the value of inferred_direct_coding_mode_enable_flag is "1", it is defined to use Direct coding mode, and if the value of inferred_direct_coding_mode_enabled_flag is not defined, it may be defined as "0".
- GPS 2011 may include a flag (geom_tree_coded_axis_list_present_flag) for controlling whether or not "QtBt" is performed in the tree synthesis unit 2020.
- game_tree_coded_axis_list_present_flag For example, if the value of game_tree_coded_axis_list_present_flag is "1”, it is defined as “QtBt”, and if the value of game_tree_coded_axis_list_present_flag is "0", it may be defined as "Oct”.
- geom_tree_coded_axis_list_present_flag if the value of geom_tree_coded_axis_list_present_flag is "1", it is defined that a rectangular parallelepiped other than a cube is allowed as the node shape (that is, "QtBt” is also used), and if the value of geom_tree_coded_axis_list_press is 0, the value of the node is "xis_list_press”. May be defined as allowing only cubes (ie, doing only "Ocree”).
- the GPS 2011 may include a flag (geometry_planar_mode_flag) that controls whether or not the Planar mode is used in the tree synthesis unit 2020.
- geometry_planar_mode_flag if the value of geometry_planar_mode_flag is "1", it may be defined to use Planar mode, and if the value of geometry_planar_mode_flag is "0", it may be defined not to use Planar mode.
- the geometric information decoding unit 2010 may be configured to consider the value of the geometriy_planar_mode_flag as "0", that is, to consider that the Planar mode is not used.
- trisoop_enable_flag, inference_direct_coding_mode_enable_flag, geometry_planar_mode_flag, and geom_tree_coded_axis_exis_list_present_free are not defined.
- GPS2011 may include a flag (geometry_angular_mode_flag) that controls whether or not to use Angular mode.
- geometry_angular_mode_flag if the value of geometry_angular_mode_flag is "1", it may be defined to use Angular mode, and if the value of geometry_angular_mode_flag is "0", it may be defined not to use Angular mode.
- GPS2011 may additionally include planar_buffer_disclosed_flag when it is used by Angular mode and when Planar mode is used.
- planar_buffer_disclosed_flag when the value of planar_buffer_disclosed_flag is "0", it may be defined that the nearest neighbor node search using the buffer is performed when decoding the information related to the Planar mode.
- planar_buffer_disclosed_flag when the value of planar_buffer_disclosed_flag is "1", it may be defined that the nearest neighbor node search using the buffer is not performed when decoding the information related to the Planar mode.
- the geometric information decoding unit 2010 considers the value of the planar_buffer_disclosed_flag to be "1", that is, does not perform the nearest node search using the buffer when decoding the information related to the Planar mode. It may be configured as follows.
- Non-Patent Document 1 describes a specific operation when the value of planar_buffer_disclosed_flag is "0", that is, when the nearest neighbor node search using a buffer is performed when decoding information related to Planar mode. It may be the same as the operation of.
- the flag indicating whether to use the Planar mode is decoded from the bitstream, and if the flag is not included in the bitstream, the value of the flag is regarded as the same value as when the Planar mode is not used. It may be configured as follows.
- Planar mode is used. It is possible to explicitly define not to do so, and it is possible to prevent unintended malfunctions (some processing related to Planar mode is executed even when programming is used).
- the nearest neighbor node when the flag indicating whether or not to use the Planar mode indicates that the Planar mode is used, the nearest neighbor node using the buffer when decoding the information related to the Planar mode. It may be configured to decode a flag that controls whether or not to perform a search.
- both when the Planar mode is not used that is, when the value of geom_tree_type is "1" and the value of geom_tree_type is "0" and the value of geometri_planar_mode_flag is "0".
- the value of the flag is set to the Planar mode. It may be configured to be regarded as the same value as the case where the nearest node search using the buffer is not performed when decoding the information related to.
- GPS2011 may include a flag (geom_scaling_enabled_flag) that controls whether or not to perform quantization of position information (dequantization from the viewpoint of decoding). For example, it may be defined that dequantization is performed when the value of geom_scaling_enable_flag is "1" and dequantization is not performed when the value of geom_scaling_enable_flag is "0".
- geom_scaling_enabled_flag controls whether or not to perform quantization of position information (dequantization from the viewpoint of decoding). For example, it may be defined that dequantization is performed when the value of geom_scaling_enable_flag is "1" and dequantization is not performed when the value of geom_scaling_enable_flag is "0".
- the GPS 2011 may include a syntax (geom_base_qp) indicating the base value of the quantization parameter (QP) when performing dequantization, for example, when the value of geom_scaling_enabled_flag is "1". .. When the GPS 2011 does not include game_base_qp, the value may be defined to be regarded as "0".
- GPS 2011 may additionally include geom_qp_multiplier_log2.
- the value of the syntax may be specified to take an integer value of 0 to 3. An example of using the syntax will be described later.
- an offset of the quantization parameter is additionally performed. It may include a syntax (geom_qp_offset_intvr_log2) that defines the interval at which values are transmitted. The range of possible values of this syntax may include the restriction that it is 0 or more.
- 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" of Non-Patent Document 1 It may include the restriction that it is less than or equal to "slice").
- geom_qp_offset_intvr_log2 is a value after taking a logarithm with a base of 2 for the actual transmission interval
- the maximum value may be a value with a logarithm with a base of 2 for, for example, "Max points in a slice”. ..
- the following clipping process is performed so that the value of geom_qp_offset_intvr_log2 is equal to or greater than "0" and equal to or less than the value obtained by taking the base 2 logarithm of "Max points in a slice". You may.
- game_qp_offset_intvl_log2 Min (Max (goom_qp_offset_intvr_log2,0), log2 (Max points in a slice))
- Min () is a function that returns the minimum value among the arguments
- Max () is a function that returns the maximum value among the arguments.
- PtnQpInterval 1 ⁇ game_qp_offset_intvr_log2
- PtnQpInterval 1 ⁇ game_qp_offset_intvr_log2
- the offset value of the quantization parameter, geom_base_qp, and all three values of geom_slice_qp_offset, which will be described later, are added to calculate the quantization parameter, and the inverse quantization process is performed.
- predictive coding is a method of decoding the position information of each point by adding the predicted value of the position information estimated by the decoding side and the residual of the position information transmitted from the coding side. Details are omitted because they are described in Non-Patent Document 1.
- the geometric information decoding unit 2010 is configured to decode the syntax that defines the interval for transmitting the offset value of the quantization parameter so that the value of the syntax is always "0" or more. May be.
- the value of the syntax that defines 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 more.
- the geometric information decoding unit 2010 defines the interval for transmitting the offset value of the quantization parameter.
- the tax may be configured so that the value of the syntax is always equal to or less than the maximum number of nodes per slice or data unit.
- the value of the syntax that defines the interval for transmitting the offset value of the quantization parameter decoded by the geometric information decoding unit 2010 is configured to be equal to or less than the maximum number of nodes per slice or data unit. May be good.
- the maximum value that can be taken as the value of the syntax that defines the interval for transmitting the offset value of the quantization parameter the maximum value of the number of bits required for decoding the syntax is defined. It can help to define the maximum value of the bit length of the entire GPS.
- the interval between nodes can be greater than or equal to the maximum number of nodes per slice or data unit. It is possible to prevent the bitstream from becoming an effectively meaningless bitstream.
- the geometric information decoding unit 2010 may be configured to consider the value of the geom_direct_coding_mode_qp_offset as "0".
- FIG. 5 is an example of the syntax configuration of GSH2012A and 2012B.
- GSH2012A and 2012B are collectively referred to as GSH2012.
- syntax names explained below are just examples. As long as the functions of the syntax described below are the same, the syntax names may be different.
- GSH2012 may include a syntax (gsh_geometry_parameter_set_id) for identifying the GPS corresponding to such GSH.
- GSH2012 includes a syntax (geom_tree_depth_minus1) indicating the number of layers of the tree when decoding Octree when it is defined to use Octree in the corresponding GPS, that is, for example, when the value of game_tree_type is "0". But it may be.
- the value of game_tree_depth_minus1 is set as the value obtained by subtracting "1" from the actual number of layers, and the geometric information decoding unit 2010 decodes the final number of layers by adding "1" to the value of game_tree_depth_minus1. It may be configured in.
- restriction that the value is "0" or more may be specified as the range of possible values of the syntax indicating the number of layers of the tree when decoding Octree.
- the geometric information decoding unit 2010 may perform the following clipping process.
- game_tree_depth_minus1 Min (Max (game_tree_depth_minus1,0), MaxRootNodeDimLog2-1 + N)
- Min () is a function that returns the minimum value among the arguments
- Max () is a function that returns the maximum value among the arguments.
- the geometric information decoding unit 2010 is a syntax value indicating the number of layers of the tree when decoding Octree. However, it may be configured so as to be always less than or equal to the value obtained by adding a predetermined natural number to the above-mentioned maximum node size.
- the value of the syntax indicating the number of layers of the tree when decoding the Octree decoded by the geometric information decoding unit 2010 is configured to be equal to or less than the value obtained by adding a predetermined natural number to the above-mentioned maximum node size. You may.
- the above-mentioned syntax value can be defined within the minimum necessary range according to the maximum value of the node size defined for each profile or level.
- the maximum value of the required number of bits can be suppressed to the minimum required value.
- the geometric information decoding unit 2010 decodes the flag indicating whether or not "QtBt" is applied, and when the flag indicates that "QtBt” is applied, decodes Octree.
- decoding so that the value of the syntax indicating the number of layers of the tree is equal to or less than the value obtained by adding a predetermined natural number to the above-mentioned maximum node size, and indicating that such a flag does not apply "QtBt”. May be configured so that the value of the syntax indicating the number of layers of the tree when decoding Octree is always equal to or less than the above-mentioned maximum node size.
- the value of the syntax indicating the number of layers of the tree when decoding the Octree decoded by the geometric information decoding unit 2010 is the above-mentioned maximum node.
- the value is less than or equal to the value obtained by adding a predetermined natural number to the size and the flag indicates that "QtBt" is not applied, the thin indicating the number of layers of the tree when decoding the Octree decoded by the geometric information decoding unit 2010.
- the tax value may be configured to be less than or equal to the maximum node size described above.
- the value of the syntax can be defined within the minimum necessary range by matching the maximum value of the number of nodes with the number of Depth, and the syntax can be defined. The maximum value of the required number of bits can be suppressed to the minimum required value.
- GSH2012 is defined to perform dequantization of position information in GPS, that is, for example, when the value of goal_scaling_enabled_flag is "1", even if the offset value (geom_slice_qp_offset) in slice units of the quantization parameter is included. good.
- the geometric information decoding unit 2010 may be configured to consider the value of geom_slice_qp_offset as "0".
- GSH2012 is defined to perform dequantization of position information in GPS and is defined to use Octree in GPS, that is, for example, the value of game_scaling_enable_flag is “1” and the value of game_tree_type is When the value is "0", the syntax (geom_octree_qp_offsets_depth) that defines the hierarchy (depth) of the tree using the offset value of the quantization parameter of the position information may be included.
- GSH2012 may include a syntax (log2_trisoop_node_size) indicating the node size to which Trisoop is applied when it is defined to use Trisoop in GPS, that is, for example, when the value of trisoop_enabled_flag is "1".
- Such syntax may be defined as a value obtained by taking a logarithm with a base of 2 for the node size to which Trisoop is applied.
- the range of possible values of such syntax is not less than or equal to the value obtained by taking the logarithm with the base of 2 for the maximum value of the node size defined for each profile or level (for example, "MaxRootNodeDiM Log2" of Non-Patent Document 1).
- the restriction of that may be specified.
- the root node size of the slice (or data unit) is not less than or equal to the value obtained by taking the logarithm with the base of 2.
- the root node size can be calculated using, for example, game_tree_coded_axis_flag as described in Non-Patent Document 1.
- the geometric information decoding unit 2010 may perform the following clipping process.
- log2_trisoop_node_size Min (Max (log2_trisoop_node_size, 0), log2 (RootNodeSize))
- Min () is a function that returns the minimum value among the arguments
- Max () is a function that returns the maximum value among the arguments.
- RootNodeSize is a variable representing the root node size.
- the geometric information decoding unit 2010 is configured to decode so that the value of the syntax indicating the node size to which Trisoop is applied is always equal to or less than the maximum node size of the slice or the data unit. May be good.
- the value of the syntax indicating the node size to which the Trisoop decoded by the geometric information decoding unit 2010 is applied may be configured to be equal to or less than the maximum node size of the slice or the data unit.
- the above-mentioned syntax value can be defined within the minimum necessary range according to the maximum value of the node size defined for each profile or level.
- the maximum value of the required number of bits can be suppressed to the minimum required value.
- the geometric information decoding unit 2010 is configured to decode so that the value of the syntax indicating the node size to which Trisoop is applied is always equal to or less than the root node size of the slice or the data unit. May be good.
- the value of the syntax indicating the node size to which the Trisoop decoded by the geometric information decoding unit 2010 is applied may be configured to be equal to or less than the root node size of the slice or the data unit.
- the above-mentioned syntax value can be defined within the minimum necessary range according to the root node size for each slice or data unit, and the number of bits required for such syntax.
- the maximum value of can be suppressed to the minimum required value.
- FIG. 6 is a flowchart showing an example of the processing of the tree synthesizing unit 2020.
- step S601 the tree synthesizing unit 2020 confirms whether or not all the Depth processes have been completed for the tree structure when "Ocree" or "QtBt" is applied.
- the Depth value of the slice is, for example, the number of layers decoded from game_tree_depth_minus1 transmitted by GSH.
- the tree synthesizing unit 2020 can determine whether or not the processing is completed for all the Depths by comparing the Depth value of the slice with the already processed Depth value.
- the tree synthesizing unit 2020 proceeds to the processing of step S607 and ends the processing. On the other hand, if the tree synthesis unit 2020 has not completed all the Depth processes, the tree synthesis unit 2020 proceeds to the process of step S602.
- step S602 the tree synthesizing unit 2020 determines whether or not the processing has been completed for all the nodes in the Depth.
- the number of nodes included in the Depth can be calculated from the result of the node information decoding process (step S606) in the Depth processed immediately before. Further, the number of nodes included in the Depth to be processed first is "1".
- the tree synthesizing unit 2020 When the processing of all the nodes included in the Depth is completed, the tree synthesizing unit 2020 returns to the processing of step S601. On the other hand, if the processing of all the nodes is not completed, the tree synthesizing unit 2020 proceeds to the processing of step S603.
- step S603 the tree synthesizing unit 2020 determines whether or not to decode the nodeQpOffset used in the processing of the subsequent step S605.
- the process proceeds to S604 and the nodQpOffset is decoded.
- the decoding of the nodeQpOffset is omitted, and the process proceeds to step S605.
- the predetermined condition may include a condition that the value of the depth is equal to the GameScalingDept.
- GameScalingDeps may be set depending on whether or not it is defined in GPS to perform dequantization of position information, for example.
- GameScalingDeps When the value of game_scaling_enable_flag is "1", the value of GameScalingDeps is the same as the value of game_octree_qp_offsets_depth, and the value of "geom_scaling_enable_flag is 0".
- the predetermined condition may include a condition that the GPS is defined to perform dequantization of position information, that is, for example, the value of goal_scaling_enabled_flag is "1".
- step S604 the tree synthesizing unit 2020 decodes the nodQpOffset.
- the tree synthesizing unit 2020 decodes the syntax (geom_node_qp_offset_eq0_flag) indicating whether or not the value of nodeQpOffset is "0".
- the tree synthesizing unit 2020 additionally indicates a syntax (geom_node_qp_offset_sign_flag) indicating a sign (plus or minus) of nodeQpoffset (plus or minus) and a node_set_ident_sign_flag and nodeQp. To decrypt.
- the tree synthesizing unit 2020 decodes the value of nodeQpOffset using the syntax decoded above.
- the tree synthesis unit 2020 sets the value of nodeQpOffset to "0".
- the tree synthesizing unit 2020 decodes as follows.
- nodeQpOffset (2 ⁇ node_node_qp_offset_sign_flag-1) ⁇ (geom_node_qp_offset_abs_minus1 + 1) If the process of step S604 is skipped, that is, if the geom_node_qp_offset_eq0_flag is not decoded, the tree synthesizing unit 2020 may consider the value of the geom_node_qp_offset_eq0_flag to be "1". That is, when the process of step S604 is skipped, the tree synthesizing unit 2020 may consider the value of nordQpOffset to be “0”.
- the tree synthesizing unit 2020 decodes the flag indicating whether or not the position information is dequantized from the bit stream, and when the flag indicates that the position information is not dequantized, the node
- the value of the offset value nodQpOffset of each quantization parameter may be configured to be “0”.
- the value of norQpOffset can always be set to "0", and the value of NodeQp described later is "0", that is, no dequantization is performed. It will be easier to guarantee that it will be a value.
- the tree synthesizing unit 2020 decodes the syntax regarding the above-mentioned nodeQpOffset. It may be configured to omit the process.
- the tree synthesizing unit 2020 decodes the flag indicating whether or not the value of the nodeQpOffset is "0" as one of the syntaxes related to the nodeQpOffset, and the decoding of the flag is omitted.
- the value of such a flag may be configured to be regarded as a value indicating that the value of nordQpOffset is "0".
- the tree synthesizing unit 2020 proceeds to step S605.
- step S605 the tree synthesizing unit 2020 decodes the value of NodeQp.
- the tree synthesizing unit 2020 may calculate the value of NodeQp by the following formula when the current depth is equal to the GameScalingDeptth.
- NodeQp (geom_base_qp + geom_slice_qp_offset + nodeQpOffset) ⁇ game_qp_multiplier_log2
- the value of NodeQp is defined to be "0". May be good.
- a conformation constraint that the value of NodeQp must be 0 or more may be defined for the bitstream.
- the tree synthesizing unit 2020 may calculate the NodeQp by the following formula so that the value of the NodeQp is always 0 or more.
- NodeQp Max (geom_base_qp + geom_slice_qp_offset + nodeQpOffset, 0) ⁇ geom_qp_multiplier_log2
- Max () is a function that returns the largest value among the arguments.
- the tree synthesizing unit 2020 defines the value of NodeQp as the same value as the parent node of the node, that is, the NodeQp used when the depth is one smaller than the node when the current depth is larger than the GameScalingDept. You may.
- the tree synthesizing unit 2020 may calculate the value of NodeQp by the following formula.
- Min () is a function that returns the smallest value among the arguments.
- minScalingNodeDiM Log2 has a logarithm with 2 as the base for the smallest axial size among the three axial directions (for example, x-axis, y-axis, and z-axis) that define the node size in the depth. This is the value taken.
- a conformation constraint that the value of NodeQp must be 0 or more may be defined for the bitstream.
- the tree synthesizing unit 2020 may determine that the bitstream is contrary to the specifications.
- the tree synthesizing unit 2020 may calculate the NodeQp by the following formula so that the value of the NodeQp is always "0" or more.
- NodeQp Max (Min (minScalingNodeDiM Log2 ⁇ 8, dcmQp), 0)
- the NodeQp obtained as described above is used for the dequantization process of position information.
- the dequantization process can be executed, for example, as follows. In addition, when it is defined in GPS that the dequantization of position information is not performed, that is, when the value of geom_scaling_enabled_flag is "0", the following dequantization processing is not performed. May be good.
- the tree synthesizing unit 2020 separates the coordinate value val (any of x component, y component, and z component) of the node before dequantization into highPart and lowPart as follows.
- ScalingNodeSizeLog2 [cIdx] is a value obtained by taking a logarithm with the base 2 for the node size before quantization in the axial direction (any of the x direction, y direction, and z direction) corresponding to the value of cIdx. .. Further, scalingExpansionLog2 is a value obtained by dividing NodeQp by an integer by 8. That is, scalingExpansionLog2 is a value obtained by dividing NodeQp by 4, and then rounding down the obtained quotient after the decimal point to obtain an integer.
- the tree synthesizing unit 2020 calculates the scale factor sF by the following formula.
- sF 8+ (qP & 7) ⁇ qP / 8
- the value of qP is the same as that of NodeQp.
- & is an operator that calculates the logical product for each bit. That is, qP & 3 is equivalent to the process of extracting the lower two digits when the value of qP is expressed in binary.
- the value of qP that is, the value of NodeQp is ". It is expected to be an integer greater than or equal to 0 ".
- the tree synthesizing unit 2020 calculates the coordinate value pos after dequantization by the following formula.
- the tree synthesizing unit 2020 may be configured to decode so that the value of the quantization parameter NodeQp for each node is always equal to or more than a predetermined value or larger than a predetermined value.
- the consistency of the entire decoding processing can be maintained by such a configuration.
- the tree synthesizing unit 2020 may be configured to perform clipping processing so as to be equal to or larger than a predetermined value or larger than a predetermined value after calculating the value of NodeQp.
- NodeQp is always equal to or more than a predetermined value or larger than a predetermined value regardless of the value of the parameter value such as geom_base_qp.
- the tree synthesizing unit 2020 may be configured to determine that the specification is violated when the value of NodeQp is less than the predetermined value or less than the predetermined value as described above.
- the above-mentioned predetermined value may be configured to be "0".
- the consistency of the entire decoding processing can be maintained by such a configuration.
- step S606 After calculating NodeQp as described above, the tree synthesizing unit 2020 proceeds to step S606.
- step S606 the tree synthesizing unit 2020 divides the node into child nodes by 8 divisions when using "Octree”, and divides the node into 8 divisions, 4 divisions, or 2 divisions when using "QtBt". It is divided into child nodes, and based on information such as Occupancy code, Occupancy map indicating whether point cloud data is included in each child node is decoded.
- Occupancy map when the value of Occupancy map is "1", it can be defined that the point cloud data exists in the corresponding child node. Further, for example, when the value of Occupancy map is "0", it can be defined that the point cloud data does not exist in the corresponding child node or the child node itself does not exist.
- the tree synthesis unit 2020 can know the number of nodes in the Depth to be processed next by counting the number of child nodes in which the value of Occupancy map is "1" in the same Depth.
- the tree synthesizing unit 2020 returns to the process of step S602.
- attribute information decoding unit 2060 Attribute information decoding unit 2060
- control data decoded by the attribute information decoding unit 2060 will be described with reference to FIGS. 7 to 9.
- FIG. 7 is an example of the configuration of the coded data (bit stream) received by the geometric information decoding unit 2060.
- the bitstream may include APS2061.
- APS2061 is also called an attribute parameter set and is a set of control data related to decoding of attribute information. Specific examples will be described later.
- Each APS2061 contains at least APS id information for identifying each when a plurality of APS2061s are present.
- the bitstream may include ASH2062A / 2062B.
- ASH2062A / 2062B is also called an attribute slice header, and is a set of control data corresponding to the slice described later. Specific examples will be described later.
- the ASH2062A / 2062B includes at least the APS id information for designating the APS2061 corresponding to each ASH2062A / 2062B.
- the bitstream may include slice data 2063A / 2063B next to ASH2062A / 2062B.
- the slice data 2063A / 2063B includes data in which attribute information is encoded.
- the bitstream has a configuration in which ASH2062A / 2062B and APS2061 correspond to each slice data 2063A / 2063B one by one.
- the common APS2061 can be used for a plurality of slice data 2063A / 2063B.
- APS2061 does not necessarily have to be transmitted slice by slice.
- the bitstream configuration may be such that the APS2061 is not encoded.
- the configuration shown in FIG. 7 is just an example. If ASH2062A / 2062B and APS2061 have a corresponding configuration to each slice data 2063A / 2063B, an element other than the above may be added as a component of the bitstream.
- the bitstream may include a sequence parameter set (SPS).
- the configuration may be different from that shown in FIG. 7. Further, it may be combined with the bitstream decoded by the geometric information decoding unit 2010 and transmitted as a single bitstream.
- slice data 2013A and 2063A, slice data 2013B and 2063B may be treated as single slice data, respectively, and GSH2012A and ASH2062A, GSH2012B and ASH2062B may be arranged immediately before each slice.
- GPS2011 and APS2061 may be arranged prior to each GSH and ASH.
- FIG. 8 is an example of the syntax configuration of SPS2001.
- SPS2001 may include a syntax (level_idc) that defines the level.
- SPS2001 may include an index (sps_seq_parameter_set_id) for identifying a plurality of SPS.
- SPS2001 may include syntax (sps_num_attribute_sets) indicating the number of attribute information contained in the bitstream.
- SPS2001 may include a syntax (attribute_dimension_minus1 [i]) indicating the number of dimensions of each attribute information of sps_num_attribute_sets included in the bitstream.
- attribute information corresponds to, for example, a reflectance or a luminance signal.
- the attribute information corresponds to, for example, dimensional data composed of a luminance signal and a color difference signal (Cb signal, Cr signal).
- Attr_secondary_dim_present_flag may be defined as "1".
- Attr_secondary_dim_present_flag which is a flag indicating whether or not the color difference data is included in the bit stream by referring to the number of dimensions of the attribute information.
- the method may be any other method.
- the syntax indicating the type of attribute information is decoded and it is shown that they are all "reflection coefficients", it is determined that the bitstream does not include the color difference data, and the value of attr_secondary_dim_present_flag is set. It may be defined as "0".
- the color difference data may be included in the bitstream by including the value of attr_secondary_dim_present_flag in the bitstream and decoding the value of the flag from the bitstream. That is, when the value of attr_secondary_dim_present_flag decoded from the bit stream is "0", it may be determined that the bit stream does not include the color difference data.
- FIG. 9 is an example of the syntax configuration of APS2061.
- APS2061 may include APS id information (apps_attr_parameter_set_id) for identifying each APS2061.
- APS2061 may include information (attr_coding_type) indicating a method of decoding attribute information. For example, when the value of attr_coding_type is "0", the reverse lifting unit 2100 performs variable weighted lifting prediction, and when the value of attr_coding_type is "1", RAHT is performed by the RAHT unit 2080, and the value of attr_coding_type. When is "2", it may be specified that the reverse lifting unit 2100 performs lifting prediction with a fixed weight.
- APS2061 may include an offset value (apps_attr_chroma_qp_offset) of the quantization parameter of the color difference signal when the value of attr_secondary_dim_present_flag is "1".
- the attribute information decoding unit 2060 may be defined so that the value of aps_attr_chroma_qp_offset is regarded as "0".
- APS2061 may include a flag (lifting_last_program_pend_pend_pend_pend_pend_pend_pend_pend_conent_flag) that controls whether or not to predict the residual between color difference signals when the value of attr_secondary_dim_present_flag is "1" and the value of attr_coding_type is "2".
- a flag lifting_last_program_pend_pend_pend_pend_pend_pend_pend_pend_pend_pend_conent_flag
- the attribute information decoding unit 2060 may be defined so that the value of lifting_last_component_prediction_enable_flag is regarded as "0".
- APS2061 may include a flag (inter_component_program) that controls whether or not prediction is performed between luminance signals and color difference signals when the value of attr_secondary_dim_present_flag is "1" and the value of attr_coding_type is "1".
- inter_component_program that controls whether or not prediction is performed between luminance signals and color difference signals when the value of attr_secondary_dim_present_flag is "1" and the value of attr_coding_type is "1".
- inter_component_prescription_enable_flag When the value of inter_component_prescription_enable_flag is "1", the prediction is performed between the luminance signal and the color difference signal, and when the value of inter_component_prescription_enable_flag is "0", the prediction is not performed between the luminance signal and the color difference signal. It may be defined as.
- the attribute information decoding unit 2060 may be defined so that the value of the inter_component_prediction_enable_flag is regarded as "0".
- the attribute information decoding unit 2060 determines whether or not the bit stream contains the color difference signal, and if it is determined that the color difference signal is not included, the attribute information decoding unit 2060 omits decoding the syntax related to the color difference signal. It may be configured as follows.
- the attribute information decoding unit 2060 decodes the number of dimensions of the attribute information included in the bitstream, and when the number of dimensions of all the attribute information is "1", a color difference signal is transmitted to the bitstream. It may be configured to determine that it is not included.
- the processing related to the color difference signal can be omitted.
- 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.
- the attribute information decoding unit 2060 sets the value of the flag as the residual between the color difference signals. It may be configured to be regarded as the same value as the value when no prediction is made.
- the attribute information decoding unit 2060 sets the value of the flag between the luminance signals and the color difference signal. It may be configured to be regarded as the same value as the value when no prediction is made between them.
- APS2061 may include a flag (lifting_scalability_enabled_flag) indicating whether or not scalable lifting is applied.
- lifting_scalability_enable_flag is "0"
- lifting_scalability_enable_flag is "1”
- APS2061 may include a syntax (lifting_num_detail_levels_minus1) that specifies the number of LoD levels calculated by the LoD calculation unit 2090.
- the syntax is set as an integer value of "0" or more, and the value obtained by adding "1" to the value of the syntax is LoD. It may be the number of levels of.
- APS2061 includes a flag (lifting_lod_regular_sampling_enable) indicating whether or not points belonging to each LoD are sampled at equal intervals when the number of LoD levels is larger than "1", that is, when the value of lifting_num_detail_levels_minus1 is larger than "0". But it may be.
- lifting_lod_regular_sampling_enable_flag For example, if the value of lifting_lod_regular_sampling_enable_flag is "1", sampling is performed at equal intervals, and if the value of lifting_lod_regular_sampling_enable_flag is "0", sampling may not be performed at equal intervals.
- APS2061 includes a syntax (may include lifting_sampling_period_minus2) that specifies a sample interval for each LoD level when sampling is performed at equal intervals, that is, when the value of lifting_sampling_enable_flag is "1".
- the sample interval may be an integer of 2 or more, and the value of lifting_sampling_period_minus2 [idx] may be defined as the number obtained by subtracting 2 from the actual sample interval.
- the restriction that the value is 0 or more may be specified as the range of possible values of this syntax.
- lifting_sampling_period_minus2 [idx] is defined as the number obtained by subtracting 2 from the actual sample interval
- the constraint that it is equal to or less than the value obtained by subtracting 2 from "Max points in a slice” is defined. You may be.
- the attribute information decoding unit 2060 performs the following clipping process after decoding such a syntax so that the value of lifting_sampling_period_minus2 [idx] is "0" or more and "Max points in a slice-2" or less. You may go.
- game_qp_offset_intvr_log2 Min (Max (max (lifting_sampling_period_minus2 [idx], 0), Max points in a slice-2)
- Min () is a function that returns the minimum value among the arguments
- Max () is a function that returns the maximum value among the arguments.
- the attribute information decoding unit 2060 is configured to decode the syntax for specifying the sample interval for each LoD level so that the value of the syntax is always "0" or more. May be good.
- the value of the syntax that specifies the sample interval for each level of each LoD decoded by the attribute information decoding unit 2060 may be configured to be "0" or more.
- the attribute information decoding unit 2060 describes the syntax for specifying the sample interval for each LoD level. It may be configured so that the value of the syntax is always equal to or less than the maximum number of nodes per slice or one data unit.
- the value of the syntax that specifies 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 one data unit. ..
- the interval between nodes is restricted by limiting the maximum value that can be taken as the value of the syntax that specifies the sample interval for each LoD level to be less than or equal to the maximum number of nodes per slice or data unit. Can be prevented from becoming an effectively meaningless bitstream such that is equal to or greater than the maximum number of nodes per slice or data unit.
- point cloud coding device 100 and the point cloud decoding device 200 described above may be realized by a program that causes a computer to execute each function (each process).
- the present invention has been described by using the application to the point cloud coding device 100 and the point cloud decoding device 200 as an example, but the present invention is not limited to such examples. The same can be applied to a point cloud coding / decoding system having each function of the point cloud coding device 100 and the point cloud decoding device 200.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Processing (AREA)
Abstract
本発明に係る点群復号装置200は、ビットストリームに色差信号が含まれるか否かを判定し、かかるビットストリームに色差信号が含まれていないと判定した場合、かかる色差信号に関するシンタックスの復号を省略するように構成されている属性情報復号部2060を備える。
Description
本発明は、点群復号装置、点群復号方法及びプログラムに関する。
非特許文献1には、色差信号に対する処理を制御するシンタックスを復号する技術が開示されている。
G-PCC Future Enhancement、ISO/IEC/ JTC1/SC29/WG11 N19328
しかしながら、非特許文献1では、属性情報に色差信号データが含まれているか否かに関わらず、常に色差信号に対する処理を制御するシンタックスを復号しているという問題点があった。
そこで、本発明は、上述の課題に鑑みてなされたものであり、不要なシンタックスの復号を省略することでビット量を削減することができる点群復号装置、点群復号方法及びプログラムを提供することを目的とする。
本発明の第1の特徴は、点群復号装置であって、ビットストリームに色差信号が含まれるか否かを判定し、前記ビットストリームに前記色差信号が含まれていないと判定した場合、前記色差信号に関するシンタックスの復号を省略するように構成されている属性情報復号部を備えることを要旨とする。
本発明の第2の特徴は、点群復号方法であって、ビットストリームに色差信号が含まれるか否かを判定する工程と、前記ビットストリームに前記色差信号が含まれていないと判定した場合、前記色差信号に関するシンタックスの復号を省略する工程とを有することを要旨とする。
本発明の第3の特徴は、点群復号装置で用いるプログラムであって、コンピュータに、ビットストリームに色差信号が含まれるか否かを判定する工程と、前記ビットストリームに前記色差信号が含まれていないと判定した場合、前記色差信号に関するシンタックスの復号を省略する工程とを実行させることを要旨とする。
本発明によれば、不要なシンタックスの復号を省略することでビット量を削減することができる点群復号装置、点群復号方法及びプログラムを提供することができる。
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、以下の実施形態における構成要素は、適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、以下の実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
(第1実施形態)
以下、図1~図9を参照して、本発明の第1実施形態に係る点群処理システム10について説明する。図1は、本実施形態に係る実施形態に係る点群処理システム10を示す図である。
以下、図1~図9を参照して、本発明の第1実施形態に係る点群処理システム10について説明する。図1は、本実施形態に係る実施形態に係る点群処理システム10を示す図である。
図1に示すように、点群処理システム10は、点群符号化装置100及び点群復号装置200を有する。
点群符号化装置100は、入力点群信号を符号化することによって符号化データ(ビットストリーム)を生成するように構成されている。点群復号装置200は、ビットストリームを復号することによって出力点群信号を生成するように構成されている。
なお、入力点群信号及び出力点群信号は、点群内の各点の位置情報と属性情報とから構成される。属性情報は、例えば、各点の色情報や反射率である。
ここで、かかるビットストリームは、点群符号化装置100から点群復号装置200に対して伝送路を介して送信されてもよい。また、ビットストリームは、記憶媒体に格納された上で、点群符号化装置100から点群復号装置200に提供されてもよい。
(点群復号装置200)
以下、図2を参照して、本実施形態に係る点群復号装置200について説明する。図2は、本実施形態に係る点群復号装置200の機能ブロックの一例について示す図である。
以下、図2を参照して、本実施形態に係る点群復号装置200について説明する。図2は、本実施形態に係る点群復号装置200の機能ブロックの一例について示す図である。
図2に示すように、点群復号装置200は、幾何情報復号部2010と、ツリー合成部2020と、近似表面合成部2030と、幾何情報再構成部2040と、逆座標変換部2050と、属性情報復号部2060と、逆量子化部2070と、RAHT部2080と、LoD算出部2090と、逆リフティング部2100と、逆色変換部2110とを有する。
幾何情報復号部2010は、点群符号化装置100から出力されるビットストリームのうち、幾何情報に関するビットストリーム(幾何情報ビットストリーム)を入力とし、シンタックスを復号するように構成されている。
復号処理は、例えば、コンテキスト適応二値算術復号処理である。ここで、例えば、シンタックスは、位置情報の復号処理を制御するための制御データ(フラグやパラメータ)を含む。
ツリー合成部2020は、幾何情報復号部2010によって復号された制御データ及び後述するツリー内のどのノードに点群が存在するかを示すoccupancy codeを入力として、復号対象空間内のどの領域に点が存在するかというツリー情報を生成するように構成されている。
本処理は、復号対象空間を直方体で区切り、occupancy codeを参照して各直方体内に点が存在するかを判断し、点が存在する直方体を複数の直方体に分割し、occupancy codeを参照するという処理を再帰的に繰り返すことで、ツリー情報を生成することができる。
本実施形態では、上述の直方体を常に立方体として8分木分割を再帰的に行う「Octree」と呼ばれる手法、及び、8分木分割に加え、4分木分割及び2分木分割を行う「QtBt」と呼ばれる手法を使用することができる。「QtBt」を使用するか否かは、制御データとして点群符号化装置100側から伝送される。
或いは、制御データによってPredicitive codingを使用するように指定された場合、ツリー合成部2020は、点群符号化装置100において決定した任意のツリー構成に基づいて各点の座標を復号するように構成されている。
近似表面合成部2030は、ツリー合成部2020によって生成されたツリー情報を用いて、近似表面情報を生成するように構成されている。
近似表面情報は、例えば、物体の3次元点群データを復号する際等において、点群が物体表面に密に分布しているような場合に、個々の点群を復号するのではなく、点群の存在領域を小さな平面で近似して表現したものである。
具体的には、近似表面合成部2030は、例えば、「Trisoup」と呼ばれる手法で、近似表面情報を生成することができる。「Trisoup」の具体的な処理としては、例えば、非特許文献1に記載の方法を用いることができる。また、Lidar等で取得した疎な点群を復号する場合は、本処理を省略することができる。
幾何情報再構成部2040は、ツリー合成部2020によって生成されたツリー情報及び近似表面合成部2030によって生成された近似表面情報を元に、復号対象の点群データの各点の幾何情報(復号処理が仮定している座標系における位置情報)を再構成するように構成されている。
逆座標変換部2050は、幾何情報再構成部2040によって再構成された幾何情報を入力として、復号処理が仮定している座標系から、出力点群信号の座標系に変換を行い、位置情報を出力するように構成されている。
属性情報復号部2060は、点群符号化装置100から出力されるビットストリームのうち、属性情報に関するビットストリーム(属性情報ビットストリーム)を入力とし、シンタックスを復号するように構成されている。
復号処理は、例えば、コンテキスト適応二値算術復号処理である。ここで、例えば、シンタックスは、属性情報の復号処理を制御するための制御データ(フラグ及びパラメータ)を含む。
また、属性情報復号部2060は、復号したシンタックスから、量子化済み残差情報を復号するように構成されている。
逆量子化部2070は、属性情報復号部2060によって復号された量子化済み残差情報と、属性情報復号部2060によって復号された制御データの一つである量子化パラメータとを元に、逆量子化処理を行い、逆量子化済み残差情報を生成するように構成されている。
逆量子化済み残差情報は、復号対象の点群の特徴に応じて、RAHT部2080及びLoD算出部2090のいずれかに出力される。いずれに出力されるかは、属性情報復号部2060によって復号される制御データによって指定される。
RAHT部2080は、逆量子化部2070によって生成された逆量子化済み残差情報及び幾何情報再構成部2040によって生成された幾何情報を入力とし、RAHT(Region Adaptive Hierarchical Transform)と呼ばれるHaar変換(復号処理においては、逆Haar変換)の一種を用いて、各点の属性情報を復号するように構成されている。RAHTの具体的な処理としては、例えば、非特許文献1に記載の方法を用いることができる。
LoD算出部2090は、幾何情報再構成部2040によって生成された幾何情報を入力とし、LoD(Level of Detail)を生成するように構成されている。
LoDは、ある点の属性情報から、他のある点の属性情報を予測し、予測残差を符号化或いは復号するといった予測符号化を実現するための参照関係(参照する点及び参照される点)を定義するための情報である。
言い換えると、LoDは、幾何情報に含まれる各点を複数のレベルに分類し、下位のレベルに属する点については上位のレベルに属する点の属性情報を用いて属性を符号化或いは復号するといった階層構造を定義した情報である。
LoDの具体的な決定方法としては、例えば、非特許文献1に記載の方法を用いてもよい。
逆リフティング部2100は、LoD算出部2090によって生成されたLoD及び逆量子化部2070によって生成された逆量子化済み残差情報を用いて、LoDで規定した階層構造に基づいて各点の属性情報を復号するように構成されている。逆リフティングの具体的な処理としては、例えば、非特許文献1に記載の方法を用いることができる。
逆色変換部2110は、復号対象の属性情報が色情報であり且つ点群符号化装置100側で色変換が行われていた場合に、RAHT部2080又は逆リフティング部2100から出力される属性情報に逆色変換処理を行うように構成されている。かかる逆色変換処理の実行の有無については、属性情報復号部2060によって復号された制御データによって決定される。
点群復号装置200は、以上の処理により、点群内の各点の属性情報を復号して出力するように構成されている。
(幾何情報復号部2010)
以下、図3~図4を用いて幾何情報復号部2010で復号される制御データについて説明する。
以下、図3~図4を用いて幾何情報復号部2010で復号される制御データについて説明する。
図3は、幾何情報復号部2010で受信する符号化データ(ビットストリーム)の構成の一例である。
第1に、ビットストリームは、GPS2011を含んでいてもよい。GPS2011は、ジオメトリパラメータセットとも呼ばれ、幾何情報の復号に関する制御データの集合である。具体例については後述する。各GPS2011は、複数のGPS2011が存在する場合に個々を識別するためのGPS id情報を少なくとも含む。
第2に、ビットストリームは、GSH2012A/2012Bを含んでいてもよい。GSH2012A/2012Bは、ジオメトリスライスヘッダ或いはジオメトリデータユニットヘッダとも呼ばれ、後述するスライスに対応する制御データの集合である。以降では、スライスという呼称を用いて説明するが、スライスをデータユニットと読み替えることもできる。具体例については後述する。GSH2012A/2012Bは、各GSH2012A/2012Bに対応するGPS2011を指定するためのGPS id情報を少なくとも含む。
第3に、ビットストリームは、GSH2012A/2012Bの次に、スライスデータ2013A/2013Bを含んでいてもよい。スライスデータ2013A/2013Bには、幾何情報を符号化したデータが含まれている。スライスデータ2013A/2013Bの一例としては、後述するoccupancy codeが挙げられる。
以上のように、ビットストリームは、各スライスデータ2013A/2013Bに、1つずつGSH2012A/2012B及びGPS2011が対応する構成となる。
上述のように、GSH2012A/2012Bにて、どのGPS2011を参照するかをGPS id情報で指定するため、複数のスライスデータ2013A/2013Bに対して共通のGPS2011を用いることができる。
言い換えると、GPS2011は、スライスごとに必ずしも伝送する必要がない。例えば、図3のように、GSH2012B及びスライスデータ2013Bの直前では、GPS2011を符号化しないようなビットストリームの構成とすることもできる。
なお、図3の構成は、あくまで一例である。各スライスデータ2013A/2013Bに、GSH2012A/2012B及びGPS2011が対応する構成となっていれば、ビットストリームの構成要素として、上述以外の要素が追加されてもよい。例えば、図3に示すように、ビットストリームは、シーケンスパラメータセット(SPS)2001を含んでいてもよい。また、同様に、伝送に際して、図3と異なる構成に整形されてもよい。更に、後述する属性情報復号部2060で復号されるビットストリームと合成して単一のビットストリームとして伝送されてもよい。
図4は、GPS2011のシンタックス構成の一例である。
なお、以下で説明するシンタックス名は、あくまで一例である。以下で説明したシンタックスの機能が同様であれば、シンタックス名は異なっていても差し支えない。
GPS2011は、各GPS2011を識別するためのGPS id情報(gps_geom_parameter_set_id)を含んでもよい。
なお、図4のDescriptor欄は、各シンタックスが、どのように符号化されているかを意味している。ue(v)は、符号無し0次指数ゴロム符号であることを意味し、u(1)は、1ビットのフラグであることを意味する。
GPS2011は、ツリー合成部2020でPredicitive codingを使用するかどうかを制御するためのフラグ(geom_tree_type)を含んでもよい。
例えば、geom_tree_typeの値が「1」の場合は、Predicitive codingを使用すると定義し、geom_tree_typeの値が「0」の場合は、Predicitive codingを使用せず,代わりに「Octree」(「QtBt」を使用する場合も含む)を使用するように定義されていてもよい。
GPS2011は、近似表面合成部2030においてTrisoupを用いるか否かを制御するフラグ(trisoup_enabled_flag)を含んでもよい。
例えば、trisoup_enabled_flagの値が「1」の場合は、Trisoupを使用すると定義し、trisoup_enabled_flagの値が「0」の場合は、Trisoupを使用しないように定義されていてもよい。
GPS2011は、Trisoupを使用しないとき、すなわち、trisoup_enabled_flagの値が「0」の場合、追加でDirect coding modeを使用するか否かを制御するフラグ(inferred_direct_coding_mode_enabled_flag)を含んでもよい。
例えば、inferred_direct_coding_mode_enabled_flagの値が「1」の場合は、Direct coding modeを使用すると定義し、inferred_direct_coding_mode_enabled_flagの値が「0」の場合は、Direct coding modeを使用しないように定義されていてもよい。
GPS2011は、ツリー合成部2020で「QtBt」を行うかどうかを制御するためのフラグ(geom_tree_coded_axis_list_present_flag)を含んでもよい。
例えば、geom_tree_coded_axis_list_present_flagの値が「1」の場合は、「QtBt」を行うと定義し、geom_tree_coded_axis_list_present_flagの値が「0」の場合は、「Octree」のみを行うと定義してもよい。
或いは、geom_tree_coded_axis_list_present_flagの値が「1」の場合は、ノード形状として立方体以外の直方体も許容する(すなわち、「QtBt」も使用する)と定義し、geom_tree_coded_axis_list_present_flagの値が「0」の場合は、ノード形状として立方体のみ許可する(すなわち「Octree」のみを行う)と定義してもよい。
上述の定義以外でも、「QtBt」が使用可能か否かを制御するように定義されていればよい。
GPS2011は、ツリー合成部2020でPlanar modeを使用するかどうかを制御するフラグ(geometry_planar_mode_flag)を含んでもよい。
例えば、geometry_planar_mode_flagの値が「1」の場合は、Planar modeを使用すると定義し、geometry_planar_mode_flagの値が「0」の場合は、Planar modeを使用しないように定義されていてもよい。
geometry_planar_mode_flagが含まれていなかった場合、幾何情報復号部2010は、geometry_planar_mode_flagの値を「0」とみなし、すなわち、Planar modeを使用しないとみなすように構成されていてもよい。
なお、trisoup_enabled_flag、inferred_direct_coding_mode_enabled_flag、geometry_planar_mode_flag及びgeom_tree_coded_axis_list_present_flagは、Predicitive codingを使用しない場合のみ復号されるように定義されていてもよい。
GPS2011は、Angular modeを使用するか否かを制御するフラグ(geometry_angular_mode_flag)を含んでもよい。
例えば、geometry_angular_mode_flagの値が「1」の場合は、Angular modeを使用すると定義し、geometry_angular_mode_flagの値が「0」の場合は、Angular modeを使用しないように定義されていてもよい。
GPS2011は、Angular modeが使用する場合で且つPlanar modeを使用する場合に、追加でplanar_buffer_disabled_flagを含んでもよい。
ここで、planar_buffer_disabled_flagの値が「0」の場合は、Planar modeに関連する情報を復号する際にバッファを用いた最近傍ノード探索を行うと定義されていてもよい。
一方、planar_buffer_disabled_flagの値が「1」の場合は、Planar modeに関連する情報を復号する際にバッファを用いた最近傍ノード探索を行わないと定義されていてもよい。
planar_buffer_disabled_flagが含まれていなかった場合、幾何情報復号部2010は、planar_buffer_disabled_flagの値を「1」とみなし、すなわち、Planar modeに関連する情報を復号する際にバッファを用いた最近傍ノード探索を行わないように構成されていてもよい。
planar_buffer_disabled_flagの値が「0」の場合、すなわち、Planar modeに関連する情報を復号する際にバッファを用いた最近傍ノード探索を行う場合の具体的な動作については、例えば、非特許文献1に記載の動作と同じでもよい。
以上のように、ビットストリームからPlanar modeを使用するか否かを示すフラグを復号し、前記フラグがビットストリームに含まれない場合、前記フラグの値をPlanar modeを使用しない場合と同じ値とみなすように構成されていてもよい。
このような構成とすることで、Planar modeを使用するか否かを示すフラグが復号されない場合、例えばPredicitive codingを使用する場合(geom_tree_typeの値が「1」の場合)にも、Planar modeを使用しないことを明示的に定義することができ、意図しない誤動作(Predicitive codingを使用する場合にもPlanar modeに関する一部の処理が実行されてしまうこと)を防ぐことができる。
また、以上のように、Planar modeを使用するか否かを示すフラグが、Planar modeを使用することを示している場合、Planar modeに関連する情報を復号する際にバッファを用いた最近傍ノード探索を行うか否かを制御するフラグを復号するように構成されていてもよい。
このような構成とすることで、Planar modeを使用しない場合、すなわち、geom_tree_typeの値が「1」の場合、及び、geom_tree_typeの値が「0」かつgeometry_planar_mode_flagの値が「0」の場合の両方について、単一の条件でPlanar modeに関連する情報を復号する際にバッファを用いた最近傍ノード探索を行うか否かを制御するフラグを復号しないようにすることができ、GPSのビット量及び復号に係る処理量を削減できる。
また、以上のように、前記Planar modeに関連する情報を復号する際にバッファを用いた最近傍ノード探索を行うか否かを制御するフラグを復号しなかった場合、前記フラグの値をPlanar modeに関連する情報を復号する際にバッファを用いた最近傍ノード探索を行わない場合と同じ値とみなすように構成されていてもよい。
このような構成とすることで、Planar modeに関連する情報を復号する際にバッファを用いた最近傍ノード探索を行わないことを明示的に定義することができ、意図しない誤動作を防ぐことができる。
GPS2011は、位置情報の量子化(復号観点では逆量子化)を行うか否かを制御するフラグ(geom_scaling_enabled_flag)を含んでもよい。例えば、geom_scaling_enabled_flagの値が「1」の場合は逆量子化を行い、geom_scaling_enabled_flagの値が「0」の場合は逆量子化を行わないように定義されていてもよい。
GPS2011は、逆量子化を行う場合、例えばgeom_scaling_enabled_flagの値が「1」の場合、追加で逆量子化を行う際の量子化パラメータ(QP)のベース値を示すシンタックス(geom_base_qp)を含んでもよい。GPS2011にgeom_base_qpが含まれないとき、その値を「0」とみなすように定義されていてもよい。
GPS2011は、逆量子化を行う場合、例えばgeom_scaling_enabled_flagの値が「1」の場合、追加でgeom_qp_multiplier_log2を含んでもよい。当該シンタックスの値は、0~3の整数値をとるように規定されていてもよい。当該シンタックスの使用例については後述する。
GPS2011は、逆量子化を行う場合、かつ、Predictive codingを使用する場合、すなわち、例えばgeom_scaling_enabled_flagの値が「1」で、かつ、geom_tree_typeの値が「1」の時、追加で量子化パラメータのオフセット値を伝送する間隔を規定するシンタックス(geom_qp_offset_intvl_log2)を含んでもよい。本シンタックスのとり得る値の範囲として、0以上であること、という制約を含んでもよい。また、本シンタックスのとり得る値の範囲として、プロファイルまたはレベルごとに定義された、1スライス(1データユニット)に含まれるノード数の最大値(例えば、非特許文献1の「Max points in a slice」)以下であること、という制約を含んでもよい。また、geom_qp_offset_intvl_log2が実際の伝送間隔について2を底とする対数をとった後の値である場合、最大値は例えば「Max points in a slice」について2を底とする対数をとった値としてもよい。
また、geom_qp_offset_intvl_log2の値が、「0」以上かつ「Max points in a slice」について2を底とする対数をとった値以下となるように、当該シンタックスを復号した後に、以下のクリッピング処理を行ってもよい。
geom_qp_offset_intvl_log2 = Min(Max(geom_qp_offset_intvl_log2,0),log2(Max points in a slice))
ここで、Min()は引数の中で最小値を返す関数、Max()は引数の中で最大値を返す関数である。
ここで、Min()は引数の中で最小値を返す関数、Max()は引数の中で最大値を返す関数である。
geom_qp_offset_intvl_log2の値を用いた処理の一例を以下で説明する。
第一に、以下のようにPtnQpIntervalを計算する。
PtnQpInterval = 1 << geom_qp_offset_intvl_log2
第二に、Predictive codingにおいて、点群データの各点の位置情報を順に復号する際に、PtnQpInterval点おきに、位置情報の残差の逆量子化に用いる量子化パラメータのオフセット値を復号する。すなわち、n番目に復号する点の、nをPtnQpIntervalで除算した剰余が0の時、前記量子化パラメータのオフセット値を復号する。
PtnQpInterval = 1 << geom_qp_offset_intvl_log2
第二に、Predictive codingにおいて、点群データの各点の位置情報を順に復号する際に、PtnQpInterval点おきに、位置情報の残差の逆量子化に用いる量子化パラメータのオフセット値を復号する。すなわち、n番目に復号する点の、nをPtnQpIntervalで除算した剰余が0の時、前記量子化パラメータのオフセット値を復号する。
第三に、前記量子化パラメータのオフセット値、geom_base_qp、後述するgeom_slice_qp_offsetの3つの値全てを加算して量子化パラメータを算出し、逆量子化処理を行う。
なお、Predictive codingは、復号側で推定した位置情報の予測値と、符号化側から伝送される位置情報の残差を加算することで、各点の位置情報を復号する手法である。詳細は非特許文献1に記載されているため割愛する。
以上のように、幾何情報復号部2010は、量子化パラメータのオフセット値を伝送する間隔を規定するシンタックスについて、かかるシンタックスの値が必ず「0」以上となるように復号するように構成されていてもよい。
すなわち、幾何情報復号部2010によって復号される量子化パラメータのオフセット値を伝送する間隔を規定するシンタックスの値は、「0」以上となるように構成されている。
このような構成とすることで、ノード間の間隔が負であるという実現不可能なビットストリームが発生しないようにすることができる。
また、以上のように、仕様の制約として1スライス或いは1データユニットあたりの最大ノード数が規定されている場合、幾何情報復号部2010は、量子化パラメータのオフセット値を伝送する間隔を規定するシンタックスについて、かかるシンタックスの値が必ず1スライス或いは1データユニットあたりの最大ノード数以下となるように復号するように構成されていてもよい。
すなわち、幾何情報復号部2010によって復号される量子化パラメータのオフセット値を伝送する間隔を規定するシンタックスの値は、1スライス或いは1データユニットあたりの最大ノード数以下となるように構成されていてもよい。
このように、量子化パラメータのオフセット値を伝送する間隔を規定するシンタックスの値として取り得る値の最大値を定義することで、かかるシンタックスの復号に必要なビット数の最大値を定義することができ、GPS全体のビット長の最大値を規定するための一助となる。
また、かかるシンタックスの最大値を1スライス或いは1データユニットあたりの最大ノード数以下となるように制約することで、ノード間の間隔が1スライス或いは1データユニットあたりの最大ノード数以上となるような実効的に無意味なビットストリームとなることを防ぐことができる。
GPS2011は、逆量子化を行う場合、Predictive codingを使用しない場合(Octreeを使用する場合)で且つDirect coding modeを使用する場合、すなわち、例えば、geom_scaling_enabled_flagの値が「1」で、geom_tree_typeの値が「0」で且つinferred_direct_coding_mode_enabled_flagの値が「1」の場合、追加でDirect coding mode時の量子化パラメータのオフセット値(geom_direct_coding_mode_qp_offset)を含んでもよい。
GPS2011に、geom_direct_coding_mode_qp_offsetが含まれない場合、幾何情報復号部2010は、geom_direct_coding_mode_qp_offsetの値を「0」とみなすように構成されていてもよい。
図5は、GSH2012A及び2012Bのシンタックス構成の一例である。以降、GSH2012A及び2012BをまとめてGSH2012と呼ぶ。
なお、以下で説明するシンタックス名は、あくまで一例である。以下で説明したシンタックスの機能が同様であれば、シンタックス名は異なっていても差し支えない。
GSH2012は、かかるGSHに対応するGPSを識別するためのシンタックス(gsh_geometry_parameter_set_id)を含んでもよい。
GSH2012は、対応するGPSにおいてOctreeを使用すると定義されていた場合、すなわち、例えば、geom_tree_typeの値が「0」の場合、Octreeを復号する際のツリーの階層数を示すシンタックス(geom_tree_depth_minus1)を含んでもよい。
例えば、geom_tree_depth_minus1の値は、実際の階層数から「1」を引いた値としておき、幾何情報復号部2010は、geom_tree_depth_minus1の値に「1」を加えることで、最終的な階層数を復号するように構成されていてもよい。
また、Octreeを復号する際のツリーの階層数を示すシンタックスの取り得る値の範囲として、「0」以上であることという制約が規定されていてもよい。
GPSにおいて「QtBt」を用いないと定義されている場合、すなわち、geom_tree_coded_axis_list_present_flagの値が「0」の場合、本シンタックスの取り得る値の範囲として、プロファイル又はレベルごとに定義されたノードサイズの最大値について2を底とする対数を取った値(例えば、非特許文献1の「MaxRootNodeDimLog2」)を用いて、MaxRootNodeDimLog2-1以下であることという制約が規定されていてもよい。
GPSにおいて「QtBt」を用いると定義されている場合、すなわち、geom_tree_coded_axis_list_present_flagの値が「1」の場合、本シンタックスの取り得る値の範囲として、プロファイル又はレベルごとに定義されたノードサイズの最大値について2を底とする対数を取った値(例えば、非特許文献1の「MaxRootNodeDimLog2」)を用いて、MaxRootNodeDimLog2-1+N(Nは、自然数)以下であることという制約が規定されていてもよい。例えば、Nの値は、「4」でもよい。或いは,最大値をMaxRootNodeDimLog2+Nと規定してもよい。例えば、Nの値は「3」でもよい。
また、geom_tree_depth_minus1の値が、「0」以上且つ「MaxRootNodeDimLog2-1+N」以下となるように、当該シンタックスを復号した後に、幾何情報復号部2010は、以下のクリッピング処理を行ってもよい。
geom_tree_depth_minus1 = Min(Max(geom_tree_depth_minus1,0),MaxRootNodeDimLog2-1+N)
ここで、Min()は、引数の中で最小値を返す関数であり、Max()は、引数の中で最大値を返す関数である。
ここで、Min()は、引数の中で最小値を返す関数であり、Max()は、引数の中で最大値を返す関数である。
以上のように、仕様の制約として1スライス或いは1データユニットあたりの最大ノードサイズを規定されている場合、幾何情報復号部2010は、Octreeを復号する際のツリーの階層数を示すシンタックスの値が、必ず、上述の最大ノードサイズに所定の自然数を加えた値以下となるように復号するように構成されていてもよい。
すなわち、幾何情報復号部2010によって復号されるOctreeを復号する際のツリーの階層数を示すシンタックスの値は、上述の最大ノードサイズに所定の自然数を加えた値以下となるように構成されていてもよい。
このような構成とすることで、プロファイル又はレベルごとに定義されたノードサイズの最大値に応じて、必要最小限の範囲で、上述のシンタックスの値を定義することができ、かかるシンタックスに必要なビット数の最大値を必要最小限の値に抑えることができる。
また、以上のように、幾何情報復号部2010は、「QtBt」を適用するか否かを示すフラグを復号し、かかるフラグが「QtBt」を適用することを示す場合には、Octreeを復号する際のツリーの階層数を示すシンタックスの値が、必ず、上述の最大ノードサイズに所定の自然数を加えた値以下となるように復号し、かかるフラグが「QtBt」を適用しないことを示す場合には、Octreeを復号する際のツリーの階層数を示すシンタックスの値が、必ず、上述の最大ノードサイズ以下となるように復号するように構成されていてもよい。
すなわち、上述のフラグが「QtBt」を適用することを示す場合には、幾何情報復号部2010によって復号されるOctreeを復号する際のツリーの階層数を示すシンタックスの値は、上述の最大ノードサイズに所定の自然数を加えた値以下となり、かかるフラグが「QtBt」を適用しないことを示す場合には、幾何情報復号部2010によって復号されるOctreeを復号する際のツリーの階層数を示すシンタックスの値は、上述の最大ノードサイズ以下となるように構成されていてもよい。
このような構成とすることで、「QtBt」を適用する場合には、Depthごとにノードを分割する軸方向の選択に自由度を持たせつつ、全体のDepth数の最大値を押さえることができ、かかる仕様を反映した装置を実装する場合の最大処理量の見積もりが容易となる。
また、「QtBt」を適用しない場合には、ノード数の最大値とDepth数とを一致させることで、必要最小限の範囲で、かかるシンタックスの値を定義することができ、かかるシンタックスに必要なビット数の最大値を必要最小限の値に抑えることができる。
GSH2012は、GPSにおいて位置情報の逆量子化を行うと定義されている場合、すなわち、例えば、geom_scaling_enabled_flagの値が「1」の場合、量子化パラメータのスライス単位でのオフセット値(geom_slice_qp_offset)を含んでもよい。
GSH2012に、geom_slice_qp_offsetが含まれない場合、幾何情報復号部2010は、geom_slice_qp_offsetの値を「0」とみなすように構成されていてもよい。
GSH2012は、GPSにおいて位置情報の逆量子化を行うと定義されている場合で且つGPSにおいてOctreeを使用するように定義されている場合、すなわち、例えば、geom_scaling_enabled_flagの値が「1」で且つgeom_tree_typeの値が「0」の場合、位置情報の量子化パラメータのオフセット値を用いるツリーの階層(depth)を定義するシンタックス(geom_octree_qp_offsets_depth)を含んでもよい。
GSH2012は、GPSにおいてTrisoupを使用すると定義されている場合、すなわち、例えば、trisoup_enabled_flagの値が「1」の場合、Trisoupを適用するノードサイズを示すシンタックス(log2_trisoup_node_size)を含んでもよい。
かかるシンタックスは、Trisoupを適用するノードサイズに対して、2を底とする対数をとった値と定義してもよい。
また、かかるシンタックスの取り得る値の範囲として、「0」以上であることという制約が規定されていてもよい。
かかるシンタックスの取り得る値の範囲として、プロファイル又はレベルごとに定義されたノードサイズの最大値について2を底とする対数を取った値(例えば、非特許文献1の「MaxRootNodeDimLog2」)以下であることという制約が規定されていてもよい。
また、かかるシンタックスの取り得る値の範囲として、当該スライス(或いは、データユニット)のルートノードサイズついて2を底とする対数を取った値以下であることという制約が規定されていてもよい。ルートノードサイズについては、例えば、非特許文献1に記載のように、geom_tree_coded_axis_flagを用いて算出できる。
また、log2_trisoup_node_sizeの値が「0」以上且つルートノードサイズ以下となるように、かかるシンタックスを復号した後に、幾何情報復号部2010は、以下のクリッピング処理を行ってもよい。
log2_trisoup_node_size = Min(Max(log2_trisoup_node_size,0),log2(RootNodeSize))
ここで、Min()は、引数の中で最小値を返す関数であり、Max()は、引数の中で最大値を返す関数である。また、RootNodeSizeは、ルートノードサイズを表す変数である。
ここで、Min()は、引数の中で最小値を返す関数であり、Max()は、引数の中で最大値を返す関数である。また、RootNodeSizeは、ルートノードサイズを表す変数である。
以上のように、幾何情報復号部2010は、Trisoupを適用するノードサイズを示すシンタックスの値が、必ず当該スライス或いは当該データユニットの最大ノードサイズ以下となるように復号するように構成されていてもよい。
すなわち、幾何情報復号部2010によって復号されるTrisoupを適用するノードサイズを示すシンタックスの値は、当該スライス或いは当該データユニットの最大ノードサイズ以下となるように構成されていてもよい。
このような構成とすることで、プロファイル又はレベルごとに定義されたノードサイズの最大値に応じて、必要最小限の範囲で、上述のシンタックスの値を定義することができ、かかるシンタックスに必要なビット数の最大値を必要最小限の値に抑えることができる。
以上のように、幾何情報復号部2010は、Trisoupを適用するノードサイズを示すシンタックスの値が、必ず当該スライス或いは当該データユニットのルートノードサイズ以下となるように復号するように構成されていてもよい。
すなわち、幾何情報復号部2010によって復号されるTrisoupを適用するノードサイズを示すシンタックスの値は、当該スライス或いは当該データユニットのルートノードサイズ以下となるように構成されていてもよい。
このような構成とすることで、スライス或いはデータユニットごとにルートノードサイズに応じて、必要最小限の範囲で、上述のシンタックスの値を定義することができ、かかるシンタックスに必要なビット数の最大値を必要最小限の値に抑えることができる。
(ツリー合成部2020)
図6を用いて、ツリー合成部2020の処理の一例を説明する。図6は、ツリー合成部2020の処理の一例を示すフローチャートである。
図6を用いて、ツリー合成部2020の処理の一例を説明する。図6は、ツリー合成部2020の処理の一例を示すフローチャートである。
図6に示すように、ステップS601において、ツリー合成部2020は、「Octree」又は「QtBt」を適用する場合のツリー構造について、全てのDepthの処理を完了したかどうかを確認する。
かかるスライスのDepthの値は、例えば、GSHで伝送されるgeom_tree_depth_minus1から復号した階層数である。ツリー合成部2020は、かかるスライスのDepth値と既に処理したDepthの値とを比較することで、全てのDepthについて処理が完了したかどうかを判定することができる。
ツリー合成部2020は、全てのDepthの処理が完了した場合には、ステップS607の処理へ進み、処理を終了する。一方、ツリー合成部2020は、全てのDepthの処理が完了していない場合は、ステップS602の処理へ進む。
ステップS602において、ツリー合成部2020は、当該Depth内の全てのノードについて処理が完了したかどうかを判定する。
当該Depth内に含まれるノード数については、直前に処理したDepthでのノード情報復号処理(ステップS606)の結果から算出することができる。また、最初に処理するDepthに含まれるノード数は「1」である。
ツリー合成部2020は、当該Depthに含まれる全ノードの処理が完了した場合には、ステップS601の処理へ戻る。一方、ツリー合成部2020は、全ノードの処理が完了していない場合には、ステップS603の処理へ進む。
ステップS603において、ツリー合成部2020は、後段のステップS605の処理で用いるnodeQpOffsetを復号するか否かを判定する。
ツリー合成部2020は、予め定めた所定条件を全て満足する場合、S604の処理へ進み、nodeQpOffsetを復号する。一方、ツリー合成部2020は、予め定めた所定条件を1つでも満たさない場合は、nodeQpOffsetの復号を省略し、ステップS605の処理へ進む。
かかる所定条件は、当該depthの値がGeomScalingDepthと等しいことという条件を含んでもよい。
GeomScalingDepthの値は、例えば、GPSにおいて位置情報の逆量子化を行うと定義されているか否かに応じて設定されてもよい。
geom_scaling_enabled_flagの値が「1」の場合は、GeomScalingDepthの値をgeom_octree_qp_offsets_depthと同じ値とし、geom_scaling_enabled_flagの値が「0」の場合は、GeomScalingDepthの値を「0」とするように定義されていてもよい。
また、所定条件には、GPSにおいて位置情報の逆量子化を行うと定義されていること、すなわち、例えば、geom_scaling_enabled_flagの値が「1」であることという条件を含んでもよい。
ステップS604において、ツリー合成部2020は、nodeQpOffsetを復号する。
ここで、第1に、ツリー合成部2020は、nodeQpOffsetの値が「0」であるか否かを示すシンタックス(geom_node_qp_offset_eq0_flag)を復号する。
第2に、ツリー合成部2020は、geom_node_qp_offset_eq0_flagの値が「0」の場合、追加でnodeQpOffsetの符号(プラスかマイナスか)を示すシンタックス(geom_node_qp_offset_sign_flag)及びnodeQpOffsetの絶対値を示すシンタックス(geom_node_qp_offset_abs_minus1)を復号する。
第3に、ツリー合成部2020は、以上で復号したシンタックスを用いて、nodeQpOffsetの値を復号する。ツリー合成部2020は、geom_node_qp_offset_eq0_flagの値が「1」の場合、nodeQpOffsetの値を「0」とする。ツリー合成部2020は、geom_node_qp_offset_eq0_flagの値が「0」の場合、以下のように復号する。
nodeQpOffset = (2×geom_node_qp_offset_sign_flag―1)×(geom_node_qp_offset_abs_minus1+1)
なお、ステップS604の処理がスキップされた場合、すなわち、geom_node_qp_offset_eq0_flagが復号されなかった場合は、ツリー合成部2020は、geom_node_qp_offset_eq0_flagの値を「1」であるとみなしてもよい。すなわち、ステップS604の処理がスキップされた場合、ツリー合成部2020は、nodeQpOffsetの値を「0」とみなしてもよい。
nodeQpOffset = (2×geom_node_qp_offset_sign_flag―1)×(geom_node_qp_offset_abs_minus1+1)
なお、ステップS604の処理がスキップされた場合、すなわち、geom_node_qp_offset_eq0_flagが復号されなかった場合は、ツリー合成部2020は、geom_node_qp_offset_eq0_flagの値を「1」であるとみなしてもよい。すなわち、ステップS604の処理がスキップされた場合、ツリー合成部2020は、nodeQpOffsetの値を「0」とみなしてもよい。
以上のように、ツリー合成部2020は、ビットストリームから位置情報の逆量子化を行うか否かを示すフラグを復号し、かかるフラグが位置情報の逆量子化を行わないことを示す場合、ノード毎の量子化パラメータのオフセット値nodeQpOffsetの値を「0」とするように構成されていてもよい。
このような構成とすることで、逆量子化を行わない場合は、常にnodeQpOffsetの値を「0」にすることができ、後述するNodeQpの値が「0」、すなわち、逆量子化を行わない値になることを保証するのが容易となる。
また、以上のように、位置情報の逆量子化を行うか否かを示すフラグが位置情報の逆量子化を行わないことを示す場合、ツリー合成部2020は、上述のnodeQpOffsetに関するシンタックスの復号処理を省略するように構成されていてもよい。
このような構成とすることで、位置情報の逆量子化を行わない場合に、不要な復号処理を省略し、処理量を削減することができる。
また、以上のように、ツリー合成部2020は、nodeQpOffsetに関するシンタックスの1つとして、nodeQpOffsetの値が「0」であるか否かを示すフラグを復号し、かかるフラグの復号が省略された場合、かかるフラグの値をnodeQpOffsetの値が「0」であることを示す値とみなすように構成されていてもよい。
このような構成とすることで、nodeQpOffsetの値が「0」であるか否かを示すフラグの復号が省略されたとき、すなわち、逆量子化を行わない場合は、常にnodeQpOffsetの値を「0」にすることができ、後述するNodeQpの値が「0」、すなわち、逆量子化を行わない値になることを保証するのが容易となる。
以上の手順でnodeQpOffsetの値を復号した後、ツリー合成部2020は、ステップS605へ進む。
ステップS605において、ツリー合成部2020は、NodeQpの値を復号する。
第1に、ツリー合成部2020は、現在のdepthがGeomScalingDepthと等しい場合、以下の式でNodeQpの値を算出してもよい。
NodeQp = (geom_base_qp+geom_slice_qp_offset+nodeQpOffset)<< geom_qp_multiplier_log2
ここで、GPSにおいて位置情報の逆量子化を行わないと定義されている場合、すなわち、geom_scaling_の値が「0」の場合は、NodeQpの値が「0」となるように定義されていてもよい。
NodeQp = (geom_base_qp+geom_slice_qp_offset+nodeQpOffset)<< geom_qp_multiplier_log2
ここで、GPSにおいて位置情報の逆量子化を行わないと定義されている場合、すなわち、geom_scaling_の値が「0」の場合は、NodeQpの値が「0」となるように定義されていてもよい。
GPSにおいて位置情報の逆量子化を行わないと定義されている場合、すなわち、geom_scaling_enabled_flagの値が「0」の場合は、geom_base_qp、geom_slice_qp_offset、nodeQpOffsetのそれぞれの値が「0」となるように定義されていてもよい。
NodeQpの値は、必ず0以上であることというコンフォーマンス制約をビットストリームに対して定義してもよい。
また、ツリー合成部2020は、NodeQpの値が必ず0以上になるように、NodeQpを以下の式で算出してもよい。
NodeQp = Max(geom_base_qp+geom_slice_qp_offset+nodeQpOffset,0)<< geom_qp_multiplier_log2
ここで、Max()は、引数のうち、最も大きい値を返す関数である。
NodeQp = Max(geom_base_qp+geom_slice_qp_offset+nodeQpOffset,0)<< geom_qp_multiplier_log2
ここで、Max()は、引数のうち、最も大きい値を返す関数である。
第2に、ツリー合成部2020は、現在のdepthがGeomScalingDepthより大きい場合、NodeQpの値について、当該ノードの親ノード、すなわち、depthが当該ノードより1つ小さいときに使用したNodeQpと同じ値と定義してもよい。
第3に、ツリー合成部2020は、現在のdepthがGeomScalingDepthより小さい場合、以下の式でNodeQpの値を算出してもよい。
dcmQp = (geom_base_qp + geom_direct_coding_mode_qp_offset) << geom_qp_multiplier_log2
NodeQp = Min(minScalingNodeDimLog2×8, dcmQp)
ここで、Min()は、引数のうち、最も小さい値を返す関数である。また、minScalingNodeDimLog2は、当該depthにおけるノードサイズを定義する3つの軸方向(例えば、x軸、y軸、z軸)のうち、最もサイズが小さい軸方向のサイズに対して2を底とする対数を取った値である。
NodeQp = Min(minScalingNodeDimLog2×8, dcmQp)
ここで、Min()は、引数のうち、最も小さい値を返す関数である。また、minScalingNodeDimLog2は、当該depthにおけるノードサイズを定義する3つの軸方向(例えば、x軸、y軸、z軸)のうち、最もサイズが小さい軸方向のサイズに対して2を底とする対数を取った値である。
ここで、GPSにおいて位置情報の逆量子化を行わないと定義されている場合、すなわち、geom_scaling_enabled_flagの値が「0」の場合は、NodeQpの値が「0」となるように定義されていてもよい。
GPSにおいて位置情報の逆量子化を行わないと定義されている場合、すなわち、geom_scaling_enabled_flagの値が「0」の場合は、geom_base_qp、geom_direct_coding_mode_qp_offsetのそれぞれの値が「0」となるように定義されていてもよい。
NodeQpの値は、必ず0以上であることというコンフォーマンス制約をビットストリームに対して定義してもよい。
すなわち、ツリー合成部2020は、NodeQpの値が「0」未満である場合、仕様に反したビットストリームであると判定してもよい。
また、ツリー合成部2020は、NodeQpの値が必ず「0」以上になるように、NodeQpを以下の式で算出してもよい。
NodeQp = Max(Min(minScalingNodeDimLog2×8, dcmQp),0)
以上のようにして求めたNodeQpは、位置情報の逆量子化処理に用いられる。逆量子化処理は、例えば、以下のように実行することができる。なお、GPSにおいて位置情報の逆量子化を行わないと定義されている場合、すなわち、geom_scaling_enabled_flagの値が「0」の場合は、以下のような逆量子化処理を行わないように構成されていてもよい。
以上のようにして求めたNodeQpは、位置情報の逆量子化処理に用いられる。逆量子化処理は、例えば、以下のように実行することができる。なお、GPSにおいて位置情報の逆量子化を行わないと定義されている場合、すなわち、geom_scaling_enabled_flagの値が「0」の場合は、以下のような逆量子化処理を行わないように構成されていてもよい。
第1に、ツリー合成部2020は、逆量子化前のノードの座標値val(x成分、y成分、z成分のいずれか)を、以下のようにhighPartとlowPartに分離する。
highPart = val >> (ScalingNodeSizeLog2[cIdx]―scalingExpansionLog2)
lowPart = val & ((1 << (ScalingNodeSizeLog2[cIdx]―scalingExpansionLog2))―1)
ここで、ScalingNodeSizeLog2[cIdx]は、cIdxの値に対応する軸方向(x方向、y方向、z方向のいずれか)の量子化前のノードサイズについて2を底とする対数を取った値である。また、scalingExpansionLog2は、NodeQpを8で整数除算した値である。すなわち、scalingExpansionLog2は、NodeQpを4で除算した後、得られた商の小数点以下を切り捨てて整数にした値である。
lowPart = val & ((1 << (ScalingNodeSizeLog2[cIdx]―scalingExpansionLog2))―1)
ここで、ScalingNodeSizeLog2[cIdx]は、cIdxの値に対応する軸方向(x方向、y方向、z方向のいずれか)の量子化前のノードサイズについて2を底とする対数を取った値である。また、scalingExpansionLog2は、NodeQpを8で整数除算した値である。すなわち、scalingExpansionLog2は、NodeQpを4で除算した後、得られた商の小数点以下を切り捨てて整数にした値である。
第2に、ツリー合成部2020は、スケールファクターsFを以下の式で算出する。
sF = 8+(qP & 7) << qP/8
ここで、qPの値は、NodeQpと同じ値である。また、&は、ビットごとの論理積を算出する演算子である。すなわち、qP&3は、qPの値を2進数で表現した場合の下位2桁を抽出する処理に等しい。
ここで、qPの値は、NodeQpと同じ値である。また、&は、ビットごとの論理積を算出する演算子である。すなわち、qP&3は、qPの値を2進数で表現した場合の下位2桁を抽出する処理に等しい。
なお、上記のように、qPの値と論理積を取る場合や、qPから算出した値に応じてビットシフトを行うように定義されている場合、qPの値、すなわち、NodeQpの値は、「0」以上の整数であることが期待される。
第3に、ツリー合成部2020は、以下の式で逆量子化後の座標値posを算出する。
highPartS = highPart << ScalingNodeSizeLog2[cIdx]
lowPartS = (lowPart × sF + 4) >> 3
pos = highPartS | Min(lowPartS, (1 << ScalingNodeSizeLog2「cIdx」)―1)
ここで、|は、ビット単位での論理和をとる演算子である。
lowPartS = (lowPart × sF + 4) >> 3
pos = highPartS | Min(lowPartS, (1 << ScalingNodeSizeLog2「cIdx」)―1)
ここで、|は、ビット単位での論理和をとる演算子である。
以上の逆量子化処理では、qPの値、すなわち、NodeQpの値が「0」の場合、入力値val及び出力値posが同じ値となる。なお、GPSにおいて位置情報の逆量子化を行わないよう規定されている場合、すなわち、例えば、geom_scaling_enabled_flagの値が「0」の場合、以上の逆量子化処理をスキップしてもよい。また、上記のように、GPSにおいて位置情報の逆量子化を行わないよう規定されている場合、すなわち、例えば、geom_scaling_enabled_flagの値が「0」の場合、NodeQpの値が必ず「0」となるように規定されていてもよい。
以上のように、ツリー合成部2020は、ノード毎の量子化パラメータNodeQpの値が、必ず所定値以上又は所定値より大きくなるように復号するように構成されていてもよい。
例えば、後段の処理がNodeQpの値が所定値以上又は所定値より大きくなることを前提としている場合、このような構成とすることで復号処理全体の整合性を保つことができる。
また、以上のように、ツリー合成部2020は、NodeQpの値を算出した後、所定値以上又は所定値より大きくなるようにクリッピング処理を行うように構成されていてもよい。
このような構成とすることで、geom_base_qp等のパラメータ値の値によらず、必ずNodeQpの値を所定値以上又は所定値より大きくなるように保証することができる。
また、ツリー合成部2020は、以上のように、NodeQpの値が、所定値未満又は所定値以下の場合に、仕様に違反していると判定するように構成されていてもよい。
このような構成とすることで、クリッピング等の追加処理を用いなくても、仕様に準拠したビットストリームであれば、NodeQpの値が所定値以又は所定値より大きくなるように保証することができる。
また、以上のように、上述の所定値は「0」であるように構成されていてもよい。
例えば、後段の処理がNodeQpの値が「0」以上であることを前提としている場合、このような構成とすることで復号処理全体の整合性を保つことができる。
更に、NodeQpの値が「0」の場合は、逆量子化処理を行わない場合と同様の処理結果と同じとなるように構成されている場合、NodeQpの値の範囲に「0」を含むことで、NodeQpの値だけで逆量子化処理の実行要否を判定することができる。
以上のようにNodeQpを算出した後、ツリー合成部2020は、ステップS606へ進む。
ステップS606において、ツリー合成部2020は、「Octree」を用いる場合は、ノードを8分割で子ノードに分割し、「QtBt」を用いる場合は、かかるノードを8分割、4分割又は2分割のいずれかで子ノードに分割し、Occupancy code等の情報に基づいて、各子ノードに点群データが含まれるかどうかを示すOccupancy mapを復号する。
例えば、Occupancy mapの値が「1」の場合は、対応する子ノード内に点群データが存在すると定義できる。また、例えば、Occupancy mapの値が「0」の場合は、対応する子ノード内に点群データが存在しないか或いは当該子ノード自体が存在しないと定義できる。
よって、ツリー合成部2020は、同一のDepth内でOccupancy mapの値が「1」となっている子ノードの数をカウントすることで、次に処理するDepth内のノード数を知ることができる。
ツリー合成部2020は、1つのノードについてOccupancy mapの生成が完了したら、ステップS602の処理へ戻る。
(属性情報復号部2060)
以下、図7~図9を用いて、属性情報復号部2060で復号される制御データについて説明する。
以下、図7~図9を用いて、属性情報復号部2060で復号される制御データについて説明する。
図7は、幾何情報復号部2060で受信する符号化データ(ビットストリーム)の構成の一例である。
第1に、ビットストリームは、APS2061を含んでいてもよい。APS2061は、アトリビュートパラメータセットとも呼ばれ、属性情報の復号に関する制御データの集合である。具体例については後述する。各APS2061は、複数のAPS2061が存在する場合に個々を識別するためのAPS id情報を少なくとも含む。
第2に、ビットストリームは、ASH2062A/2062Bを含んでいてもよい。ASH2062A/2062Bは、アトリビュートスライスヘッダとも呼ばれ、後述するスライスに対応する制御データの集合である。具体例については後述する。ASH2062A/2062Bは、各ASH2062A/2062Bに対応するAPS2061を指定するためのAPS id情報を少なくとも含む。
第3に、ビットストリームは、ASH2062A/2062Bの次に、スライスデータ2063A/2063Bを含んでいてもよい。スライスデータ2063A/2063Bには、属性情報を符号化したデータが含まれている。
以上のように、ビットストリームは、各スライスデータ2063A/2063Bに、1つずつASH2062A/2062B及びAPS2061が対応する構成となる。
上述のように、ASH2062A/2062Bにて、どのAPS2061を参照するかをAPS id情報で指定するため、複数のスライスデータ2063A/2063Bに対して共通のAPS2061を用いることができる。
言い換えると、APS2061は、スライスごとに必ずしも伝送する必要がない。例えば、図7に示すように、ASH2062B及びスライスデータ2063Bの直前では、APS2061を符号化しないようなビットストリームの構成とすることもできる。
なお、図7に示す構成は、あくまで一例である。各スライスデータ2063A/2063Bに、ASH2062A/2062B及びAPS2061が対応する構成となっていれば、ビットストリームの構成要素として、上述以外の要素が追加されてもよい。例えば、図7に示すように、ビットストリームは、シーケンスパラメータセット(SPS)を含んでいてもよい。
また、同様に、伝送に際して、図7と異なる構成に整形されてもよい。更に、幾何情報復号部2010で復号されるビットストリームと合成して単一のビットストリームとして伝送されてもよい。例えば、スライスデータ2013A及び2063A、スライスデータ2013B及び2063Bを、それぞれ単一のスライスデータとして扱い、各スライスの直前にGSH2012A及びASH2062A、GSH2012B及びASH2062Bを、それぞれ配置する構成となっていてもよい。また、その際、各GSH及びASHに先立って、GPS2011及びAPS2061が配置されていてもよい。
図8は、SPS2001のシンタックス構成の一例である。
SPS2001は、レベルを定義するシンタックス(level_idc)を含んでもよい。
SPS2001は、複数のSPSを識別するためのインデックス(sps_seq_parameter_set_id)を含んでもよい。
SPS2001は、当該ビットストリーム内に含まれる属性情報の数を示すシンタックス(sps_num_attribute_sets)を含んでもよい。
SPS2001は、当該ビットストリームに含まれるsps_num_attribute_sets個の属性情報それぞれの次元数を示すシンタックス(attribute_dimension_minus1[i])を含んでもよい。次元数が「1」の場合は、当該属性情報は、例えば、反射率や輝度信号である場合に該当する。また、次元数が「3」の場合は、当該属性情報は、例えば、輝度信号、色差信号(Cb信号、Cr信号)で構成される次元データである場合に該当する。
ここで、sps_num_attribute_sets個の属性情報の全ての次元数が「1」であったとき、当該ビットストリームには色差データが含まれないことが分かる。そこで、sps_num_attribute_sets個の属性情報の全ての次元数が「1」であったとき、attr_secondary_dim_present_flagの値を「0」と定義してもよい。
また、少なくとも1つの属性情報について次元数が「2」以上である場合、attr_secondary_dim_present_flagの値を「1」と定義してもよい。
なお、以上では、属性情報の次元数を参照して当該ビットストリームに色差データが含まれるか否かを示すフラグであるattr_secondary_dim_present_flagの値を設定する場合の例について説明したが、色差データ有無の判定方法は他の方法でも差し支えない。
例えば、属性情報の種類を示すシンタックスを復号し,例えば、それらが全て「反射係数」であることを示している場合に、当該ビットストリームに色差データを含まないと判定し、attr_secondary_dim_present_flagの値を「0」と定義してもよい。
また、attr_secondary_dim_present_flagの値をビットストリームに含み、ビットストリームからフラグの値を復号することで、当該ビットストリームに色差データが含まれるか否かを判定してもよい。すなわち、ビットストリームから復号したattr_secondary_dim_present_flagの値が「0」の場合、当該ビットストリームに色差データが含まれないと判定してもよい。
図9は、APS2061のシンタックス構成の一例である。
APS2061は、各APS2061を識別するためのAPS id情報(aps_attr_parameter_set_id)を含んでもよい。
APS2061は、属性情報の復号方法を示す情報(attr_coding_type)を含んでもよい。例えば、attr_coding_typeの値が「0」の時は、逆リフティング部2100において可変の重み付きリフティング予測を行い、attr_coding_typeの値が「1」の時は、RAHT部2080にてRAHTを行い、attr_coding_typeの値が「2」の時は、逆リフティング部2100において固定の重みでのリフティング予測を行うというように規定されていてもよい。
APS2061は、attr_secondary_dim_present_flagの値が「1」の場合、色差信号の量子化パラメータのオフセット値(aps_attr_chroma_qp_offset)を含んでもよい。
APS2061に、aps_attr_chroma_qp_offsetが含まれない場合、属性情報復号部2060は、aps_attr_chroma_qp_offsetの値を「0」とみなすように定義されていてもよい。
APS2061は、attr_secondary_dim_present_flagの値が「1」の場合で且つattr_coding_typeの値が「2」の場合、色差信号間での残差の予測を行うか否かを制御するフラグ(lifting_last_component_prediction_enabled_flag)を含んでもよい。
lifting_last_component_prediction_enabled_flagの値が「1」の場合は、色差信号間での残差予測を行い、lifting_last_component_prediction_enabled_flagの値が「0」の場合は、色差信号間での残差予測を行わないように定義されていてもよい。
APS2061に、lifting_last_component_prediction_enabled_flagが含まれないとき、属性情報復号部2060は、lifting_last_component_prediction_enabled_flagの値を「0」とみなすように定義されていてもよい。
APS2061は、attr_secondary_dim_present_flagの値が「1」の場合で且つattr_coding_typeの値が「1」の場合、輝度信号間及び色差信号間で予測を行うか否かを制御するフラグ(inter_component_prediction_enabled_flag)を含んでもよい。
inter_component_prediction_enabled_flagの値が「1」の場合は、輝度信号と色差信号との間での予測を行い、inter_component_prediction_enabled_flagの値が「0」の場合は、輝度信号と色差信号との間での予測を行わないように定義されていてもよい。
APS2061に、inter_component_prediction_enabled_flagが含まれないとき、属性情報復号部2060は、inter_component_prediction_enabled_flagの値を「0」とみなすように定義されていてもよい。
以上のように、属性情報復号部2060は、当該ビットストリームに色差信号が含まれるか否かを判定し、色差信号が含まれていないと判定した場合、色差信号に関するシンタックスの復号を省略するように構成されていてもよい。
このような構成とすることで、不要なシンタックスの復号処理を省略し、処理量を削減することができる。
以上のように、属性情報復号部2060は、当該ビットストリームに含まれる属性情報の次元数を復号し、全ての属性情報の次元数が「1」であった場合、当該ビットストリームに色差信号が含まれていないと判定するように構成されていてもよい。
このような構成とすることで、当該ビットストリームに反射係数のみ(1次元)や輝度信号のみ(1次元)を含む場合に、色差信号に関する処理を省略することができる。
以上のように、属性情報復号部2060は、色差信号の量子化パラメータのオフセット値が復号されなかった場合、当該シンタックスの値を「0」とみなすように構成されていてもよい。
このような構成とすることで、色差信号が存在しない場合に意図せず不要なオフセット値が設定されることを防ぐことができる。
以上のように、属性情報復号部2060は、色差信号間での残差の予測を行うか否かを制御するフラグが復号されなかった場合、当該フラグの値を色差信号間での残差の予測を行わない場合の値と同じ値とみなすように構成されていてもよい。
このような構成とすることで、色差信号が存在しない場合に、不要に色差信号間での残差の予測が実行されることを防ぐことができる。
以上のように、属性情報復号部2060は、輝度信号間と色差信号間で予測を行うか否かを制御するフラグが復号されなかった場合、当該フラグの値を輝度信号間と色差信号との間で予測を行わない場合の値と同じ値とみなすように構成されていてもよい。
このような構成とすることで、色差信号が存在しない場合に、不要に輝度信号間と色差信号間での予測が実行されることを防ぐことができる。
APS2061は、スケーラブルリフティングを適用するかどうかを示すフラグ(lifting_scalability_enabled_flag)を含んでもよい。
lifting_scalability_enabled_flagの値が「0」の場合は、スケーラブルリフティングを適用しないと規定し、lifting_scalability_enabled_flagの値が「1」の場合は、スケーラブルリフティングを適用すると規定されていてもよい。
APS2061は、LoD算出部2090で算出するLoDのレベル数を指定するシンタックス(lifting_num_detail_levels_minus1)を含んでもよい。
LoDの値は、1以上の整数値である必要があるため、例えば、当該シンタックスは、「0」以上の整数値としておき、当該シンタックスの値に「1」を加えた値を、LoDのレベル数としてもよい。
APS2061は、LoDのレベル数が「1」より大きい場合、すなわち、lifting_num_detail_levels_minus1の値が「0」より大きい場合、各LoDに属する点を等間隔にサンプリングするか否かを示すフラグ(lifting_lod_regular_sampling_enabled_flag)を含んでもよい。
例えば、lifting_lod_regular_sampling_enabled_flagの値が「1」の場合は、等間隔にサンプリングを行い、lifting_lod_regular_sampling_enabled_flagの値が「0」の場合は、等間隔にサンプリングを行わないように定義されていてもよい。
APS2061は、等間隔にサンプリングを行う場合、すなわち、lifting_lod_regular_sampling_enabled_flagの値が「1」の場合、各LoDのレベルごとにサンプル間隔を指定するシンタックス(lifting_sampling_period_minus2[idx])を含んでもよい。
サンプル間隔を2以上の整数とし、lifting_sampling_period_minus2[idx]の値は、実際のサンプル間隔から2を引いた数と定義してもよい。ここで、本シンタックスのとり得る値の範囲として、0以上であることという制約が規定されていてもよい。
また、かかるシンタックスの取り得る値の範囲として、プロファイル又はレベルごとに定義された1スライス(1データユニット)に含まれるノード数の最大値(例えば、非特許文献1の「Max points in a slice」)以下であることという制約が規定されていてもよい。
上述のように、lifting_sampling_period_minus2[idx]の値は、実際のサンプル間隔から2を引いた数と定義する場合、「Max points in a slice」から2を引いた値以下であることという制約が規定されていてもよい。
また、属性情報復号部2060は、lifting_sampling_period_minus2[idx]の値が「0」以上で且つ「Max points in a slice-2」以下となるように、かかるシンタックスを復号した後に、以下のクリッピング処理を行ってもよい。
geom_qp_offset_intvl_log2 = Min(Max(lifting_sampling_period_minus2[idx],0),Max points in a slice―2)
ここで、Min()は、引数の中で最小値を返す関数であり、Max()は、引数の中で最大値を返す関数である。
ここで、Min()は、引数の中で最小値を返す関数であり、Max()は、引数の中で最大値を返す関数である。
以上のように、属性情報復号部2060は、各LoDのレベルごとにサンプル間隔を指定するシンタックスについて、当該シンタックスの値が必ず「0」以上となるように復号するように構成されていてもよい。
すなわち、属性情報復号部2060によって復号される各LoDのレベルごとにサンプル間隔を指定するシンタックスの値は、「0」以上となるように構成されていてもよい。
このような構成とすることで、ノード間の間隔が負であるという実現不可能なビットストリームが発生しないようにすることができる。
また、以上のように仕様の制約として1スライス或いは1データユニットあたりの最大ノード数が規定されている場合、属性情報復号部2060は、各LoDのレベルごとにサンプル間隔を指定するシンタックスについて、当該シンタックスの値が必ず1スライス或いは1データユニットあたりの最大ノード数以下となるように復号するように構成されていてもよい。
すなわち、属性情報復号部2060によって復号される各LoDのレベルごとにサンプル間隔を指定するシンタックスの値は、1スライス或いは1データユニットあたりの最大ノード数以下となるように構成されていてもよい。
このように、各LoDのレベルごとにサンプル間隔を指定するシンタックスの値として取り得る値の最大値を定義することで、かかるシンタックスの復号に必要なビット数の最大値を定義することができ、GPS全体のビット長の最大値を規定するための一助となる。
また、各LoDのレベルごとにサンプル間隔を指定するシンタックスの値として取り得る値の最大値を1スライス或いは1データユニットあたりの最大ノード数以下となるように制約することで、ノード間の間隔が1スライス或いは1データユニットあたりの最大ノード数以上となるような実効的に無意味なビットストリームとなることを防ぐことができる。
また、上述の点群符号化装置100及び点群復号装置200は、コンピュータに各機能(各工程)を実行させるプログラムであって実現されていてもよい。
なお、上記の各実施形態では、本発明を点群符号化装置100及び点群復号装置200への適用を例にして説明したが、本発明は、かかる例のみに限定されるものではなく、点群符号化装置100及び点群復号装置200の各機能を備えた点群符号化/復号システムにも同様に適用できる。
10…点群処理システム
100…点群符号化装置
200…点群復号装置
2010…幾何情報復号部
2020…ツリー合成部
2030…近似表面合成部
2040…幾何情報再構成部
2050…逆座標変換部
2060…属性情報復号部
2070…逆量子化部
2080…RAHT部
2090…LoD算出部
2100…逆リフティング部
2110…逆色変換部
100…点群符号化装置
200…点群復号装置
2010…幾何情報復号部
2020…ツリー合成部
2030…近似表面合成部
2040…幾何情報再構成部
2050…逆座標変換部
2060…属性情報復号部
2070…逆量子化部
2080…RAHT部
2090…LoD算出部
2100…逆リフティング部
2110…逆色変換部
Claims (10)
- 点群復号装置であって、
ビットストリームに色差信号が含まれるか否かを判定し、前記ビットストリームに前記色差信号が含まれていないと判定した場合、前記色差信号に関するシンタックスの復号を省略するように構成されている属性情報復号部を備えることを特徴とする点群復号装置。 - 前記属性情報復号部は、前記ビットストリームに含まれる属性情報の次元数を復号し、復号した全ての前記属性情報の次元数が「1」であった場合、前記ビットストリームに前記色差信号が含まれていないと判定するように構成されていることを特徴とする請求項1に記載の点群復号装置。
- 前記シンタックスは、前記色差信号の量子化パラメータのオフセット値であることを特徴とする請求項1又は2に記載の点群復号装置。
- 前記属性情報復号部は、前記オフセット値が号されなかった場合、前記シンタックスの値を「0」とみなすように構成されていることを特徴とする請求項3に記載の点群復号装置。
- 前記シンタックスは、前記色差信号間での残差の予測を行うか否かを制御するフラグであることを特徴とする請求項1又は2に記載の点群復号装置。
- 前記属性情報復号部は、前記フラグが復号されなかった場合、前記フラグの値を前記色差信号間での残差の予測を行わない場合の値と同じ値とみなすように構成されていることを特徴とする請求項5に記載の点群復号装置。
- 前記シンタックスは、輝度信号間と前記色差信号間で予測を行うか否かを制御するフラグであることを特徴とする請求項1又は2に記載の点群復号装置。
- 前記属性情報復号部は、前記フラグが復号されなかった場合、前記フラグの値を前記輝度信号間と前記色差信号間で予測を行わない場合の値と同じ値とみなすように構成されていることを特徴とする請求項7に記載の点群復号装置。
- ビットストリームに色差信号が含まれるか否かを判定する工程と、
前記ビットストリームに前記色差信号が含まれていないと判定した場合、前記色差信号に関するシンタックスの復号を省略する工程とを有することを特徴とする点群復号方法。 - 点群復号装置で用いるプログラムであって、コンピュータに、
ビットストリームに色差信号が含まれるか否かを判定する工程と、
前記ビットストリームに前記色差信号が含まれていないと判定した場合、前記色差信号に関するシンタックスの復号を省略する工程とを実行させることを特徴とするプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202180061533.9A CN116157840A (zh) | 2020-09-29 | 2021-03-12 | 点云解码装置、点云解码方法和程序 |
US18/118,969 US20230224508A1 (en) | 2020-09-29 | 2023-03-08 | Point cloud decoding device, point cloud decoding method, and program |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020-164129 | 2020-09-29 | ||
JP2020164129A JP2022056229A (ja) | 2020-09-29 | 2020-09-29 | 点群復号装置、点群復号方法及びプログラム |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US18/118,969 Continuation US20230224508A1 (en) | 2020-09-29 | 2023-03-08 | Point cloud decoding device, point cloud decoding method, and program |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2022070469A1 true WO2022070469A1 (ja) | 2022-04-07 |
Family
ID=80950101
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2021/010068 WO2022070469A1 (ja) | 2020-09-29 | 2021-03-12 | 点群復号装置、点群復号方法及びプログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230224508A1 (ja) |
JP (1) | JP2022056229A (ja) |
CN (1) | CN116157840A (ja) |
WO (1) | WO2022070469A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024014205A1 (ja) * | 2022-07-13 | 2024-01-18 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 復号方法、符号化方法、復号装置及び符号化装置 |
WO2024082135A1 (zh) * | 2022-10-18 | 2024-04-25 | Oppo广东移动通信有限公司 | 编解码方法、编解码器、码流以及计算机存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023204040A1 (ja) * | 2022-04-22 | 2023-10-26 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 復号方法、符号化方法、復号装置及び符号化装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019078000A1 (ja) * | 2017-10-16 | 2019-04-25 | ソニー株式会社 | 情報処理装置および方法 |
WO2021079951A1 (ja) * | 2019-10-25 | 2021-04-29 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 符号化装置、復号装置、符号化方法、および復号方法 |
-
2020
- 2020-09-29 JP JP2020164129A patent/JP2022056229A/ja active Pending
-
2021
- 2021-03-12 CN CN202180061533.9A patent/CN116157840A/zh active Pending
- 2021-03-12 WO PCT/JP2021/010068 patent/WO2022070469A1/ja active Application Filing
-
2023
- 2023-03-08 US US18/118,969 patent/US20230224508A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019078000A1 (ja) * | 2017-10-16 | 2019-04-25 | ソニー株式会社 | 情報処理装置および方法 |
WO2021079951A1 (ja) * | 2019-10-25 | 2021-04-29 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 符号化装置、復号装置、符号化方法、および復号方法 |
Non-Patent Citations (1)
Title |
---|
C. HELMRICH (FRAUNHOFER), C. RUDAT, T. NGUYEN, H. SCHWARZ, D. MARPE, T. WIEGAND (HHI): "CE7-related: Joint chroma residual coding with multiple modes", 14. JVET MEETING; 20190319 - 20190327; GENEVA; (THE JOINT VIDEO EXPLORATION TEAM OF ISO/IEC JTC1/SC29/WG11 AND ITU-T SG.16 ), 13 March 2019 (2019-03-13), XP030202946 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024014205A1 (ja) * | 2022-07-13 | 2024-01-18 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 復号方法、符号化方法、復号装置及び符号化装置 |
WO2024082135A1 (zh) * | 2022-10-18 | 2024-04-25 | Oppo广东移动通信有限公司 | 编解码方法、编解码器、码流以及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116157840A (zh) | 2023-05-23 |
JP2022056229A (ja) | 2022-04-08 |
US20230224508A1 (en) | 2023-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113574540B (zh) | 点云编解码方法、装置和电子设备 | |
WO2022070469A1 (ja) | 点群復号装置、点群復号方法及びプログラム | |
CN113632142B (zh) | 点云编解码的方法和装置 | |
WO2022071284A1 (ja) | 点群復号装置、点群復号方法及びプログラム | |
JP2024107413A (ja) | 点群復号装置、点群復号方法及びプログラム | |
WO2021261142A1 (ja) | 点群復号装置、点群復号方法及びプログラム | |
KR20210136082A (ko) | 포인트 클라우드 속성 코딩을 위한 채널간 예측 및 변환을 위한 기술들 및 장치 | |
WO2021256486A1 (ja) | 点群復号装置、点群復号方法及びプログラム | |
WO2022071285A1 (ja) | 点群復号装置、点群復号方法及びプログラム | |
WO2024214442A1 (ja) | 点群復号装置、点群復号方法及びプログラム | |
JP7557436B2 (ja) | 点群復号装置、点群復号方法及びプログラム | |
JP2024058013A (ja) | 点群復号装置、点群復号方法及びプログラム | |
WO2024079985A1 (ja) | 点群復号装置、点群復号方法及びプログラム | |
JP2024096620A (ja) | 点群復号装置、点群復号方法及びプログラム | |
JP2024152166A (ja) | 点群復号装置、点群復号方法及びプログラム | |
JP2024058011A (ja) | 点群復号装置、点群復号方法及びプログラム | |
JP2024097688A (ja) | 点群復号装置、点群復号方法及びプログラム | |
JP2024058012A (ja) | 点群復号装置、点群復号方法及びプログラム | |
JP2024152417A (ja) | 点群復号装置、点群復号方法及びプログラム | |
JP2024152169A (ja) | 点群復号装置、点群復号方法及びプログラム | |
JP2024152411A (ja) | 点群復号装置、点群復号方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 21874777 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 21874777 Country of ref document: EP Kind code of ref document: A1 |