以下、本発明の実施の形態について、図面を参照しながら説明する。なお、以下の実施形態における構成要素は、適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、以下の実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
(第1実施形態)
以下、図1~図24を参照して、本発明の第1実施形態に係る点群処理システム10について説明する。図1は、本実施形態に係る実施形態に係る点群処理システム10を示す図である。
図1に示すように、点群処理システム10は、点群符号化装置100及び点群復号装置200を有する。
点群符号化装置100は、入力点群信号を符号化することによって符号化データ(ビットストリーム)を生成するように構成されている。点群復号装置200は、ビットストリームを復号することによって出力点群信号を生成するように構成されている4
なお、入力点群信号及び出力点群信号は、点群内の各点の位置情報と属性情報とから構成される。属性情報は、例えば、各点の色情報や反射率である。
ここで、かかるビットストリームは、点群符号化装置100から点群復号装置200に対して伝送路を介して送信されてもよい。また、ビットストリームは、記憶媒体に格納された上で、点群符号化装置100から点群復号装置200に提供されてもよい。
(点群復号装置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側から伝送される。
或いは、制御データによってPredicitive codingを使用するように指定された場合、ツリー合成部2020は、点群符号化装置100において決定した任意のツリー構成に基づいて各点の座標を復号するように構成されている。
近似表面合成部2030は、ツリー合成部2020によって生成されたツリー情報を用いて近似表面情報を生成し、かかる近似表面情報に基づいて点群を復号するように構成されている。
近似表面情報は、例えば、物体の3次元点群データを復号する際等において、点群が物体表面に密に分布しているような場合に、個々の点群を復号するのではなく、点群の存在領域を小さな平面で近似して表現したものである。
具体的には、近似表面合成部2030は、例えば、「Trisoup」と呼ばれる手法で、近似表面情報を生成し、点群を復号することができる。「Trisoup」の具体的な処理例については後述する。また、Lidar等で取得した疎な点群を復号する場合は、本処理を省略することができる。
幾何情報再構成部2040は、ツリー合成部2020によって生成されたツリー情報及び近似表面合成部2030によって生成された近似表面情報を元に、復号対象の点群データの各点の幾何情報(復号処理が仮定している座標系における位置情報)を再構成するように構成されている。
逆座標変換部2050は、幾何情報再構成部2040によって再構成された幾何情報を入力として、復号処理が仮定している座標系から、出力点群信号の座標系に変換を行い、位置情報を出力するように構成されている。
フレームバッファ2120は、幾何情報再構成部2040によって再構成された幾何情報を入力として、参照フレームとして保存するように構成されている。保存した参照フレームは、ツリー合成部2020において時間的に異なるフレームのインター予測を行う場合に、フレームバッファ2120から読み出されて参照フレームとして使用される。
ここで、各フレームに対してどの時刻の参照フレームを用いるかどうかは、例えば、点群符号化装置100からビットストリームとして伝送されてくる制御データに基づいて決定されてもよい。
属性情報復号部2060は、点群符号化装置100から出力されるビットストリームのうち、属性情報に関するビットストリーム(属性情報ビットストリーム)を入力とし、シンタックスを復号するように構成されている。
復号処理は、例えば、コンテクスト適応二値算術復号処理である。ここで、例えば、シンタックスは、属性情報の復号処理を制御するための制御データ(フラグ及びパラメータ)を含む。
また、属性情報復号部2060は、復号したシンタックスから、量子化済み残差情報を復号するように構成されている。
逆量子化部2070は、属性情報復号部2060によって復号された量子化済み残差情報と、属性情報復号部2060によって復号された制御データの一つである量子化パラメータとを元に、逆量子化処理を行い、逆量子化済み残差情報を生成するように構成されている。
逆量子化済み残差情報は、復号対象の点群の特徴に応じて、RAHT部2080及びLoD算出部2090のいずれかに出力される。いずれに出力されるかは、属性情報復号部2060によって復号される制御データによって指定される。
RAHT部2080は、逆量子化部2070によって生成された逆量子化済み残差情報及び幾何情報再構成部2040によって生成された幾何情報を入力とし、RAHT(Region Adaptive Hierarchical Transform)と呼ばれるHaar変換(復号処理においては、逆Haar変換)の一種を用いて、各点の属性情報を復号するように構成されている。RAHTの具体的な処理としては、例えば、文献1([PCC]An exploratory model for inter geometry-based PCC、ISO/IEC JTC1/SC29/WG11 m44754)に記載の方法を用いることができる。
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~図5を用いて幾何情報復号部2010で復号される制御データについて説明する。
図3は、幾何情報復号部2010で受信する符号化データ(ビットストリーム)の構成の一例である。
第1に、ビットストリームは、GPS2011を含んでいてもよい。GPS2011は、ジオメトリパラメータセットとも呼ばれ、幾何情報の復号に関する制御データの集合である。具体例については後述する。各GPS2011は、複数のGPS2011が存在する場合に個々を識別するためのGPS id情報を少なくとも含む。
第2に、ビットストリームは、GSH2012A/2012Bを含んでいてもよい。GSH2012A/2012Bは、ジオメトリスライスヘッダ或いはジオメトリデータユニットヘッダとも呼ばれ、後述するスライスに対応する制御データの集合である。以降では、スライスという呼称を用いて説明するが、スライスをデータユニットと読み替えることもできる。具体例については後述する。GSH2012A/2012Bは、各GSH2012A/2012Bに対応するGPS2011を指定するためのGPS id情報を少なくとも含む。
第3に、ビットストリームは、GSH2012A/2012Bの次に、スライスデータ2013A/2013Bを含んでいてもよい。スライスデータ2013A/2013Bには、幾何情報を符号化したデータが含まれている。スライスデータ2013A/2013Bの一例としては、後述するoccupancy codeが挙げられる。
以上のように、ビットストリームは、各スライスデータ2013A/2013Bに、1つずつGSH2012A/2012B及びGPS2011が対応する構成となる。
上述のように、GSH2012A/2012Bにて、どのGPS2011を参照するかをGPS id情報で指定するため、複数のスライスデータ2013A/2013Bに対して共通のGPS2011を用いることができる。
言い換えると、GPS2011は、スライスごとに必ずしも伝送する必要がない。例えば、図3のように、GSH2012B及びスライスデータ2013Bの直前では、GPS2011を符号化しないようなビットストリームの構成とすることもできる。
なお、図3の構成は、あくまで一例である。各スライスデータ2013A/2013Bに、GSH2012A/2012B及びGPS2011が対応する構成となっていれば、ビットストリームの構成要素として、上述以外の要素が追加されてもよい。
例えば、図3に示すように、ビットストリームは、シーケンスパラメータセット(SPS)2001を含んでいてもよい。また、同様に、伝送に際して、図3と異なる構成に整形されてもよい。更に、後述する属性情報復号部2060で復号されるビットストリームと合成して単一のビットストリームとして伝送されてもよい。
図4は、GPS2011のシンタックス構成の一例である。
なお、以下で説明するシンタックス名は、あくまで一例である。以下で説明したシンタックスの機能が同様であれば、シンタックス名は異なっていても差し支えない。
GPS2011は、各GPS2011を識別するためのGPS id情報(gps_geom_parameter_set_id)を含んでもよい。
なお、図4のDescriptor欄は、各シンタックスが、どのように符号化されているかを意味している。ue(v)は、符号無し0次指数ゴロム符号であることを意味し、u(1)は、1ビットのフラグであることを意味する。
GPS2011は、ツリー合成部2020でインター予測を行うか否かを制御するフラグ(interprediction_enabled_flag)を含んでもよい。
例えば、interprediction_enabled_flagの値が「0」の時はインター予測を行わないと定義し、interprediction_enabled_flagの値が「1」の時はインター予測を行うと定義してもよい。
なお、interprediction_enabled_flagは、GPS2011ではなくSPS2001に含んでいてもよい。
GPS2011は、近似表面合成部2030でTrisoupを使用するか否かを制御するフラグ(trisoup_enabled_flag)を含んでもよい。
例えば、trisoup_enabled_flagの値が「0」の時はTrisoupを使用しないと定義し、trisoup_enabled_flagの値が「1」の時はTrisoupを使用すると定義してもよい。
幾何情報復号部2020は、Trisoupを使用するとき、すなわち、trisoup_enabled_flagの値が「1」の時、追加で以下のシンタックスを復号するように構成されていてもよい。
なお、trisoup_enabled_flagは、GPS2011ではなくSPS2001に含まれていてもよい。
GPS2011は、複数レベルでのTrisoupを許可するか否かを制御するフラグ(trisoup_multilevel_enabled_flag、第1フラグ)を含んでもよい。
例えば、trisoup_multilevel_enabled_flagの値が「0」の時は複数レベルでのTrisoupを許可しない、すなわち、単一のレベルでのTrisoupを行うと定義し、trisoup_multilevel_enabled_flagの値が「1」の時は複数レベルでのTrisoupを許可すると定義してもよい。
なお、当該シンタックスがGPS2011に含まれない場合、当該シンタックスの値を単一のレベルでのTrisoupを行う場合の値、すなわち、「0」とみなしてよい。
なお、trisoup_multilevel_enabled_flagは、GPS2011ではなくSPS2001に含まれるよう定義してもよい。この場合、SPS2001にtrisoup_multilevel_enabled_flagが含まれていない場合、当該シンタックスの値を単一のレベルでのTrisoupを行う場合の値、すなわち、「0」とみなしてよい。
図5は、GSH2012のシンタックス構成の一例である。なお、前述の通り、GSHは、GDUH(Geometry Data Unit Header)とも呼ばれる。
幾何情報復号部2020は、複数レベルでのTrisoupを許可するとき、すなわち、trisoup_multilevel_enabled_flagの値が「1」の時、追加で以下のシンタックスを復号するように構成されていてもよい。
GSH2012は、複数レベルでのTrisoupを許可するとき、Trisoupノードサイズの最大値を規定するシンタックス(log2_trisoup_max_node_size_minus2)を含んでもよい。
当該シンタックスは、実際のTrisoupノードサイズの最大値について、2を底とする対数に変換した値として表現されていてもよい。更に、当該シンタックスは、実際のTrisoupノードサイズの最大値について、2を底とする対数に変換した後に2を引いた後の値として表現されていてもよい。
GSH2012は、複数レベルでのTrisoupを許可するとき、Trisoupノードサイズの最小値を規定するシンタックス(log2_trisoup_min_node_size_minus2)を含んでもよい。
当該シンタックスは、実際のTrisoupノードサイズの最小値について、2を底とする対数に変換した値として表現されていてもよい。更に、当該シンタックスは、実際のTrisoupノードサイズの最小値について、2を底とする対数に変換した後に2を引いた後の値として表現されていてもよい。
また、当該シンタックスの値は、必ず0以上且つlog2_trisoup_max_node_size_minus2以下となるように制約されていてもよい。
また、この時、図5に示すようにtrisoup_depthをtrisoup_depth=log2_trisoup_max_node_size_minus2-log2_trisoup_min_node_size_minus2+1と定義してもよい。
幾何情報復号部2020は、複数レベルでのTrisoupを許可しないとき、すなわち、trisoup_multilevel_enabled_flagの値が「0」の時、追加で以下のシンタックスを復号するように構成されていてもよい。
GSH2012は、複数レベルでのTrisoupを許可しないとき、かつ、Trisoupを使用するとき、Trisoupノードサイズを規定するシンタックス(log2_trisoup_node_size_minus2)を含んでもよい。
当該シンタックスは、実際のTrisoupノードサイズについて、2を底とする対数に変換した値として表現されていてもよい。更に、当該シンタックスは、実際のTrisoupノードサイズについて、2を底とする対数に変換した後に2を引いた後の値として表現されていてもよい。
また、この時、図5に示すようにtrisoup_depthをtrisoup_depth=1と定義してもよい。
GSH2012は、Trisoupを使用するとき、復号点のサンプリング間隔を制御するシンタックス(trisoup_sampling_value_minus1)を含んでもよい。当該シンタックスの具体的な定義は、例えば、上述の文献1に記載の定義と同様とすることができる。
GSH2012は、Trisoupを使用するとき、かつ、複数レベルでのTrisoupを許可するとき、階層i(i=0,...,trisoup_depth-1)ごとにユニークセグメントが対象階層に存在するか否かを示すフラグ(unique_segments_exist_flag[i])を含んでもよい。例えば、unique_segments_exist_flag[i]の値が「1」の場合は、階層iに少なくとも1つ以上のユニークセグメントが存在することを意味する。また、unique_segments_exist_flag[i]の値が「0」の場合は、階層iにユニークセグメントが1つも存在しないことを意味する。
GSH2012は、階層i(i=0,...,trisoup_depth-1)ごとにユニークセグメントが対象階層に存在する場合、すなわち、unique_segments_exist_flag[i]の値が「1」の場合、追加で対象階層のユニークセグメント数を示すシンタックスのビット数を示すシンタックス(num_unique_segments_bits_minus1[i])及び対象階層のユニークセグメント数を示すシンタックス(num_unique_segments_minus1[i])を含んでもよい。
ここで、num_unique_segments_bits_minus1[i]及びnum_unique_segments_minus1[i]の両方について、それぞれ本来の値から「1」を引いた値をシンタックスの値として符号化してもよい。
GSH2012は、インター予測を行う場合、例えば、interprediction_enabled_flagの値が「1」の場合、参照ノードの最小サイズを示すシンタックス(log2_min_ref_node_size)を含んでもよい。当該シンタックスの値は、参照ノードの最小サイズの値について、2を底とする対数をとった後の値と定義されていてもよい。
なお、本実施形態では、当該シンタックスをGSH2012に備える場合の例について説明するが、当該シンタックスは、GSH2012ではなくGPS2011に含まれていてもよい。
(ツリー合成部2020)
以下、図6~図8を用いてツリー合成部2020の処理について説明する。図6は、ツリー合成部2020における処理の一例を示すフローチャートである。なお、以下では「Octree」を使用してツリーを合成する場合の例について説明する。
ステップS601において、ツリー合成部2020は、全てのDepthの処理が完了したかどうかを確認する。なお、Depth数は、点群符号化装置100から点群復号装置200に伝送するビットストリーム内に制御データとして含まれていてもよい。
ツリー合成部2020は、対象Depthのノードサイズを算出する。「Octree」の場合、最初のDepthのノードサイズは、「2のDepth数乗」と定義されてもよい。すなわち、Depth数をNとする場合、最初のDepthのノードサイズは、2のN乗と定義されてもよい。
また、2番目以降のDepthでのノードサイズは、Nの数を1つずつ減じていくことで定義されてもよい。すなわち、2番目のDepthのノードサイズは、「2の(N-1)乗」として定義され、3番目のDepthのノードサイズは、「2の(N-2)乗」として定義され、・・・と定義されてもよい。
或いは、ノードサイズは、常に2のべき乗で定義されるため、単純に指数部分(N、N-1、N-2、等)の値をノードサイズと考えてもよい。以降の説明では、ノードサイズとは、指数部分の値を指すこととする。
全てのDepthの処理が完了した場合は、ツリー合成部2020は、ステップS609へ進み、全てのDepthの処理が完了していない場合は、ツリー合成部2020は、ステップS602へ進む。
言い換えると、対象Depthがn番目のDepthの時、(N-n)=0の場合は、ツリー合成部2020は、ステップS609へ進み、(N-n)>0の場合は、ツリー合成部2020は、ステップS602へ進む。
ここで、Trisoupを使用するか否かを制御するフラグ(trisoup_enabled_flag)がTrisoupを使用することを示している場合、すなわち、trisoup_enabled_flagの値が「1」の時は、ツリー合成部2020は、処理するDepth数を、Trisoupノードサイズの最小値を規定するシンタックス(log2_trisoup_min_node_size_minus2)又はTrisoupノードサイズを規定するシンタックス(log2_trisoup_node_size_minus2)の値に基づいて変化させてもよい。かかる場合、例えば、以下のように定義してもよい。
処理Depth数=全Depth数-(最小の)Trisoupノードサイズ
ここで、最小のTrisoupノードサイズについては、例えば、(log2_trisoup_min_node_size_minus2+2)で定義できる。同様に、Trisoupノードサイズについては、(log2_trisoup_node_size_minus2+2)で定義できる。
この場合、全ての処理Depth数の処理が完了した場合は、ツリー合成部2020は、ステップS609へ進み、そうでない場合は、ツリー合成部2020は、ステップS602へ進む。
言い換えると、(処理Depth数-n)=0の場合は、ツリー合成部2020は、ステップS609へ進み、(処理Depth数-n)>0の場合は、ツリー合成部2020は、ステップS602へ進む。
また、ツリー合成部2020は、ステップS609へ進む際のノードサイズ(N-処理Depth数)を持つ全てのノードには、Trisoupが適用されると判定してもよい。
ステップS602において、ツリー合成部2020は、対象Depthにて後述するTrisoup_applied_flagを復号する必要があるか否かを判定する。
例えば、「複数レベルでのTrisoupが許可(trisoup_multilevel_enabled_flagの値が「1」)」で、且つ、「対象Depthのノードサイズ(N-n)が最大のTrisoupノードサイズ以下」の場合に、ツリー合成部2020は、「Trisoup_applied_flagの復号が必要である」と判定してもよい。
また、ツリー合成部2020は、上述の条件が満たされない場合、「Trisoup_applied_flagの復号が必要ない」と判定してもよい。
ここで、最大のTrisoupノードサイズについては、例えば、(log2_trisoup_max_node_size_minus3+2)で定義できる。
上述の判定が完了したら、ツリー合成部2020は、ステップS703へ移る。
ステップS603において、ツリー合成部2020は、対象Depthに含まれる全てのノードの処理が完了したかどうかを判定する。
対象Depthの全てのノードの処理が完了したと判定した場合、ツリー合成部2020は、ステップS601へ移り、次のDepthの処理を行う。
一方、対象Depthの全てのノードの処理が完了していない場合、ツリー合成部2020は、ステップS604へ移る。
ステップS604において、ツリー合成部2020は、ステップS602で判定したTrisoup_applied_flagの復号の要否について確認する。
Trisoup_applied_flagの復号が必要であると判定されている場合は、ツリー合成部2020は、ステップS605へ進み、Trisoup_applied_flagの復号が必要でないと判定されている場合は、ツリー合成部2020は、ステップS608へ移る。
ステップS605において、ツリー合成部2020は、Trisoup_applied_flagを復号する。
Trisoup_applied_flagは、対象ノードにTrisoupを適用するか否かを示す1ビットのフラグ(第2フラグ)である。例えば、かかるフラグの値が「1」の時に対象ノードにTrisoupを適用すると定義し、かかるフラグの値が「0」の時に対象ノードにTrisoupを適用しないと定義してもよい。
ツリー合成部2020は、Trisoup_applied_flagを復号した後、ステップS606へ移る。
ステップS606において、ツリー合成部2020は、ステップS605で復号したTrisoup_applied_flagの値を確認する。
対象ノードにTrisoupを適用する場合、すなわち、Trisoup_applied_flagの値が「1」の場合は、ツリー合成部2020は、ステップS607へ移る。
対象ノードにTrisoupを適用しない場合、すなわち、Trisoup_applied_flagの値が「0」の場合は、ツリー合成部2020は、ステップS608へ移る。
ステップS607において、ツリー合成部2020は、対象ノードを、Trisoupを適用するノード、すなわち、Trisoupノードとして記憶する。かかる対象ノードに対しては、これ以上、「Octree」によるノードの分割を適用しないこととする。その後、ツリー合成部2020は、ステップS603に進み、次のノードの処理へ移る。
ステップS608において、ツリー合成部2020は、occpancy codeと呼ばれる情報を復号する。
occpancy codeは、「Octree」の場合は、対象ノードをx、y、z軸方向にそれぞれ半分に分割して、8つのノード(子ノードと呼ぶ)に分割した際に、それぞれの子ノード内に復号対象の点が含まれているか否かを示す情報である。
例えば、occpancy codeは、各子ノードに対して1ビットの情報を割り当て、かかる1ビットの情報が「1」の場合は、かかる子ノード内に復号対象の点が含まれると定義され、かかる1ビットの情報が「0」の場合は、かかる子ノード内に復号対象の点が含まれないと定義されてもよい。
ツリー合成部2020は、かかるoccpancy codeを復号する際に、各子ノードに復号対象の点が存在する確率を予め推定し、その確率に基づいて各子ノードに対応するビットをエントロピー復号してもよい。
同様に、点群符号化装置100においては、エントロピー符号化してもよい。更に、かかる確率の推定に、インター予測を用いてもよい。インター予測の具体的な方法としては、例えば、上述の文献1に記載の方法を適用できる。更に、インター予測を行う際の参照点群に、アップサンプルした点群を用いてもよい。
図7~8及び図22~23を用いて、インター予測を用いる場合のoccpancy codeの復号処理の具体例について説明する。
図7は、ノード毎のoccpancy codeの復号処理の具体例を示すフローチャートである。言い換えると、図7は、図6のステップS608の処理の具体例を示すフローチャートである。
図7に示すように、ステップS701において、ツリー合成部2020は、コンテクストの選択を行う。コンテクストは、後段の占有情報復号の際のエントロピー復号において使用する確率分布に対応している。
図8は、インター予測を用いて4種類のコンテクスト(no pred/pred0/pred1/predL)からいずれか1つを選択する場合のフローチャートの一例である。
以下、図8を用いてコンテクスト選択の一例を説明する。なお、図8では、コンテクストが4種類の例について説明するが、コンテクストの数は、4種類でなくともよい。
図8に示すように、ステップS801において、ツリー合成部2020は、インター予測の精度を判定する。
インター予測の精度については、例えば、対象ノードの親ノードにおける子ノード(Octreeの場合、8つの子ノード)について、選択したコンテクスト及び実際の点の有無によって判断できる。
例えば、pred0のコンテクストを選択した子ノードについて、実際に点が存在しなかった場合を正解とし、実際に点が存在した場合を不正解とする。一方、pred1又はpredLを選択した子ノードについては、実際に点が存在した場合を正解とし、実際に点が存在しなかった場合を不正解とする。
ここで、親ノードに属する子ノードについて、正解となった子ノードの数が予め定めた閾値より大きい場合、インター予測の精度は「良い」と判断できる。一方、親ノードに属する子ノードについて、正解となった子ノードの数が予め定めた閾値以下の場合、インター予測の精度は「悪い」と判断できる。
インター予測の精度が「良い」と判断された場合、ツリー合成部2020は、ステップS802へ進む。インター予測の精度が「悪い」と判断された場合、ツリー合成部2020は、ステップS805へ進み、対象ノードに属する全ての子ノードについてコンテクストを「no pred」とし、処理を終了する。
ステップS802において、ツリー合成部2020は、動き補償した参照フレームにおいて、対象ノードと同じ位置の領域に少なくとも1点の参照点が存在するか否かを確認する。
対象ノードと同じ位置の領域に少なくとも1点の参照点が存在する場合、ツリー合成部2020は、ステップS803へ進む。一方、対象ノードと同じ位置の領域に参照点が1点もない場合、ツリー合成部2020は、ステップS805へ進み、対象ノードに属する全ての子ノードについてコンテクストを「no pred」とし、処理を終了する。
ステップS803以降では、ツリー合成部2020は、対象ノードに属する子ノード毎に判定を行う。
ステップS803において、ツリー合成部2020は、動き補償した参照フレームにおいて、対象子ノードと同じ位置の領域に少なくとも1点の参照点が存在するか否かを確認する。
対象子ノードと同じ位置の領域に少なくとも1点の参照点が存在する場合、ツリー合成部2020は、ステップS804へ進む。一方、対象子ノードと同じ位置の領域に参照点が1点もない場合、ツリー合成部2020は、ステップS806へ進み、対象子ノードのコンテクストを「pred0」とする。
対象ノードの全ての子ノードについてコンテクスト選択が完了していない場合、ツリー合成部2020は、ステップS803へ戻り、次の子ノードについて同様の処理を行う。
対象ノードの全ての子ノードについてコンテクスト選択が完了した場合、ツリー合成部2020は、処理を終了する。
ステップS804において、ツリー合成部2020は、動き補償した参照フレームにおいて、対象子ノードと同じ位置の領域に予め定めた閾値以上の数の参照点が存在するか否かを確認する。
対象子ノードと同じ位置の領域に予め定めた閾値以上の数の参照点が存在する場合、ツリー合成部2020は、ステップS808へ進み、対象子ノードのコンテクストを「predL」とする。
一方、対象子ノードと同じ位置の領域に予め定めた閾値未満の数の参照点しか存在しない場合、ツリー合成部2020は、ステップS807へ進み、対象子ノードのコンテクストを「pred1」とする。
ステップS807又はS808の処理の後、対象ノードの全ての子ノードについてコンテクスト選択が完了していない場合、ツリー合成部2020は、ステップS804へ戻り、次の子ノードについて同様の処理を行う。
対象ノードの全ての子ノードについてコンテクスト選択が完了した場合、ツリー合成部2020は、処理を終了する。
以上のようにコンテクストを選択した後、ツリー合成部2020は、ステップS702へ進む。
ステップS702において、ツリー合成部2020は、ステップS701で選択したコンテクストに基づいて、対象ノードの各子ノードの占有情報、すなわち、occpancy codeを復号する。
ここで、コンテクストは、それぞれ独立した確率分布に対応している。後述するステップS703のコンテクスト更新によって、コンテクストごとに復号対象の点が存在する確率が学習される。
なお、各コンテクストにおける確率分布の初期値は、例えば、点が存在する確率50%(=存在しない確率も50%)と定義することができる。
ステップS702において、ツリー合成部2020は、コンテクストに対応する確率分布を基にエントロピー復号を行い、各子ノードに点が存在するか(「1」であるか)否か(「0」であるか)を復号する。occpancy codeの復号完了後、ツリー合成部2020は、ステップS703へ進む。
ステップS703において、ツリー合成部2020は、コンテクストを更新する。
例えば、ツリー合成部2020は、ステップS703において、各コンテクストにおいて、占有情報を復号した結果点が存在した場合、各コンテクストに紐づく確率分布を、点が存在する確率が高くなるように更新する。
一方、ツリー合成部2020は、ステップS703において、各コンテクストにおいて、占有情報を復号した結果点が存在しなかった場合、各コンテクストに紐づく確率分布を、点が存在する確率が低くなるように更新する。
コンテクストの更新が完了したら、ツリー合成部2020は、ステップS704へ進み、処理を終了する。
上述のステップS701の処理は、例えば、図22に示すような処理でもよい。
図22は、図7におけるステップS701の処理の一例を示すフローチャートである。図22と図8との差分は、ステップS2202のみである。したがって、図8と同様の符号を付している処理については、図8と同様の処理とすることができるため、再度の説明は省略する。
以下、図22におけるステップS2202について説明する。
図22に示すように、ステップS2202において、ツリー合成部2020は、参照ノード内に少なくとも1点の参照点が存在するか否かを判定し、参照ノード内に少なくとも1点の参照点が存在する場合には、ステップS803へ進み、参照ノード内に参照点が1点も存在しない場合には、ステップS805へ進む。
ここで、図23を用いて、参照ノード内に少なくとも1点の参照点が存在するか否かを判定する方法の具体例について説明する。
図23は、ステップS2202の処理の一例を示すフローチャートである。
図23に示すように、ステップS2301において、ツリー合成部2020は、対象ノードの参照先が所定階層にセットされているか否かを確認する。
ここで、Octree処理の最初の階層におけるノード、いわゆるルートノードにおいては、初期値として対象ノードの参照先は対象階層にセットしておくものとする。
対象ノードの参照先が所定階層にセットされている場合は、ツリー合成部2020は、ステップS2302へ進み、対象ノードの参照先が所定階層にセットされていない場合、例えば、対象階層にセットされている場合は、ツリー合成部2020は、ステップS2304へ進む。
ステップS2302において、ツリー合成部2020は、対象ノードに保存されている所定階層の参照点の有無に関する情報を、対象ノードの参照点の有無として出力する。
すなわち、所定階層の参照点の有無に関する情報が「有」の場合は、ステップS2202において、ツリー合成部2020は、参照ノード内に少なくとも1点の参照点が存在すると判定し、所定階層の参照点の有無に関する情報が「無」の場合は、ステップS2202において、ツリー合成部2020は、参照ノード内に参照点が1点も存在しないと判定する。
上述の処理が終了後、ツリー合成部2020は、ステップS2303へ進む。
ステップS2303において、ツリー合成部2020は、対象ノードを分割することによって生成される各子ノードに対して、参照先を所定階層にセットする。
更に、ツリー合成部2020は、対象ノードに保存されている所定階層の参照点の有無に関する情報を、各子ノードの所定階層の参照点の有無に関する情報としてコピーする。言い換えると、ツリー合成部2020は、対象ノードに保存されている所定階層の参照点の有無に関する情報を、各子ノードに継承する。
上述の処理が終了後、ツリー合成部2020は、ステップS2308へ移り、処理を終了する。
ステップS2304において、ツリー合成部2020は、対象階層における参照点の有無を出力する。この処理は、ステップS802と同一である。
ステップS2305において、ツリー合成部2020は、対象ノードを分割することによって生成される各子ノードのサイズが、所定サイズであるかどうかを判定する。
所定サイズとは、例えば、GSH2012に含まれる参照ノードの最小サイズを示すシンタックス(log2_min_ref_node_size)によって設定してもよい。
ここで、子ノードのx方向、y方向、z方向のサイズのうち、最も大きなサイズを対象ノードのサイズとしてもよい。
例えば、子ノードのサイズが(x、y、z)=(8、16、4)である場合、「16」を対象ノードのサイズとしてもよい。
また、子ノードのx方向、y方向、z方向のサイズのうち、最も小さなサイズを対象ノードのサイズとしてもよい。
例えば、子ノードのサイズが(x、y、z)=(8、16、4)である場合、「4」を対象ノードのサイズとしてもよい。
上述のように求めた対象ノードのサイズと所定サイズとが等しい場合、ツリー合成部2020は、ステップS2306へ進み、かかる対象ノードのサイズと所定サイズとが等しくない場合は、ツリー合成部2020は、ステップS2307へ進む。
なお、ここで、対象ノード及び所定サイズとしては、それぞれ2の対数をとった値を処理に用いてもよい。
ステップS2306において、ツリー合成部2020は、対象ノードを分割して得られる各子ノードの参照先を所定階層にセットする。
ツリー合成部2020は、ステップS2304で出力した対象ノードの参照点の有無に関する情報を、各子ノードの所定階層の参照点の有無に関する情報としてセットする。
上述の処理が終わった後、ツリー合成部2020は、ステップS2308へ進み、処理を終了する。
ツリー合成部2020は、ステップS2307において、対象ノードを分割して得られる各子ノードの参照先を対象階層にセットし、ステップS2308へ進み、処理を終了する。
なお、ここまでは、便宜上、参照先と所定階層の参照点の有無に関する情報とを分けて説明したが、これらを統合して、数値データとして各ノードに記憶させておいてもよい。
例えば、対象データの値が「-1」の場合は、対象階層を参照先と定義し、対象データの値が「0」の場合は、所定階層を参照先と定義し且つ所定階層の参照点を「無」と定義し、対象データの値が「1」の場合は、所定階層を参照先と定義し且つ所定階層の参照点を「有」と定義していてもよい。
ツリー合成部2020は、occpancy codeを復号した後、ステップS603へ進み、次のノードの処理へ移る。
以上のように、ツリー合成部2020は、階層的に幾何情報の占有情報を復号し、かかる占有情報を復号する際に複数のコンテクストを切り替えて使用し、かかるコンテクストの切り替えに、対象フレームと時間的に異なる復号済みのフレームを参照フレームとして参照し、かかる参照フレーム内で参照する領域を、階層ごとに対象階層のノードサイズと同一の大きさの領域とするか或いは対象階層のノードサイズと異なる大きさの領域とするかを切り替えるように構成されていてもよい。
また、以上のように、ツリー合成部2020は、上述の参照ノード内の参照点の有無に基づいて、コンテクストの切り替えを行うように構成されていてもよい。
また、以上のように、ツリー合成部2020は、対象階層のノードサイズが所定の最小参照ノードサイズ以上の場合には、参照ノードの大きさを対象階層のノードサイズと同一とし、対象階層のノードサイズが所定の最小参照ノードサイズより小さい場合には、参照ノードの大きさを所定の最小参照ノードサイズとするように構成されていてもよい。
以上のように、対象階層のノードサイズが最小参照ノードサイズより小さい場合に、対象階層のノードサイズよりも大きな領域を参照してコンテクストの切り替えを行うことで、参照点群が疎な場合にも空間的な相関を活用して符号化効率を向上させることができる。
また、以上のように、ツリー合成部2020は、制御データから復号した所定の最小参照ノードサイズを用いて、コンテクストの切り替えを行うように構成されていてもよい。
このように、点群符号化装置100側で決定したパラメータに基づいて参照ノードサイズを定義することで、点群復号装置200側では参照ノードサイズを決定するための探索処理が不要となり、点群復号装置200の演算量の増加を防ぐことができる。
また、点群符号化装置100側では、符号化前の原点群データも参照できるため、点群符号化装置100側で参照ノードサイズを決定することで、点群復号装置200側で参照ノードサイズを決定する場合と比較して符号化効率の観点でより適切なノードサイズが決定できる。
また、以上のように、ツリー合成部2020は、ノードごとに、参照先及び所定階層の参照点の有無に関する情報を保持するように構成されていても良い。
また、以上のように、ツリー合成部2020は、対象ノードを分割して得られる子ノードについて、それぞれ参照先及び所定階層の参照点の有無に関する情報を設定するように構成されていてもよい。
また、以上のように、ツリー合成部2020は、対象ノードにおける参照先が所定階層である場合、保持している所定階層の参照点の有無に関する情報を、参照ノード内の参照点の有無に関する情報としてコンテクストの切り替えを行うように構成されていてもよい。
また、以上のように、ツリー合成部2020は、対象ノードにおける参照先が対象階層である場合、参照フレーム内において対象ノードと同一サイズで且つ同一位置の領域を参照ノードとして参照し、参照ノード内での参照点の有無に基づいてコンテクストの切り替えを行うように構成されていてもよい。
以上のように、対象ノードから各子ノードに対して情報を設定することで、子ノード以下の階層では上位階層から継承した値を参照するだけでコンテクスト切り替えが実現可能となり、参照フレーム内での探索処理やメモリアクセスが不要になるといった利点がある。
(近似表面合成部2030)
近似表面合成部2030は、図6で説明したようにツリー合成部2020にてTrisoupノードと判定された各ノードについて、復号処理を行うように構成されている。
以下、図9~図20を用いて近似表面合成部2030の処理の例について説明する。
図9は、近似表面合成部2030の処理の一例を示すフローチャートである。
図9に示すように、ステップS901において、近似表面合成部2030は、ノード毎の頂点位置を復号する。
ここで、近似表面合成部2030は、複数レベルでのTrisoupを許可するとき、すなわち、trisoup_multilevel_enabled_flagの値が「1」の時は、最小Trisoupノードサイズにおけるノード毎に頂点位置を復号する。
一方、近似表面合成部2030は、複数レベルでのTrisoupを許可しないとき、すなわち、trisoup_multilevel_enabled_flagの値が「0」の時は、Trisoupノードサイズにおけるノード毎に頂点位置を復号する。具体的な処理については後述する。
頂点位置の復号が完了した後、近似表面合成部2030は、ステップS902へ進む。
ステップS902において、近似表面合成部2030は、頂点位置を復号したノード毎(最小Trisoupノードサイズ、又は、Trisoupノードサイズにおけるノード毎)に、投影面を決定する。
例えば、x軸、y軸、z軸の3つの軸があるとき、どれか一つの軸を縮退した平面を投影面と呼ぶ。
ステップS902では、近似表面合成部2030は、上述の軸のうちどの軸を縮退するか、すなわち、x-y平面、x-z平面、y-z平面のうちどの平面を投影面とするかを決定する。具体的な処理については後述する。
投影面を決定した後、近似表面合成部2030は、ステップS903へ進む。
ステップS903において、近似表面合成部2030は、投影面に投影した頂点を、例えば反時計回りの順になるようにソートし、前記の順序に従ってindexを付与する。
indexを付与した後、近似表面合成部2030は、ステップS904へ進む。
ステップS904において、近似表面合成部2030は、上述のindex及び対象ノードに存在する頂点数に基づいて、三角形を生成する。
例えば、近似表面合成部2030は、予め頂点数毎にどのindexから三角形を生成するかを定義した表を作成しておき、それを参照することで三角形を生成できる。具体的な表の例については、例えば、上述の文献1に記載の表を用いることができる。
三角形を生成した後、近似表面合成部2030は、ステップS905へ進む。
ステップS905において、近似表面合成部2030は、ステップS904で生成した三角形を基に、点を生成する。具体的な方法は、例えば、上述の文献1に記載の方法を用いることができる。
全てのノードについて点の生成が完了した後、近似表面合成部2030は、ステップS906へ進み、処理を終了する。
次に、ステップS901の頂点位置の復号について、処理の具体例を説明する。図10は、Trisoupの頂点位置の復号処理の一例を示すフローチャートである。
図10に示すように、ステップS1001において、近似表面合成部2030は、全Trisoup階層の処理が完了したかどうかを判定する。ここで、全Trisoup階層の数は、以下の通り定義できる。
複数レベルでのTrisoupを許可するとき、すなわち、trisoup_multilevel_enabled_flagの値が「1」の時は、全Trisoup階層数は、(最大Trisoupノードサイズ-最小Trisoupノードサイズ+1)で定義できる。
すなわち、かかる場合、全Trisoup階層数は、(log2_trisoup_max_node_size_minus2-log2_trisoup_min_node_size_minus2+1)で定義できる。
複数レベルでのTrisoupを許可しないとき、すなわち、trisoup_multilevel_enabled_flagの値が「0」の時は、全Trisoup階層数は、1である。
全てのTrisoup階層の処理が完了した場合は、近似表面合成部2030は、ステップS1007へ進む。全てのTrisoup階層の処理が完了していない場合は、近似表面合成部2030は、ステップS1002へ移る。
ステップS1002において、近似表面合成部2030は、対象Trisoup階層に属するユニークセグメント数を確認する。
ユニークセグメント数が「0」の場合、すなわち、対象Trisoup階層にはTrisoupノードが1つも含まれない場合は、近似表面合成部2030は、ステップS1001へ進み、次のTrisoup階層の処理へ移る。
ユニークセグメント数が「0」より大きい場合は、近似表面合成部2030は、ステップS1003へ移る。
ステップS1003において、近似表面合成部2030は、各ユニークセグメントに対してTrisoup処理に用いる頂点が含まれるか否かを復号する。
なお、各ユニークセグメントに対して存在できる頂点は、1点のみに制限してもよい。この場合、頂点が存在するユニークセグメント数が頂点数と等しいと解釈できる。
近似表面合成部2030は、対象Trisoup階層の全てのユニークセグメントについて頂点の有無を復号した後、ステップS1004へ移る。
ステップS1004において、近似表面合成部2030は、ステップS1003において頂点が存在すると判定された各ユニークセグメントに対して、各ユニークセグメント上のどこに頂点が存在するのかという位置情報を復号する。
位置情報は、例えば、対象Trisoup階層におけるTrisoupノードサイズがL(2のL乗)の場合、Lビットの等長符号で符号化されていてもよい。
近似表面合成部2030は、対象Trisoup階層において、頂点が存在する全てのユニークセグメントに対して頂点位置を復号した後、ステップS1006へ進む。
ステップS1006において、近似表面合成部2030は、対象Trisoup階層におけるノードサイズが最小Trisoupノードサイズの場合、何も処理をせずS1001へ進む。
同様に、近似表面合成部2030は、複数レベルでのTrisoupが許可されていない場合、何も処理をせず、ステップS1001へ進む。
そうでない場合、すなわち、複数レベルでのTrisoupが許可されており、かつ、対象Trisoup階層におけるノードサイズが最小Trisoupノードサイズより大きい場合は、近似表面合成部2030は、ステップS1004で復号した対象Trisoup階層に対応するノードサイズにおける頂点位置に基づいて、最小Trisoupノードサイズにおける頂点位置を生成する。具体的な処理例については後述する。
最小ノードサイズにおける頂点位置生成が完了した後、近似表面合成部2030は、ステップS1001へ進む。
ステップS1007において、近似表面合成部2030は、頂点位置の統合を行う。
例えば、近似表面合成部2030は、ステップS1006において、大きなノードサイズでの頂点位置から、最小Trisoupノードサイズにおける頂点位置を生成した場合、ノードの各辺に頂点が2点以上生成される可能性がある。
もし、頂点が2点以上生成されている辺があった場合、近似表面合成部2030は、これを1点に統合して、辺ごとに頂点が1点ずつになるようにする。
例えば、近似表面合成部2030は、辺上に存在する頂点の座標の平均値をとることで、複数の点を1点に統合することができる。
別の例としては、頂点の数が奇数の場合、近似表面合成部2030は、座標の中央値を持つ点を選択することで頂点を1つに絞ることができる。
また、頂点の数が偶数の場合は、近似表面合成部2030は、座標の中央値を持つ2点を抽出した後、かかる2点の座標値の平均をとることで頂点を1つに絞ることができる。
全ての辺についてそれぞれ頂点を1つずつに統合した後、近似表面合成部2030は、ステップS1008へ進み、処理を終了する。
次に、前記ステップS1006の処理の具体例について説明する。
以下、図11及び図12を用いて、上述のステップS1006の処理の一例を説明する。
図12に、ステップS1004で復号した対象Trisoup階層に対応するノードサイズをN(ノードの一辺の長さが2のN乗)として、最小のTrisoupノードサイズをN-1とした場合の例を示す。
ステップS1006の処理の目的は、図12-1に示す対象Trisoup階層に対応するノードサイズ(図12では、N)における頂点(図12では、4点)から、図12-3に示す最小のTrisoupノードサイズ(図12では、N-1)における頂点(図12では、9点)を生成することである。
図11は、上述のステップS1006の処理の一例を示すフローチャートである。
図11に示すように、近似表面合成部2030は、ステップS1004で復号した対象Trisoup階層に対応するノードサイズにおける頂点位置を入力として、ステップS1101~S1104の処理を行う。
ステップS1101~S1104の処理については、図9におけるステップS902~S905と同様な方法で実現できる。
ここで、図12-1は、ステップS1103の処理結果の例(すなわち、ステップS1104の入力データの例)を示し、図12-2は、ステップS1104の処理結果の例を示す。
図12-1に示すように、近似表面合成部2030は、ステップS1104では、図12-1に示す三角形の面と整数座標位置との交点の全てに点を生成する。
近似表面合成部2030は、図12-1に示す三角形を基に、図12-2に示すように点への変換を行った後、ステップS1105へ進む。
ステップS1105において、近似表面合成部2030は、ステップS1104で生成した点から、最小のTrisoupノードサイズにおける頂点位置を決定する。
具体的には、近似表面合成部2030は、例えば、ステップS1104で生成した点の中から、最小のTrisoupノードサイズに対応する各ノードの辺に隣接する点をそれぞれ抽出し、抽出した点の座標の平均値を求めることで、各辺に対する頂点位置を決定できる。
例えば、近似表面合成部2030は、辺の位置がx軸方向に沿っている場合、例えば(x,y,z)=(a~a+2(N-1),b,c)を満たす位置に辺があった場合、例えば(a~a+2(N-1),b-~b,c-1~c)の領域に存在する点を抽出し、それらの点のx軸座標の平均値eを算出することで、(e,b,c)を頂点位置として決定できる。
近似表面合成部2030は、辺がy軸方向及びz軸方向に沿っている場合も、上記と同様に計算できる。
なお、近似表面合成部2030は、辺に隣接する領域に点が存在しない場合は、かかる辺上には頂点を生成しない。
以上のようにして、近似表面合成部2030は、例えば、図12-3に示すように、最小Trisoupノードサイズにおける頂点位置を生成することができる。
次に、図13及び図14を用いて、ステップS1106の処理の別の具体例について説明する。
図13は、前記ステップS1006の処理の一例を示すフローチャートである。
図13に示すように、近似表面合成部2030は、ステップS1004で復号した対象Trisoup階層に対応するノードサイズにおける頂点位置を入力として、ステップS1301~S1303の処理を行う。
ステップS1301~S1303の処理については、図9におけるステップS902~S904と同様な方法で実現できる。
図14-1は、ステップS1303の処理結果の例を示している。図14-1から分かる通り、ステップS1303の処理結果及び、ステップS1103の処理結果は同様である。
近似表面合成部2030は、図14-1に示すように、三角形を生成した後、ステップS1304へ進む。
ステップS1304において、近似表面合成部2030は、ステップS1303で生成した各三角形の面と最小Trisoupノードサイズに対応するノードの各辺との交点に点を生成する。
図14-2は、ステップS1304の処理結果の一例を示している。近似表面合成部2030は、各辺上に点を生成した後、ステップS1305へ進む。
ステップS1305において、近似表面合成部2030は、ステップS1304において最小Trisoupノードサイズに対応する各辺上に生成された点を統合する。
ステップS1304の処理は、各三角形面と辺との交点に点を生成するため、例えば、ある1つの辺に対して2つ以上の三角面が交差していた場合、同一辺上に2つ以上の頂点が生成される可能性がある。
その場合、近似表面合成部2030は、同一の辺上に存在する点を統合して、辺ごとに頂点を一点とする様に処理してもよい。
具体的には、例えば、辺上に存在する頂点の座標の平均値をとることで、複数の点を1点に統合することができる。
別の例としては、頂点の数が奇数の場合、近似表面合成部2030は、座標の中央値を持つ点を選択することで頂点を1つに絞ることができる。
また、頂点の数が偶数の場合は、近似表面合成部2030は、座標の中央値を持つ2点を抽出した後、かかる2点の座標値の平均をとることで頂点を1つに絞ることができる。
近似表面合成部2030は、上述のように各辺上の点を統合した後、ステップS1306へ進み、処理を終了する。
以上のように、本発明における近似表面合成部2030は、複数レベルでのTrisoupを許容する場合、図10のステップS1004に示すように、頂点位置についてはTrisoupノードサイズ毎に復号し、ステップS1005に示すように、前記頂点位置から最小Trisoupノードサイズにおける頂点位置を生成し、ステップS905に示すように、最小Trisoupノードサイズにおいて点を生成するように構成されていてもよい。
言い換えると、近似表面合成部2030は、複数のノードサイズ毎に頂点の復号処理を実行し、単一のノードサイズで頂点に基づく点の再構成処理を実行するように構成されていてもよい。
また、以上のように、近似表面合成部2030は、制御データから復号した最大ノードサイズ及び最小ノードサイズに基づいて、最大と最小との間の各ノードサイズにおいて頂点の復号処理を実行するように構成されており、かかるノードサイズが最小ノードサイズではない場合、復号した頂点に基づいて、最小ノードサイズにおける頂点位置を生成するように構成されており、単一のノードサイズを最小ノードサイズとするように構成されており、最小ノードサイズにおける頂点位置に基づいて、点の再構成処理を行うように構成されていてもよい。
このような構成とすることで、頂点位置の復号単位を可変とすることで点群の幾何的な特性に応じて頂点に係る情報の符号量を削減しつつ、点の再構成については単一且つ小さなノードサイズで実行することで、復号点群の主観品質を高めることができる。
また、以上のように、近似表面合成部2030は、ノードサイズが最小ノードサイズではない場合、復号した頂点に基づいて点を生成し、生成した点のうち、かかるノードサイズのノードを最小ノードサイズで分割した際の各辺の近傍に存在する点の座標値に基づいて、最小ノードサイズにおける頂点位置を生成するように構成されていてもよい。
このように、近似表面合成部2030における点の再構成処理の一部を流用して最小ノードサイズにおける頂点位置を生成することで、処理回路及び処理関数が流用できるため設計コストを下げることができる。
また、以上のように、近似表面合成部2030は、ノードサイズが最小ノードサイズではない場合、復号した頂点に基づいて点を生成する際、かかるノードサイズのノードを最小ノードサイズで分割した際の各辺上にのみ点を生成するように構成されていてもよい。このように、生成する点数を最小限とすることで、当該処理に必要なメモリ量や、処理量を削減することができる。
また、以上のように、近似表面合成部2030は、ノードサイズが最小ノードサイズではない場合、復号した頂点に基づいて点を生成する際、かかるノードサイズのノードを最小ノードサイズで分割した際の各辺上に複数の点が存在した場合、それらの点を統合し各辺上に頂点が1点ずつとなるように最小ノードサイズにおける頂点位置を生成するように構成されていてもよい。このように、各辺上に頂点数を1点ずつとなるように制限することで、点の再構成処理を簡素化することができる。
また、以上のように、近似表面合成部2030は、ある辺上に、かかる辺に隣接する異なるノードサイズのノードから生成された複数の頂点が存在する場合、それらの点を統合し、各辺上に頂点が1点ずつとなるように頂点位置を生成するように構成されていてもよい。このような構成とすることで、点の再構成処理を簡素化することができる。
また、以上のように、近似表面合成部2030は、ある辺上に、かかる辺に隣接する異なるノードサイズのノードから生成された複数の頂点が存在する場合、かかる隣接するノードのうち、最も小さなノードサイズを持つノードによって生成された頂点を、かかる辺の頂点位置とするように構成されていてもよい。このように、小さなノードサイズにおける頂点位置を使用するようにすることで、より局所的な特徴を再現した点群の再構成が可能となり、主観品質が向上する。
次に、図9におけるステップS902の処理の具体例について説明する。
以下、図15及び図16を用いて、図9におけるステップS902の処理の一例を説明する。
図15は、ステップS902の処理の一例を示すフローチャートである。
図15に示すように、ステップS1501において、近似表面合成部2030は、頂点を各投影面に投影した際の頂点で形成される多角形の面積をそれぞれ算出する。
図16に、ステップS1501の処理の具体例を示す。
例えば、図16-1に示すように、対象ノードについてA~Eの五つの頂点がある場合を考える。
図16-2~図16-4は、図16-1に示す頂点を、それぞれの投影面に投影した際の図である。
ここで、近似表面合成部2030は、各投影面における多角形の面積(図16-2~図16-4において、それぞれ網掛けになっている部分の面積)を算出する。
具体的には、近似表面合成部2030は、各投影面における正方形の中心を原点Oとし、原点O、原点Oと隣り合う2つの頂点(例えば、図16-2における点E及び点D)の計3点で構成される三角形の面積Sは、以下の式で算出できる。
S=|E×D|/2
ここで、E及びDは、原点Oに対する点E及び点Dの三次元座標を示すベクトルを意味し、×記号は、ベクトルの外積を計算する演算子を意味し、|・|は、ベクトルのL2ノルムを意味している。
近似表面合成部2030は、上述の事項を応用して、ステップS903と同様な方法で、各投影面における頂点を、例えば、反時計回りの順になるようにソートし、上述と同様な手法で、全ての隣り合う頂点同士と原点とで作られる三角形の面積を求めたうえで合計することで、図16-2~図16-4の網掛け部分の面積をそれぞれ算出することができる。
以上では、原点Oを各投影面における正方形の中心と定義した場合について説明したが、原点Oは、各投影面の平面上であれば、他の位置に定義しても、上述と同様な方法で多角形の面積を算出することができる。
例えば、近似表面合成部2030は、原点Oについて、投影面における正方形の辺上に位置してもよい。また、例えば、近似表面合成部2030は、各投影面に投影した頂点のうちの一点を、原点Oと定義してもよい。例えば、近似表面合成部2030は、各投影面に投影した頂点を反時計回りの順になるようにソートした後、先頭の頂点を原点Oとして用いてもよい。
近似表面合成部2030は、以上のように各投影面における多角形の面積をそれぞれ算出した後、ステップS1502へ進む。
ステップS1502において、近似表面合成部2030は、ステップS1501で求めた多角形の面積が最も大きい投影面を、投影面として決定する。
近似表面合成部2030は、投影面を決定した後、ステップS1503へ進み、処理を終了する。
なお、近似表面合成部2030は、図15に示す手法で投影面を決定する場合、既にステップS1501において頂点をソートしているため、ステップS903の処理について省略することができる。
以上のように、近似表面合成部2030は、ノードの各辺上に存在する複数の頂点を複数の投影面候補の各々に投影した際に、かかる頂点で定義される多角形の面積が最大となる投影面を、上述の投影面として選択するように構成されてもよい。
このような構成とすることで、投影面上での2次元的な広がりが最も大きな投影面を選択できる。これにより、適切でない投影面を選択することで復号点群の主観画質が劣化することを防止することができる。
以上のように、近似表面合成部2030は、所定の原点と、上述の投影面候補に投影した頂点のうち1つ(第1頂点)と、かかる第一頂点と隣り合う第2頂点と、の三点で構成される三角形の面積を、隣り合う全ての頂点のペアに対して算出することで、上述の多角形(三角形)の面積を算出するように構成されてもよい。
このように、多角形を小領域に分割して面積を求めることで、それぞれの小領域の面積算出処理を並列に実行できるため、処理速度を向上させることができる。
また、以上のように、近似表面合成部2030は、上述の原点から第1頂点を指す第1ベクトルと、上述の原点から第2頂点を指す第2ベクトルを定義し、かかる第1ベクトルと第2ベクトルとの外積を用いて、上述の三角形の面積を算出するように構成されていてもよい。このように、ベクトルの外積を用いて演算することで、他の処理で外積処理を行う場合は、処理回路又は処理関数を共通化することで設計を簡素化できる。
また、以上のように、近似表面合成部2030は、上述の投影面候補に投影した頂点を反時計回り或いは時計回りに並べ替え、並べ替えた順に連続する2つの頂点を第1頂点及び第2頂点としてもよい。このように、後段のステップS903と同様な方法でソートを行うことで、処理を共通化して処理量の増加を防ぐことができる。
また、以上のように、近似表面合成部2030は、上述の投影面候補に投影した頂点のうち1つ(第3頂点)を、所定の原点とするように構成されていてもよい。このような構成とすることで、所定の原点を頂点以外の位置に設定した場合と比較して、多角形の面積を算出するために計算が必要な三角形の個数が1つ少なくなるため、演算量の増加を防ぐことができる。
次に、図17~図20を用いて、ステップS902の処理の別の例について説明する。
図17は、ステップS902の処理の一例を示すフローチャートである。
図17に示すように、ステップS1701において、近似表面合成部2030は、頂点座標のx軸、y軸、z軸方向それぞれの最大値と最小値の差分を算出する。
例えば、図19-1に示すように、対象ノードにA~Eの計5点の頂点があった場合、近似表面合成部2030は、図19-2に示すxmax-xmin(x軸方向の座標値の最大値と最小値の差分)、ymax-ymin(y軸方向の座標値の最大値と最小値の差分)及び図19-3に示すzmax-zmin(z軸方向の座標値の最大値と最小値の差分)をそれぞれ算出し、ステップS1702へ進む。
ステップS1702において、近似表面合成部2030は、ステップS1701で算出した「最大値と最小値の差分」のうちの差分が最小となる軸方向がいくつあるかを確認する。
例えば、zmax-zmin<xmax-xmin<ymax-yminという関係となっていた場合(或いは、zmax-zmin<xmax-xmin=ymax-yminという関係となっていた場合)、「最大値と最小値の差分」の最小値を持つ軸方向は1つのみとなる。この場合は、近似表面合成部2030は、ステップS1703へ進む。
一方、例えば、zmax-zmin=xmax-xmin<ymax-yminという関係となっていた場合、「最大値と最小値の差分」の最小値を持つ軸方向は2つとなる。この場合は、近似表面合成部2030は、ステップS1704へ進む。
ステップS1703は、差分の最小値を持つ軸方向が一つのみのケースに対応する処理であり、この場合は、近似表面合成部2030は、差分が最小となる軸を縮退することで投影面を決定する。
例えば、上述の例のように、zmax-zmin<xmax-xmin<ymax-yminとなっていた場合、z軸を縮退して、x-y平面を投影面として決定する。
近似表面合成部2030は、投影面を決定した後、ステップS1706へ進んで処理を終了する。
ステップS1704において、近似表面合成部2030は、各軸方向の辺上の頂点数をカウントする。
例えば、図20-1に示すように、対象ノードにA~Eの計5点の頂点があった場合、x軸方向の辺上に存在する頂点は、図20-2に示す点Aのみであり、y軸方向の辺上に存在する頂点は、図20-3に示す通り0点であり、z軸方向の辺上に存在する頂点は、図20-4に示す通りB~Eの計4点である。
なお、この処理は、x、y、z軸のうち全ての軸を対象にしてもよいし、ステップS1701で求めた「最大値と最小値の差分」の最小値を持つ軸方向のみを対象としてもよい。
例えば、zmax-zmin=xmax-xmin<ymax-yminという関係となっていた場合、本ステップの処理対象をz軸及びx軸のみとしてもよい。
近似表面合成部2030は、上述のように頂点数をカウントした後、ステップS1705へ進む。
ステップS1705において、近似表面合成部2030は、ステップS1704で算出した各軸方向の頂点数が最も大きい軸を縮退することで、投影面を決定する。
例えば、図20の例では、z軸方向の辺上に存在する頂点が最も多いため、近似表面合成部2030は、z軸を縮退して、x-y平面を投影面として決定する。
近似表面合成部2030は、投影面決定後、ステップS1706へ進んで、処理を終了する。
以上のように、近似表面合成部2030は、ノードの各辺を三次元座標のどの座標軸と平行かどうかで分類し、各座標軸に分類された辺上の頂点数をカウントし、カウントした値(頂点数)を用いて、複数の投影面候補の中から、上述の投影面を決定するように構成されていてもよい。
また、以上のように、近似表面合成部2030は、上述の頂点の数が最も大きい軸を縮退することで定義される面を、上述の投影面と決定するように構成されていてもよい。
このような構成とすることで、図15及び図16を用いて説明した手法よりも少ない演算量で、頂点位置の二次元的な広がりを考慮した投影面の決定が可能となる。
また、以上のように、近似表面合成部2030は、上述の三次元座標の座標軸ごとに、各頂点の座標値の最大値と最小値との差分値を算出し、かかる座標軸のうち差分値の最小値を持つ軸が2つ以上ある場合、各座標軸に分類された辺上の頂点数が最も大きい軸を縮退することで定義される面を、上述の投影面とするように構成されていてもよい。
また、以上のように、近似表面合成部2030は、各座標軸に分類された辺上の頂点数が最も大きい軸が2つ以上ある場合、三次元座標の座標軸ごとに、各頂点の座標値の最大値と最小値との差分値を算出し、座標軸のうち差分値が最小となる軸を縮退することで定義される面を、上述の投影面とするように構成されていてもよい。
なお、図17では、近似表面合成部2030は、先にステップS1701及びS1702において「最大値と最小値の差分」を評価した後、必要に応じてステップS1704及びS1705において各軸方向の辺上の頂点数を評価した。この順番は、例えば、図18に示すように、逆にすることもできる。
例えば、図18の例に示す通り、近似表面合成部2030は、ステップS1801及びステップS1802において各軸方向の辺上の頂点数を評価した後、必要に応じてステップS1804及びステップS1805において「最大値と最小値の差分」を評価してもよい。
図18の例では、ステップS1801については、ステップS1704と同様な処理で実現できる。
ステップS1802において、近似表面合成部2030は、x軸、y軸、z軸方向の中で最大の頂点数を持つ軸が1つのみである場合は、ステップS1803へ進み、頂点数が最大となる軸を縮退することで投影面を決定する。
そうでない場合(頂点数の最大値を持つ軸が2つ以上ある場合)は、近似表面合成部2030は、ステップS1804へ進む。
ステップS1804については、ステップS1701と同様な処理で実現できる。
ここで、ステップS1804の処理対象は、x軸、y軸、z軸の全てとしてもよいし、ステップS1802で頂点数が最大となった軸方向のみを処理対象としてもよい。
ステップS1805において、近似表面合成部2030は、ステップS1804の処理対象となった軸の中で、差分値が最も小さい軸を縮退することで、投影面を決定する。
次に、図24を用いて、ステップS902の処理の別の例について説明する。図24は、ステップS902の処理の一例を示すフローチャートである。
図24に示すように、ステップS2401において、近似表面合成部2030は、各投影面に投影した際の各頂点の座標に対して、2×2の直交変換を行う。
以下では、直交変換としてアダマール変換を用いる場合を例に説明する。例えば、座標値として(Px、Py、Pz)を持つ頂点Pをx-y平面に投影した際の座標は、(Px、Py)となる。これに対して2×2のアダマール変換を行って得られる直交変換後の座標(Ha、Hb)は、以下の式によって算出できる。
ここで、1/√2は、ノルムを正規化するための係数であるが、後述のように、本処理では、各頂点の直交変換後の座標値をその大小関係を比較するために用いるため、正規化係数1/√2は省略してもよい。すなわち、近似表面合成部2030は、以下の式によって、(Ha、Hb)を算出してもよい。
上述のように、近似表面合成部2030は、直交変換としてアダマール変換を使用し、正規化係数を省略した場合、座標値PxとPyの加減算のみで直交変換後の座標(Ha、Hb)を算出できる。
このように、まず、近似表面合成部2030は、x-y平面に投影した際の各頂点(1~n)座標に直交変換を適用してn組の座標(Ha1、Hb1)、・・・、(Han、Hbn)、を得た後、直交変換後の各座標軸(ここではa軸とb軸)における座標値の最大値Hamax、Hbmaxと最小値Hamin、Hbminをそれぞれ検出する。
次に、各軸における最大値と最小値との差分値Had=Hamax―Hamin、Hbd=Hbmax―Hbminを算出する。
最後に、近似表面合成部2030は、上述のHad及びHbdを用いて、x-y平面に投影した場合の頂点座標の広がりの大きさを表す変数Axyを算出する。
近似表面合成部2030は、Axyについて、例えば、Axy=Had+Hbdのように、直交変換後の座標値の各軸における最大値と最小値の差分を足し合わせることで算出してもよい。
また、近似表面合成部2030は、Axyについて、例えば、Axy=Had×Hbdのように、直交変換後の座標値の各軸における最大値と最小値の差分を掛け合わせることで算出してもよい。
上述と同様に、近似表面合成部2030は、他の投影面候補であるy-z平面に対応するAyz及びx-z平面に対応するAxzを算出した後、ステップS2402へ進む。
ステップS2402において、近似表面合成部2030は、ステップS2401で算出したAxy、Ayz、Axzを基に投影面を決定する。
例えば、近似表面合成部2030は、Axy、Ayz、Axzのうち、値が最も大きいものに対応する投影面に決定することができる。具体的には、近似表面合成部2030は、例えば、Ayz>Axz>Axzの場合、投影面をy-z平面と決定することができる。
上述のように、近似表面合成部2030は、投影面を決定した後、ステップS2403へ移り、処理を終了する。
以上のように、近似表面合成部2030は、各投影面に投影した際の頂点座標値に直交変換を適用して得られる直交変換後の座標値を用いて、投影面を決定するように構成されていてもよい。
また、以上のように、近似表面合成部2030は、直交変換後の各座標軸において座標値の最大値と最小値との差分値を計算し、かかる差分値に基づいて投影面を決定するように構成されていてもよい。
また、以上のように、近似表面合成部2030は、各投影面候補において、上述の差分値を直交変換後の全ての座標軸について算出し、それらの和或いはそれらの積によって投影面を決定するように構成されていてもよい。
このように直交変換によって座標軸を回転した後の座標値を用いることで、頂点の二次元的な広がりを評価しやすくなる。
また、以上のように、近似表面合成部2030は、直交変換としてアダマール変換を使用するように構成されていてもよい。
また、以上のように、近似表面合成部2030は、直交変換時の正規化係数を省略するように構成されていてもよい。
このような構成とすることで、直交変換前の座標値の加減算のみで直交変換後の座標値を得ることができ、計算量の増加を防ぐことができる。
(点群符号化装置100)
以下、図21を参照して、本実施形態に係る点群符号化装置100について説明する。図21は、本実施形態に係る点群符号化装置100の機能ブロックの一例について示す図である。
図21に示すように、点群符号化装置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に伝送される。
或いは、任意のツリー構成を用いるPredicitive codingを使用するように指定されてもよい。かかる場合、ツリー解析部1030が、ツリー構造を決定し、決定されたツリー構造は、制御データとして点群復号装置200へ伝送される。
例えば、ツリー構造の制御データは、図6で説明した手順で復号できるよう構成されていてもよい。
近似表面解析部1040は、ツリー解析部1030によって生成されたツリー情報を用いて、近似表面情報を生成するように構成されている。
近似表面情報は、例えば、物体の3次元点群データを復号する際等において、点群が物体表面に密に分布しているような場合に、個々の点群を復号するのではなく、点群の存在領域を小さな平面で近似して表現したものである。
具体的には、近似表面解析部1040は、例えば、「Trisoup」と呼ばれる手法で、近似表面情報を生成するように構成されていてもよい。また、Lidar等で取得した疎な点群を復号する場合は、本処理を省略することができる。
幾何情報符号化部1050は、ツリー解析部1030によって生成されたoccupancy code及び近似表面解析部1040によって生成された近似表面情報等のシンタックスを符号化してビットストリーム(幾何情報ビットストリーム)を生成するように構成されている。ここで、ビットストリームには、例えば、図4及び図5で説明したシンタックスを含まれていてもよい。
符号化処理は、例えば、コンテクスト適応二値算術符号化処理である。ここで、例えば、シンタックスは、位置情報の復号処理を制御するための制御データ(フラグやパラメータ)を含む。
幾何情報再構成部1060は、ツリー解析部1030によって生成されたツリー情報及び近似表面解析部1040によって生成された近似表面情報に基づいて、符号化対象の点群データの各点の幾何情報(符号化処理が仮定している座標系、すなわち、座標変換部1010における座標変換後の位置情報)を再構成するように構成されている。
フレームバッファ1140は、幾何情報再構成部1060によって再構成された幾何情報を入力とし、参照フレームとして保存するように構成されている。
保存された参照フレームは、ツリー解析部1030において時間的に異なるフレームのインター予測を行う場合に、フレームバッファ1140から読み出されて参照フレームとして使用される。
ここで、各フレームに対してどの時刻の参照フレームを用いるかどうかが、例えば、符号化効率を表すコスト関数の値に基づいて決定され、使用する参照フレームの情報が制御データとして点群復号装置200へ伝送されてもよい。
色変換部1070は、入力の属性情報が色情報であった場合に、色変換を行うように構成されている。色変換は、必ずしも実行する必要は無く、色変換処理の実行の有無については、制御データの一部として符号化され、点群復号装置200へ伝送される。
属性転移部1080は、入力点群の位置情報、幾何情報再構成部1060における再構成後の点群の位置情報及び色変換部1070での色変化後の属性情報に基づいて、属性情報の歪みが最小となるように属性値を補正するように構成されている。具体的な補正方法は、例えば、文献2(Text of ISO/IEC 23090-9 DIS Geometry-based PCC、ISO/IEC JTC1/SC29/WG11 N19088)に記載の方法を適用できる。
RAHT部1090は、属性転移部1080による転移後の属性情報及び幾何情報再構成部1060によって生成された幾何情報を入力とし、RAHT(Region Adaptive Hierarchical Transform)と呼ばれるHaar変換の一種を用いて、各点の残差情報を生成するように構成されている。RAHTの具体的な処理としては、例えば、上述の文献2に記載の方法を用いることができる。
LoD算出部1100は、幾何情報再構成部1060によって生成された幾何情報を入力とし、LoD(Level of Detail)を生成するように構成されている。
LoDは、ある点の属性情報から、他のある点の属性情報を予測し、予測残差を符号化或いは復号するといった予測符号化を実現するための参照関係(参照する点及び参照される点)を定義するための情報である。
言い換えると、LoDは、幾何情報に含まれる各点を複数のレベルに分類し、下位のレベルに属する点については上位のレベルに属する点の属性情報を用いて属性を符号化或いは復号するといった階層構造を定義した情報である。
LoDの具体的な決定方法としては、例えば、上述の文献2に記載の方法を用いてもよい。
リフティング部1110は、LoD算出部1100によって生成されたLoD及び属性転移部1080での属性転移後の属性情報を用いて、リフティング処理により残差情報を生成するように構成されている。
リフティングの具体的な処理としては、例えば、上述の文献2に記載の方法を用いてもよい。
属性情報量子化部1120は、RAHT部1090又はリフティング部1110から出力される残差情報を量子化するように構成されている。ここで、量子化ステップサイズが1の場合は、量子化を行わない場合と等価である。
属性情報符号化部1130は、属性情報量子化部1120から出力される量子化後の残差情報等をシンタックスとして符号化処理を行い、属性情報に関するビットストリーム(属性情報ビットストリーム)を生成するように構成されている。
符号化処理は、例えば、コンテクスト適応二値算術符号化処理である。ここで、例えば、シンタックスは、属性情報の復号処理を制御するための制御データ(フラグ及びパラメータ)を含む。
点群符号化装置100は、以上の処理により、点群内の各点の位置情報及び属性情報を入力として符号化処理を行い、幾何情報ビットストリーム及び属性情報ビットストリームを出力するように構成されている。
また、上述の点群符号化装置100及び点群復号装置200は、コンピュータに各機能(各工程)を実行させるプログラムであって実現されていてもよい。
なお、上記の各実施形態では、本発明を点群符号化装置100及び点群復号装置200への適用を例にして説明したが、本発明は、かかる例のみに限定されるものではなく、点群符号化装置100及び点群復号装置200の各機能を備えた点群符号化/復号システムにも同様に適用できる。