(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024058013
(43)【公開日】2024-04-25
(54)【発明の名称】点群復号装置、点群復号方法及びプログラム
(51)【国際特許分類】
H04N 19/597 20140101AFI20240418BHJP
H04N 19/96 20140101ALI20240418BHJP
【FI】
H04N19/597
H04N19/96
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2022165089
(22)【出願日】2022-10-13
【国等の委託研究の成果に係る記載事項】(出願人による申告)令和4年度、総務省、「3次元空間データの無線伝送に向けた高能率圧縮技術の研究開発」委託事業、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】110001564
【氏名又は名称】フェリシテ弁理士法人
(72)【発明者】
【氏名】花岡 洋平
(72)【発明者】
【氏名】海野 恭平
(72)【発明者】
【氏名】河村 圭
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159LC01
5C159LC09
5C159MA01
5C159MA05
5C159MA21
5C159MC11
5C159ME11
5C159PP03
5C159PP13
5C159RC12
5C159UA02
5C159UA05
(57)【要約】 (修正有)
【課題】ノード数の符号・復号を省略し、予測器を計算することにより符号化効率を改善する点群復号装置、点群復号方法及びプログラムを提供する。
【解決手段】点群符号化装置及び点群復号装置を有する点群処理システムにおいて、点群復号装置200は、幾何情報復号部と、ツリー合成部と、近似表面合成部と、幾何情報再構成部と、逆座標変換部と、属性情報復号部と、逆量子化部と、RAHT部と、LoD算出部と、逆リフティング部と、逆色変換部と、フレームバッファと、を有する。ツリー合成部は、Predictive geometry codingを使用する場合、復号対象点群データの各点について子ノード数の復号を省略し、予測器を計算する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
点群復号装置であって、
Predictive geometry codingを使用する場合、復号対象点群データの各点について子ノード数の復号を省略し、予測器を計算するツリー合成部を備えることを特徴とする点群復号装置。
【請求項2】
前記ツリー合成部は、前記復号対象点群データの各点について子ノード数の復号を省略し、親ノードの設定を行うことを特徴とする請求項1に記載の点群復号装置。
【請求項3】
前記ツリー合成部は、
前記子ノード数を復号するかどうかを判定し、
前記子ノード数を復号しないと判定した場合は、保持しておいた直近に復号したノードのインデックスを利用して親ノードを設定し、次のノードの親ノードの設定に利用するために、前記復号したノードのインデックスを保持しておくことを特徴とする請求項2に記載の点群復号装置。
【請求項4】
前記ツリー合成部は、前記子ノード数を復号しないと判定した場合は、保持しておいた直近に復号したノードのインデックスを取得して、取得した前記インデックスを前記親ノードに設定することを特徴とする請求項3に記載の点群復号装置。
【請求項5】
前記ツリー合成部は、
Angularモードとして処理を行う場合、復号及び再構成を行う球面座標情報のうち、レーザーIDのみについて先に復号及び再構成を行うかどうかを判定し、
前記レーザーIDのみについて先に復号及び再構成を行うと判定した場合は、前記レーザーIDのみについて先に復号及び再構成を行い、前記親ノードの設定に利用することを特徴とする請求項2に記載の点群復号装置。
【請求項6】
前記ツリー合成部は、
前記レーザーIDのみについて先に復号及び再構成を行うと判定した場合は、前記レーザーIDのみについて先に復号及び再構成を行い、保持しておいた直近に復号したノードのレーザーIDを利用して、前記親ノードを設定し、
次のノードを復号する際に利用するために、復号した前記レーザーIDを保持しておくことを特徴とする請求項5に記載の点群復号装置。
【請求項7】
前記ツリー合成部は、
前記レーザーIDのみについて先に復号及び再構成を行うと判定した場合は、前記レーザーIDのみについて先に復号及び再構成を行い、復号及び再構成を行った前記レーザーIDと、前記保持しておいた直近に復号したノードのレーザーIDとが同じかどうかを判定し、
両者が同じであると判定した場合は、前記保持しておいた直近に復号したノードを前記親ノードに設定することを特徴とする請求項6に記載の点群復号装置。
【請求項8】
前記ツリー合成部は、
前記レーザーIDのみについて先に復号及び再構成を行うと判定した場合は、前記レーザーIDのみについて先に復号及び再構成を行い、復号及び再構成を行った前記レーザーIDと、前記保持しておいた直近に復号したノードのレーザーIDとが同じかどうかを判定し、
両者が異なると判定した場合は、前記保持しておいた直近のレーザーIDの先頭ノードのインデックスを利用して、前記親ノードを設定し、復号したノードのインデックスを現在のレーザーIDの先頭ノードのインデックスとして保持しておくことを特徴とする請求項6に記載の点群復号装置。
【請求項9】
前記ツリー合成部は、
Angularモードとして処理を行う場合で、かつ、位置情報の予測に復号済位置情報リストを使う場合、前記予測器の計算に前記親ノードを使うかを判定し、
前記予測器の計算に前記親ノードを使わないと判定した場合は、前記親ノードの設定を行わず、保持しておいた直近に復号したノードのレーザーIDを利用して、復号対象ノードの位置情報の予測に利用し、次のノードを復号する際に利用するために、復号したレーザーIDを保持しておくことを特徴とする請求項1に記載の点群復号装置。
【請求項10】
前記ツリー合成部は、前記予測器の計算に前記親ノードを使わないと判定した場合は、前記親ノードの設定を行わず、前記保持しておいた直近に復号したノードのレーザーIDを取得して、前記復号対象ノードのレーザーIDの予測器とすることを特徴とする請求項9に記載の点群復号装置。
【請求項11】
点群復号方法であって、
Predictive geometry codingを使用する場合、復号対象点群データの各点について子ノード数の復号を省略し、予測器を計算する工程とを有することを特徴とする点群復号方法。
【請求項12】
コンピュータを、点群復号装置として機能させるプログラムであって、
前記点群復号装置は、
Predictive geometry codingを使用する場合、復号対象点群データの各点について子ノード数の復号を省略し、予測器を計算するツリー合成部を備えることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、点群復号装置、点群復号方法及びプログラムに関する。
【背景技術】
【0002】
非特許文献1では、Predictive geometry codingにおいて、ノードに属する子ノードの数を符号化することで、復号処理において、木構造を構築して予測器を決定する方法が開示されている。。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】G-PCC codec description、ISO/IEC JTC1/SC29/WG7 N00271
【非特許文献2】G-PCC 2nd Edition codec description、ISO/IEC JTC1/SC29/WG7 N00314
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、非特許文献1の方法では、子ノード数を符号・復号することで、符号量が増加するという問題点があった。
【0005】
そこで、本発明は、上述の課題に鑑みてなされたものであり、ノード数の符号・復号を省略し、予測器を計算することができるため、符号化効率を改善することができる点群復号装置、点群復号方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の第1の特徴は、点群復号装置であって、Predictive geometry codingを使用する場合、復号対象点群データの各点について子ノード数の復号を省略し、予測器を計算するツリー合成部を備えることを要旨とする。
【0007】
本発明の第2の特徴は、点群復号方法であって、Predictive geometry codingを使用する場合、復号対象点群データの各点について子ノード数の復号を省略し、予測器を計算する工程とを有することを要旨とする。
【0008】
本発明の第3の特徴は、コンピュータを、点群復号装置として機能させるプログラムであって、前記点群復号装置は、Predictive geometry codingを使用する場合、復号対象点群データの各点について子ノード数の復号を省略し、予測器を計算するツリー合成部を備えることを要旨とする。
【発明の効果】
【0009】
本発明によれば、ノード数の符号・復号を省略し、予測器を計算することができるため、符号化効率を改善することができる点群復号装置、点群復号方法及びプログラムを提供することができる。
【図面の簡単な説明】
【0010】
【
図1】
図1は、一実施形態に係る点群処理システム10の構成の一例を示す図である。
【
図2】
図2は、一実施形態に係る点群復号装置200の機能ブロックの一例を示す図である。
【
図3】
図3は、一実施形態に係る点群復号装置200の幾何情報復号部2010で受信する符号化データ(ビットストリーム)の構成の一例を示す図である。
【
図4】
図4は、GPS2011のシンタックス構成の一例を示す図である。
【
図5】
図5は、一実施形態に係る点群復号装置200のツリー合成部2020における処理の一例を示すフローチャートである
【
図6】
図6は、ステップS503における親ノード設定処理の一例を示すフローチャートである。
【
図7】
図7は、ステップS506における位置情報の予測処理の一例を示すフローチャートである
【
図8】
図8は、ステップS702における復号済位置情報リストを使った位置情報の予測処理の一例を示すフローチャートである。
【
図9】
図9は、ステップS508における復号済位置情報リスト更新処理の一例を示すフローチャートである。
【
図10】
図10は、復号対象ノードのレーザーIDのみ先に復号する場合のステップS503における親ノード設定の処理の一例を示すフローチャートである。
【
図11】
図11は、ステップS1003における復号したレーザーIDに基づく親ノード設定の処理の一例を示すフローチャートである。
【
図12】
図12は、復号対象ノードのレーザーIDのみ先に復号する場合のステップS505における球面座標残差復号の処理の一例を示すフローチャートである。
【
図13】
図13は、復号対象ノードのレーザーIDのみ先に復号する場合のステップS507における球面座標再構成の処理の一例を示すフローチャートである。
【
図14】
図14は、本実施形態に係る点群符号化装置100の機能ブロックの一例について示す図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、以下の実施形態における構成要素は、適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、以下の実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【0012】
(第1実施形態)
以下、
図1~
図14を参照して、本発明の第1実施形態に係る点群処理システム10について説明する。
図1は、本実施形態に係る実施形態に係る点群処理システム10を示す図である。
【0013】
図1に示すように、点群処理システム10は、点群符号化装置100及び点群復号装置200を有する。
【0014】
点群符号化装置100は、入力点群信号を符号化することによって符号化データ(ビットストリーム)を生成するように構成されている。点群復号装置200は、ビットストリームを復号することによって出力点群信号を生成するように構成されている。
【0015】
なお、入力点群信号及び出力点群信号は、点群内の各点の位置情報と属性情報とから構成される。属性情報は、例えば、各点の色情報や反射率である。
【0016】
ここで、かかるビットストリームは、点群符号化装置100から点群復号装置200に対して伝送路を介して送信されてもよい。また、ビットストリームは、記憶媒体に格納された上で、点群符号化装置100から点群復号装置200に提供されてもよい。
【0017】
(点群復号装置200)
以下、
図2を参照して、本実施形態に係る点群復号装置200について説明する。
図2は、本実施形態に係る点群復号装置200の機能ブロックの一例について示す図である。
【0018】
図2に示すように、点群復号装置200は、幾何情報復号部2010と、ツリー合成部2020と、近似表面合成部2030と、幾何情報再構成部2040と、逆座標変換部2050と、属性情報復号部2060と、逆量子化部2070と、RAHT部2080と、LoD算出部2090と、逆リフティング部2100と、逆色変換部2110と、フレームバッファ2120とを有する。
【0019】
幾何情報復号部2010は、点群符号化装置100から出力されるビットストリームのうち、幾何情報に関するビットストリーム(幾何情報ビットストリーム)を入力とし、シンタックスを復号するように構成されている。
【0020】
復号処理は、例えば、コンテクスト適応二値算術復号処理である。ここで、例えば、シンタックスは、位置情報の復号処理を制御するための制御データ(フラグやパラメータ)を含む。
【0021】
ツリー合成部2020は、幾何情報復号部2010によって復号された制御データ及び後述するツリー内のどのノードに点群が存在するかを示すoccupancy codeを入力として、復号対象空間内のどの領域に点が存在するかというツリー情報を生成するように構成されている。
【0022】
なお、occupancy codeの復号処理をツリー合成部2020内部で行うよう構成されていてもよい。
【0023】
本処理は、復号対象空間を直方体で区切り、occupancy codeを参照して各直方体内に点が存在するかを判断し、点が存在する直方体を複数の直方体に分割し、occupancy codeを参照するという処理を再帰的に繰り返すことで、ツリー情報を生成することができる。
【0024】
ここで、かかるoccupancy codeの復号に際して、後述するインター予測を用いてもよい。
【0025】
本実施形態では、上述の直方体を常に立方体として8分木分割を再帰的に行う「Octree」と呼ばれる手法、及び、8分木分割に加え、4分木分割及び2分木分割を行う「QtBt」と呼ばれる手法を使用することができる。QtBt」を使用するか否かは、制御データとして点群符号化装置100側から伝送される。
【0026】
或いは、制御データによってPredictive geometry codingPredicitive codingを使用するように指定された場合、ツリー合成部2020は、点群符号化装置100において決定した任意のツリー構成に基づいて各点の座標を復号するように構成されている。
【0027】
近似表面合成部2030は、ツリー合成部2020によって生成されたツリー情報を用いて近似表面情報を生成し、かかる近似表面情報に基づいて点群を復号するように構成されている。
【0028】
近似表面情報は、例えば、物体の3次元点群データを復号する際等において、点群が物体表面に密に分布しているような場合に、個々の点群を復号するのではなく、点群の存在領域を小さな平面で近似して表現したものである。
【0029】
具体的には、近似表面合成部2030は、例えば、「Trisoup」と呼ばれる手法で、近似表面情報を生成し、点群を復号することができる。「Trisoup」の具体的な処理例については後述する。また、Lidar等で取得した疎な点群を復号する場合は、本処理を省略することができる。
【0030】
幾何情報再構成部2040は、ツリー合成部2020によって生成されたツリー情報及び近似表面合成部2030によって生成された近似表面情報を元に、復号対象の点群データの各点の幾何情報(復号処理が仮定している座標系における位置情報)を再構成するように構成されている。
【0031】
逆座標変換部2050は、幾何情報再構成部2040によって再構成された幾何情報を入力として、復号処理が仮定している座標系から、出力点群信号の座標系に変換を行い、位置情報を出力するように構成されている。
【0032】
フレームバッファ2120は、幾何情報再構成部2040によって再構成された幾何情報を入力として、参照フレームとして保存するように構成されている。保存した参照フレームは、ツリー合成部2020において時間的に異なるフレームのインター予測を行う場合に、フレームバッファ2130から読み出されて参照フレームとして使用される。
【0033】
ここで、各フレームに対してどの時刻の参照フレームを用いるかどうかは、例えば、点群符号化装置100からビットストリームとして伝送されてくる制御データに基づいて決定されてもよい。
【0034】
属性情報復号部2060は、点群符号化装置100から出力されるビットストリームのうち、属性情報に関するビットストリーム(属性情報ビットストリーム)を入力とし、シンタックスを復号するように構成されている。
【0035】
復号処理は、例えば、コンテクスト適応二値算術復号処理である。ここで、例えば、シンタックスは、属性情報の復号処理を制御するための制御データ(フラグ及びパラメータ)を含む。
【0036】
また、属性情報復号部2060は、復号したシンタックスから、量子化済み残差情報を復号するように構成されている。
【0037】
逆量子化部2070は、属性情報復号部2060によって復号された量子化済み残差情報と、属性情報復号部2060によって復号された制御データの一つである量子化パラメータとを元に、逆量子化処理を行い、逆量子化済み残差情報を生成するように構成されている。
【0038】
逆量子化済み残差情報は、復号対象の点群の特徴に応じて、RAHT部2080及びLoD算出部2090のいずれかに出力される。いずれに出力されるかは、属性情報復号部2060によって復号される制御データによって指定される。
【0039】
RAHT部2080は、逆量子化部2070によって生成された逆量子化済み残差情報及び幾何情報再構成部2040によって生成された幾何情報を入力とし、RAHT(Region Adaptive Hierarchical Transform)と呼ばれるHaar変換(復号処理においては、逆Haar変換)の一種を用いて、各点の属性情報を復号するように構成されている。RAHTの具体的な処理としては、例えば、非特許文献1に記載の方法を用いることができる。
【0040】
LoD算出部2090は、幾何情報再構成部2040によって生成された幾何情報を入力とし、LoD(Level of Detail)を生成するように構成されている。
【0041】
LoDは、ある点の属性情報から、他のある点の属性情報を予測し、予測残差を符号化或いは復号するといった予測符号化を実現するための参照関係(参照する点及び参照される点)を定義するための情報である。
【0042】
言い換えると、LoDは、幾何情報に含まれる各点を複数のレベルに分類し、下位のレベルに属する点については上位のレベルに属する点の属性情報を用いて属性を符号化或いは復号するといった階層構造を定義した情報である。
【0043】
LoDの具体的な決定方法としては、例えば、上述の非特許文献1に記載の方法を用いてもよい。
【0044】
逆リフティング部2100は、LoD算出部2090によって生成されたLoD及び逆量子化部2070によって生成された逆量子化済み残差情報を用いて、LoDで規定した階層構造に基づいて各点の属性情報を復号するように構成されている。逆リフティングの具体的な処理としては、例えば、上述の非特許文献1に記載の方法を用いることができる。
【0045】
逆色変換部2110は、復号対象の属性情報が色情報であり且つ点群符号化装置100側で色変換が行われていた場合に、RAHT部2080又は逆リフティング部2100から出力される属性情報に逆色変換処理を行うように構成されている。かかる逆色変換処理の実行の有無については、属性情報復号部2060によって復号された制御データによって決定される。
【0046】
点群復号装置200は、以上の処理により、点群内の各点の属性情報を復号して出力するように構成されている。
【0047】
(幾何情報復号部2010)
以下、
図3~
図4を用いて幾何情報復号部2010で復号される制御データについて説明する。
【0048】
図3は、幾何情報復号部2010で受信する符号化データ(ビットストリーム)の構成の一例である。
【0049】
第1に、ビットストリームは、GPS2011を含んでいてもよい。GPS2011は、ジオメトリパラメータセットとも呼ばれ、幾何情報の復号に関する制御データの集合である。具体例については後述する。各GPS2011は、複数のGPS2011が存在する場合に個々を識別するためのGPS id情報を少なくとも含む。
【0050】
第2に、ビットストリームは、GSH2012A/2012Bを含んでいてもよい。GSH2012A/2012Bは、ジオメトリスライスヘッダ或いはジオメトリデータユニットヘッダとも呼ばれ、後述するスライスに対応する制御データの集合である。以降では、スライスという呼称を用いて説明するが、スライスをデータユニットと読み替えることもできる。具体例については後述する。GSH2012A/2012Bは、各GSH2012A/2012Bに対応するGPS2011を指定するためのGPS id情報を少なくとも含む。
【0051】
第3に、ビットストリームは、GSH2012A/2012Bの次に、スライスデータ2013A/2013Bを含んでいてもよい。スライスデータ2013A/2013Bには、幾何情報を符号化したデータが含まれている。スライスデータ2013A/2013Bの一例としては、後述するoccupancy codeが挙げられる。
【0052】
以上のように、ビットストリームは、各スライスデータ2013A/2013Bに、1つずつGSH2012A/2012B及びGPS2011が対応する構成となる。
【0053】
上述のように、GSH2012A/2012Bにて、どのGPS2011を参照するかをGPS id情報で指定するため、複数のスライスデータ2013A/2013Bに対して共通のGPS2011を用いることができる。
【0054】
言い換えると、GPS2011は、スライスごとに必ずしも伝送する必要がない。例えば、
図3のように、GSH2012B及びスライスデータ2013Bの直前では、GPS2011を符号化しないようなビットストリームの構成とすることもできる。
【0055】
なお、
図3の構成は、あくまで一例である。各スライスデータ2013A/2013Bに、GSH2012A/2012B及びGPS2011が対応する構成となっていれば、ビットストリームの構成要素として、上述以外の要素が追加されてもよい。
【0056】
例えば、
図3に示すように、ビットストリームは、シーケンスパラメータセット(SPS)2001を含んでいてもよい。また、同様に、伝送に際して、
図3と異なる構成に整形されてもよい。更に、後述する属性情報復号部2060で復号されるビットストリームと合成して単一のビットストリームとして伝送されてもよい。
【0057】
図4は、GPS2011のシンタックス構成の一例である。
【0058】
なお、以下で説明するシンタックス名は、あくまで一例である。以下で説明したシンタックスの機能が同様であれば、シンタックス名は異なっていても差し支えない。
【0059】
GPS2011は、各GPS2011を識別するためのGPS id情報(gps_geom_parameter_set_id)を含んでもよい。
【0060】
なお、
図4のDescriptor欄は、各シンタックスが、どのように符号化されているかを意味している。ue(v)は、符号無し0次指数ゴロム符号であることを意味し、u(1)は、1ビットのフラグであることを意味する。
【0061】
GPS2011は、ツリー合成部2020でツリータイプを制御するためのフラグ(geom_tree_type)を含んでもよい。
【0062】
例えば、geom_tree_typeの値が「1」の場合は、Predictive geometry codingを使用すると定義し、geom_tree_typeの値が「0」の場合は、Octreeを使用するように定義されていてもよい。
【0063】
GPS2011は、ツリー合成部2020で、Angularモードとして処理を行うかどうかを制御するためのフラグ(geom_angular_enabled)を含んでもよい。
【0064】
例えば、geom_angular_enabledの値が「1」の場合は、AngularモードとしてPredictive geometry codingの処理を行うと定義し、geom_angular_enabledの値が「0」の場合は、AngularモードとしてPredictive geometry codingの処理を行わないように定義されていてもよい。
【0065】
GPS2011は、ツリー合成部2020で、Angularモードにおいて、半径に応じた適応的な方位角の量子化を行うどうかを制御するためのフラグ(ptree_ang_azimuth_scaling_enabled)を含んでもよい。
【0066】
例えば、ptree_ang_azimuth_scaling_enabledの値が「1」の場合は、半径に応じた適応的な方位角の量子化を行うと定義し、ptree_ang_azimuth_scaling_enabledの値が「0」の場合は、半径に応じた適応的な方位角の量子化を行わないと定義されていてもよい。
【0067】
また、Angularモードにおける予測器の計算において、復号済位置情報リストを使うかどうか制御するためのフラグとして用いてもよい。
【0068】
例えば、ptree_azimuth_scaling_enabledの値が「1」の場合は、予測器の計算において、復号済位置情報リストを使うと定義し、ptree_ang_azimuth_scaling_enabledの値が「0」の場合は、予測器の計算において、復号済位置情報リストを使わないと定義されていてもよい。
【0069】
GPS2011は、ツリー合成部2020で、予測器の計算に復号済位置情報リストを使う場合の復号済位置情報リストを動的に更新する処理で利用する閾値(ptree_ang_pred_list_radius_resid_threshold)を含んでもよい。
【0070】
例えば、ptree_ang_pred_list_radius_resid_thresholdの値よりも復号した半径残差の絶対値が大きい場合は、復号済位置情報リストに復号した位置情報を新たな予測器として加えてもよいし、ptree_ang_pred_list_radius_resid_thresholdの値よりも復号した半径残差の絶対値が小さい場合は、復号済位置情報リストに復号した位置情報を新たな予測器として加えなくてもよい。
【0071】
GPS2011は、ツリー合成部2020で子ノードの数を復号するかどうかを制御するためのフラグ(ptree_num_children_decode_flag)を含んでもよい。
【0072】
例えば、ptree_num_children_decode_flagの値が「1」の場合は、子ノードの数を復号すると定義し、ptree_num_children_decode_flagの値が「0」の場合は、子ノードの数を復号しないように定義されていてもよい。
【0073】
GPS2011は、ツリー合成部2020で、予測器の計算に親ノードを使用するかどうかを制御するためのフラグ(ptree_predictor_parent_enabled_flag)を含んでもよい。
【0074】
例えば、ptree_predictor_parent_enabled_flagの値が「1」の場合は、予測器の計算に親ノードを使用すると定義し、ptree_predictor_parent_enabled_flagの値が「0」の場合は、予測器の計算に親ノードを使用しないように定義されていてもよい。
【0075】
GPS2011は、ツリー合成部2020で、復号対象ノードのレーザーIDのみ先に復号して親ノード設定に使うかどうかを制御するためのフラグ(ptree_pre_decode_laser_ID_enabled_flag)を含んでもよい。
【0076】
例えば、ptree_pre_decode_laser_ID_enabled_flagの値が「1」の場合は、先にレーザーIDだけ復号して親ノード設定を行うと定義し、ptree_pre_decode_laser_ID_enabled_flagの値が「0」の場合は、予測器の計算に親ノードを使用しないと定義されていてもよい。
【0077】
(ツリー合成部2020)
以下、
図5~
図9を用いてツリー合成部2020の処理について説明する。
図5は、ツリー合成部2020における処理の一例を示すフローチャートである。なお、以下では「Predictive geometry coding」を使用してツリーを合成する場合の例について説明する。
【0078】
Predictive geometry codingは、Predictive Treeとも呼ばれている。Predictive geometry codingは、点群符号化装置100側で決めた任意の木構造に基づいて予測した位置情報及び当該点群データの位置情報の残差を復号し、両者を加算することで当該点群データの位置情報を復号する手段である。
【0079】
図5に示すように、ステップS501において、ツリー合成部2020は、当該スライス内に含まれる全ての点群データの位置情報の復号が完了したかどうかを判定する。
【0080】
この処理は、例えば、GSHに当該スライスに含まれる点群データの数を示す情報を伝送しておき、この点群データ数と既に処理したデータ数とを比較することで、全ての点の処理が完了したか否かを判定することができる。
【0081】
全ての点群データの位置情報の復号が完了した場合は、本動作は、ステップS513へ進み、処理を終了する。全ての点群データの位置情報の復号が完了していない場合は、本動作は、ステップS502へ進む。
【0082】
ステップS502において、ツリー合成部2020は、予測器の計算に親ノードを使用するかどうかを判定する。
【0083】
例えば、ツリー合成部2020は、ptree_predictor_parent_enabled_flagの値を参照して、予測器の計算に親ノードを使うかを判定することができる。
【0084】
予測器の計算に親ノードを使うと判定された場合は、本動作は、ステップS503へ進み、予測器の計算に親ノードを使わないと判定された場合は、本動作は、ステップS505へ進む。
【0085】
ステップS503において、ツリー合成部2020は、点群データの復号対象ノードの親ノードを設定する。ステップS503の具体的な処理の例は、後述する。
【0086】
このような親ノードの設定が完了後、本動作は、ステップS504へ進む。
【0087】
ステップS504において、ツリー合成部2020は、Angularモードで処理を行うかを判定する。
【0088】
例えば、ツリー合成部2020は、geom_angular_enabledの値を参照して、Angularモードで処理を行うかを判定することができる。
【0089】
Angularモードで処理を行うと判定された場合は、本動作は、ステップS505へ進み、Angularモードで処理を行わないと判定された場合は、本動作は、ステップS510へ進む。
【0090】
ステップS505において、ツリー合成部2020は、球面座標残差の復号を行う。球面座標残差の復号が完了したら、本動作は、ステップS506へ進む。
【0091】
ステップS506において、ツリー合成部2020は、位置情報の予測を行う。
【0092】
この処理では、はじめに、ツリー合成部2020は、予測に用いる予測器の種類を決定する。例えば、ptree_ang_azimuth_scaling_enabledの値に基づいて、用いる予測器の種類を決定してもよい。
【0093】
予測器の種類は、例えば、木構造を用いて計算される複数の予測器の中から、復号した予測器モードに基づき利用する予測器を選択するものであってもよい。若しくは、復号済ノードの位置情報を予測器としてリストに保持しておき、復号した予測器のインデックスに該当するものをリストから参照し、利用する予測器を選択するものであってもよい。
【0094】
ツリー合成部2020は、予測器を決定したら、その予測器を位置情報の予測値とする。具体的な処理の例は、後述する。
【0095】
位置情報の予測が完了した後、本動作は、ステップS507へと進む。
【0096】
ステップS507において、ツリー合成部2020は、球面座標の再構成を行う。この処理は、復号した球面座標残差と予測器とを加算することで、球面座標情報を再構成するものである。
【0097】
球面座標の再構成が完了した後、本動作は、ステップS508へと進む。
【0098】
ステップS508において、ツリー合成部2020は、復号済位置情報リストの更新を行う。この処理では、はじめに、ツリー合成部2020は、位置情報の予測において復号済位置情報リストを使うかどうかの判定を行い、復号済位置情報リスト使うと判定した場合に、復号済位置情報リストの更新を行う。具体的な処理は、後述する。
【0099】
復号済位置情報リストの更新が完了した後、本動作は、ステップS509へ進む。
【0100】
ステップS509において、ツリー合成部2020は、直交整数座標の再構成を行う。この処理では、前記再構成した球面座標情報に基づいて、変換することができる。具体的な方法は、例えば、非特許文献1に記載の手法で実現できる。
【0101】
直交整数座標の再構成が完了した後、本動作は、ステップS510へ進む。
【0102】
ステップS510において、ツリー合成部2020は、直交整数座標残差の復号を行う。直交整数座標残差の復号が完了した後、本動作は、ステップS511へと進む。
【0103】
ステップS511において、ツリー合成部2020は、元座標の再構成を行う。この処理は、復号した直交整数座標残差と、再構成した直交整数座標とを加算することで、元座標の再構成を行うものである。元座標の再構成が完了した後、本動作は、ステップS501へと戻る。
【0104】
ステップS512において、ツリー合成部2020は、位置情報の予測を行う。具体的には、ツリー合成部2020は、予測器を計算し、その予測器を位置情報の予測値とする。
【0105】
例えば、ツリー合成部2020は、木構造に基づき計算される複数の予測器の中から、復号した予測器モードに基づき予測器を選択してもよい。位置情報の予測が完了した後、本動作は、ステップS513へと進む。
【0106】
ステップS513において、ツリー合成部2020は、直交整数座標残差の復号を行う。直交整数座標残差の復号が完了した後、本動作は、ステップS514へと進む。
【0107】
ステップS514において、ツリー合成部2020は、元座標の再構成を行う。この処理は、ステップS513で復号した直交整数座標の残差と、ステップS512で予測した位置情報をと加算することで、元座標の再構成を行うものである。元座標の再構成が完了した後、本動作は、ステップS501へと戻る。
【0108】
図6は、ステップS50における親ノード設定処理の一例を示すフローチャートである。
【0109】
図6に示すように、ツリー合成部2020は、ステップS601において、復号対象ノードのインデックスを子ノード数分だけ格納する配列Stack[i]を参照し、配列Stack[i]の末尾に格納されているインデックスを1つ取得し、復号対象ノードの親ノードに設定する。
【0110】
ツリー合成部2020は、取得したインデックスについて、配列Stack[i]から削除する。
【0111】
配列Stack[i]には、後のステップS604又はステップS605で、復号対象ノードのインデックスが格納される。
【0112】
当該スライス内の点群データの全点の復号が完了するまで、繰り返し配列Stack[i]への格納・参照が繰り返されることで、復号対象ノードの親ノードの設定が行われる。
【0113】
ここで、ノードのインデックスとは、当該スライスの点群データの点の復号する順番を示す値である。また、Stack[i]には、初期値として、例えば、―1を設定しておき、―1が設定されている場合は、点群データのルート点として処理することができる。
【0114】
親ノードのインデックスが設定された後、本動作は、ステップS602へ進む。
【0115】
ステップS602において、ツリー合成部2020は、子ノード数を復号するかどうかを判定する。
【0116】
例えば、ツリー合成部2020は、前記ptree_num_children_decode_flagの値を参照して、子ノード数を復号するかどうかを判定することができる。
【0117】
子ノード数を復号すると判定された場合は、本動作は、ステップS603へ進み、子ノード数を復号しないと判定された場合は、本動作は、ステップS605へ進む。
【0118】
ステップS603において、ツリー合成部2020は、復号対象ノードの子供の数を復号する。復号対象ノードの子供の数が復号された後、本動作は、ステップS604へ進む。
【0119】
ステップS604において、ツリー合成部2020は、配列Stack[i] の末尾に、子ノードの数だけ、復号対象ノードのインデックスを格納する。復号対象ノードのインデックスが格納された後、本動作は、ステップS606へ進み、処理を終了する。
【0120】
ステップS605において、ツリー合成部2020は、配列Stack[i] に復号対象ノードのインデックスを1つだけ格納する。配列Stack[i]への格納が完了した後、本動作は、ステップS606へ進み、処理を終了する。
【0121】
また、復号対象ノードのインデックスの格納先は、配列である必要はなく、例えば、復号対象ノードのインデックスを保持する変数を用意しておき、次に位置情報を復号するノードの親ノード設定の際に参照できればよい。
【0122】
以上のように、ツリー合成部2020は、子ノード数を復号するかどうかを判定し、子ノード数を復号しないと判定した場合は、復号対象ノードのインデックスを1つだけ保持しておくように構成されてもよい。
【0123】
このような構成とすることで、子ノード数を復号しなくても親ノードを設定することができ、符号化効率を改善することができる。
【0124】
図7は、ステップS506における位置情報の予測処理の一例を示すフローチャートである。
【0125】
図7に示すように、ステップS701において、ツリー合成部2020は、予測器の計算に復号済位置情報リストを使うかどうかを判定する。
【0126】
例えば、ツリー合成部2020は、ptree_ang_azimuth_scaling_enabledの値を参照して、予測器の計算に復号済位置情報リストを使うかどうかを判定することができる。
【0127】
復号済位置情報リストを使うと判定された場合は、本動作は、ステップS702へ進み、復号済位置情報リストを使わないと判定された場合は、本動作は、ステップS703へ進む。
【0128】
ステップS702において、ツリー合成部2020は、復号済位置情報リストを使って予測器を計算し、位置情報の予測を行う。この処理では、ツリー合成部2020は、復号済ノードの位置情報を予測器としてリストに保持しておき、復号した予測器のインデックスに該当するものをリストから参照し、利用する予測器を決定し、決定した予測器を位置情報の予測値とする。具体的な処理の例は、後述する。
【0129】
位置情報の予測が完了したら、本動作は、ステップS704へ進み、処理を終了する。
【0130】
ステップS703において、ツリー合成部2020は、木構造を用いて計算される複数の予測器の中から、復号した予測器モードに基づき利用する予測器を選択し、選択した予測器を位置情報の予測値とする。
【0131】
例えば、ツリー合成部2020は、予測しないモード、親ノードのみに基づき予測するモード、親ノードとその親ノードに基づき予測するモード、親ノードの親ノードとその親ノードに基づき予測するモードの中から、復号した予測器モードに基づき利用するモードを選択してもよい。具体的には、例えば、非特許文献1に記載の手法で実現できる。
【0132】
位置情報の予測が完了した後、本動作は、ステップS704へ進み、処理を終了する。
【0133】
図8は、ステップS702における復号済位置情報リストを使った位置情報の予測処理の一例を示すフローチャートである。
【0134】
図8に示すように、ステップS801において、ツリー合成部2020は、予測器の計算に親ノードを使用するかどうかを判定する。
【0135】
例えば、ツリー合成部2020は、ptree_predictor_parent_enabled_flagの値を参照して、予測器の計算に親ノードを使うかを判定することができる。
【0136】
予測器の計算に親ノードを使うと判定された場合は、本動作は、ステップS802へ進み、予測器の計算に親ノードを使わないと判定された場合は、本動作は、ステップS806へ進む。
【0137】
ステップS802において、ツリー合成部2020は、親ノードに基づいて予測器を計算する。
【0138】
具体的には、ツリー合成部2020は、既に復号済の親ノードの方位角、親ノードの半径、親ノードのLidarセンサーにおけるレーザーIDを予測器とする。
【0139】
ここで、方位角の予測器の計算では、例えば、復号済ノードの方位角に、レーザー間のステップ幅と復号済ノードからのステップ数との積を、加算してもよいし、減算してもよい。
【0140】
すなわち、ツリー合成部2020は、以下の式によって、方位角の予測器を算出してもよい。
「方位角の予測器」=「復号済ノードの方位角」+「レーザー間のステップ幅×復号済ノードからのステップ数」
なお、ツリー合成部2020は、以下の式によって、方位角の予測器を算出してもよい。
「方位角の予測器」=「復号済ノードの方位角」‐「レーザー間のステップ幅×復号済ノードからのステップ数」
予測器が計算された後、本動作は、ステップS803へ進む。
【0141】
ステップS803において、ツリー合成部2020は、復号済位置情報インデックスjを復号する。復号済位置情報インデックスjの復号が完了した後、本動作は、ステップS804に進む。
【0142】
ステップS804において、ツリー合成部2020は、復号した復号済位置情報インデックスjが0より大きいかを判定する。
【0143】
復号済位置情報インデックスjが0より大きい場合、本動作は、ステップS805へ進む。復号済位置情報インデックスjが0の場合、本動作は、ステップS809へ進み、処理を終了する。
【0144】
ステップS805において、ツリー合成部2020は、予測器の再計算を行う。
【0145】
具体的には、ツリー合成部2020は、復号した復号済位置情報インデックスに該当する復号済位置情報を、復号済位置情報リストから取得し、取得した復号済位置情報を元に計算する。復号済位置情報には、既に復号済ノードの方位角及び半径が含まれる。
【0146】
ツリー合成部2020は、復号済ノードの方位角及び復号済ノードの半径を含む復号済位置情報に親ノードの復号済レーザーIDを加えた情報に基づいて、例えば、非特許文献2に記載の手法で、予測器の計算が実現できる。
なお、方位角の予測器の計算では、例えば、復号済ノードの方位角に、レーザー間のステップ幅と復号済ノードからのステップ数との積を、加算してもよいし、減算してもよい。
【0147】
予測器の再計算が完了した後、本動作は、ステップS809へ進み、処理を終了する。
【0148】
ステップS806において、ツリー合成部2020は、直近ノードのレーザーID情報を取得する。直近ノードは、現在復号を行っているノードの直前に復号されたノードである。直近ノードのレーザーID情報は、現在復号を行っているノードの直前に復号されたノードのレーザーIDである。
【0149】
直前に復号されたノードのレーザーIDは、後述のステップS907で更新される。なお、直近ノードのレーザーID情報の初期値は、例えば、0としておいてもよい。直近ノードのレーザーID情報の取得が完了した後、本動作は、ステップS807へと進む。
【0150】
ステップS807において、ツリー合成部2020は、復号済位置情報インデックスjを復号する。復号済位置情報インデックスjの復号が完了した後、本動作は、ステップS808に進む。
【0151】
ステップS808において、ツリー合成部2020は、予測器の計算を行う。
【0152】
具体的には、ツリー合成部2020は、復号した復号済位置情報インデックスに該当する復号済位置情報を、復号済位置情報リストから取得し、取得した復号済位置情報を元に計算する。復号済位置情報には、既に復号済ノードの方位角及び半径が含まれる。ツリー合成部2020は、上述の復号済位置情報に親ノードの復号済レーザーIDを加えた情報を元に、例えば、非特許文献2に記載の手法で、予測器の計算が実現できる。なお、方位角の予測器の計算では、例えば、復号済ノードの方位角に、レーザー間のステップ幅と復号済ノードからのステップ数との積を、加算してもよいし、減算してもよい。予測器の再計算が完了した後、本動作は、ステップS809へ進み、処理を終了する。
【0153】
図9は、ステップS508における復号済位置情報リスト更新処理の一例を示すフローチャートである。
【0154】
図9に示すように、ステップS901において、ツリー合成部2020は、予測器の計算に復号済位置情報リストを使うかどうかを判定する。
【0155】
例えば、ツリー合成部2020は、ptree_ang_azimuth_scaling_enabledの値を参照して、予測器の計算に復号済位置情報リストを使うかどうかを判定することができる。
【0156】
復号済位置情報リストを使うと判定された場合は、本動作は、ステップS902へ進み、復号済位置情報リストを使わないと判定された場合は、本動作は、ステップS908へ進み、処理を終了する。
【0157】
ステップS902において、ツリー合成部2020は、ステップS505で復号した球面座標残差の絶対値が閾値よりも大きいかを判定する。ツリー合成部2020は、閾値として、例えば、ptree_ang_pred_list_radius_resid_thresholdに設定されている値を用いてもよい。上述の絶対値が閾値よりも小さい場合、本動作は、ステップS903へ進み、上述の絶対値が閾値よりも大きい場合、本動作は、ステップS904へ進む。
【0158】
ステップS903において、ツリー合成部2020は、復号済位置情報リストを部分的に更新する。
【0159】
具体的には、ツリー合成部2020は、利用した復号済位置情報インデックス番号をjとして、リストに存在している復号済位置情報インデックス番号0~jー1を、1ずつプラスして復号済位置情報リストに格納する。かかる格納が完了した後、本動作は、ステップS905へ進む。
【0160】
ステップS904において、ツリー合成部2020は、復号済位置情報リストを全て更新する。
【0161】
具体的には、全ての復号済位置情報インデックス番号を、1ずつプラスして復号済位置情報リストに格納する。かかる格納が完了した後、本動作は、ステップS905へ進む。
【0162】
ステップS905において、ツリー合成部2020は、復号済位置情報リストに現ノードの位置情報を格納する。
【0163】
具体的には、ツリー合成部2020は、ステップS507で再構成した位置情報のうち、半径及び方位角を、復号済位置情報リストのインデックス0番目として格納する。かかる格納が完了した後、本動作は、ステップS906へ進む。
【0164】
ステップS906において、ツリー合成部2020は、予測器の計算に親ノードを使用するかどうかを判定する。
【0165】
例えば、ツリー合成部2020は、ptree_predictor_parent_enabled_flagの値を参照して、予測器の計算に親ノードを使うかを判定することができる。
【0166】
予測器の計算に親ノードを使うと判定された場合は、本動作は、ステップS908へ進み、処理を終了する。一方、予測器の計算に親ノードを使わないと判定された場合は、本動作は、ステップS907へ進む。
【0167】
ステップS907において、ツリー合成部2020は、直近ノードのレーザーID情報の更新を行う。この処理では、ツリー合成部2020は、ステップS507で再構成した位置情報のうち、レーザーIDを取得し、直近ノードのレーザーID情報として保持しておく。ここで保持した情報は、ステップS806で利用される。直近ノードのレーザーIDの更新が完了した後、本動作は、ステップS908へ進み、処理を終了する。
【0168】
以上のように、ツリー合成部2020は、予測器の計算に親ノードを使うか判定し、使わない場合は、親ノードの設定を行わず、また復号したノードのレーザーIDを直近ノードのレーザーID情報として保持しておき、次に復号するノードの位置情報の予測に利用する構成としてもよい。
【0169】
このような構成とすることで、親ノードを設定しなくても予測器を決定することができ、子ノード数を復号する必要がなく、符号化効率を改善することができる。
【0170】
さらに、ツリー合成部2020は、復号及び再構成を行う球面座標情報のうち、レーザーIDのみについて先に復号及び再構成を行うことで、親ノードの設定を行ってもよい。
【0171】
図10~
図13は、かかる処理の一例を示すフローチャートである。以下、その具体な処理について説明する。
【0172】
図10は、復号対象ノードのレーザーIDのみ先に復号する場合のステップS503における親ノード設定の処理の一例を示すフローチャートである。
【0173】
図10に示すように、ステップS1001において、ツリー合成部2020は、Angularモードで処理を行うかを判定する。
【0174】
例えば、ツリー合成部2020は、geom_angular_enabledの値を参照して、Angularモードで処理を行うかを判定することができる。
【0175】
Angularモードで処理を行うと判定された場合は、本動作は、ステップS1001へ進み、Angularモードで処理を行わないと判定された場合は、本動作は、ステップS1004へ進む。
【0176】
ステップS1002において、ツリー合成部2020は、復号対象ノードのレーザーIDのみ先に復号して親ノード設定に使うかどうかを判定する。
【0177】
例えば、ツリー合成部2020は、ptree_pre_decode_laser_ID_enabled_flagの値を参照して、先にレーザーIDだけ復号して親ノード設定に使うかどうかを判定することができる。
【0178】
先にレーザーIDだけ復号すると判定された場合は、本動作は、ステップS1002へ進み、先にレーザーIDを復号しないと判定された場合は、本動作は、ステップS1004へ進む。
【0179】
ステップS1003において、ツリー合成部2020は、先にレーザーIDだけ復号し、復号したレーザーIDを用いて親ノードを設定する。具体的な処理は、後述する。親ノードの設定が完了した後、本動作は、ステップS1005へ進み、処理を終了する。
【0180】
ステップS1004において、ツリー合成部2020は、配列Stack[i]を使った親ノード設定を行う。具体的な処理は、前述の
図6のフローチャートにて説明した方法で行う。親ノードの設定が完了した後、本動作は、ステップS1005へ進み、処理を終了する。
【0181】
図11は、ステップS1003における復号したレーザーIDに基づく親ノード設定の処理の一例を示すフローチャートである。
【0182】
図11に示すように、ステップS1101において、ツリー合成部2020は、直近ノードのレーザーID情報を取得する。直近ノードは、現在復号を行っているノードの直前に復号されたノードである。直近ノードのレーザーID情報は、現在復号を行っているノードの直前に復号されたノードのレーザーIDである。直前に復号されたノードのレーザーIDは、後述のステップS1109で更新される。
【0183】
なお、直近ノードのレーザーID情報の初期値は、例えば、0としておいてもよい。直近ノードのレーザーIDの取得が完了した後、本動作は、ステップS1102へ進む。
【0184】
ステップS1102において、ツリー合成部2020は、レーザーIDを復号する。この処理では、ツリー合成部2020は、復号対象ノードのレーザーIDの残差を復号する。かかる復号が完了した後、本動作は、ステップS1103へ進む。
【0185】
ステップS1103において、ツリー合成部2020は、レーザーIDを再構成する。この処理では、ツリー合成部2020は、ステップS1101で取得したレーザーIDと、ステップS1102で復号した残差とを加算することで、レーザーIDを再構成する。かかる再構成が完了した後、本動作は、ステップS1104へ進む。
【0186】
ステップS1104において、ツリー合成部2020は、復号したレーザーIDが、直近ノードのレーザーIDと同じかどうかを判定する。
【0187】
両者が同じであると判定された場合、本動作は、ステップS1105へ進む。一方、両者が同じでないと判定された場合、本動作は、ステップS1106へ進む。
【0188】
ステップS1105において、ツリー合成部2020は、親ノードに直近ノードを設定する。親ノードの設定が完了した後、本動作は、ステップS1109へ進む。
【0189】
ステップS1106において、ツリー合成部2020は、直近レーザーの先頭ノード情報を取得する。
【0190】
直近レーザーは、復号対象ノードのレーザーIDの1つ前のレーザーIDである。復号対象のレーザーのレーザーIDをNとすると、直近レーザーのレーザーIDは、N-1となる。直近レーザーの先頭ノード情報は、直近レーザーID内の復号済の点のうち、先頭に位置するノードのインデックスである。
【0191】
直近レーザーの先頭ノード情報は、後述のステップS1108で更新される。直近レーザーの先頭ノード情報の取得が完了した後、本動作は、ステップS1107へ進む。
【0192】
ステップS1107において、ツリー合成部2020は、親ノードの設定を行う。具体的には、ツリー合成部2020は、ステップS1106で取得したレーザー先頭ノードのインデックスを、親ノードのインデックスとして設定する。親ノードの設定が完了した後、本動作は、ステップS1108へ進む。
【0193】
ステップS1108において、ツリー合成部2020は、直近レーザーの先頭ノード情報を更新する。この処理では、ツリー合成部2020は、現在の復号対象ノードを、直近レーザーの先頭ノードとして更新する。更新が完了した後、本動作は、ステップS1109へ進む。
【0194】
ステップS1109において、ツリー合成部2020は、直近ノードのレーザーID情報の更新を行う。この処理では、ツリー合成部2020は、ステップS1103で再構成した位置情報のうち、レーザーIDを取得し、直近ノードのレーザーID情報として保持しておく。ここで保持した情報は、ステップS1101で利用される。かかる更新が完了した後、本動作は、ステップS1110へ進み、処理を終了する。
【0195】
図12は、復号対象ノードのレーザーIDのみ先に復号する場合のステップS505における球面座標残差復号の処理の一例を示すフローチャートである。
【0196】
図12に示すように、ステップS1201において、ツリー合成部2020は、復号対象ノードのレーザーIDのみ先に復号して親ノード設定に使うかどうかを判定する。
【0197】
例えば、ツリー合成部2020は、ptree_pre_decode_laser_ID_enabled_flagの値を参照して、先にレーザーIDだけ復号して親ノード設定に使うかどうかを判定することができる。先にレーザーIDだけ復号すると判定された場合は、本動作は、ステップS1202へ進み、先にレーザーIDを復号しないと判定された場合は、本動作は、ステップS1203へ進む。
【0198】
ステップS1202において、ツリー合成部2020は、レーザーID以外の球面座標情報の残差を復号する。かかる残差復号の復号が完了した後、本動作は、ステップS1204へ進み、処理を終了する。
【0199】
ステップS1203において、ツリー合成部2020は、レーザーIDも含めた球面座標情報の残差を復号する。かかる残差の復号が完了した後、本動作は、ステップS1204へ進み、処理を終了する。
【0200】
図13は、復号対象ノードのレーザーIDのみ先に復号する場合のステップS507における球面座標再構成の処理の一例を示すフローチャートである。
【0201】
図13に示すように、ステップS1301において、ツリー合成部2020は、復号対象ノードのレーザーIDのみ先に復号して親ノード設定に使うかどうかを判定する。
【0202】
例えば、ツリー合成部2020は、ptree_pre_decode_laser_ID_enabled_flagの値を参照して、先にレーザーIDだけ復号して親ノード設定に使うかどうかを判定することができる。
【0203】
先にレーザーIDだけ復号すると判定された場合は、本動作は、ステップS1302へ進み、先にレーザーIDを復号しないと判定された場合は、本動作は、ステップS1303へ進む。
【0204】
ステップS1302において、ツリー合成部2020は、レーザーID以外の球面座標情報の再構成を行う。この処理では、ツリー合成部2020は、ステップS505で復号したレーザーID以外の球面座標残差と、ステップS506で予測したレーザーID以外の予測器とを加算することで、球面座標情報を再構成する。
【0205】
かかる再構成が完了した後、本動作は、ステップS1304へ進み、処理を終了する。
【0206】
ステップS1303において、ツリー合成部2020は、レーザーIDも含めた球面座標情報の残差を復号する。この処理では、ツリー合成部2020は、ステップS505で復号した球面座標残差と、ステップS506で予測した予測器とを加算することで、球面座標情報を再構成する。かかる再構成が完了した後、本動作は、ステップS1304へ進み、処理を終了する。
【0207】
以上のように、ツリー合成部2020は、復号及び再構成を行う球面座標情報のうち、レーザーIDのみについて先に復号及び再構成し、親ノードの設定を行う構成としてもよい。
【0208】
このような構成とすることで、復号したレーザーIDを使って親ノードを設定することができ、親ノードの設定に子ノードの数を復号する必要がなく、符号化効率を改善することができる。
【0209】
(点群符号化装置100)
以下、
図14を参照して、本実施形態に係る点群符号化装置100について説明する。
図14は、本実施形態に係る点群符号化装置100の機能ブロックの一例について示す図である。
【0210】
図17に示すように、点群符号化装置100は、座標変換部1010と、幾何情報量子化部1020と、ツリー解析部1030と、近似表面解析部1040と、幾何情報符号化部1050と、幾何情報再構成部1060と、色変換部1070と、属性転移部1080と、RAHT部1090と、LoD算出部1100と、リフティング部1110と、属性情報量子化部1120と、属性情報符号化部1130と、フレームバッファ1140とを有する。
【0211】
座標変換部1010は、入力点群の3次元座標系から、任意の異なる座標系への変換処理を行うよう構成されている。座標変換は、例えば、入力点群を回転することにより、入力点群のx、y、z座標を任意のs、t、u座標に変換してもよい。また、変換のバリエーションの1つとして、入力点群の座標系をそのまま使用してもよい。
【0212】
幾何情報量子化部1020は、座標変換後の入力点群の位置情報の量子化及び座標が重複する点の除去を行うように構成されている。なお、量子化ステップサイズが1の場合は、入力点群の位置情報と量子化後の位置情報とが一致する。すなわち、量子化ステップサイズが1の場合は、量子化を行わない場合と等価になる。
【0213】
ツリー解析部1030は、量子化後の点群の位置情報を入力として、後述のツリー構造に基づいて、符号化対象空間のどのノードに点が存在するかについて示すoccupancy codeを生成するように構成されている。
【0214】
ツリー解析部1030は、本処理において、符号化対象空間を再帰的に直方体で区切ることにより、ツリー構造を生成するように構成されている。
【0215】
ここで、ある直方体内に点が存在する場合、かかる直方体を複数の直方体に分割する処理を、直方体が所定のサイズになるまで再帰的に実行することでツリー構造を生成することができる。なお、かかる各直方体をノードと呼ぶ。また、ノードを分割して生成される各直方体を子ノードと呼び、子ノード内に点が含まれるか否かについて0又は1で表現したものがoccupancy codeである。
【0216】
以上のように、ツリー解析部1030は、所定のサイズになるまでノードを再帰的に分割しながら、occupancy codeを生成するように構成されている。
【0217】
本実施形態では、上述の直方体を常に立方体として8分木分割を再帰的に行う「Octree」と呼ばれる手法、及び、8分木分割に加え、4分木分割及び2分木分割を行う「QtBt」と呼ばれる手法を使用することができる。
【0218】
ここで、「QtBt」を使用するか否かについては、制御データとして点群復号装置200に伝送される。
【0219】
或いは、任意のツリー構成を用いるPredictive geometry codingを使用するように指定されてもよい。かかる場合、ツリー解析部1030が、ツリー構造を決定し、決定されたツリー構造は、制御データとして点群復号装置200へ伝送される。
【0220】
例えば、ツリー構造の制御データは、
図6で説明した手順で復号できるよう構成されていてもよい。
【0221】
近似表面解析部1040は、ツリー解析部1030によって生成されたツリー情報を用いて、近似表面情報を生成するように構成されている。
【0222】
近似表面情報は、例えば、物体の3次元点群データを復号する際等において、点群が物体表面に密に分布しているような場合に、個々の点群を復号するのではなく、点群の存在領域を小さな平面で近似して表現したものである。
【0223】
具体的には、近似表面解析部1040は、例えば、「Trisoup」と呼ばれる手法で、近似表面情報を生成するように構成されていてもよい。また、Lidar等で取得した疎な点群を復号する場合は、本処理を省略することができる。
【0224】
幾何情報符号化部1050は、ツリー解析部1030によって生成されたoccupancy code及び近似表面解析部1040によって生成された近似表面情報等のシンタックスを符号化してビットストリーム(幾何情報ビットストリーム)を生成するように構成されている。ここで、ビットストリームには、例えば、
図4で説明したシンタックスを含まれていてもよい。
【0225】
符号化処理は、例えば、コンテクスト適応二値算術符号化処理である。ここで、例えば、シンタックスは、位置情報の復号処理を制御するための制御データ(フラグやパラメータ)を含む。
【0226】
幾何情報再構成部1060は、ツリー解析部1030によって生成されたツリー情報及び近似表面解析部1040によって生成された近似表面情報に基づいて、符号化対象の点群データの各点の幾何情報(符号化処理が仮定している座標系、すなわち、座標変換部1010における座標変換後の位置情報)を再構成するように構成されている。
【0227】
フレームバッファ1140は、幾何情報再構成部1060によって再構成された幾何情報を入力とし、参照フレームとして保存するように構成されている。
【0228】
保存された参照フレームは、ツリー解析部1030において時間的に異なるフレームのインター予測を行う場合に、フレームバッファ1140から読み出されて参照フレームとして使用される。
【0229】
ここで、各フレームに対してどの時刻の参照フレームを用いるかどうかが、例えば、符号化効率を表すコスト関数の値に基づいて決定され、使用する参照フレームの情報が制御データとして点群復号装置200へ伝送されてもよい。
【0230】
色変換部1070は、入力の属性情報が色情報であった場合に、色変換を行うように構成されている。色変換は、必ずしも実行する必要は無く、色変換処理の実行の有無については、制御データの一部として符号化され、点群復号装置200へ伝送される。
【0231】
属性転移部1080は、入力点群の位置情報、幾何情報再構成部1060における再構成後の点群の位置情報及び色変換部1070での色変化後の属性情報に基づいて、属性情報の歪みが最小となるように属性値を補正するように構成されている。具体的な補正方法は、例えば、非特許文献1に記載の方法を適用できる。
【0232】
RAHT部1090は、属性転移部1080による転移後の属性情報及び幾何情報再構成部1060によって生成された幾何情報を入力とし、RAHT(Region Adaptive Hierarchical Transform)と呼ばれるHaar変換の一種を用いて、各点の残差情報を生成するように構成されている。RAHTの具体的な処理としては、例えば、上述の非特許文献1に記載の方法を用いることができる。
【0233】
LoD算出部1100は、幾何情報再構成部1060によって生成された幾何情報を入力とし、LoD(Level of Detail)を生成するように構成されている。
【0234】
LoDは、ある点の属性情報から、他のある点の属性情報を予測し、予測残差を符号化或いは復号するといった予測符号化を実現するための参照関係(参照する点及び参照される点)を定義するための情報である。
【0235】
言い換えると、LoDは、幾何情報に含まれる各点を複数のレベルに分類し、下位のレベルに属する点については上位のレベルに属する点の属性情報を用いて属性を符号化或いは復号するといった階層構造を定義した情報である。
【0236】
LoDの具体的な決定方法としては、例えば、上述の非特許文献1に記載の方法を用いてもよい。
【0237】
リフティング部1110は、LoD算出部1100によって生成されたLoD及び属性転移部1080での属性転移後の属性情報を用いて、リフティング処理により残差情報を生成するように構成されている。
【0238】
リフティングの具体的な処理としては、例えば、上述の非特許文献1に記載の方法を用いてもよい。
【0239】
属性情報量子化部1120は、RAHT部1090又はリフティング部1110から出力される残差情報を量子化するように構成されている。ここで、量子化ステップサイズが1の場合は、量子化を行わない場合と等価である。
【0240】
属性情報符号化部1130は、属性情報量子化部1120から出力される量子化後の残差情報等をシンタックスとして符号化処理を行い、属性情報に関するビットストリーム(属性情報ビットストリーム)を生成するように構成されている。
【0241】
符号化処理は、例えば、コンテクスト適応二値算術符号化処理である。ここで、例えば、シンタックスは、属性情報の復号処理を制御するための制御データ(フラグ及びパラメータ)を含む。
【0242】
点群符号化装置100は、以上の処理により、点群内の各点の位置情報及び属性情報を入力として符号化処理を行い、幾何情報ビットストリーム及び属性情報ビットストリームを出力するように構成されている。
【0243】
また、上述の点群符号化装置100及び点群復号装置200は、コンピュータに各機能(各工程)を実行させるプログラムであって実現されていてもよい。
【0244】
なお、上記の各実施形態では、本発明を点群符号化装置100及び点群復号装置200への適用を例にして説明したが、本発明は、かかる例のみに限定されるものではなく、点群符号化装置100及び点群復号装置200の各機能を備えた点群符号化/復号システムにも同様に適用できる。
【産業上の利用可能性】
【0245】
なお、本実施形態によれば、例えば、動画像通信において総合的なサービス品質の向上を実現できることから、国連が主導する持続可能な開発目標(SDGs)の目標9「レジリエントなインフラを整備し、持続可能な産業化を推進するとともに、イノベーションの拡大を図る」に貢献することが可能となる。
【符号の説明】
【0246】
10…点群処理システム
100…点群符号化装置
1010…座標変換部
1020…幾何情報量子化部
1030…ツリー解析部
1040…近似表面解析部
1050…幾何情報符号化部
1060…幾何情報再構成部
1070…色変換部
1080…属性転移部
1090…RAHT部
1100…LoD算出部
1110…リフティング部
1120…属性情報量子化部
1130…属性情報符号化部
1140…フレームバッファ
200…点群復号装置
2010…幾何情報復号部
2020…ツリー合成部
2030…近似表面合成部
2040…幾何情報再構成部
2050…逆座標変換部
2060…属性情報復号部
2070…逆量子化部
2080…RAHT部
2090…LoD算出部
2100…逆リフティング部
2110…逆色変換部
2120…フレームバッファ