WO2025150310A1 - 点群復号装置、点群復号方法及びプログラム - Google Patents
点群復号装置、点群復号方法及びプログラムInfo
- Publication number
- WO2025150310A1 WO2025150310A1 PCT/JP2024/042927 JP2024042927W WO2025150310A1 WO 2025150310 A1 WO2025150310 A1 WO 2025150310A1 JP 2024042927 W JP2024042927 W JP 2024042927W WO 2025150310 A1 WO2025150310 A1 WO 2025150310A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- raht
- unit
- node
- decoded
- point cloud
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/40—Tree coding, e.g. quadtree, octree
-
- 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/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
-
- 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
Definitions
- such a bit stream may be transmitted from the point cloud encoding device 100 to the point cloud decoding device 200 via a transmission path.
- the bit stream may be stored in a storage medium and then provided from the point cloud encoding device 100 to the point cloud decoding device 200.
- 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.
- inter prediction when decoding such an occasion code, inter prediction, which will be described later, may be used.
- the approximate surface synthesis unit 2030 is configured to generate approximate surface information using the tree information generated by the tree synthesis unit 2020, and to decode the point cloud based on the approximate surface information.
- the time at which the reference frame is to be used for each frame may be determined based on, for example, control data transmitted as a bit stream from the point cloud encoding device 100.
- 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.
- LoD is information for defining the reference relationship (the referencing point and the referenced point) to realize predictive coding, such as predicting attribute information of a certain point from attribute information of another point and encoding or decoding the prediction residual.
- LoD is information that defines a hierarchical structure in which each point contained in the geometric information is classified into multiple levels, and the attributes of points belonging to lower levels are encoded or decoded using attribute information of points belonging to higher levels.
- the point cloud decoding device 200 is configured to decode and output attribute information of each point in the point cloud through the above processing.
- the bit stream may include a GPS2011.
- a GPS2011 is also called a geometry parameter set, and is a collection of control data related to decoding of geometric information. A specific example will be described later.
- Each GPS2011 includes at least GPS id information for identifying each GPS2011 when multiple GPS2011 exist.
- bit stream is structured so that each slice data 2013A/2013B corresponds to one GSH 2012A/2012B and one GPS 2011.
- the GPS ID information is used to specify which GPS 2011 to refer to in GSH 2012A/2012B, so a common GPS 2011 can be used for multiple slice data 2013A/2013B.
- the bitstream may include a sequence parameter set (SPS) 2001.
- SPS sequence parameter set
- the bitstream when transmitted, may be shaped into a configuration different from that shown in FIG. 3.
- the bitstream may be combined with a bitstream decoded by an attribute information decoding unit 2060 (described later) and transmitted as a single bitstream.
- Figure 4 shows an example of the syntax configuration of GPS2011.
- geom_tree_type For example, if the value of geom_tree_type is "1", it may be defined that predictive geometry coding is used, and if the value of geom_tree_type is "0", it may be defined that Octree is used.
- GPS2011 may include a flag (geom_angular_enabled) for controlling whether processing is performed in angular mode in the tree synthesis unit 2020.
- geom_angular_enabled when the value of geom_angular_enabled is "1", it may be defined that predictive geometry coding processing is performed in angular mode, and when the value of geom_angular_enabled is "0", it may be defined that predictive geometry coding processing is not performed in angular mode.
- GPS2011 may include a flag (ptree_ang_azimuth_scaling_enabled) in the tree synthesis unit 2020 for controlling whether the adaptive azimuth quantization mode is in angular mode.
- the adaptive azimuth quantization mode is a mode that performs adaptive quantization of the azimuth angle according to the radius.
- ptree_ang_azimuth_scaling_enabled when the value of ptree_ang_azimuth_scaling_enabled is "1", it may be defined that adaptive quantization of the azimuth angle according to the radius is performed, and when the value of ptree_ang_azimuth_scaling_enabled is "0", it may be defined that adaptive quantization of the azimuth angle according to the radius is not performed.
- ptree_azimuth_scaling_enabled For example, if the value of ptree_azimuth_scaling_enabled is "1", it may be defined that the predictor list is used in the calculation of the predictor, and if the value of ptree_ang_azimuth_scaling_enabled is "0", it may be defined that the predictor list is not used in the calculation of the predictor.
- GPS2011 may include a value (ptree_ang_azimuth_step_minus1) related to the laser rotation speed for use in calculating the predicted azimuth angle in the tree synthesis unit 2020 in angular mode.
- ptree_ang_azimuth_step_minus1 a value related to the laser rotation speed for use in calculating the predicted azimuth angle in the tree synthesis unit 2020 in angular mode.
- Predictive geometry coding is also called predictive tree.
- Predictive geometry coding is a method of decoding the residual of the position information of the point cloud data and the predicted position information based on an arbitrary tree structure determined by the point cloud encoding device 100, and adding the two together to decode the position information of the point cloud data.
- step S1602 the tree synthesis unit 2020 sets the parent node of the node to be decoded (node to be processed) in the point cloud data.
- the tree synthesis unit 2020 can refer to the value of the above-mentioned geom_angular_enabled to determine whether to perform processing in angular mode.
- step S1604 If processing is to be performed in angular mode, the operation proceeds to step S1604; if processing is not to be performed in angular mode, the operation proceeds to step S1610.
- step S1606 the tree synthesis unit 2020 reconstructs the spherical coordinates.
- the tree synthesis unit 2020 reconstructs the spherical coordinates by adding the decoded spherical coordinate residual and the predictor.
- step S1609 the tree synthesis unit 2020 reconstructs the original coordinates.
- the tree synthesis unit 2020 reconstructs the original coordinates by adding the decoded orthogonal integer coordinate residual and the reconstructed orthogonal integer coordinates.
- the tree synthesis unit 2020 may select a predictor based on the decoded predictor mode from among multiple predictors calculated based on a tree structure.
- step S1612 the tree synthesis unit 2020 reconstructs the original coordinates.
- the tree synthesis unit 2020 reconstructs the original coordinates by adding the residual of the orthogonal integer coordinates decoded in step S1611 to the position information predicted in step S1610.
- FIG. 17 is a flowchart showing an example of the process of decoding predictor information and spherical coordinate residuals in step S1604.
- step S1701 the tree synthesis unit 2020 determines whether or not the adaptive azimuth angle quantization mode is selected based on the value of ptree_ang_azimuth_scaling_enabled.
- step S1702. If the mode is adaptive azimuth angle quantization, the operation proceeds to step S1702. On the other hand, if the mode is not adaptive azimuth angle quantization, the operation proceeds to step S1703.
- step S1702 the tree synthesis unit 2020 decodes the predictor index. After the decoding of the predictor index is completed, the operation proceeds to step S1704.
- step S1704 the tree synthesis unit 2020 decodes the number of azimuth angle steps. After the decoding of the number of azimuth angle steps is completed, the operation proceeds to step S1705.
- step S1705 the tree synthesis unit 2020 decodes the spherical coordinate residual.
- the tree synthesis unit 2020 may perform such decoding using the method described in Non-Patent Document 2. After the decoding is complete, the operation proceeds to step S1706, where the processing ends.
- syntax names explained below are merely examples. If the syntax functions explained below are similar, the syntax names may be different.
- the attribute information decoding unit 2060 may decode such prediction coefficients as different values for each layer of the RAHT. In addition, the attribute information decoding unit 2060 may decode the values of such prediction coefficients as differential values with (already decoded) coefficient values of a higher layer, rather than decoding the values directly.
- APS2611 may additionally include syntax (raht_inter_comp_pred_coeff_diff[dpth]) indicating a prediction coefficient value.
- the attribute information decoding unit 2060 may decode different values for such prediction coefficients for each layer of the RAHT.
- the attribute information decoding unit 2060 may also decode different values for such prediction coefficients for each component to be predicted (Cb signal and Cr signal).
- the attribute information decoding unit 2060 may also decode the values of such prediction coefficients as differential values with respect to (already decoded) coefficient values of a higher layer, rather than decoding the values directly.
- APS2611 may additionally include syntax (raht_coeff_calc_range) indicating a reference range when calculating prediction coefficients on the point cloud decoding device 200 side.
- RAHT section 2080 An example of the process of the RAHT unit 2080 will be described with reference to FIGS.
- FIG. 7 is a flowchart showing an example of processing by the RAHT unit 2080.
- step S28001 the RAHT unit 2080 recursively divides the nodes into octrees until a predetermined size is reached, using a technique called Octree. After this division is complete, the operation proceeds to step S28002.
- the RAHT unit 2080 repeats the above scanning from the bottom layer to the top layer.
- the total number of acquired points is used as the weight for the inverse transformation of the RAHT in step S28005 described below. After this calculation is completed, the operation proceeds to step S28003.
- step S28004 the RAHT unit 2080 determines whether the decoding of the attribute information of all nodes contained in the hierarchy has been completed.
- step S28005 If not completed, the operation proceeds to step S28005; if completed, the operation proceeds to step S28007.
- step S28005 the RAHT unit 2080 decodes the AC coefficients. Details will be described later. After the decoding is completed, the operation proceeds to step S28006.
- step S28006 the RAHT unit 2080 calculates attribute values using the inverse transform of the RAHT based on the total number of points belonging to the lower hierarchical layer of each node, the decoded AC coefficients, and the DC coefficients calculated from the nodes in the higher hierarchical layer using a method described below.
- T(w) ⁇ 1 is a matrix used for the inverse transformation of the RAHT, and can be generated by the method described in Non-Patent Document 1, for example.
- step S28004 is used as a DC coefficient in the inverse transform of the RAHT of each subnode. After this transform process is completed, the operation proceeds to step S28004.
- step S28007 the RAHT unit 2080 determines whether decoding of nodes at all hierarchical levels has been completed.
- step S28102 If the result of the determination is that AC coefficients are not to be predicted, the operation proceeds to step S28102; if AC coefficients are to be predicted, the operation proceeds to steps S28103 and S28104.
- FIG. 22 is a flowchart showing an example of the process of step S28103. Note that FIG. 22 is a flowchart assuming a case where the attribute signal to be decoded has multiple components (e.g., a luminance signal (Y signal) and color difference signals (Cb signal and Cr signal)).
- Y signal luminance signal
- Cb signal and Cr signal color difference signals
- step S2202 the RAHT unit 2080 decodes the quantized AC coefficient residual of the corresponding component of the corresponding AC coefficient from the bitstream.
- step S2204 the RAHT unit 2080 checks whether the component is a target for inter-component prediction.
- the AC coefficient residual of the luminance signal after inverse quantization calculated in step S2203 is defined as Y'.
- the predicted value Crp' of the AC coefficient residual of the Cb signal can be calculated, for example, using the following formula.
- the RAHT unit 2080 may decode prediction coefficients from headers such as SPS, APS, and ASH.
- FIG. 9 is a flowchart showing an example of the processing of step S28104.
- step S28110 If the result of the determination is that the depth is equal to or less than the threshold, the operation proceeds to step S28110; if the depth is greater than the threshold, the operation proceeds to step S28112.
- the RAHT unit 2080 may make this determination by checking whether inter prediction is possible, and performing inter prediction if possible, and not performing inter prediction if not possible. This will be described in detail later.
- the RAHT unit 2080 may make the determination by decoding a flag indicating whether or not to inter-predict the AC coefficients of the node to be processed, and using the value of the flag.
- the flag may be decoded for each node, or may be decoded for each layer.
- the flag may be decoded and a determination made only when it is determined that inter-prediction is possible.
- the flag may be included in the slice data.
- step S28111 the RAHT unit 2080 performs inter prediction of the AC coefficients of the node to be processed. The details will be described later.
- step S28112 the RAHT unit 2080 performs intra prediction of the AC coefficients of the node to be processed. The details will be described later.
- step S28113 the processing of step S28104 ends. Note that the conditional branch in step S28109 may be omitted.
- step S28111 a process equivalent to the intra prediction process in step S28112 may also be performed, and prediction may be performed by combining the results of inter prediction and intra prediction. This will be described in detail later.
- FIG. 10 is a flowchart showing an example of the intra prediction process in step S28112.
- the RAHT unit 2080 determines whether or not to perform intra prediction using adjacent nodes in the subnode hierarchy.
- the RAHT unit 2080 may refer to raht_subnode_prediction_enable_flag and use the value thereof to make the determination.
- the RAHT unit 2080 If the RAHT unit 2080 does not use adjacent nodes in the subnode hierarchy, it performs intra prediction using only adjacent nodes in the higher hierarchy.
- the adjacent nodes in the higher hierarchy refer to the six nodes adjacent to the parent node of the node to be decoded that are adjacent to the face, the 12 nodes adjacent to the edge, and the parent node itself that are adjacent to the face of the node to be decoded, out of a total of 19 nodes, three nodes adjacent to the face of the node to be decoded, three nodes adjacent to the edge, and the seven nodes of the parent node itself.
- Figure 11 shows the relationship between the node to be decoded and adjacent nodes in the higher hierarchy.
- the RAHT unit 2080 When using adjacent nodes in the subnode hierarchy, the RAHT unit 2080 performs intra prediction using adjacent nodes in the higher hierarchy and adjacent nodes in the subnode hierarchy.
- an adjacent node in the subnode hierarchy is a subnode of an adjacent node in a higher hierarchy that has a face or edge adjacent to the node to be decoded and has already been decoded.
- the RAHT unit 2080 may determine whether or not to perform smoothing in step S1301.
- the RAHT unit 2080 may refer to raht_smoothing_enable_flag and use its value when making such a determination.
- step S1302 the RAHT unit 2080 may smooth the attribute values.
- the RAHT unit 2080 may obtain a weighted average of the smoothed attribute value Attrsmoothing of the node to be decoded by using the attribute value Attri i predicted at a subnode i in the same parent node as the node to be decoded and a weight ⁇ i as follows:
- the RAHT unit 2080 may use a hard-coded value as the weight ⁇ i , or may refer to raht_smoothing_weighted_average_weights and use the value.
- the RAHT unit 2080 may, for example, perform clipping to determine the smoothed attribute value Attr smoothing of the node to be decoded using the predicted value Attr 0 of the node to be decoded itself, the attribute value Attr i predicted at a subnode i other than the node to be decoded among subnodes within the same parent node as the node to be decoded, a weight ⁇ i , and a threshold value Thr r as follows:
- clipping is a process in which if the input value is greater than a predetermined maximum value, the maximum value is output, if the input value is less than a predetermined minimum value, the minimum value is output, and in all other cases, the input value is used as the output value as is.
- the function Clip3 that performs clipping is:
- the RAHT unit 2080 may determine that the decoded node for the target subnode i is a face-adjacent node, a face-adjacent node and an edge-adjacent node, or all subnodes within the same parent node.
- the RAHT unit 2080 may use a hard-coded value as the weight ⁇ i , or may refer to raht_smoothing_clipping_weights and use the value.
- the RAHT unit 2080 may use a hard-coded value as the threshold value Thr , or may refer to raht_smoothing_clipping_threshold and use that value.
- the RAHT unit 2080 decodes AC coefficients for both the color difference signal and the luminance signal, but the RAHT unit 2080 may skip decoding AC coefficients for the color difference signal only for the bottom layer of the Octree.
- the RAHT unit 2080 may determine whether to skip decoding of AC coefficients of color difference signals only in the bottom layer of the Octree.
- step S1402 the RAHT unit 2080 determines whether the node to be decoded is at the bottom layer of the Octree.
- step S1403 If it is the bottom layer, the operation proceeds to step S28004.
- step S1403 the RAHT unit 2080 decodes the AC coefficients other than the color difference signal.
- the RAHT unit 2080 performs the same process as in step S28004 for decoding AC coefficients other than the color difference signal, sets the AC coefficients of the color difference signal to 0, and calculates the attribute values in the subsequent step S28005.
- ⁇ ( ⁇ + c)/c
- the integer ⁇ may be decoded using an exponential-Golomb code.
- the stored reference frame is read from the frame buffer 1140 and used as the reference frame when inter-prediction of temporally different frames is performed in the tree analysis unit 1030.
- which reference frame to use for each frame may be determined based on, for example, the value of a cost function representing the encoding efficiency, and information on the reference frame to be used may be transmitted to the point cloud decoding device 200 as control data.
- the color conversion unit 1070 is configured to perform color conversion when the input attribute information is color information. It is not necessary to perform color conversion, and whether or not to perform color conversion processing is coded as part of the control data and transmitted to the point cloud decoding device 200.
- the RAHT unit 1090 is configured to receive as input the attribute information transferred by the attribute transfer unit 1080 and the geometric information generated by the geometric information reconstruction unit 1060, and to generate residual information for each point using a type of Haar transform called RAHT (Region Adaptive Hierarchical Transform).
- RAHT Regular Adaptive Hierarchical Transform
- the information to be decoded is the direct current component (DC coefficient) and alternating current component (AC coefficient) of the attribute information generated by using RAHT in the encoding process, and in the decoding process, it is converted into attribute information by using the inverse transform of RAHT.
- DC coefficient direct current component
- AC coefficient alternating current component
- RAHT RAHT Specific processing of RAHT can be performed, for example, using the method described in the above-mentioned non-patent document 1.
- the LoD calculation unit 1100 is configured to receive the geometric information generated by the geometric information reconstruction unit 1060 and generate the LoD (Level of Detail).
- LoD is information for defining the reference relationship (the referencing point and the referenced point) to realize predictive coding, such as predicting attribute information of a certain point from attribute information of another point and encoding or decoding the prediction residual.
- LoD is information that defines a hierarchical structure in which each point contained in the geometric information is classified into multiple levels, and the attributes of points belonging to lower levels are encoded or decoded using attribute information of points belonging to higher levels.
- the lifting unit 1110 is configured to generate residual information by a lifting process using the LoD generated by the LoD calculation unit 1100 and the attribute information after attribute transfer by the attribute transfer unit 1080.
- the method described in the above-mentioned non-patent document 1 may be used.
- Attribute Information quantization unit 1130 ...attribute information encoding unit 200...point cloud decoding device 2010...geometric information decoding unit 2020...tree synthesis unit 2030...approximate surface synthesis unit 2040...geometric information reconstruction unit 2050...inverse coordinate transformation unit 2060...attribute information decoding unit 2070...inverse quantization unit 2080...RAHT unit 2090...LoD calculation unit 2100...inverse lifting unit 2110...inverse color transformation unit
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)
Abstract
属性情報の符号化効率を向上すること。本発明に係る点群復号装置200は、復号対象ノードの輝度信号の情報を用いて、復号対象ノードの色差信号の情報を予測するRAHT部2080を備える。
Description
本発明は、点群復号装置、点群復号方法及びプログラムに関する。
従来、RAHTにおいて各色信号は、コンポーネントごとに独立に符号化/復号されている。
G-PCC codec description,ISO/IEC JTC 1/SC 29/WG 7 N 00271
G-PCC 2nd edition codec description, ISO/IEC JTC 1/SC 29/WG 7 N00506
しかしながら、RAHTにおいて色信号間の相関が活用できておらず、符号量に削減の余地があるという問題点があった。
そこで、本発明は、上述の課題に鑑みてなされたものであり、属性情報の符号化効率を向上することができる点群復号装置、点群復号方法及びプログラムを提供することを目的とする。
本発明の第1の特徴は、点群復号装置であって、復号対象ノードの輝度信号の情報を用いて、前記復号対象ノードの色差信号の情報を予測するRAHT部を備えることを要旨とする。
本発明の第2の特徴は、点群復号方法であって、イントラ予測において上位階層の隣接ノードを探索し、過去の探索結果に基づいて前記上位階層の隣接ノードの探索範囲を設定する工程を有することを要旨とする。
本発明の第3の特徴は、コンピュータを、点群復号装置として機能させるプログラムであって、前記点群復号装置は、イントラ予測において上位階層の隣接ノードを探索し、過去の探索結果に基づいて前記上位階層の隣接ノードの探索範囲を設定するRAHT部を備えることを要旨とする。
本発明によれば、属性情報の符号化効率を向上することができる点群復号装置、点群復号方法及びプログラムを提供することができる。
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、以下の実施形態における構成要素は、適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、以下の実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
(第1実施形態)
以下、図1~図24を参照して、本発明の第1実施形態に係る点群処理システム10について説明する。図1は、本実施形態に係る実施形態に係る点群処理システム10を示す図である。
以下、図1~図24を参照して、本発明の第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と、フレームバッファ2120とを有する。
幾何情報復号部2010は、点群符号化装置100から出力されるビットストリームのうち、幾何情報に関するビットストリーム(幾何情報ビットストリーム)を入力とし、シンタックスを復号するように構成されている。
復号処理は、例えば、コンテクスト適応二値算術復号処理である。ここで、例えば、シンタックスは、位置情報の復号処理を制御するための制御データ(フラグやパラメータ)を含む。
ツリー合成部2020は、幾何情報復号部2010によって復号された制御データ及び後述するツリー内のどのノードに点群が存在するかを示すoccupancy codeを入力として、復号対象空間内のどの領域に点が存在するかというツリー情報を生成するように構成されている。
なお、occupancy codeの復号処理をツリー合成部2020内部で行うよう構成されていてもよい。
本処理は、復号対象空間を直方体で区切り、occupancy codeを参照して各直方体内に点が存在するかを判断し、点が存在する直方体を複数の直方体に分割し、occupancy codeを参照するという処理を再帰的に繰り返すことで、ツリー情報を生成することができる。
ここで、かかるoccupancy codeの復号に際して、後述するインター予測を用いてもよい。
本実施形態では、上述の直方体を常に立方体として8分木分割を再帰的に行う「Octree」と呼ばれる手法、及び、8分木分割に加え、4分木分割及び2分木分割を行う「QtBt」と呼ばれる手法を使用することができる。QtBt」を使用するか否かは、制御データとして点群符号化装置100側から伝送される。
或いは、制御データによってPredictive geometry codingを使用するように指定された場合、ツリー合成部2020は、点群符号化装置100において決定した任意のツリー構成に基づいて各点の座標を復号するように構成されている。
近似表面合成部2030は、ツリー合成部2020によって生成されたツリー情報を用いて近似表面情報を生成し、かかる近似表面情報に基づいて点群を復号するように構成されている。
近似表面情報は、例えば、物体の3次元点群データを復号する際等において、点群が物体表面に密に分布しているような場合に、個々の点群を復号するのではなく、点群の存在領域を小さな平面で近似して表現したものである。
具体的には、近似表面合成部2030は、例えば、「Trisoup」と呼ばれる手法で、近似表面情報を生成し、点群を復号することができる。「Trisoup」の具体的な処理例については後述する。また、Lidar等で取得した疎な点群を復号する場合は、本処理を省略することができる。
幾何情報再構成部2040は、ツリー合成部2020によって生成されたツリー情報及び近似表面合成部2030によって生成された近似表面情報を元に、復号対象の点群データの各点の幾何情報(復号処理が仮定している座標系における位置情報)を再構成するように構成されている。
逆座標変換部2050は、幾何情報再構成部2040によって再構成された幾何情報を入力として、復号処理が仮定している座標系から、出力点群信号の座標系に変換を行い、位置情報を出力するように構成されている。
フレームバッファ2120は、幾何情報再構成部2040によって再構成された幾何情報を入力として、参照フレームとして保存するように構成されている。保存した参照フレームは、ツリー合成部2020において時間的に異なるフレームのインター予測を行う場合に、フレームバッファ2130から読み出されて参照フレームとして使用される。
ここで、各フレームに対してどの時刻の参照フレームを用いるかどうかは、例えば、点群符号化装置100からビットストリームとして伝送されてくる制御データに基づいて決定されてもよい。
属性情報復号部2060は、点群符号化装置100から出力されるビットストリームのうち、属性情報に関するビットストリーム(属性情報ビットストリーム)を入力とし、シンタックスを復号するように構成されている。
復号処理は、例えば、コンテクスト適応二値算術復号処理である。ここで、例えば、シンタックスは、属性情報の復号処理を制御するための制御データ(フラグ及びパラメータ)を含む。
また、属性情報復号部2060は、復号したシンタックスから、量子化済み残差情報を復号するように構成されている。
逆量子化部2070は、属性情報復号部2060によって復号された量子化済み残差情報と、属性情報復号部2060によって復号された制御データの一つである量子化パラメータとを元に、逆量子化処理を行い、逆量子化済み残差情報を生成するように構成されている。
逆量子化済み残差情報は、復号対象の点群の特徴に応じて、RAHT部2080及びLoD算出部2090のいずれかに出力される。いずれに出力されるかは、属性情報復号部2060によって復号される制御データによって指定される。
RAHT部2080は、逆量子化部2070によって生成された逆量子化済み残差情報及び幾何情報再構成部2040によって生成された幾何情報を入力とし、RAHT(Region Adaptive Hierarchical Transform)と呼ばれるHaar変換(復号処理においては、逆Haar変換)の一種を用いて、各点の属性情報を復号するように構成されている。復号される情報は、符号化処理においてRAHTを用いることで生成された属性情報の直流成分(DC係数)及び交流成分(AC係数)であり、復号処理において、RAHTの逆変換を用いることで属性情報に変換される。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に、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でツリータイプを制御するためのフラグ(geom_tree_type)を含んでもよい。
例えば、geom_tree_typeの値が「1」の場合は、Predictive geometry codingを使用すると定義し、geom_tree_typeの値が「0」の場合は、Octreeを使用するように定義されていてもよい。
GPS2011は、ツリー合成部2020で、Angularモードとして処理を行うかどうかを制御するためのフラグ(geom_angular_enabled)を含んでもよい。
例えば、geom_angular_enabledの値が「1」の場合は、AngularモードとしてPredictive geometry codingの処理を行うと定義し、geom_angular_enabledの値が「0」の場合は、AngularモードとしてPredictive geometry codingの処理を行わないように定義されていてもよい。
GPS2011は、ツリー合成部2020で、Angularモードにおいて、適応的方位角量子化モードであるかどうかを制御するためのフラグ(ptree_ang_azimuth_scaling_enabled)を含んでもよい。適応的方位角量子化モードとは、半径に応じた適応的な方位角の量子化を行うモードである。
例えば、ptree_ang_azimuth_scaling_enabledの値が「1」の場合は、半径に応じた適応的な方位角の量子化を行うと定義し、ptree_ang_azimuth_scaling_enabledの値が「0」の場合は、半径に応じた適応的な方位角の量子化を行わないと定義されていてもよい。
また、Angularモードにおける予測器の計算(選択)において、予測器リストを使うかどうか制御するためのフラグとして用いてもよい。
例えば、ptree_azimuth_scaling_enabledの値が「1」の場合は、かかる予測器の計算において、予測器リストを使うと定義し、ptree_ang_azimuth_scaling_enabledの値が「0」の場合は、かかる予測器の計算において、予測器リストを使わないと定義されていてもよい。
GPS2011は、ツリー合成部2020で、Angularモードにおいて、方位角の予測値の計算するために利用するためのレーザーの回転速度に関する値(ptree_ang_azimuth_step_minus1)を含んでもよい。
(ツリー合成部2020)
以下、図16~図17を用いてツリー合成部2020の動作の一例について説明する。
以下、図16~図17を用いてツリー合成部2020の動作の一例について説明する。
図16は、ツリー合成部2020における処理の一例を示すフローチャートである。なお、以下では「Predictive geometry coding」を使用してツリーを合成する場合の例について説明する。
Predictive geometry codingは、Predictive Treeとも呼ばれている。Predictive geometry codingは、点群符号化装置100側で決めた任意の木構造に基づいて予測した位置情報及び当該点群データの位置情報の残差を復号し、両者を加算することで当該点群データの位置情報を復号する手段である。
図16に示すように、ステップS1601において、ツリー合成部2020は、当該スライス内に含まれる全ての点群データの位置情報の復号が完了したかどうかを判定する。
この処理は、例えば、GSHに当該スライスに含まれる点群データ数を示す情報を伝送しておき、この点群データ数と既に処理したデータ数とを比較することで、全ての点の処理が完了したか否かを判定することができる。
全ての点群データの位置情報の復号が完了した場合は、本動作は、ステップS1613へ進み、処理を終了する。全ての点群データの位置情報の復号が完了していない場合は、本動作は、ステップS1602へ進む。
ステップS1602において、ツリー合成部2020は、点群データの復号対象ノード(処理対象ノード)の親ノードを設定する。
例えば、ツリー合成部2020は、各復号対象ノードの子ノードの数を復号し、かかる子ノード数の分だけ復号対象ノードのインデックスを格納しておく。
そして、ツリー合成部2020は、あるノードの後に復号対象ノードの処理を行う場合、当該ノードのインデックスの配列を参照し、かかる配列の末尾に格納されているインデックスを1つ取得し、取得したインデックスのノードを、かかる復号対象ノードの親ノードに設定してもよい。
かかる親ノードの設定が完了した後、本動作は、ステップS1603へ進む。
ステップS1603において、ツリー合成部2020は、Angularモードで処理を行うかを判定する。
例えば、ツリー合成部2020は、上述のgeom_angular_enabledの値を参照して、Angularモードで処理を行うかを判定することができる。
Angularモードで処理を行う場合は、本動作は、ステップS1604へ進み、Angularモードで処理を行わない場合は、本動作は、ステップS1610へ進む。
ステップS1604において、ツリー合成部2020は、ステップS1605で用いる予測器情報及び球面座標残差の復号を行う。ここで、球面座標残差は、半径や方位角やレーザーIDの残差を示す。かかる復号が完了したら、本動作は、ステップS1605へ進む。
ステップS1605において、ツリー合成部2020は、ステップS1604で復号した予測器情報に基づいて、位置情報の予測を行う。ここで、予測器情報は、予測器インデックス又は予測モードである。
ツリー合成部2020は、かかる処理では、最初に、予測に用いる予測器の種類を決定する。
例えば、ツリー合成部2020は、ptree_ang_azimuth_scaling_enabledの値に基づいて、適応的方位角量子化モードで処理を行うか否かを判定し、かかる判定結果に基づいて、利用する予測器の種類を決定してもよい。
例えば、ツリー合成部2020は、適応的方位角量子化モードの場合、木構造を用いて計算される複数の予測器の中から、復号した予測モードに基づき利用する予測器を選択するものであってもよい。
或いは、ツリー合成部2020は、適応的方位角量子化モードで処理を行う場合、復号済みノードの位置情報を予測器としてリストに保持しておき、復号した予測器インデックスに割り当てられている予測器を当該リストから参照し、利用する予測器の種類として選択してもよい。
ツリー合成部2020は、予測器の種類が決定したら、かかる予測器を位置情報の予測値とする。
かかる位置情報の予測が完了した後、本動作は、ステップS1606へと進む。
ステップS1606において、ツリー合成部2020は、球面座標の再構成を行う。ツリー合成部2020は、かかる処理では、復号した球面座標残差と予測器とを加算することで、球面座標を再構成する。
かかる再構成が完了した後、本動作は、ステップS1607へと進む。
ステップS1607において、ツリー合成部2020は、直交整数座標の再構成を行う。ツリー合成部2020は、かかる処理では、再構成した球面座標に基づいて、球面座標の直交整数座標への変換を行うことができる。具体的な方法としては、例えば、非特許文献1に記載の手法で実現できる。
かかる直交整数座標の再構成が完了した後、本動作は、ステップS1608へ進む。
ステップS1608において、ツリー合成部2020は、直交整数座標残差の復号を行う。
直交整数座標残差の復号が完了した後、本動作は、ステップS1609へと進む。
ステップS1609において、ツリー合成部2020は、元座標の再構成を行う。ツリー合成部2020は、かかる処理では、復号した直交整数座標残差と再構成した直交整数座標とを加算することで、元座標の再構成を行う。
かかる元座標の再構成が完了した後、本動作は、ステップS1601へと戻る。
ステップS1610において、ツリー合成部2020は、位置情報の予測を行う。具体的には、ツリー合成部2020は、予測器を選択し、かかる予測器を位置情報の予測値とする。
例えば、ツリー合成部2020は、木構造に基づき計算される複数の予測器の中から、復号した予測器モードに基づき予測器を選択してもよい。
かかる位置情報の予測が完了した後、本動作は、ステップS1611へと進む。
ステップS1611において、ツリー合成部2020は、直交整数座標残差の復号を行う。
直交整数座標残差の復号が完了した後、本動作は、ステップS1612へと進む。
ステップS1612において、ツリー合成部2020は、元座標の再構成を行う。ツリー合成部2020は、かかる処理では、ステップS1611で復号した直交整数座標の残差とステップS1610で予測した位置情報とを加算することで、元座標を再構成する。
かかる元座標の再構成が完了した後、本動作は、ステップS1601へと戻る。
図17は、ステップS1604における予測器情報及び球面座標残差の復号処理の一例を示すフローチャートである。
図17に示すように、ステップS1701において、ツリー合成部2020は、ptree_ang_azimuth_scaling_enabledの値に基づいて、適応的方位角量子化モードであるか否かを判定する。
適応的方位角量子化モードである場合、本動作は、ステップS1702へ進む。一方、適応的方位角量子化モードではない場合、本動作は、ステップS1703へ進む。
ステップS1702において、ツリー合成部2020は、予測器インデックスを復号する。予測器インデックスの復号が完了後、本動作は、ステップS1704へ進む。
ステップS1703において、ツリー合成部2020は、予測モードを復号する。予測モードの復号が完了後、本動作は、ステップS1704へ進む。
ステップS1704において、ツリー合成部2020は、方位角ステップ数の復号を行う。方位角ステップ数の復号が完了後、本動作は、ステップS1705へ進む。
ステップS1705において、ツリー合成部2020は、球面座標残差を復号する。ツリー合成部2020は、非特許文献2に記載の方法を用いて、かかる復号を行ってもよい。復号が完了後、本動作は、ステップS1706へ進み、処理を終了する。
(属性情報復号部2060)
以下、図5~図6及び図24を用いて属性情報復号部2060で復号される制御データについて説明する。
以下、図5~図6及び図24を用いて属性情報復号部2060で復号される制御データについて説明する。
図5は、属性情報復号部2060で受信する符号化データ(ビットストリーム)の構成の一例であり、図6及び図24は、図5に示すAPS2611のシンタックス構成の一例である。
なお、以下で説明するシンタックス名は、あくまで一例である。以下で説明したシンタックスの機能が同様であれば、シンタックス名は異なっていても差し支えない。
APS2611は、各APS2611を識別するためのAPS id情報(aps_geom_parameter_set_id)を含んでもよい。
なお、図6のDescriptor欄は、各シンタックスが、どのように符号化されているかを意味し、se(v)は、符号あり0次指数ゴロム符号であることを意味し、ue(v)は、符号無し0次指数ゴロム符号であることを意味し、u(1)は、1ビットのフラグであることを意味する。
APS2611は、逆量子化部2070において、逆量子化済み残差情報を、RAHT部2080及びLoD算出部2090のいずれに出力するかを制御するためのフラグ(attr_coding_type)を含んでもよい。
例えば、attr_coding_typeの値が「1」の場合は、LoD算出部2090に出力するように定義され、attr_coding_typeの値が「0」の場合は、RAHT部2080に出力するように定義されていてもよい。
APS2611は、RAHT部2080において、属性情報の予測を行うか否かを制御するためのフラグ(raht_prediction_enabled)を含んでもよい。
例えば、raht_prediction_enabledの値が「1」の場合、属性情報の予測を行うと定義され、raht_prediction_enabledの値が「0」の場合、属性情報の予測を行わないと定義されていてもよい。
APS2611は、RAHT部2080において、属性情報の予測にサブノードを使うか否かを制御するフラグ(raht_subnode_prediction_enable_flag)を含んでもよい。
例えば、raht_subnode_prediction_enable_flagの値が「1」の場合、属性情報の予測にサブノードを使うと定義され、raht_subnode_prediction_enable_flagの値が「0」の場合、属性情報の予測にサブノードを使わないと定義されていてもよい。
APS2611は、RAHT部2080において、属性情報のイントラ予測を行う際の重みパラメータ(raht_prediction_weights)を含んでもよい。
例えば、raht_prediction_weightsの値は、復号対象ノードとイントラ予測に用いる隣接ノードとの隣接の仕方に応じて定義されていてもよい。
APS2611は、RAHT部2080において、属性情報のイントラ予測を行った後に、平滑化を行うか否かを制御するフラグ(raht_smoothing_enable_flag)を含んでもよい。
例えば、raht_smoothing_enable_flagの値が「1」の場合、属性情報の予測を行った後に平滑化を行うと定義され、raht_smoothing_enable_flagの値が「0」の場合、平滑化を行わないと定義されていてもよい。
APS2611は、RAHT部2080において、属性情報のイントラ予測を行った後に、加重平均による平滑化を行うための重みパラメータ(raht_smoothing_weighted_average_weights)を含んでもよい。
例えば、かかる重みパラメータは、復号対象ノードと復号対象ノードの同一親ノードの各サブノードとの隣接の仕方に応じて、最大8個定義されていてもよい。
APS2611は、RAHT部2080において、属性情報のイントラ予測を行った後に、クリッピングによる平滑化を行うための重みパラメータ(raht_smoothing_clipping_weights)を含んでもよい。
例えば、かかる重みパラメータは、復号対象ノードと復号対象ノードの同一親ノードの各サブノードとの隣接の仕方に応じて、最大8個定義されていてもよい。
APS2611は、RAHT部2080において、属性情報のイントラ予測を行った後に、クリッピングによる平滑化を行うための閾値(raht_smoothing_clipping_threshold)を含んでもよい。
APS2611は、RAHT部2080において、属性情報のインター予測を行うか否かを制御するためのフラグ(raht_inter_prediction_enabled)を含んでもよい。
例えば、raht_inter_prediction_enabledの値が「1」の場合、属性情報の予測を行うと定義され、raht_inter_prediction_enabledの値が「0」の場合、属性情報の予測を行わないと定義されていてもよい。
APS2611は、RAHT部2080において、属性情報のインター予測を有効化する階層を示す値(raht_inter_prediction_depth_minus1)を含んでもよい。
例えば、raht_inter_prediction_depth_minus1が「N-1」の場合、インター予測は、Octree構造の上位N階層までにおいて有効化してもよい。
APS2611は、属性情報の予測を行う場合(例えば、raht_prediction_enabledの値が「1」の場合)、図24に示すように、追加で以下のシンタックスを含んでもよい。
APS2611は、RAHTの上位階層ノード探索時の最大探索範囲を示すシンタックス(raht_prediction_search_range)を含んでもよい。
APS2611は、Cb信号からCr信号を予測するか否かを示すフラグ(raht_last_comp_pred_enabled)を含んでもよい。例えば、かかるフラグの値が「1」の場合は、Cb信号からCr信号を予測し、かかるフラグの値が「0」の場合は、Cb信号からCr信号を予測しないと定義されていてもよい。
APS2611は、Cb信号からCr信号を予測する場合、追加で予測係数値を示すシンタックス(raht_last_comp_pred_coeff_diff[dpth])を含んでもよい。
属性情報復号部2060は、かかる予測係数について、RAHTの階層ごとに異なる値として復号してもよい。また、属性情報復号部2060は、かかる予測係数の値をそのまま復号するのではなく、上位階層の(復号済みの)係数値との差分値として復号してもよい。
APS2611は、輝度信号から色差信号(Cb信号及びCr信号)を予測するか否かを示すフラグ(raht_inter_comp_pred_enabled)を含んでもよい。例えば、かかるフラグの値が「1」の場合は、輝度信号から色差信号(Cb信号及びCr信号)を予測し、かかるフラグの値が「0」の場合は、輝度信号から色差信号(Cb信号及びCr信号)を予測しないと定義されていてもよい。
APS2611は、輝度信号から色差信号(Cb信号及びCr信号)を予測する場合、追加で予測係数値を示すシンタックス(raht_inter_comp_pred_coeff_diff[dpth])を含んでもよい。
属性情報復号部2060は、かかる予測係数について、RAHTの階層ごとに異なる値を復号してもよい。また、属性情報復号部2060は、かかる予測係数について、予測対象のコンポーネントごと(Cb信号及びCr信号)に異なる値を復号してもよい。また、属性情報復号部2060は、かかる予測係数の値をそのまま復号するのではなく、上位階層の(復号済みの)係数値との差分値として復号してもよい。
APS2611は、Cb信号からCr信号を予測する場合、或いは、輝度信号から色差信号(Cb信号及びCr信号)を予測する場合、点群復号装置200側で予測係数を算出する際の参照範囲を示すシンタックス(raht_coeff_calc_range)を追加で含んでもよい。
(RAHT部2080)
図7~図15を用いて、RAHT部2080の処理の一例を説明する。
図7~図15を用いて、RAHT部2080の処理の一例を説明する。
図7は、RAHT部2080の処理の一例を示すフローチャートである。
図7に示すように、ステップS28001において、RAHT部2080は、Octreeと呼ばれる手法を用いて、所定のサイズになるまでノードを再帰的に8分木分割する。かかる分割が完了後、本動作は、ステップS28002へ進む。
ステップS28002において、RAHT部2080は、Octreeによって分割された各ノードにおいて、ノードの下位の階層に属する点の総数を集計する。
具体的には、RAHT部2080は、ある階層のノードを順番に走査し、各ノードに属する点の数を記録する。次に、RAHT部2080は、1つ上の階層のノードにおいて、各ノードの子ノードにおいて記録された点の数を合算し、各ノードに属する点の数を算出する。
RAHT部2080は、以上の走査を最下層から最上位の階層まで順に繰り返す。取得した点の総数は、後述のステップS28005において、RAHTの逆変換の重みとして利用される。かかる算出が完了後、本動作は、ステップS28003へ進む。
ステップS28003において、RAHT部2080は、Octreeの最上位の階層に属するノードのDC係数を復号する。或いは、RAHT部2080は、イントラ予測を用いてDC係数を予測し、DC係数の予測残差を復号して足し合わせることで、DC係数を算出してもよい。
RAHT部2080は、かかるDC係数の復号が完了後、以下の式で、ステップS28002で取得したルートノードに属する点の総数wrootと、復号したDC係数DCrootを用いて、ルートノードの属性値Arootを算出する。
ステップS28004において、RAHT部2080は、当該階層内に含まれる全てのノードの属性情報の復号が完了したかどうかを判定する。
完了していない場合、本動作は、ステップS28005へ進み、完了した場合、本動作は、ステップS28007へ進む。
ステップS28005において、RAHT部2080は、AC係数を復号する。具体的には後述する。かかる復号が完了後、本動作は、ステップS28006へ進む。
ステップS28006において、RAHT部2080は、集計した各ノードの下位の階層に属する点の総数と、復号したAC係数と、後述する方法で上位階層のノードから算出したDC係数とに基づいて、RAHTの逆変換を用いて、属性値を算出する。
ここで、RAHTの逆変換は、Octreeによって8分木分割された、2×2×2個の8個のノード単位で行われる。
具体的には、属性値A1,A2,…Akは、k個のサブノードを保持するノードのDC係数DCと、AC係数AC1,AC2,…ACk-1及び各サブノードの下位の階層に属する点の総数w=w1,w2,…wkを用いて、以下の式(1)によって求められる。
かかる変換処理は、上位階層のノードから下位階層のノードの順に繰り返し行うことを想定しており、
ステップS28007において、RAHT部2080は、全階層のノードの復号が完了したかを判定する。
完了していない場合、本動作は、処理対象階層を1つ下の階層へ移し、ステップS28004へ進む。完了した場合、本動作は、ステップS28008へ進み、処理を終了する。
図8は、ステップS28004の処理の一例を示すフローチャートである。
図8に示すように、ステップS28101において、RAHT部2080は、AC係数を予測するかを判定する。RAHT部2080は、かかる判定を行う際に、raht_prediction_enabledを参照し、その値を用いてもよい。
RAHT部2080は、現在の処理対象ノードにおいて、AC係数の予測を行うか否かを示すフラグを復号し、かかるフラグの値を用いてもよい。
かかるフラグは、ノードごとに復号されてもよいし、階層ごとに復号されてもよい。かかるフラグは、raht_prediction_enabledの値が予測が有効であることを示す値「1」であった場合のみ復号されるとしてもよい。かかるフラグは、スライスデータに含まれていてもよい。
判定の結果、AC係数を予測しない場合、本動作は、ステップS28102へ進み、AC係数を予測する場合、本動作は、ステップS28103及びS28104へ進む。
ステップS28102において、RAHT部2080は、AC係数を復号する。かかる復号が完了後、本動作は、ステップS28106へ進み、処理を終了する。
ステップS28103において、RAHT部2080は、AC係数残差を復号する。
例えば、RAHT部2080は、ビットストリームから復号した量子化後のAC係数残差に対して、ビットストリームから復号した量子化パラメータに基づいて逆量子化処理を行い、逆量子化後のAC係数残差を算出してもよい。かかる場合、逆量子化後のAC係数残差が、ステップS28103における出力(復号したAC係数残差)に対応する。
或いは、例えば、RAHT部2080は、ビットストリームから復号した量子化後のAC係数残差を、そのままステップS28103における出力(復号したAC係数残差)としてもよい。
また、RAHT部2080は、図22に示す方法で、AC係数残差を復号してもよい。
図22は、ステップS28103の処理の一例を示すフローチャートである。なお、図22は、復号対象の属性信号が、複数のコンポーネント(例えば、輝度信号(Y信号)及び色差信号(Cb信号及びCr信号)等)を持つ場合を想定したフローチャートである。
図22に示すように、ステップ2201において、RAHT部2080は、当該AC係数における全コンポーネントのAC係数残差の復号が完了したか否かを判定する。
全コンポーネントのAC係数残差の復号が完了した場合、本動作は、ステップS2207へ進み、処理を終了する。一方、全コンポーネントのAC係数残差の復号が完了していない場合、本動作は、ステップS2202へ進む。
ステップS2202において、RAHT部2080は、ビットストリームから当該AC係数の当該コンポーネントの量子化後のAC係数残差を復号する。
なお、RAHT部2080は、ステップS2202の処理に先立って量子化後のAC係数残差をビットストリームから復号してメモリに記憶しておき、ステップS2202において、メモリに記憶したAC係数残差を読み出してもよい。以上のように量子化後のAC係数残差を復号した後、本動作は、ステップS2203へ進む。
ステップS2203において、RAHT部2080は、ステップS2202で復号した量子化後のAC係数残差に対して、ビットストリームから復号した量子化パラメータに基づいて逆量子化処理を行い、逆量子化後のAC係数残差を算出する。以上の処理が完了した後、本動作は、ステップS2204へ進む。
ステップS2204において、RAHT部2080は、当該コンポーネントがコンポーネント間予測の対象となっているか否かを確認する。
RAHT部2080は、当該コンポーネントがコンポーネント間予測の対象となっているか否かは、SPSやAPSやASH等のヘッダに含まれるシンタックスエレメントの値に基づいて判別してもよい。
例えば、RAHT部2080は、輝度信号から色差信号を予測してもよい。かかる場合、コンポーネント間予測の対象となるのは、色差信号(Cb信号及びCr信号)である。
また、RAHT部2080は、色差信号間で、コンポーネント間予測を行ってもよい。例えば、RAHT部2080は、Cb信号からCr信号を予測してもよい。かかる場合、コンポーネント間予測の対象となるのは、Cr信号である。
なお、ここでは、Y信号、Cb信号、Cr信号の順に復号することを想定して説明する。RAHT部2080は、コンポーネント間予測を行う場合、予測対象となる信号より先に復号が完了している信号のみを使用することができる。
当該コンポーネントが、コンポーネント間予測対象ではない場合、本動作は、ステップS2201に戻り、次のコンポーネントの処理を行う。一方、当該コンポーネントが、コンポーネント間予測対象である場合、本動作は、ステップS2205へ進む。
ステップS2205において、RAHT部2080は、AC係数残差のコンポーネント間予測を行う。
以下では、輝度信号からCb信号をコンポーネント間予測する場合を例に説明するが、同様に輝度信号からCr信号、Cb信号からCr信号のコンポーネント間予測も可能である。
ここでは、ステップS2203で算出した逆量子化後の輝度信号のAC係数残差をY’とする。Cb信号のAC係数残差の予測値Crp’は、例えば、以下の式のように算出できる。
Crp’=a×Y’+b
ここで、a及びbは、予測係数である。
ここで、a及びbは、予測係数である。
RAHT部2080は、SPSやAPSやASH等のヘッダから、予測係数を復号してもよい。
或いは、RAHT部2080は、既に復号済みの他のAC係数残差から、予測係数を算出してもよい。具体的には、RAHT部2080は、例えば、既に復号済みの他のAC係数残差の逆量子化後の輝度信号のAC係数残差から、上述の式で、逆量子化後のCb信号のAC係数残差を予測した場合の二乗誤差和が最小となるようなAC係数残差を算出して使用してよい。
上述の処理は、最小二乗法を用いることで解析的に算出可能である。この時、RAHT部2080は、復号済みの全てのAC係数残差を予測係数の算出に使用してもよい。
また、RAHT部2080は、当該AC係数残差を基準として直近に復号したN個のAC係数残差のみを予測係数の算出に使用してもよい。ここで、RAHT部2080は、Nの数を復号に先立って定めてもよいし、Nの値をSPSやAPSやASH等のヘッダから復号してもよい。例えば、RAHT部2080は、raht_coeff_calc_rangeの値をNとして使用してもよい。
また、RAHT部2080は、単純な最小二乗法ではなく、重み付き最小二乗法を用いてもよい。具体的には、RAHT部2080は、当該AC係数残差のY信号の逆量子化済みのAC係数残差値Y’と既に復号済みのAC係数残差のY信号の逆量子化済みのAC係数残差との差分の絶対値、或いは、かかる差分の二乗値に基づいて、上述の重み付けを行ってもよい。この時、RAHT部2080は、かかる差分が小さくなればなるほど、重みが重くなるように(重み係数の絶対値が大きくなるように)定義してもよい。
以上のように、AC係数残差の予測値Crp’を求めた後、本動作は、次のステップS2206へ進む。
ステップS2206では、RAHT部2080は、AC係数残差の更新を行う。具体的には、RAHT部2080は、予測値Crp’を用いて、以下のように、ステップS2203で復号したCb信号の逆量子化後のAC係数残差Cb’を更新する。
Cb’=Cb’+Crp’
かかる更新が完了した後、本動作は、ステップS2201へ進み、次のコンポーネントの処理を行う。
かかる更新が完了した後、本動作は、ステップS2201へ進み、次のコンポーネントの処理を行う。
上述のように、かかる復号が完了後、本動作は、ステップS28105へ進む。
ステップS28104において、RAHT部2080は、AC係数を予測する。AC係数の予測には、インター(Inter)予測が用いられてもよいし、イントラ(Intra)予測が用いられてもよい。
RAHT部2080は、まず属性値を予測し、その後、RAHTによってAC係数の予測値を算出してもよい。具体的には、後述する。かかるAC係数の予測が完了後、本動作は、ステップS28105へ進む。
ステップS28105において、RAHT部2080は、復号したAC係数の残差と予測したAC係数とを加算し、AC係数の再構成を行う。かかる再構成が完了後、本動作は、ステップS28106へと進み、処理を終了する。
図9は、ステップS28104の処理の一例を示すフローチャートである。
図9に示すように、ステップS28107において、RAHT部2080は、インター予測が有効かどうかを判定する。RAHT部2080は、判定には、raht_inter_prediction_enabledを参照し、その値を用いてもよい。判定の結果、インター予測が有効の場合、本動作は、ステップS28109へ進み、インター予測が無効の場合、本動作は、ステップS28112へ進む。
ステップS28109において、RAHT部2080は、処理対象ノードが含まれる階層の深さが閾値以下であるかを判定する。RAHT部2080は、閾値として、raht_inter_prediction_depth_minus1を参照し、その値を用いてもよい。
判定の結果、深さが閾値以下の場合、本動作は、ステップS28110へ進み、深さが閾値より大きい場合、本動作は、ステップS28112へ進む。
ステップS28110において、RAHT部2080は、処理対象ノードのAC係数をインター予測するか否かを判定する。
RAHT部2080は、判定には、インター予測が実行可能かどうかを調べ、実行可能な場合にインター予測し、実行不可能な場合にはインター予測しないとしてもよい。具体的には後述する。
RAHT部2080は、判定には、処理対象ノードのAC係数をインター予測するか否かを示すフラグを復号し、かかるフラグの値を用いてもよい。かかるフラグは、ノードごとに復号されてもよいし、階層ごとに復号されてもよい。かかるフラグは、インター予測が実行可能と判定された場合にのみ復号され、判定が行われるとしてもよい。かかるフラグは、スライスデータに含まれていてもよい。
ステップS28111において、RAHT部2080は、処理対象ノードのAC係数のインター予測を行う。具体的には後述する。
ステップS28112において、RAHT部2080は、処理対象ノードのAC係数のイントラ予測を行う。具体的には後述する。
ステップS28113において、ステップS28104の処理を終了する。なお、ステップS28109の条件分岐は、省略されてもよい。
ステップS28111のインター予測の処理において、ステップS28112のイントラ予測と同等の処理も一緒に行い、インター予測及びイントラ予測の結果を組み合わせて予測してもよい。具体的には後述する。
図10は、ステップS28112のイントラ予測の処理の一例を示すフローチャートである。
図10に示すように、ステップS28201において、RAHT部2080は、サブノード階層の隣接ノードを使ってイントラ予測を行うか否かを判定する。RAHT部2080は、判定には、raht_subnode_prediction_enable_flagを参照し、その値を用いてもよい。
RAHT部2080は、サブノード階層の隣接ノードを使わない場合、上位の階層の隣接ノードのみを使ってイントラ予測を行う。
ここで、上位の階層の隣接ノードとは、復号対象ノードの親ノードが隣接するノードのうち面を隣接する6個のノードと、エッジを隣接する12個のノード及び親ノード自身の合計19個のノードのうち復号対象ノードが面を隣接している3個のノードと、エッジを隣接している3個のノードと、親ノード自身の7個のノードとである。
図11は、復号対象ノードと上位の階層の隣接ノードとの関係を示す図である。
RAHT部2080は、サブノード階層の隣接ノードを使う場合、上位の階層の隣接ノードとサブノード階層の隣接ノードとを使ってイントラ予測を行う。
ここで、サブノード階層の隣接ノードとは、上位の階層の隣接ノードのサブノードのうち復号対象ノードが面若しくはエッジを隣接しており且つ復号済みのノードである。
図12は、復号対象ノードとサブノード階層の隣接ノードとの関係を示す図である。
判定の結果、サブノード階層の隣接ノードを使わずにイントラ予測を行う場合、本動作は、ステップS28202へ進み、サブノード階層の隣接ノードを使ってイントラ予測を行う場合、本動作は、ステップS28204へ進む。
ステップS28202において、RAHT部2080は、上位の階層の隣接ノードの属性値を取得する。
属性値の取得処理は、例えば、隣接ノードの探索処理、及び、かかる探索処理で特定した隣接ノードから属性値を取得する処理の二段階で実現することができる。以下、図19~21を用いて、隣接ノードの探索処理の一例について説明する。
図19は、復号対象ノードの上位階層の隣接ノード探索処理の一例を示すフローチャートである。
なお、図19において、図11と同様に、復号対象ノードの上位階層ノードのことを、特別に親ノードと呼称する。
また、以下、図19~図21において、上位階層の各ノードの位置に対応するMorton codeが、一次元の配列上(以下、上位階層ノード配列と呼ぶ)にMorton codeの昇順で格納されていることを前提とする。
さらに、上述の一次元の配列上において、当該親ノードのMorton codeが格納されているインデックス(以下、親ノードインデックスと呼ぶ)は、事前に判明しているものとする。
図19に示すように、ステップS1901において、RAHT部2080は、上位階層の全隣接ノードの探索が終了したか否かを確認する。
全隣接ノードの探索が終了した場合、本動作は、ステップS1905へ進み、処理を終了する。一方、全隣接ノードの探索が終了していない場合は、本動作は、ステップS1902へ進む。
ステップS1902では、RAHT部2080は、探索対象の隣接ノードの位置に対応するMorton codeを算出する。
具体的には、RAHT部2080は、例えば、第1に、親ノードの位置に対応するMorton codeを直交座標(x、y、z)の値に変換し、第2に、直交座標空間上での隣接ノードの座標(x‘、y’、z‘)を計算し、第3に、隣接ノードの直交座標をMorton codeに再度変換することで、探索対象の隣接ノードの位置に対応するMorton codeを算出してもよい。
かかるMorton codeの算出が完了した後、本動作は、ステップS1903へ進む。
ステップS1903において、RAHT部2080は、探索範囲を設定する。ここで、探索範囲とは、上位階層ノード配列において、親ノードインデックスを基準としてどれだけ離れたインデックスまでを探索するかの範囲である。
隣接ノードのMorton codeが、親ノードのMorton codeより小さい場合、探索範囲の始点及び終点は、以下のように設定できる。
探索範囲=min(親ノードのMorton code-隣接ノードのMorton code,最大探索範囲)
探索範囲の始点=max(親ノードインデックス-探索範囲,0)
探索範囲の終点=親ノードインデックス-1
ここで、min(a,b)は、2つの引数a及びbのうち、小さい方の値を返す関数である。また、max(a,b)は、2つの引数a及びbのうち、大きい方の値を返す関数である。また、最大探索範囲は、事前に決定した探索範囲の最大値である。
探索範囲の始点=max(親ノードインデックス-探索範囲,0)
探索範囲の終点=親ノードインデックス-1
ここで、min(a,b)は、2つの引数a及びbのうち、小さい方の値を返す関数である。また、max(a,b)は、2つの引数a及びbのうち、大きい方の値を返す関数である。また、最大探索範囲は、事前に決定した探索範囲の最大値である。
最大探索範囲の値は、SPSやAPSやASH等のヘッダから復号されてもよい。例えば、RAHT部2080は、raht_prediction_search_rangeの値を、かかる最大探索範囲の値として使用してもよい。
一方、隣接ノードのMorton codeが、親ノードのMorton codeより大きい場合、探索範囲の始点及び終点は、以下のように設定できる。
探索範囲=min(隣接ノードのMorton code-親ノードのMorton code,最大探索範囲)
探索範囲の始点=親ノードインデックス+1
探索範囲の終点=min(親ノードのMorton code+探索範囲,上位階層のノード数-1)
上述のように、探索の始点及び終点を決定した後、本動作は、ステップS1906へ進む。
探索範囲の始点=親ノードインデックス+1
探索範囲の終点=min(親ノードのMorton code+探索範囲,上位階層のノード数-1)
上述のように、探索の始点及び終点を決定した後、本動作は、ステップS1906へ進む。
ステップS1906において、RAHT部2080は、ステップS1903で設定した探索の始点から終点の間に、探索対象の隣接ノードが格納されていないか或いは格納されている可能性があるかどうかを判定する。
RAHT部2080は、格納されていないと判定した場合、探索対象の隣接ノードは存在しないと判定し、ステップS1901へ進み、次の隣接ノードの探索を行う。
一方、RAHT部2080は、格納されている可能性があると判定した場合、次のステップS1904へ進み、探索を行う。
ここで、かかる判定は、例えば、以下のように実行できる。
隣接ノードのMorton codeが、親ノードのMorton codeより小さい場合、RAHT部2080は、探索範囲の始点に対応するインデックスに格納されているノードのMorton codeを確認する。
探索範囲の始点に対応するインデックスに格納されているノードのMorton codeが、隣接ノードのMorton codeより大きい場合、RAHT部2080は、探索の始点から終点の間に探索対象の隣接ノードが格納されていないと判定する。
そうでない場合(探索範囲の始点に対応するインデックスに格納されているノードのMorton codeが、隣接ノードのMorton code以下の場合)、RAHT部2080は、探索の始点から終点の間に探索対象の隣接ノードが格納されている可能性があると判定する。
ここで、探索範囲の始点に対応するインデックスが0の場合、RAHT部2080は、探索の始点から終点の間に探索対象の隣接ノードが格納されている可能性があると判定してもよい。
また、「親ノードインデックス-始点に対応するインデックス」が最大探索範囲以下の場合、RAHT部2080は、探索の始点から終点の間に探索対象の隣接ノードが格納されている可能性があると判定してもよい。
一方、隣接ノードのMorton codeが、親ノードのMorton codeより大きい場合、RAHT部2080は、探索範囲の終点に対応するインデックスに格納されているノードのMorton codeを確認する。
探索範囲の終点に対応するインデックスに格納されているノードのMorton codeが、隣接ノードのMorton codeより小さい場合、RAHT部2080は、探索の始点から終点の間に探索対象の隣接ノードが格納されていないと判定する。
そうでない場合(探索範囲の終点に対応するインデックスに格納されているノードのMorton codeが、隣接ノードのMorton code以上の場合)、RAHT部2080は、探索の始点から終点の間に探索対象の隣接ノードが格納されている可能性があると判定する。
ここで、RAHT部2080は、探索範囲の終点に対応するインデックスが「上位階層のノード数-1」の場合、探索の始点から終点の間に探索対象の隣接ノードが格納されている可能性があると判定してもよい。
また、「終点に対応するインデックス-親ノードインデックス」が最大探索範囲以下の場合、RAHT部2080は、探索の始点から終点の間に探索対象の隣接ノードが格納されている可能性があると判定してもよい。
上述の処理は、言い換えると、探索範囲の始点又は終点に格納されているノードのMorton codeに基づいて、探索範囲内に探索対象の隣接ノードが存在しないか又は存在する可能性があるかどうかを判定する処理と言える。
このように、探索処理に先立って、探索範囲内に探索対象のノードが存在する可能性があるか又は存在しないかを判定し、存在しない場合は、探索処理を省略することで、不要な処理を削減することができる。ソフトウェアで実装した場合は実行時間を削減することができ、ハードウェアで実行した場合は消費電力を削減することができる。
ステップS1904において、RAHT部2080は、上述の探索の始点及び終点で指定される上位階層ノード配列の範囲の中から、隣接ノードと同一のMorton codeが格納されている要素を探索する。
ここで、RAHT部2080は、隣接ノードと同一のMorton codeが格納されている要素が発見された場合、その要素のインデックスを返す。
一方、RAHT部2080は、隣接ノードと同一のMorton codeが格納されている要素が発見なかった場合、隣接ノードが発見できなかったことを示す値(例えば-1)を返す。この時、上位階層ノード配列において、Morton codeが昇順に格納されているため、RAHT部2080は、二分探索等を用いることで全探索より少ない探索回数で探索を実行できる。
上述の処理が完了した後、本動作は、ステップS1901へ進み、次の隣接ノードの探索を行う。
図20は、復号対象ノードの上位階層の隣接ノード探索処理の一例を示すフローチャートである。以下、図20を用いて、上位階層の隣接ノード探索処理の一例を説明する。
図20に示すように、ステップ2001において、RAHT部2080は、全隣接ノードのMorton codeを算出する。
ここで、Morton codeの算出方法は、ステップS1902で説明した方法と同様である。ステップS1902との違いは、全隣接ノード(例えば、19ノード)のMorton codeを算出することである。かかる算出処理が終了した後、本動作は、ステップS2002へ進む。
ステップS2002において、RAHT部2080は、ステップS2001で算出したMorton codeに基づいて、例えば、隣接ノードを昇順にソートする。以下、Morton codeの値が小さい順に隣接ノードの探索処理を行う。
ステップS2003において、RAHT部2080は、隣接ノードのうち、親ノードよりMorton codeが小さい隣接ノードの探索が全て完了したか否かを判定する。
かかる探索が終了した場合は、本動作は、ステップS2006へ進む。一方、かかる探索が終了していない場合は、本動作は、ステップS2004へ進む。
ステップS2004において、RAHT部2080は、探索範囲を設定する。例えば、RAHT部2080は、以下の方法で、かかる探索範囲を設定する。
探索範囲=min(min(親ノードインデックス-直前に発見した他の隣接ノードのインデックス,親ノードのMorton code-隣接ノードのMorton code),最大探索範囲)
探索範囲の始点=max(親ノードインデックス-探索範囲,0)
探索範囲の終点=親ノードインデックス-1
ここで、ステップS1903との違いは、直前に発見した他の隣接ノードのインデックスを用いて探索範囲を設定する点である。Morton codeの昇順に隣接ノードを探索しているため、現在探索している隣接ノードのMorton codeは、直前に発見した他の隣接ノードのMorton codeより大きな値であることが保証される。同様に、上記階層ノード配列における現在探索している隣接ノードのMorton codeが格納されている要素のインデックスは、発見した他の隣接ノードのMorton codeが格納されている要素のインデックスより大きいことが保証される。よって、直前に発見した他の隣接ノードのインデックスを用いることで、探索範囲を削減して探索処理回数および探索に係る時間を削減できる。
探索範囲の始点=max(親ノードインデックス-探索範囲,0)
探索範囲の終点=親ノードインデックス-1
ここで、ステップS1903との違いは、直前に発見した他の隣接ノードのインデックスを用いて探索範囲を設定する点である。Morton codeの昇順に隣接ノードを探索しているため、現在探索している隣接ノードのMorton codeは、直前に発見した他の隣接ノードのMorton codeより大きな値であることが保証される。同様に、上記階層ノード配列における現在探索している隣接ノードのMorton codeが格納されている要素のインデックスは、発見した他の隣接ノードのMorton codeが格納されている要素のインデックスより大きいことが保証される。よって、直前に発見した他の隣接ノードのインデックスを用いることで、探索範囲を削減して探索処理回数および探索に係る時間を削減できる。
なお、RAHT部2080は、直前に発見した他の隣接ノードのインデックスの値については0で初期化し、以降、隣接ノードを発見するごとに更新してもよい。上述の処理が終了後、本動作は、ステップS2005へ進む。
ステップS2005において、RAHT部2080は、ステップS1904と同様の探索処理を行う。
ステップS2006において、RAHT部2080は、探索順序を変更する。具体的には、RAHT部2080は、これまでの処理では、隣接ノードのMorton codeの昇順に探索を実行していたが、これをMorton codeの降順に変更する。かかる探索順序を変更した後、本動作は、ステップS2007へ進む。
ステップS2007において、RAHT部2080は、隣接ノードのうち、親ノードよりMorton codeが大きいノードの探索が、全て終了したか否かを判定する。
かかる探索が全て終了した場合は、本動作は、ステップS2009へ進み、処理を終了する。かかる探索が全て終了していない場合は、本動作は、ステップS2008へ進む。
ステップS2008において、RAHT部2080は、以下のように、探索範囲を設定する。ここで、RAHT部2080は、ステップS2004と同様に、直前に発見した他の隣接ノードのインデックスを使用する。
探索範囲=min(min(直前に発見した他の隣接ノードのインデックス-親ノードインデックス,隣接ノードのMorton code-親ノードのMorton code),最大探索範囲)
探索範囲の始点=親ノードインデックス+1
探索範囲の終点=min(親ノードのMorton code+探索範囲,上位階層のノード数)
ここでは、隣接ノードのMorton codeの降順に探索しているため、直前に発見した他の隣接ノードのMorton codeより、現在探索しているMorton codeの方が小さいことが保証される。
探索範囲の始点=親ノードインデックス+1
探索範囲の終点=min(親ノードのMorton code+探索範囲,上位階層のノード数)
ここでは、隣接ノードのMorton codeの降順に探索しているため、直前に発見した他の隣接ノードのMorton codeより、現在探索しているMorton codeの方が小さいことが保証される。
なお、直前に発見した他の隣接ノードのインデックスは、ステップS2006のタイミングで上位階層のノード数(=上位階層ノード配列の要素数)で初期化され、以降は、隣接ノードが発見される度に、かかるインデックス値で更新されてもよい。
以上のように、かかる探索範囲が設定された後、本動作は、ステップS2009へ進む。
ステップS2009において、RAHT部2080は、ステップS2005と同様の探索処理を行う。
図21は、復号対象ノードの上位階層の隣接ノード探索処理の一例を示すフローチャートである。以下、図21を用いて上位階層の隣接ノード探索処理の一例を説明する。なお、図20と同一の処理については、図20と同一の符号を付して説明を省略する。
図21に示すように、ステップS2101において、RAHT部2080は、後述するステップS2102において記録した探索結果を復元する。
具体的には、RAHT部2080は、配列等に記憶された情報を参照して、隣接ノードのインデックス値を特定する。
ステップS2102において、RAHT部2080は、親ノードより大きなMorton codeを持つ隣接ノードが発見された場合に、当該隣接ノードが親ノードとなった場合の隣接ノードとして、当該親ノードのインデックスを記録する。
当該親ノードに対する隣接ノードは、隣接ノードから見た場合(隣接ノードが親ノードとなった場合も)、当該親ノードが隣接ノードとなる。すなわち、対称関係がある。
本実施形態では、RAHT部2080は、親ノードについては、Morton codeの昇順に処理を行っている。
よって、RAHT部2080は、当該親ノードの隣接ノードのうち、当該親ノードよりMorton codeが大きな隣接ノードに対して(隣接ノードが親ノードになった場合に備えて)、当該親ノードのインデックスを隣接ノードとして記憶しておくことで、探索処理を削減できる。
すなわち、ステップS2101で説明したように、当該親ノードよりMorton codeが小さな隣接ノードについては、隣接ノードが親ノードだった際に探索済みであるため、RAHT部2080は、その結果を記憶しておくことで、探索処理を再度実行することを省略できる。
これにより、かかる記憶を行わない場合と比較して探索処理を約半分に削減することができる。
以上のように、上位の階層の隣接ノードの属性値を取得した後、本動作は、ステップS28203へ進む。
ステップS28203において、RAHT部2080は、復号対象ノードの属性値を予測する。
RAHT部2080は、取得したk個の上位の階層の隣接ノードの属性値attriと、隣接ノードiの種類に応じた重みwiとを利用して、以下の式で、属性値attrの予測を行ってもよい。
かかる属性値の予測が完了後、本動作は、ステップS28207へ進む。
ステップS28204において、RAHT部2080は、上位階層の隣接ノードの属性値を取得する。
ここで、属性値を取得する対象は、上位の階層の隣接ノードのうち、各隣接ノードのサブノードが復号済みでないノード、或いは、上位の階層の隣接ノードのうち、サブノードが復号済みであっても、復号対象ノードと面又はエッジを隣接しているサブノードが存在しないノードである。
かかる属性値の取得が完了後、本動作は、ステップS28205へ進む。
ステップS28205において、RAHT部2080は、サブノード階層の隣接ノードの属性値を取得する。サブノード階層の隣接ノードの属性値を取得後、本動作は、ステップS28206へ進む。
ステップS28206において、RAHT部2080は、復号対象ノードの属性値を予測する。
RAHT部2080は、取得したk個の上位の階層の隣接ノード及びサブノード階層の隣接ノードの属性値attriと、隣接ノードの種類iに応じた重みwiとを利用して、以下の式で、属性値attrの予測を行ってもよい。
かかる属性値の予測の完了後、本動作は、ステップS28207へ進む。
ステップS28207において、RAHT部2080は、予測した属性値をAC係数に変換する。AC係数は、予測した属性値をRAHTすることで生成される。例えば、RAHT部2080は、かかる変換方法として、非特許文献1に記載の方法を用いてもよい。
なお、ステップS28207では、RAHT部2080は、予測した属性値をAC係数に変換する代わりに、復号したAC係数の残差を属性値の残差に変換し、属性値ドメインで予測値と残差を加算してもよい。
図23は、ステップS28112のイントラ予測の処理の一例を示すフローチャートである。以下、図23を用いてイントラ予測処理の一例を説明する。なお、図10と同一の処理に関しては、図10と同一の符号を付して説明を省略する。
また、図23は、当該復号点群データの属性情報が複数のコンポーネントを持っており、図23の処理は、そのうちの1つのコンポーネントについての処理として説明する。
復号対象ノードごとに、各コンポーネントに対して、図23の処理を適用することで、復号対象ノードに含まれる全てのコンポーネントの信号を復号できる。
ステップS2201において、RAHT部2080は、当該コンポーネントがコンポーネント間予測の対象であるか否かを判定する。
ここで、RAHT部2080は、SPSやAPSやASH等のヘッダに含まれるシンタックスエレメントの値に基づいて、当該コンポーネントがコンポーネント間予測の対象となっているか否かについて判別してもよい。
例えば、RAHT部2080は、raht_inter_comp_pred_enabledの値が「1」の場合、輝度信号から色差信号を予測してもよい。かかる場合、コンポーネント間予測の対象となるのは、色差信号(Cb信号およびCr信号)である。
また、RAHT部2080は、色差信号間で、コンポーネント間予測を行ってもよい。例えば、RAHT部2080は、raht_last_comp_pred_enabledの値が「1」の場合、Cb信号からCr信号を予測してもよい。かかる場合、コンポーネント間予測の対象となるのは、Cr信号である。
なお、ここでは、Y信号、Cb信号、Cr信号の順に復号することを想定して説明する。コンポーネント間予測を行う場合、予測対象となる信号より先に復号が完了している信号のみを使用することができる。
当該コンポーネントがコンポーネント間予測の対象である場合は、本動作は、ステップS2302ヘ進み、そうでない場合は、本動作は、ステップS28201へ進む。
ステップS2302において、RAHT部2080は、コンポーネント間予測を行う。
以下では、輝度信号からCb信号を予測する場合を例に説明するが、同様に輝度信号からCr信号、Cb信号からCr信号の予測も可能である。ここでは、ステップS28207で算出した輝度信号のAC係数をYとする。
Cb信号のAC係数の予測値Crpは、例えば、以下の式のように算出できる。
Crp=a×Y+b
ここで、a及びbは、予測係数である。RAHT部2080は、SPSやAPSやASH等のヘッダから、予測係数について復号してもよい。
ここで、a及びbは、予測係数である。RAHT部2080は、SPSやAPSやASH等のヘッダから、予測係数について復号してもよい。
例えば、RAHT部2080は、raht_last_comp_pred_coeff_diff[dpth]やraht_inter_comp_pred_coeff_diff[dpth]の値から、かかるAC係数を復号してもよい。
或いは、RAHT部2080は、既に復号済みの他のAC係数値から、かかる予測係数を算出してもよい。
具体的には、RAHT部2080は、例えば、既に復号済みの他のAC係数の輝度信号のAC係数値から、上述の式で、Cb信号のAC係数を予測した場合の二乗誤差和が最小となるようなAC係数を算出して使用してもよい。
上述の処理は、最小二乗法を用いることで解析的に算出可能である。この時、RAHT部2080は、復号済みの全てのAC係数を、かかるAC係数の算出に使用してもよい。
また、RAHT部2080は、当該AC係数を基準として直近に復号したN個のAC係数のみを、かかるAC係数の算出に使用してもよい。RAHT部2080は、復号に先立ってNの数を定めてもよいし、SPSやAPSやASH等のヘッダからNの値を復号してもよい。
例えば、RAHT部2080は、raht_coeff_calc_rangeの値をNとして使用してもよい。
また、RAHT部2080は、単純な最小二乗法ではなく、重み付き最小二乗法を用いて、AC係数を算出してもよい。
具体的には、RAHT部2080は、当該AC係数のY信号の値Yと既に復号済みのAC係数のY信号との差分の絶対値、或いは、かかる差分の二乗値に基づいて、重み付けを行ってもよい。この時、差分が小さくなればなるほど、重みが重くなるように定義してもよい。
以上では、RAHT部2080がAC係数ドメインで上述の予測する場合を例に説明したが、RAHT部2080は、属性信号ドメインで、上述の予測を行ってもよい。
すなわち、RAHT部2080は、Y信号の属性信号値から、Cb信号の属性信号値を予測してもよい。
以上では、RAHT部2080が、ステップS28206で予測した属性値を、そのままステップS28207でAC係数の変換に使う例について説明したが、RAHT部2080は、予測した属性値の平滑化を行った上で、AC係数の変換を行ってもよい。
例えば、図13に示すように、RAHT部2080は、属性値を予測した後、ステップS1301において、平滑化を行うか否かを判定してもよい。
RAHT部2080は、かかる判定において、raht_smoothing_enable_flagを参照し、その値を用いてもよい。
平滑化を行う場合、本動作は、ステップS1302へ進む。平滑化を行わない場合、本動作は、ステップS28207へ進む。
ステップS1302において、RAHT部2080は、属性値の平滑化を行ってもよい。
例えば、RAHT部2080は、復号対象ノードの平滑化後の属性値Attrsmoothingについて、復号対象ノードと同一の親ノード内のサブノードiにて予測した属性値Attri及び重みαiを用いて、以下のように加重平均を計算することで求めてもよい。
また、RAHT部2080は、重みαiとして、ハードコーディングされた値を用いてもよいし、raht_smoothing_weighted_average_weightsを参照し、その値を用いてもよい。
また、RAHT部2080は、例えば、復号対象ノードの平滑化後の属性値Attrsmoothingについて、復号対象ノード自身の予測値Attr0、復号対象ノードと同一の親ノード内のサブノードのうち、復号対象ノード以外のサブノードiにて予測した属性値Attri、重みβi及び閾値Thrを用いて、以下のように、クリッピングを行うことで求めてもよい。
クリッピングを行う関数Clip3は、
ここで、RAHT部2080は、対象とするサブノードiについて、復号対象ノードが面隣接するノードとしてもよいし、面隣接するノード及びエッジ隣接するノードとしてもよいし、同一親ノード内の全てのサブノードとしてもよい。
また、RAHT部2080は、重みβiとして、ハードコーディングされた値を用いてもよいし、raht_smoothing_clipping_weightsを参照し、その値を用いてもよい。
また、RAHT部2080は、閾値Thrとして、ハードコーディングされた値を用いてもよい し、raht_smoothing_clipping_thresholdを参照し、その値を用いてもよい 。
以上では、RAHT部2080が色差信号及び輝度信号共にAC係数の復号を行う例について説明したが、RAHT部2080は、Octreeの最下層のみ、色差信号のAC係数の復号をスキップしてもよい。
例えば、図14に示すように、RAHT部2080は、ステップS1401において、Octreeの最下層のみ色差信号のAC係数の復号をスキップするか否かを判定してもよい。
スキップする場合、本動作は、ステップS1402へ進む。スキップしない場合、本動作は、ステップS28004へ進む。
ステップS1402において、RAHT部2080は、復号対象ノードがOctreeの最下層か否かを判定する。
最下層の場合、本動作は、ステップS1403へ進む。最下層ではない場合、本動作は、ステップS28004へ進む。
ステップS1403において、RAHT部2080は、色差信号以外のAC係数の復号を行う。
RAHT部2080は、色差信号以外のAC係数の復号については、ステップS28004と同様の処理を行い、色差信号のAC係数を0として、後続のステップS28005の属性値の算出を行う。
色差信号以外のAC係数の復号が完了した後、本動作は、ステップS28006へ進む。
図15は、ステップS28111のインター予測処理の一例を示す図である。
RAHT部2080は、処理対象ノードのAC係数について、参照フレーム内の対応するノードである参照ノードの情報を用いて予測する。ここで、参照ノードの情報は、その属性値やAC係数であってもよい。また、参照フレームは、別の復号済みのフレームを指し、その情報は、前レームバッファ2120に含まれるとしてもよい。
RAHT部2080は、参照フレームには、処理対象フレームと同じOctree構造を当てはめてもよい。かかる場合、点がない位置にノードが設定される可能性がある。そのようなノードを空ノードと呼ぶ。参照ノードが空ノードだった場合、RAHT部2080は、ステップS28110で、インター予測を実行不可としてもよい。
RAHT部2080は、参照フレームに対して、処理対象フレームと独立にOctreeを適用し、処理対象フレームと異なるOctree構造を設定してもよい。かかる場合、必ずしも処理対象フレームと同じ位置にノードが存在しない可能性がある。処理対象ノードに対応する位置に参照ノードが見つからない場合、RAHT部2080は、ステップS28143で、インター予測を実行不可としてもよい。
参照ノードが空ノードだった場合、或いは、参照ノードが見つからなかった場合、RAHT部2080は、参照フレーム内の近傍位置のノードの情報を用いて参照ノードの情報を推定して補間してもよい。
例えば、RAHT部2080は、参照ノード位置に対する隣接ノード、最近傍ノード或いはk近傍ノードの属性値又はAC係数の平均値を、それぞれ参照ノードの属性値又はAC係数として推定して補間してもよい。
RAHT部2080は、処理対象ノードのAC係数について、例えば、参照ノードの属性値から予測してもよい。
具体的には、RAHT部2080は、参照ノードの復号済みの属性値の値Attrinterを用いて処理対象ノードの属性値の予測値Attrpredを求め、かかる処理対象ノードの属性値の予測値Attrpredに対してRAHTを適用することで処理対象ノードのAC係数の予測値ACpredを求めるとしてもよい。
Attrpred=Attrinter
ACpred=RAHT(Attrpred)
RAHT部2080は、処理対象ノードのAC係数について、例えば、参照ノードのAC係数から直接予測してもよい。
ACpred=RAHT(Attrpred)
RAHT部2080は、処理対象ノードのAC係数について、例えば、参照ノードのAC係数から直接予測してもよい。
具体的には、RAHT部2080は、参照フレームにおいてRAHTを用いて参照ノードのAC係数の値ACinterを算出し、その値を処理対象ノードのAC係数の予測値ACpredとしてもよい。
ACpred=ACinter
RAHT部2080は、参照ノードのAC係数について、参照フレームの各ノードのAC係数をフレームバッファ2120内に記録しておき、フレームバッファ2120内の値を参照することで得てもよい。かかる場合、RAHT部2080は、フレームバッファ2120内で参照ノードのAC係数が存在しない場合に、ステップS28110で、インター予測が実行不可としてもよい。
RAHT部2080は、参照ノードのAC係数について、参照フレームの各ノードのAC係数をフレームバッファ2120内に記録しておき、フレームバッファ2120内の値を参照することで得てもよい。かかる場合、RAHT部2080は、フレームバッファ2120内で参照ノードのAC係数が存在しない場合に、ステップS28110で、インター予測が実行不可としてもよい。
なお、RAHT部2080は、Attrinter及びACinterについて、それぞれスケーリングファクタαによってα倍してもよい。
Attrpred=αAttrinter
或いは
ACpred=αACinter
係数αは、任意の実数をとってよい。係数αは、ノードごとに復号されてもよいし、階層ごとに復号されてもよい。係数αは、スライスデータに含まれていてもよい。
或いは
ACpred=αACinter
係数αは、任意の実数をとってよい。係数αは、ノードごとに復号されてもよいし、階層ごとに復号されてもよい。係数αは、スライスデータに含まれていてもよい。
例えば、係数αを、以下のように階層の深さdepthを用いて定義し、係数αの代わりにα’が復号されてもよい。
α=1+α’・2-depth
例えば、整数βを、整数aから整数bまでの範囲を取る整数を定義し、βを復号してもよい。係数αは、以下のように、復号したβに整数cを加算した後、整数cで除算した値として算出してもよい。
例えば、整数βを、整数aから整数bまでの範囲を取る整数を定義し、βを復号してもよい。係数αは、以下のように、復号したβに整数cを加算した後、整数cで除算した値として算出してもよい。
α=(β+c)/c
整数βは、指数ゴロム符号を用いて復号してもよい。
整数βは、指数ゴロム符号を用いて復号してもよい。
或いは、係数αは、復号器で導出されてもよい。
例えば、復号対象ノードの親ノードのAC係数ACparentと、親ノードを復号した際のインター予測値ACparent_interを用いて、以下のように算出してもよい。
α=ACparent/ACparent_inter
例えば、RAHT部2080は、復号対象ノードのN個の隣接ノードのAC係数ACneighbor1、ACneighbor2、…、ACneighborNと、各隣接ノードを復号した際のインター予測値ACneighbor_inter1、ACneighbor_inter2、…、ACneighbor_interNとを用いて、コストが最小になるようにαを算出してもよい。
例えば、RAHT部2080は、復号対象ノードのN個の隣接ノードのAC係数ACneighbor1、ACneighbor2、…、ACneighborNと、各隣接ノードを復号した際のインター予測値ACneighbor_inter1、ACneighbor_inter2、…、ACneighbor_interNとを用いて、コストが最小になるようにαを算出してもよい。
コストとは、例えば、各隣接ノードのAC係数とAC係数の予測器の二乗誤差との総和としてもよい。隣接ノードは、例えば、面を隣接するノードのみを対象としてもよいし、面を隣接するノードとエッジを隣接するノードを対象としてもよい。
RAHT部2080は、同様の操作を、ステップS28003におけるDC係数のインター予測で行ってもよい。
DCpred=αDCinter
ここで、参照ノードのDC係数をDCinterとし、ルートノードのDC係数の予測値をDCpredとする。
ここで、参照ノードのDC係数をDCinterとし、ルートノードのDC係数の予測値をDCpredとする。
また、RAHT部2080は、インター予測及びイントラ予測を組み合わせて属性値或いはAC係数の予測値を算出してもよい。
例えば、RAHT部2080が属性値の予測を求める場合の例について、以下に示す。
Attrpred=Winter・Attrinter+Wintra・Attrintra
ここで、Attrinter及びAttrintraは、それぞれ属性値のインター予測及びイントラ予測とする。また、Winter及びWintraは、それぞれインター予測及びイントラ予測の重みとする。Winter及びWintraは、処理対象階層の深さdepthによって深い層ほどイントラ予測が重視されるように定めてもよい。例えば、
Winter=1-depth/N
Wintra=depth/N
Nは、インター予測が有効な階層の深さの最大値とする。インター予測及びイントラ予測の組み合わせは、特定の階層でのみ有効としてもよい。例えば、M<depth<Nでのみ、インター予測及びイントラ予測の組み合わせは、有効としてもよい。Mは、N未満の任意の実数とし、APS等のヘッダ情報として復号されてもよい。
ここで、Attrinter及びAttrintraは、それぞれ属性値のインター予測及びイントラ予測とする。また、Winter及びWintraは、それぞれインター予測及びイントラ予測の重みとする。Winter及びWintraは、処理対象階層の深さdepthによって深い層ほどイントラ予測が重視されるように定めてもよい。例えば、
Winter=1-depth/N
Wintra=depth/N
Nは、インター予測が有効な階層の深さの最大値とする。インター予測及びイントラ予測の組み合わせは、特定の階層でのみ有効としてもよい。例えば、M<depth<Nでのみ、インター予測及びイントラ予測の組み合わせは、有効としてもよい。Mは、N未満の任意の実数とし、APS等のヘッダ情報として復号されてもよい。
(点群符号化装置100)
以下、図18を参照して、本実施形態に係る点群符号化装置100について説明する。図18は、本実施形態に係る点群符号化装置100の機能ブロックの一例について示す図である。
以下、図18を参照して、本実施形態に係る点群符号化装置100について説明する。図18は、本実施形態に係る点群符号化装置100の機能ブロックの一例について示す図である。
図18に示すように、点群符号化装置100は、座標変換部1010と、幾何情報量子化部1020と、ツリー解析部1030と、近似表面解析部1040と、幾何情報符号化部1050と、幾何情報再構成部1060と、色変換部1070と、属性転移部1080と、RAHT部1090と、LoD算出部1100と、リフティング部1110と、属性情報量子化部1120と、属性情報符号化部1130と、フレームバッファ1140とを有する。
座標変換部1010は、入力点群の3次元座標系から、任意の異なる座標系への変換処理を行うよう構成されている。座標変換は、例えば、入力点群を回転することにより、入力点群のx、y、z座標を任意のs、t、u座標に変換してもよい。また、変換のバリエーションの1つとして、入力点群の座標系をそのまま使用してもよい。
幾何情報量子化部1020は、座標変換後の入力点群の位置情報の量子化及び座標が重複する点の除去を行うように構成されている。なお、量子化ステップサイズが1の場合は、入力点群の位置情報と量子化後の位置情報とが一致する。すなわち、量子化ステップサイズが1の場合は、量子化を行わない場合と等価になる。
ツリー解析部1030は、量子化後の点群の位置情報を入力として、後述のツリー構造に基づいて、符号化対象空間のどのノードに点が存在するかについて示すoccupancy codeを生成するように構成されている。
ツリー解析部1030は、本処理において、符号化対象空間を再帰的に直方体で区切ることにより、ツリー構造を生成するように構成されている。
ここで、ある直方体内に点が存在する場合、かかる直方体を複数の直方体に分割する処理を、直方体が所定のサイズになるまで再帰的に実行することでツリー構造を生成することができる。なお、かかる各直方体をノードと呼ぶ。また、ノードを分割して生成される各直方体を子ノードと呼び、子ノード内に点が含まれるか否かについて0又は1で表現したものがoccupancy codeである。
以上のように、ツリー解析部1030は、所定のサイズになるまでノードを再帰的に分割しながら、occupancy codeを生成するように構成されている。
本実施形態では、上述の直方体を常に立方体として8分木分割を再帰的に行う「Octree」と呼ばれる手法、及び、8分木分割に加え、4分木分割及び2分木分割を行う「QtBt」と呼ばれる手法を使用することができる。
ここで、「QtBt」を使用するか否かについては、制御データとして点群復号装置200に伝送される。
或いは、任意のツリー構成を用いるPredictive geometry codingを使用するように指定されてもよい。かかる場合、ツリー解析部1030が、ツリー構造を決定し、決定されたツリー構造は、制御データとして点群復号装置200へ伝送される。
例えば、ツリー構造の制御データは、図5~図14で説明した手順で復号できるよう構成されていてもよい。
近似表面解析部1040は、ツリー解析部1030によって生成されたツリー情報を用いて、近似表面情報を生成するように構成されている。
近似表面情報は、例えば、物体の3次元点群データを復号する際等において、点群が物体表面に密に分布しているような場合に、個々の点群を復号するのではなく、点群の存在領域を小さな平面で近似して表現したものである。
具体的には、近似表面解析部1040は、例えば、「Trisoup」と呼ばれる手法で、近似表面情報を生成するように構成されていてもよい。また、Lidar等で取得した疎な点群を復号する場合は、本処理を省略することができる。
幾何情報符号化部1050は、ツリー解析部1030によって生成されたoccupancy code及び近似表面解析部1040によって生成された近似表面情報等のシンタックスを符号化してビットストリーム(幾何情報ビットストリーム)を生成するように構成されている。ここで、ビットストリームには、例えば、図4で説明したシンタックスを含まれていてもよい。
符号化処理は、例えば、コンテクスト適応二値算術符号化処理である。ここで、例えば、シンタックスは、位置情報の復号処理を制御するための制御データ(フラグやパラメータ)を含む。
幾何情報再構成部1060は、ツリー解析部1030によって生成されたツリー情報及び近似表面解析部1040によって生成された近似表面情報に基づいて、符号化対象の点群データの各点の幾何情報(符号化処理が仮定している座標系、すなわち、座標変換部1010における座標変換後の位置情報)を再構成するように構成されている。
フレームバッファ1140は、幾何情報再構成部1060によって再構成された幾何情報を入力とし、参照フレームとして保存するように構成されている。
保存された参照フレームは、ツリー解析部1030において時間的に異なるフレームのインター予測を行う場合に、フレームバッファ1140から読み出されて参照フレームとして使用される。
ここで、各フレームに対してどの時刻の参照フレームを用いるかどうかが、例えば、符号化効率を表すコスト関数の値に基づいて決定され、使用する参照フレームの情報が制御データとして点群復号装置200へ伝送されてもよい。
色変換部1070は、入力の属性情報が色情報であった場合に、色変換を行うように構成されている。色変換は、必ずしも実行する必要は無く、色変換処理の実行の有無については、制御データの一部として符号化され、点群復号装置200へ伝送される。
属性転移部1080は、入力点群の位置情報、幾何情報再構成部1060における再構成後の点群の位置情報及び色変換部1070での色変化後の属性情報に基づいて、属性情報の歪みが最小となるように属性値を補正するように構成されている。具体的な補正方法は、例えば、非特許文献1に記載の方法を適用できる。
RAHT部1090は、属性転移部1080による転移後の属性情報及び幾何情報再構成部1060によって生成された幾何情報を入力とし、RAHT(Region Adaptive Hierarchical Transform)と呼ばれるHaar変換の一種を用いて、各点の残差情報を生成するように構成されている。
復号される情報は、符号化処理においてRAHTを用いることで生成された属性情報の直流成分(DC係数)及び交流成分(AC係数)であり、復号処理において、RAHTの逆変換を用いることで属性情報に変換される。
RAHTの具体的な処理としては、例えば、上述の非特許文献1に記載の方法を用いることができる。
LoD算出部1100は、幾何情報再構成部1060によって生成された幾何情報を入力とし、LoD(Level of Detail)を生成するように構成されている。
LoDは、ある点の属性情報から、他のある点の属性情報を予測し、予測残差を符号化或いは復号するといった予測符号化を実現するための参照関係(参照する点及び参照される点)を定義するための情報である。
言い換えると、LoDは、幾何情報に含まれる各点を複数のレベルに分類し、下位のレベルに属する点については上位のレベルに属する点の属性情報を用いて属性を符号化或いは復号するといった階層構造を定義した情報である。
LoDの具体的な決定方法としては、例えば、上述の非特許文献1に記載の方法を用いてもよい。
リフティング部1110は、LoD算出部1100によって生成されたLoD及び属性転移部1080での属性転移後の属性情報を用いて、リフティング処理により残差情報を生成するように構成されている。
リフティングの具体的な処理としては、例えば、上述の非特許文献1に記載の方法を用いてもよい。
属性情報量子化部1120は、RAHT部1090又はリフティング部1110から出力される残差情報を量子化するように構成されている。ここで、量子化ステップサイズが1の場合は、量子化を行わない場合と等価である。
属性情報符号化部1130は、属性情報量子化部1120から出力される量子化後の残差情報等をシンタックスとして符号化処理を行い、属性情報に関するビットストリーム(属性情報ビットストリーム)を生成するように構成されている。
符号化処理は、例えば、コンテクスト適応二値算術符号化処理である。ここで、例えば、シンタックスは、属性情報の復号処理を制御するための制御データ(フラグ及びパラメータ)を含む。
点群符号化装置100は、以上の処理により、点群内の各点の位置情報及び属性情報を入力として符号化処理を行い、幾何情報ビットストリーム及び属性情報ビットストリームを出力するように構成されている。
また、上述の点群符号化装置100及び点群復号装置200は、コンピュータに各機能(各工程)を実行させるプログラムであって実現されていてもよい。
なお、上記の各実施形態では、本発明を点群符号化装置100及び点群復号装置200への適用を例にして説明したが、本発明は、かかる例のみに限定されるものではなく、点群符号化装置100及び点群復号装置200の各機能を備えた点群符号化/復号システムにも同様に適用できる。
なお、本実施形態によれば、例えば、動画像通信において総合的なサービス品質の向上を実現できることから、国連が主導する持続可能な開発目標(SDGs)の目標9「レジリエントなインフラを整備し、持続可能な産業化を推進するとともに、イノベーションの拡大を図る」に貢献することが可能となる。
10…点群処理システム
100…点群符号化装置
1010…座標変換部
1020…幾何情報量子化部
1030…ツリー解析部
1040…近似表面解析部
1050…幾何情報符号化部
1060…幾何情報再構成部
1070…色変換部
1080…属性転移部
1090…RAHT部
1100…LoD算出部
1110…リフティング部
1120…属性情報量子化部
1130…属性情報符号化部
200…点群復号装置
2010…幾何情報復号部
2020…ツリー合成部
2030…近似表面合成部
2040…幾何情報再構成部
2050…逆座標変換部
2060…属性情報復号部
2070…逆量子化部
2080…RAHT部
2090…LoD算出部
2100…逆リフティング部
2110…逆色変換部
100…点群符号化装置
1010…座標変換部
1020…幾何情報量子化部
1030…ツリー解析部
1040…近似表面解析部
1050…幾何情報符号化部
1060…幾何情報再構成部
1070…色変換部
1080…属性転移部
1090…RAHT部
1100…LoD算出部
1110…リフティング部
1120…属性情報量子化部
1130…属性情報符号化部
200…点群復号装置
2010…幾何情報復号部
2020…ツリー合成部
2030…近似表面合成部
2040…幾何情報再構成部
2050…逆座標変換部
2060…属性情報復号部
2070…逆量子化部
2080…RAHT部
2090…LoD算出部
2100…逆リフティング部
2110…逆色変換部
Claims (9)
- 点群復号装置であって、
復号対象ノードの輝度信号の情報を用いて、前記復号対象ノードの色差信号の情報を予測するRAHT部を備えることを特徴とする点群復号装置 - 前記RAHT部は、前記復号対象ノードの輝度信号の属性値を用いて、前記復号対象ノードの色差信号の属性値を予測することを特徴とする請求項1に記載の点群復号装置。
- 前記RAHT部は、予測した前記復号対象ノードの色差信号の属性値に対して、属性ドメインでの色差信号の逆量子化済みの残差を加算することで、前記色差信号の属性値を算出することを特徴とする請求項2に記載の点群復号装置。
- 前記RAHT部は、
RAHT係数値としてビットストリームから色差信号の残差を復号し、
前記残差を逆量子化してRAHT係数ドメインでの色差信号の逆量子化済みの残差を算出し、
前記RAHT係数ドメインでの色差信号の逆量子化済みの残差にRAHTを適用して前記属性ドメインでの色差信号の逆量子化済みの残差を算出することを特徴とする請求項3に記載の点群復号装置。 - 前記RAHT部は、前記復号対象ノードの輝度信号のRAHT係数値を用いて、前記復号対象ノードの色差信号のRAHT係数値を予測することを特徴とする請求項1に記載の点群復号装置。
- 前記RAHT部は、予測した前記復号対象ノードの色差信号のRAHT係数値に対して、RAHT係数ドメインでの色差信号の逆量子化済みの残差を加算することで、前記色差信号のRAHT係数値を算出することを特徴とする請求項5に記載の点群復号装置。
- 前記RAHT部は、前記色差信号のRAHT係数値にRAHTを適用して前記色差信号の属性値を算出することを特徴とする請求項6に記載の点群復号装置。
- 点群復号方法であって、
イントラ予測において上位階層の隣接ノードを探索し、過去の探索結果に基づいて前記上位階層の隣接ノードの探索範囲を設定する工程を有することを特徴とする点群復号方法。 - コンピュータを、点群復号装置として機能させるプログラムであって、
前記点群復号装置は、イントラ予測において上位階層の隣接ノードを探索し、過去の探索結果に基づいて前記上位階層の隣接ノードの探索範囲を設定するRAHT部を備えることを特徴とするプログラム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2024003516A JP2025109555A (ja) | 2024-01-12 | 2024-01-12 | 点群復号装置、点群復号方法及びプログラム |
| JP2024-003516 | 2024-02-21 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2025150310A1 true WO2025150310A1 (ja) | 2025-07-17 |
Family
ID=96386580
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/JP2024/042927 Pending WO2025150310A1 (ja) | 2024-01-12 | 2024-12-04 | 点群復号装置、点群復号方法及びプログラム |
Country Status (2)
| Country | Link |
|---|---|
| JP (1) | JP2025109555A (ja) |
| WO (1) | WO2025150310A1 (ja) |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2022217215A1 (en) * | 2021-04-05 | 2022-10-13 | Qualcomm Incorporated | Residual coding for geometry point cloud compression |
-
2024
- 2024-01-12 JP JP2024003516A patent/JP2025109555A/ja active Pending
- 2024-12-04 WO PCT/JP2024/042927 patent/WO2025150310A1/ja active Pending
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2022217215A1 (en) * | 2021-04-05 | 2022-10-13 | Qualcomm Incorporated | Residual coding for geometry point cloud compression |
Non-Patent Citations (1)
| Title |
|---|
| ANONYMOUS: "G-PCC codec description", 137. MPEG MEETING; 20220117 - 20220121; ONLINE; (MOTION PICTURE EXPERT GROUP OR ISO/IEC JTC1/SC29/WG11), 12 April 2022 (2022-04-12), pages 1 - 151, XP030302337 * |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2025109555A (ja) | 2025-07-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12231684B2 (en) | Information processing device and method | |
| WO2012101781A1 (ja) | 画像復号化装置 | |
| JP7611400B2 (ja) | 点群符号化および復号化方法、エンコーダ、デコーダ、ならびにコンピュータ記憶媒体 | |
| WO2024014045A1 (ja) | メッシュ復号装置、メッシュ符号化装置、メッシュ復号方法及びプログラム | |
| JP7544049B2 (ja) | 情報処理装置および方法 | |
| WO2025150310A1 (ja) | 点群復号装置、点群復号方法及びプログラム | |
| JP2024008744A (ja) | メッシュ復号装置、メッシュ符号化装置、メッシュ復号方法及びプログラム | |
| WO2025150309A1 (ja) | 点群復号装置、点群復号方法及びプログラム | |
| WO2024214442A1 (ja) | 点群復号装置、点群復号方法及びプログラム | |
| WO2025074665A1 (ja) | 点群復号装置、点群復号方法及びプログラム | |
| WO2025074660A1 (ja) | 点群復号装置、点群復号方法及びプログラム | |
| WO2025074661A1 (ja) | 点群復号装置、点群復号方法及びプログラム | |
| CN121399919A (zh) | 编码方法、解码方法、编码装置及解码装置 | |
| JP2025009504A (ja) | 点群復号装置、点群復号方法及びプログラム | |
| WO2025150285A1 (ja) | 点群復号装置、点群復号方法及びプログラム | |
| WO2025150284A1 (ja) | 点群復号装置、点群復号方法及びプログラム | |
| JP2025009505A (ja) | 点群復号装置、点群復号方法及びプログラム | |
| JP2025009525A (ja) | 点群復号装置、点群復号方法及びプログラム | |
| JP2025009524A (ja) | 点群復号装置、点群復号方法及びプログラム | |
| JP2024096620A (ja) | 点群復号装置、点群復号方法及びプログラム | |
| JP2024152417A (ja) | 点群復号装置、点群復号方法及びプログラム | |
| JP7829505B2 (ja) | 点群復号装置、点群復号方法及びプログラム | |
| WO2024079985A1 (ja) | 点群復号装置、点群復号方法及びプログラム | |
| JP2024152169A (ja) | 点群復号装置、点群復号方法及びプログラム | |
| RU2568299C2 (ru) | Устройство видеокодирования, устройство видеодекодирования, способ видеокодирования, способ видеодекодирования, программа видеокодирования и программа видеодекодирования |
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: 24916995 Country of ref document: EP Kind code of ref document: A1 |