以下、本開示を実施するための形態(以下実施の形態とする)について説明する。なお、説明は以下の順序で行う。
1.Sub LoDの生成
2.第1の実施の形態(符号化装置)
3.第2の実施の形態(復号装置)
4.付記
<1.Sub LoDの生成>
<技術内容・技術用語をサポートする文献等>
本技術で開示される範囲は、実施の形態に記載されている内容だけではなく、出願当時において公知となっている以下の非特許文献に記載されている内容も含まれる。
非特許文献1:(上述)
非特許文献2:(上述)
非特許文献3:(上述)
非特許文献4:(上述)
つまり、上述の非特許文献に記載されている内容もサポート要件を判断する際の根拠となる。
<ポイントクラウド>
従来、点群の位置情報や属性情報等により3次元構造を表すポイントクラウド(Point cloud)や、頂点、エッジ、面で構成され、多角形表現を使用して3次元形状を定義するメッシュ(Mesh)等の3Dデータが存在した。
例えばポイントクラウドの場合、立体構造物(3次元形状のオブジェクト)を多数の点の集合(点群)として表現する。つまり、ポイントクラウドのデータ(ポイントクラウドデータとも称する)は、この点群の各点のジオメトリデータ(位置情報とも称する)やアトリビュートデータ(属性情報とも称する)により構成される。アトリビュートデータは任意の情報を含むことができる。例えば、色情報、反射率情報、法線情報等がアトリビュートデータに含まれるようにしてもよい。したがってデータ構造が比較的単純であるとともに、十分に多くの点を用いることにより任意の立体構造物を十分な精度で表現することができる。
<ボクセルを用いた位置情報の量子化>
このようなポイントクラウドデータはそのデータ量が比較的大きいので、符号化等によるデータ量を圧縮するために、ボクセル(Voxel)を用いた符号化方法が考えられた。ボクセルは、ジオメトリデータ(位置情報)を量子化するための3次元領域である。
つまり、ポイントクラウドを内包する3次元領域をボクセルと称する小さな3次元領域に分割し、そのボクセル毎に、ポイントを内包するか否かを示すようにする。このようにすることにより、各ポイントの位置はボクセル単位に量子化される。したがって、ポイントクラウド(Point cloud)データをこのようなボクセルのデータ(ボクセル(Voxel)データとも称する)に変換することにより、情報量の増大を抑制する(典型的には情報量を削減する)ことができる。
<Octree>
さらに、ジオメトリデータについて、このようなボクセル(Voxel)データを用いてOctreeを構築することが考えられた。Octreeは、ボクセルデータを木構造化したものである。このOctreeの最下位のノードの各ビットの値が、各ボクセルのポイントの有無を示す。例えば、値「1」がポイントを内包するボクセルを示し、値「0」がポイントを内包しないボクセルを示す。Octreeでは、1ノードが8つのボクセルに対応する。つまり、Octreeの各ノードは、8ビットのデータにより構成され、その8ビットが8つのボクセルのポイントの有無を示す。
そして、Octreeの上位のノードは、そのノードに属する下位ノードに対応する8つのボクセルを1つにまとめた領域のポイントの有無を示す。つまり、下位ノードのボクセルの情報をまとめることにより上位ノードが生成される。なお、値が「0」のノード、すなわち、対応する8つのボクセルが全てポイントを内包しない場合、そのノードは削除される。
このようにすることにより、値が「0」でないノードからなる木構造(Octree)が構築される。つまり、Octreeは、各解像度のボクセルのポイントの有無を示すことができる。Octree化して符号化することにより、位置情報は、最高解像度(最上位層)から所望の階層(解像度)まで復号することにより、その解像度のポイントクラウドデータを復元することができる。つまり、不要な階層(解像度)の情報を復号せずに、容易に任意の解像度で復号することができる。換言するに、ボクセル(解像度)のスケーラビリティを実現することができる。
また、上述のように値が「0」のノードを省略することにより、ポイントが存在しない領域のボクセルを低解像度化することができるので、さらなる情報量の増大の抑制(典型的には情報量の削減)を行うことができる。
<Lifting>
これに対してアトリビュートデータ(属性情報)を符号化する際は、符号化による劣化を含めジオメトリデータ(位置情報)を既知であるものとして、ポイント間の位置関係を利用して符号化が行われる。このようなアトリビュートデータの符号化方法として、RAHT(Region Adaptive Hierarchical Transform)や、非特許文献2に記載のようなLiftingと称する変換を用いる方法が考えられた。これらの技術を適用することにより、ジオメトリデータのOctreeのように、アトリビュートデータを階層化することもできる。
例えば非特許文献2に記載のLiftingの場合、各ポイントのアトリビュートデータは、他のポイントのアトリビュートデータを用いて導出される予測値との差分値として符号化される。その際、各ポイントが階層化され、差分値はその階層構造に従って導出される。
つまり、ポイント毎のアトリビュートデータについて、各ポイントが予測ポイントと参照ポイントとに分類され、その参照ポイントのアトリビュートデータを用いて予測ポイントのアトリビュートデータの予測値が導出され、その予測ポイントのアトリビュートデータと予測値との差分値が導出される。このような処理を、参照ポイントに対して再帰的に繰り返すことにより、各ポイントのアトリビュートデータが階層化される。
ただし、この階層構造は、ジオメトリデータの階層構造(例えばOctree)とは独立に生成されたものであり、基本的に、ジオメトリデータの階層構造とは対応しない。ポイントクラウドデータを復元するためには、ジオメトリデータとアトリビュートデータとを対応させる必要があり、そのためには、ジオメトリデータおよびアトリビュートデータを最高解像度(すなわち最下位層)まで復号する必要があった。つまり、非特許文献2に記載のLiftingを適用した手法は、解像度のスケーラブルな復号に対応していない。
<スケーラブルな復号に対応した階層化>
これに対して非特許文献3に記載の階層化は、解像度のスケーラブルな復号に対応している。非特許文献3に記載の手法の場合、ジオメトリデータのOctreeの階層構造に一致するようにアトリビュートデータの階層化を行う。つまり、ジオメトリデータのボクセルに相当する領域内にポイントが存在する場合(そのポイントに対応するアトリビュートデータが存在する場合)、そのボクセルの1階層上位のボクセルにおいてもポイントが存在する(そのポイントに対応するアトリビュートデータが存在する)ように、参照ポイントと予測ポイントの選択を行う。つまり、ジオメトリデータのOctreeの階層構造に従って属性情報が階層化される。
アトリビュートデータの階層構造をジオメトリデータの階層構造と対応付けることにより、最下層まで復号しなくても、容易に所望の解像度のポイントクラウドデータを復元することができる。このように、非特許文献3に記載の技術を適用した手法は、解像度のスケーラブルな復号に対応する。
<階層内の参照関係>
上述の手法では、階層間において属性情報の参照関係が生成される。つまり、他の階層の属性情報を参照して、処理対象の階層の属性情報の予測を行うことができる。
これに対して非特許文献4に記載の手法の場合、処理対象の階層内の属性情報も復号済みであれば参照することができる。例えば、図1のAに示される階層化されたアトリビュートデータ(Attribute Lod)1は、図1のBに示されるように、ポイント毎のアトリビュートデータ2が分類されて階層化されたものである。図1のBにおいて、縦方向が階層(LoD(Level Of Detail))を示しており、各丸がポイント毎のアトリビュートデータ2を示している。図1のBにおいては、1つの丸にのみ符号を付しているが、図1のBに示される丸は全てポイント毎のアトリビュートデータ2である。
復号は上位の階層から1階層ずつ順次行われる。したがって、あるポイントのアトリビュートデータ2Aを復号する場合、白丸で示される上位の階層のポイント毎のアトリビュートデータ2は復号済みであるので、それらを参照することができる。
また、階層内においては、ポイント毎のアトリビュートデータ2は、モートン順序(Morton Order)に整列され、その順に復号される。図1のBにおいて、各階層のポイント毎のアトリビュートデータ2は、モートン順序に整列されている。図中、横方向の左から右に向かう向きがモートン順序に対応する。
つまり、あるポイントのアトリビュートデータ2Aを復号する場合、それより左側に位置するポイント毎のアトリビュートデータ2Bが復号済みであり、参照可能である。
モートン順序で整列することにより、ポイント毎のアトリビュートデータ2は、3次元空間を分割した3次元の部分領域毎に走査される。そのため、処理順に、3次元空間位置の方向性(偏り)が生じる。
例えば、ポイントクラウドデータの各ポイントが図2の3次元領域3内に存在するとする。上述のように、図1のBにおいて、復号済みのポイント毎のアトリビュートデータ2Bは、モートン順序において、あるポイントのアトリビュートデータ2Aよりも前に位置する。したがって、図2の3次元領域3において、図1のBに示される復号済みのポイント毎のアトリビュートデータ2Bは、あるポイントのアトリビュートデータ2Aからみて、所定の方向に位置する部分領域3B内に存在する。つまり、あるポイントのアトリビュートデータ2Aの位置を基準とした場合の、復号済みのポイント毎のアトリビュートデータ2Bの相対位置(方向)に偏りが生じる。
モートン順序に従って処理を行うことにより、予測の際の参照方向にこのような偏りが生じ、その偏りにより予測精度が低減し、符号化効率が低減するおそれがあった。
<サブ階層化>
そこで、例えば図3に示される表の一番上の段の「方法1」に記載のように、アトリビュートデータ(属性情報)の階層化において、階層(LoD)内にさらにサブ階層(Sub LoD)を生成し、そのサブ階層間のアトリビュートデータの参照関係を生成する(つまり階層(LoD)内におけるアトリビュートデータの参照関係を生成する)ようにする。
例えば、3次元形状のオブジェクトをポイントの集合として表現するポイントクラウドのアトリビュートデータ(属性情報)を、その階層間のアトリビュートデータの参照関係を生成し、さらに、その生成されたアトリビュートデータの階層において、その階層のアトリビュートデータをサブ階層化して、そのサブ階層間のアトリビュートデータの参照関係を生成する。
例えば、情報処理装置において、3次元形状のオブジェクトをポイントの集合として表現するポイントクラウドのアトリビュートデータ(属性情報)を階層化し、その階層間のアトリビュートデータの参照関係を生成する階層化部と、その階層化部により生成されたアトリビュートデータの階層において、その階層のアトリビュートデータをサブ階層化し、そのサブ階層間のアトリビュートデータの参照関係を生成するサブ階層化部とを備えるようにする。
このようにすることにより、予測の方向の偏りを抑制するように階層内のアトリビュートデータの参照関係を生成することができ、符号化効率の低減を抑制することができる。
なお、この場合のアトリビュートデータの階層化の手法は任意である。例えば、非特許文献2に記載のスケーラブルの復号に非対応なLiftingを用いてもよい。また、例えば、非特許文献3に記載のスケーラブルの復号に対応した階層化技術を適用してもよい。もちろん、これら以外の手法であってもよい。
また、サブ階層化の手法も任意である。例えば、図3に示される表の上から2番目の段の「方法1-1」に記載のように、階層内のポイント毎のアトリビュートデータの一部をサンプリング(選択)してサブ階層とする処理を、再帰的に繰り返すようにしてもよい。つまり、アトリビュートデータの階層構造における処理対象の階層(LoD)のノード群から一部をサンプリングすることによりサブ階層を生成するようにしてもよい。
例えば、図3に示される表の上から3番目の段の「方法1-1-1」に記載のように、処理対象階層のアトリビュートデータをモートン順序に整列し、その内の一部を等間隔にサンプリングすることにより、サブ階層を生成するようにしてもよい。
例えば、図1のBの場合と同様に、階層化されたアトリビュートデータについて、サブ階層化を行う階層のポイント毎のアトリビュートデータをモートン順序に整列する。そして、その整列されたポイント毎のアトリビュートデータを、等間隔にサンプリングする。図4は、3つおき、すなわち、4つに1つをサンプリングする例を示す(LodUniformQuant = 4)。LodUniformQuantは、サンプリング間隔を示すシンタクス要素である。LodUniformQuant = 4は、モートン順序に整列されたポイント毎のアトリビュートデータの列の中から4つ毎に1つをサンプリングすることを示す。つまり、1つのアトリビュートデータがサンプリングされると、次に、そこからモートン順序において4つ目のアトリビュートデータがサンプリングされる。
図4のAにおいて、丸形で示されるポイント毎のアトリビュートデータ12は、モートン順序に整列されており、そこから4つに1つ(グレーの丸で示されるポイント毎のアトリビュートデータ12)がサンプリングされる。つまり、図4のBに示されるように、サンプリングされなかった白丸で示されるポイント毎のアトリビュートデータ12からなる最下位のサブ階層(Sub LoD)が生成される。
そのサンプリングされたポイント毎のアトリビュートデータ12の列の中から、同様に、4つに1つ(黒丸で示されるポイント毎のアトリビュートデータ12)がサンプリングされる。つまり、図4のCに示されるように、サンプリングされなかったグレーの丸で示されるポイント毎のアトリビュートデータ12からなる最下位から2番目のサブ階層(Sub LoD)が生成される。
そのサンプリングされたポイント毎のアトリビュートデータ12の列の中から、同様に、4つに1つ(斜線模様の丸で示されるポイント毎のアトリビュートデータ12)がサンプリングされる。つまり、図4のDに示されるように、サンプリングされなかった黒丸で示されるポイント毎のアトリビュートデータ12からなる最下位から3番目のサブ階層が生成される。
なお、この場合、1つのポイント毎のアトリビュートデータ12がサンプリングされるので、そのサンプリングされたポイント毎のアトリビュートデータ12からなる最上位のサブ階層も生成される(図4のD)。
そして、このようなサブ階層間においても参照関係を生成する。つまり、より上位のサブ階層のアトリビュートデータから先に復号されるようにし、上位のサブ階層のアトリビュートデータを参照可能とする。
この場合、ポイント毎のアトリビュートデータ12の列の全体からサンプリングが行われて、サブ階層が生成されているので、それらのポイントの3次元空間における位置の偏りが少ない。つまり、非特許文献4に記載の方法に比べて、アトリビュートデータの参照方向の偏りを抑制することができる。したがって、予測精度の低減を抑制し、符号化効率の低減を抑制することができる。
また、この場合もポイント毎のアトリビュートデータ12はモートン順序に整列されているので、3次元空間において比較的近傍のアトリビュートデータを参照することができる。したがって、アトリビュートデータをランダムに選択する場合よりも、予測精度の低減を抑制し、符号化効率の低減を抑制することができる。
なお、上位のサブ階層のアトリビュートデータだけでなく、処理対象のアトリビュートデータと同一のサブ階層内の復号済みのアトリビュートデータも参照可能としてもよい。
図5は、ある階層のポイント毎のアトリビュートデータ12を復号される順に整列した様子を示している。この場合、あるポイントのアトリビュートデータ12Aが復号対象であるとすると、両矢印12Bに示される範囲にあるポイント毎のアトリビュートデータ12(すなわち、あるポイントのアトリビュートデータ12Aよりも左側に位置するポイント毎のアトリビュートデータ12)が、復号済みであり、参照可能である。このようにすることにより、参照ポイントの候補数が増大するので、予測精度の低減を抑制し、符号化効率の低減を抑制することができる。
以上においては、サブ階層を生成する際に、アトリビュートデータが等間隔にサンプリングされるように説明したが、これに限らず、非等間隔にサンプリングされるようにしてもよい。つまり、図3に示される表の上から4番目の段の「方法1-1-2」に記載のように、処理対象階層のアトリビュートデータをモートン順序に整列し、その内の一部を非等間隔にサンプリングすることにより、サブ階層を生成するようにしてもよい。
例えば、サブ階層内のアトリビュートデータをサンプリングする際の間隔を非等間隔に(つまり間隔を揃えないように)してもよい。例えば、3つおきと2つおきを交互に繰り返す(LodUniformQuant = 2or3)ようにしてもよい。
また、例えば、サブ階層毎にサンプリング間隔を変えるようにしてもよい。例えば、最下位のサブ階層は、2つおきにサンプリングし(LodUniformQuant = 2)、それより上位のサブ階層は、4つおきにサンプリングする(LodUniformQuant = 4)ようにしてもよい。つまり、サブ階層の深さに応じてサンプリング間隔を変えるようにしてもよい。
このようにすることにより、例えば解像度に応じてサンプリング間隔を設定することができ、例えば、画質の低減を抑制したり、符号化効率の低減を抑制したりすることができる。
<重み値>
なお、このようなサブ階層化をアトリビュートデータの重み値に反映させるようにしてもよい。従来の方法の場合、ポイント毎のアトリビュートデータは、階層(LoD)間の参照関係(例えば、参照の距離、参照数等)に基づいて重み付けが行われる。上述のようにサブ階層化を行う場合、そのサブ階層間の参照関係(例えば、参照の距離、参照数等)も重み値に反映させるようにしてもよい。つまり、図3に示される表の上から5番目の段の「方法1-2」に記載のように、サブ階層(Sub LoD)間の参照関係を用いて重み値を導出するようにしてもよい。
例えば、非特許文献2に記載のLiftingを用いてアトリビュートデータの階層化(LoD化)が行われた場合、その参照関係に基づいて、アトリビュートデータ毎に重み値が設定される。このように重み値が設定される手法により階層化されたアトリビュートデータを上述のようにサブ階層化する場合も同様にして、各アトリビュートデータに設定された重み値に、サブ階層間の参照関係を反映させる。つまり、各アトリビュートデータの重み値が、図6において矢印で示されるように構築される階層間およびサブ階層間の参照関係を用いて導出されるようにする。このようにすることにより、スケーラブルの復号に非対応な手法により生成された階層間の重み値に、サブ階層間の参照関係を反映させることができる。
なお、例えば、非特許文献3に記載のスケーラブルの復号に対応した手法を用いてアトリビュートデータの階層化(LoD化)が行われた場合、各アトリビュートデータには、階層(LoD)毎に固定の重み値(階層毎の重み値)が割り当てられる。このように重み値が設定される手法により階層化されたアトリビュートデータを上述のようにサブ階層化する場合は、図3に示される表の上から6番目の段の「方法1-2-1」に記載のように、その階層毎の重み値に、サブ階層間の参照関係を反映させる。つまり、図7のAにおいて矢印で示されるようなサブ階層間の参照関係を用いて、階層毎の重み値を更新することにより、各アトリビュートデータの重み値が導出されるようにする。
例えば、サブ階層間の参照数に応じて係数αを設定し、図7のBに示されるように、その係数αを階層毎の重み値w1に乗算することにより、階層毎の重み値w1を更新するようにしてもよい。
また、ある階層の重み値w1を更新する場合、その重み値w1の更新に対応させるように他の階層の重み値w2を更新するようにしてもよい。例えば、図7のCに示されるように、重み値w1に係数αを乗算する場合、(1-α)を重み値w2に乗算するようにしてもよい。
このようにすることにより、スケーラブルの復号に非対応な手法により生成された階層間の重み値に、サブ階層間の参照関係を反映させることができる。したがって、符号化効率の低減をより抑制することができる。
<制御情報のシグナリング>
図3に示される表の上から7番目の段の「方法1-3」に記載のように、このようなアトリビュートデータのサブ階層化に関する制御情報をシグナリングするようにしてもよい。この制御内容はどのようなものであってもよい。
<sub_lod_enable_flag>
例えば、アトリビュートデータのサブ階層化が許可されているか否かを示す制御情報をシグナリングする(符号化側から復号側に伝送する)ようにしてもよい。このサブ階層化が許可されているか否かを示す制御情報は、対象となるデータ単位においてサブ階層化を行うことができるか否かを示すフラグ情報(例えば、sub_lod_enable_flag)である。例えば、このsub_lod_enable_flagが真(例えば「1」)の場合、サブ階層化を行うことができることを示す。また、sub_lod_enable_flagが偽(例えば「0」)の場合、サブ階層化を行うことができないことを示す。
このsub_lod_enable_flagがシグナリングされない(伝送されない)場合、復号側においてsub_lod_enable_flagが偽であるものとみなされるようにしてもよい。逆に、このsub_lod_enable_flagがシグナリングされない(伝送されない)場合、復号側においてsub_lod_enable_flagが真であるものとみなされるようにしてもよい。
sub_lod_enable_flagが偽の場合、サブ階層化が許可されていないので、そのデータ単位についてのサブ階層化に関するその他の制御情報のシグナリングは省略することができる。したがって符号化効率の低減を抑制することができる。換言するに、復号側において、そのデータ単位についてのサブ階層化に関するその他の制御情報のパースを省略することができる。つまり、復号側においては、sub_lod_enable_flagが真のデータ単位のみ、サブ階層化に関するその他の制御情報のパースを行えば良い。したがって、復号処理の負荷の増大を抑制することができる。
以上のように、このサブ階層化が許可されているか否かを示す制御情報は、そのデータ単位についてのサブ階層化に関するその他の制御情報のシグナリングの有無を示す制御情報とも言える。また、このサブ階層化が許可されているか否かを示す制御情報は、サブ階層化が禁止されているか否かを示す制御情報とも言える。
このサブ階層化が許可されているか否かを示す制御情報は、任意のデータ単位を対象とすることができ、任意のデータ単位毎にシグナリングするようにしてもよい。例えば、アトリビュートデータ1つを対象のデータ単位とし、アトリビュートデータ毎にsub_lod_enable_flagをシグナリングするようにしてもよい。また、例えば、複数のsub_lod_enable_flagをアトリビュートデータよりも上位のデータ単位毎(例えばシーケンス毎)にまとめて伝送するようにしてもよい。
<sub_lod_distance>
例えば、サブ階層化の際のサンプリングの間隔(またはサンプリング周期)を制御する制御情報をシグナリングするようにしてもよい。このサンプリングの間隔を制御する制御情報は、対象となるデータ単位においてサブ階層化を行う場合に、どういう間隔でサンプリングするかを示す情報(例えば、sub_lod_distance)である。例えば、sub_lod_distance = 2の場合、サンプリング周期が2、すなわち、2つに1つのノードがサンプリングされる(1つおきにサンプリングされる)ことを示す。つまり、sub_lod_distance > 2の場合、そのsub_lod_distanceで示される間隔で等間隔にサンプリングが行われ、サブ階層が生成される。
なお、sub_lod_distance = 0は、サブ階層化が行われない(サブ階層(Sub LoD))が形成されないことを示す。つまり、sub_lod_distanceは、サブ階層化を行うか否かを示す制御情報とも言える。
また、このsub_lod_distanceがシグナリングされない(伝送されない)場合、復号側においてsub_lod_distance = 0であるものとみなされるようにしてもよい。
さらに、サンプリングの間隔は非等間隔であってもよい。例えば、互いに同一のデータ単位に対して、sub_lod_distanceを複数シグナリングし、複数の間隔(周期)を割り当てることができるようにしてもよい。例えば、sub_lod_distanceの値が「2」と「3」に設定され、2→3→2→3のように、それらの間隔が順次採用されるようにして、非等間隔を実現するようにしてもよい。また、サンプリング間隔を関数やテーブルの識別番号等により表すようにしてもよい。
このサブ階層化の際のサンプリングの間隔を制御する制御情報は、任意のデータ単位を対象とすることができ、任意のデータ単位毎にシグナリングするようにしてもよい。例えば、アトリビュートデータの階層(LoD)を対象のデータ単位とし、アトリビュートデータの1階層毎にsub_lod_distanceをシグナリングするようにしてもよい。
<sub_lod_mode>
例えば、サブ階層化の際のサンプリングの方法を示す制御情報(例えば、sub_lod_mode)をシグナリングするようにしてもよい。
例えば、sub_lod_mode = 0は、全サブ階層においてサンプリングが互いに同一の間隔で等間隔に行われることを示す。つまり、この場合、全サブ階層において1種類の間隔でサンプリングが行われる。
また、sub_lod_mode = 1は、サンプリングの間隔がパターン1(非等間隔)であることを示す。同様に、sub_lod_mode = 2は、サンプリングの間隔がパターン1とは異なるパターン2(非等間隔)であることを示す。
サンプリングを非等間隔とすることで、例えばサブ階層(SubLod)の深さに応じてサンプリング間隔を変えることができる。また、例えばサブ階層内においてサンプリング間隔を変えることもできる。つまり、上述のパターン1およびパターン2では、全サブ階層のサンプリング間隔のパターンが示される。パターンの距離の取り方は、ヘッダなどでオーバライドすることができる。
<その他>
なお、サブ階層化に関する制御情報は、上述の例に限定されない。また、複数の制御情報を適用してもよい。例えば、sub_lod_distanceとsub_lod_modeの両方を適用してもよい。また、例えば、sub_lod_enable_flagを、sub_lod_distance若しくはsub_lod_mode、またはその両方とともに適用してもよい。
<逆階層化>
以上のように階層化・サブ階層化されたアトリビュートデータは、図3に示される表の上から8番目の段の「方法2」に記載のように、サブ階層(Sub LoD)間の参照関係を利用して逆階層化するようにしてもよい。
また、例えば、図3に示される表の上から9番目の段の「方法2-1」に記載のように、上述の「方法1」の場合と同様にして、サブ階層(Sub LoD)を生成し、その生成したサブ階層間の参照関係を用いて逆階層化するようにしてもよい。
例えば、3次元形状のオブジェクトをポイントの集合として表現するポイントクラウドのアトリビュートデータ(属性情報)を階層化し、その階層間のアトリビュートデータの参照関係を生成し、階層内においてアトリビュートデータをサブ階層化し、そのサブ階層間のアトリビュートデータの参照関係を生成し、生成された階層間のアトリビュートデータの参照関係、および、生成されたサブ階層間のアトリビュートデータの参照関係に基づいて、アトリビュートデータを逆階層化するようにしてもよい。
例えば、情報処理装置において、3次元形状のオブジェクトをポイントの集合として表現するポイントクラウドのアトリビュートデータ(属性情報)を階層化し、その階層間のアトリビュートデータの参照関係を生成する階層化部と、その階層化部により生成された階層内においてアトリビュートデータをサブ階層化し、そのサブ階層間のアトリビュートデータの参照関係を生成するサブ階層化部と、その階層化部により生成された階層間のアトリビュートデータの参照関係、および、そのサブ階層化部により生成されたサブ階層間のアトリビュートデータの参照関係に基づいて、アトリビュートデータを逆階層化する逆階層化部とを備えるようにしてもよい。
このようにすることにより、上述の「方法1」等を適用して階層化・サブ階層化されたアトリビュートデータを正しく逆階層化することができる。したがって、符号化効率の低減を抑制することができる。
そのサブ階層化において、例えば、図3に示される表の上から3番目の段の「方法1-1-1」を適用するようにしてもよい。つまり、処理対象階層のアトリビュートデータをモートン順序に整列し、その内の一部を等間隔にサンプリングすることにより、サブ階層を生成するようにしてもよい。
また、そのサブ階層化において、例えば、図3に示される表の上から4番目の段の「方法1-1-2」を適用するようにしてもよい。つまり、処理対象階層のアトリビュートデータをモートン順序に整列し、その内の一部を非等間隔にサンプリングすることにより、サブ階層を生成するようにしてもよい。
また、そのサブ階層化において、例えば、図3に示される表の上から10番目の段の「方法2-2」に記載のように、上述の「方法1-3」のようにシグナリングされたアトリビュートデータのサブ階層化に関する制御情報に基づいてサブ階層(Sub LoD)を生成し、その生成したサブ階層間の参照関係を用いて逆階層化するようにしてもよい。
例えば、上述したアトリビュートデータのサブ階層化が許可されているか否かを示す制御情報(例えば、sub_lod_enable_flag)に基づいて、アトリビュートデータをサブ階層化するようにしてもよい。
また、例えば、上述したアトリビュートデータのサンプリングの間隔を示す制御情報(例えば、sub_lod_distance)に基づいて、アトリビュートデータをサブ階層化するようにしてもよい。
さらに、例えば、上述したアトリビュートデータのサンプリングの方法を示す制御情報(例えば、sub_lod_mode)に基づいて、アトリビュートデータをサブ階層化するようにしてもよい。
もちろん、これら以外の制御情報に基づいてアトリビュートデータをサブ階層化するようにしてもよい。また、複数の制御情報に基づいてアトリビュートデータをサブ階層化するようにしてもよい。
以上のように逆階層化を行うことにより、サブ階層化されたアトリビュートデータをより正確に逆階層化することができる。したがって、予測の方向の偏りを抑制することができ、符号化効率の低減を抑制することができる。
<2.第1の実施の形態>
<符号化装置>
次に、<1.Sub LoDの生成>において上述した本技術を適用する装置について説明する。図8は、本技術を適用した情報処理装置の一態様である符号化装置の構成の一例を示すブロック図である。図8に示される符号化装置100は、ポイントクラウド(3Dデータ)を符号化する装置である。符号化装置100は、<1.Sub LoDの生成>において上述した本技術を適用してポイントクラウドを符号化する。
なお、図8においては、処理部やデータの流れ等の主なものを示しており、図8に示されるものが全てとは限らない。つまり、符号化装置100において、図8においてブロックとして示されていない処理部が存在したり、図8において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
図8に示されるように符号化装置100は、位置情報符号化部101、位置情報復号部102、ポイントクラウド生成部103、属性情報符号化部104、およびビットストリーム生成部105を有する。
位置情報符号化部101は、符号化装置100に入力されたポイントクラウド(3Dデータ)のジオメトリデータ(位置情報)を符号化する。この符号化方法は、スケーラブルな復号に対応した方法であれば任意である。例えば位置情報符号化部101は、ジオメトリデータを階層化してOctreeを生成し、そのOctreeを符号化する。また、例えば、ノイズ抑制(デノイズ)のためのフィルタリングや量子化等の処理が行われるようにしてもよい。位置情報符号化部101は、生成したジオメトリデータの符号化データを位置情報復号部102およびビットストリーム生成部105に供給する。
位置情報復号部102は、位置情報符号化部101から供給されるジオメトリデータの符号化データを取得し、その符号化データを復号する。この復号方法は、位置情報符号化部101による符号化に対応する方法であれば任意である。例えば、デノイズのためのフィルタリングや逆量子化等の処理が行われるようにしてもよい。位置情報復号部102は、生成したジオメトリデータ(復号結果)をポイントクラウド生成部103に供給する。
ポイントクラウド生成部103は、符号化装置100に入力されるポイントクラウドのアトリビュートデータ(属性情報)と、位置情報復号部102から供給されるジオメトリデータ(復号結果)を取得する。ポイントクラウド生成部103は、アトリビュートデータをジオメトリデータ(復号結果)に合わせる処理(リカラー処理)を行う。ポイントクラウド生成部103は、ジオメトリデータ(復号結果)に対応させたアトリビュートデータを属性情報符号化部104に供給する。
属性情報符号化部104は、ポイントクラウド生成部103から供給されるジオメトリデータ(復号結果)およびアトリビュートデータを取得する。属性情報符号化部104は、そのジオメトリデータ(復号結果)を用いて、アトリビュートデータを符号化し、アトリビュートデータの符号化データを生成する。
その際、属性情報符号化部104は、<1.Sub LoDの生成>において上述した本技術を適用し、アトリビュートデータを符号化する。例えば、属性情報符号化部104は、アトリビュートデータ(属性情報)の階層化において、階層(LoD)内にさらにサブ階層(Sub LoD)を生成し、そのサブ階層間のアトリビュートデータの参照関係を生成する。属性情報符号化部104は、生成したアトリビュートデータの符号化データをビットストリーム生成部105に供給する。
ビットストリーム生成部105は、位置情報符号化部101から供給されるジオメトリデータの符号化データを取得する。また、ビットストリーム生成部105は、属性情報符号化部104から供給されるアトリビュートデータの符号化データを取得する。ビットストリーム生成部105は、これらの符号化データを含むビットストリームを生成する。ビットストリーム生成部105は、生成したビットストリームを符号化装置100の外部に出力する。
このような構成とすることにより、符号化装置100は、階層内においてサブ階層を生成し、そのサブ階層間のアトリビュートデータの参照関係を生成し、その参照関係を用いてアトリビュートデータの符号化を行うことができる。これにより、予測の方向の偏りを抑制するように階層内のアトリビュートデータの参照関係を生成することができ、符号化効率の低減を抑制することができる。
なお、符号化装置100のこれらの処理部(位置情報符号化部101乃至ビットストリーム生成部105)は、それぞれ、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
<属性情報符号化部>
図9は、属性情報符号化部104(図8)の主な構成例を示すブロック図である。なお、図9においては、処理部やデータの流れ等の主なものを示しており、図9に示されるものが全てとは限らない。つまり、属性情報符号化部104において、図9においてブロックとして示されていない処理部が存在したり、図9において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
図8に示されるよう属性情報符号化部104は、階層化処理部111、量子化部112、および符号化部113を有する。
階層化処理部111は、アトリビュートデータの階層化に関する処理を行う。例えば、階層化処理部111は、ポイントクラウド生成部103から供給されるアトリビュートデータやジオメトリデータ(復号結果)を取得する。階層化処理部111は、そのジオメトリデータを用いてアトリビュートデータを階層化する。その際、階層化処理部111は、<1.Sub LoDの生成>において上述した本技術を適用して階層化を行う。例えば、階層化処理部111は、アトリビュートデータ(属性情報)の階層化において、階層(LoD)内にさらにサブ階層(Sub LoD)を生成し、そのサブ階層間のアトリビュートデータの参照関係を生成する。階層化処理部111は、階層化したアトリビュートデータ(差分値)を量子化部112に供給する。
その際、階層化処理部111は、サブ階層化に関する制御情報も生成することができる。その場合、階層化処理部111は、その生成した制御情報も、アトリビュートデータ(差分値)とともに量子化部112に供給する。
量子化部112は、階層化処理部111から供給されるアトリビュートデータ(階層化処理部111において制御情報が生成される場合はその制御情報も)を取得する。量子化部112は、そのアトリビュートデータを量子化する。この量子化の方法は任意である。量子化部112は、その量子化されたアトリビュートデータ(および制御情報)を、符号化部113に供給する。
符号化部113は、量子化部112から供給される、量子化されたアトリビュートデータ(および制御情報)を取得する。符号化部113は、そのアトリビュートデータを符号化し、アトリビュートデータの符号化データを生成する。この符号化方法は任意である。また、サブ階層化に関する制御情報が供給される場合、符号化部113は、生成した符号化データに、その制御情報を含める。換言するに、符号化部113は、サブ階層化に関する制御情報を含むアトリビュートデータの符号化データを生成する。符号化部113は、生成した符号化データをビットストリーム生成部105に供給する。
以上のように階層化を行うことにより、属性情報符号化部104は、階層内においてサブ階層を生成し、そのサブ階層間のアトリビュートデータの参照関係を生成し、その参照関係を用いてアトリビュートデータの符号化を行うことができる。これにより、予測の方向の偏りを抑制するように階層内のアトリビュートデータの参照関係を生成することができ、符号化効率の低減を抑制することができる。
なお、これらの処理部(階層化処理部111乃至符号化部113)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
<階層化処理部>
図10は、階層化処理部111(図9)の主な構成例を示すブロック図である。なお、図10においては、処理部やデータの流れ等の主なものを示しており、図10に示されるものが全てとは限らない。つまり、階層化処理部111において、図10においてブロックとして示されていない処理部が存在したり、図10において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
図10に示されるよう階層化処理部111は、制御部121、階層化処理部122、Sub LoD生成部123、反転部124、および重み付け部125を有する。
制御部121は、階層化およびサブ階層化の制御に関する処理を行う。例えば、制御部121は、ポイントクラウド生成部103から供給されるアトリビュートデータやジオメトリデータ(復号結果)を取得する。制御部121は、取得したアトリビュートデータやジオメトリデータ(復号結果)を階層化処理部122に供給する。
また、制御部121は、階層化処理部122やSub LoD生成部123を制御し、階層化やサブ階層化を実行させる。例えば、制御部121は、<1.Sub LoD>において上述した本技術を適用して階層化やサブ階層化を行わせる。例えば、制御部121は、所望の階層についてサブ階層化を行わせる。つまり、制御部121は、一部の階層についてサブ階層化を行わせたり、全ての階層についてサブ階層を行わせたりすることができる。
また、制御部121は、そのアトリビュートデータのサブ階層化に関する制御情報を生成することもできる。例えば、制御部121は、<1.Sub LoDの生成>において上述した各種のシンタクス要素(例えば、sub_lod_enable_flag、sub_lod_distance、sub_lod_mode等)を制御情報として生成することができる。制御部121は、このように生成した制御情報を量子化部112に供給し、復号側に伝送させる。
階層化処理部122は、アトリビュートデータの階層化に関する処理を行う。例えば、階層化処理部122は、制御部121から供給されるアトリビュートデータやジオメトリデータ(復号結果)を取得する。
階層化処理部122は、制御部121の制御に従って、取得したアトリビュートデータを、取得したジオメトリデータを用いて階層化する。この階層化の手法は任意である。例えば、非特許文献2に記載のLiftingのようなスケーラブルな復号に非対応な手法であってもよいし、非特許文献3に記載のようなスケーラブルの復号に対応した手法であってもよい。階層化処理部122は、階層化されたアトリビュートデータやジオメトリデータをSub LoD生成部123に供給する。
Sub LoD生成部123は、サブ階層化に関する処理を行う。例えば、Sub LoD生成部123は、階層化処理部122から供給される、階層化されたアトリビュートデータやジオメトリデータを取得する。
Sub LoD生成部123は、制御部121の制御に従って、アトリビュートデータの階層内にサブ階層を生成する。Sub LoD生成部123は、ジオメトリデータを用いて、このようなサブ階層化を行う。つまり、Sub LoD生成部123は、<1.Sub LoDの生成>において上述した図3に示される表の一番上の段の「方法1」のように、階層(LoD)内におけるアトリビュートデータの参照関係を生成する。
このようにすることにより、Sub LoD生成部123は、予測の方向の偏りを抑制するように階層内のアトリビュートデータの参照関係を生成することができ、符号化効率の低減を抑制することができる。
なお、この生成方法は任意である。例えば、Sub LoD生成部123は、図3に示される表の上から2番目の段の「方法1-1」のように、階層内のポイント毎のアトリビュートデータの一部をサンプリング(選択)してサブ階層とする処理を、再帰的に繰り返してもよい。
また、Sub LoD生成部123は、図3に示される表の上から3番目の段の「方法1-1-1」のように、処理対象階層のアトリビュートデータをモートン順序に整列し、その内の一部を等間隔にサンプリングすることにより、サブ階層を生成してもよい。
また、Sub LoD生成部123は、図3に示される表の上から4番目の段の「方法1-1-2」のように、処理対象階層のアトリビュートデータをモートン順序に整列し、その内の一部を非等間隔にサンプリングすることにより、サブ階層を生成してもよい。
もちろん、これら以外の方法であってもよい。なお、制御部121によりサブ階層化が許可されない場合、Sub LoD生成部123は、サブ階層化を省略することができる。つまり、Sub LoD生成部123は、制御部121により許可された階層に対してのみサブ階層化を行うことができる。
Sub LoD生成部123は、このように制御部121の制御に従ってサブ階層化されたアトリビュートデータを反転部124に供給する。
反転部124は、階層の反転に関する処理を行う。例えば、反転部124は、Sub LoD生成部123から供給されるアトリビュートデータを取得する。このアトリビュートデータは、各階層の情報が、その生成順に階層化されている。
反転部124は、そのアトリビュートデータの階層を反転させる。例えば、反転部124は、アトリビュートデータの各階層に対して、その生成順と逆順に階層番号(最上位層が0、1階層下がる毎に値が1ずつインクリメントされ、最下位層が最大値となる階層を識別するための番号)を付す。つまり、各階層のデータにこの階層番号が付されることにより、各階層は、最下位層から最上位層に向かう順に生成されたことになる。
反転部124は、階層を反転させたアトリビュートデータを重み付け部125に供給する。
重み付け部125は、重み付けに関する処理を行う。例えば、重み付け部125は、反転部124から供給されるアトリビュートデータを取得する。重み付け部125は、取得したアトリビュートデータの重み値を導出する。なお、この重み値の導出方法は任意である。
例えば、重み付け部125は、<1.Sub LoDの生成>において上述した図3に示される表の上から5番目の段の「方法1-2」のように、サブ階層(Sub LoD)間の参照関係を用いて重み値を導出してもよい。
また、非特許文献2に記載のLiftingを用いてアトリビュートデータの階層化(LoD化)が行われた場合、重み付け部125は、階層化において各アトリビュートデータに設定された重み値に、サブ階層間のアトリビュートデータの参照関係を反映させてもよい。つまり、重み付け部125は、階層間のアトリビュートデータの参照関係とサブ階層間のアトリビュートデータの参照関係の両方に応じて重み値を導出してもよい。
また、非特許文献3に記載のスケーラブルの復号に対応した手法を用いてアトリビュートデータの階層化(LoD化)が行われた場合、重み付け部125は、図3に示される表の上から6番目の段の「方法1-2-1」のように、階層化において生成された階層毎の重み値に、サブ階層間のアトリビュートデータの参照関係を反映させてもよい。
もちろん、これら以外の方法であってもよい。なお、重み付け部125は、この重み付けを省略することもできる。
重み付け部125は、以上のように導出した重み値とアトリビュートデータの参照関係を用いて各ポイントのアトリビュートデータの予測を行い、予測値を導出する。また、重み付け部125は、各ポイントのアトリビュートデータと、その予測値との差分値を導出する。
重み付け部125は、導出したアトリビュートデータ(差分値)を量子化部112(図9)に供給する。また、重み付け部125は、導出した重み値を制御情報として量子化部112に供給し、復号側に伝送させるようにしてもよい。
なお、これらの処理部(制御部121乃至重み付け部125)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
<符号化処理の流れ>
次に、この符号化装置100により実行される処理について説明する。符号化装置100は、符号化処理を実行することによりポイントクラウドのデータを符号化する。この符号化処理の流れの例を、図11のフローチャートを参照して説明する。
符号化処理が開始されると、符号化装置100の位置情報符号化部101は、ステップS101において、入力されたポイントクラウドのジオメトリデータ(位置情報)を符号化し、ジオメトリデータの符号化データを生成する。
ステップS102において、位置情報復号部102は、ステップS101において生成されたジオメトリデータの符号化データを復号し、位置情報を生成する。
ステップS103において、ポイントクラウド生成部103は、入力されたポイントクラウドのアトリビュートデータ(属性情報)と、ステップS102において生成されたジオメトリデータ(復号結果)とを用いて、リカラー処理を行い、アトリビュートデータをジオメトリデータに対応させる。
ステップS104において、属性情報符号化部104は、属性情報符号化処理を実行することにより、ステップS103においてリカラー処理されたアトリビュートデータを符号化し、アトリビュートデータの符号化データを生成する。その際、属性情報符号化部104は、<1.Sub LoDの生成>において上述した本技術を適用して処理を行う。属性情報符号化処理の詳細については後述する。
ステップS105において、ビットストリーム生成部105は、ステップS101において生成されたジオメトリデータの符号化データと、ステップS104において生成されたアトリビュートデータの符号化データとを含むビットストリームを生成し、出力する。
ステップS105の処理が終了すると符号化処理が終了する。
このように各ステップの処理を行うことにより、符号化装置100は、予測の方向の偏りを抑制するように階層内のアトリビュートデータの参照関係を生成することができ、符号化効率の低減を抑制することができる。
<属性情報符号化処理の流れ>
次に、図11のステップS104において実行される属性情報符号化処理の流れの例を、図12のフローチャートを参照して説明する。
属性情報符号化処理が開始されると、属性情報符号化部104の階層化処理部111は、ステップS111において、階層化処理を実行することによりアトリビュートデータを階層化し、各ポイントのアトリビュートデータの差分値を導出する。その際、階層化処理部111は、<1.Sub LoDの生成>において上述した本技術を適用して階層化を行う。階層化処理の詳細については後述する。
ステップS112において、量子化部112は、ステップS111において導出された各差分値を量子化する。
ステップS113において、符号化部113は、ステップS112において量子化された差分値を符号化し、アトリビュートデータの符号化データを生成する。ステップS111の階層化処理において制御情報が生成される場合、符号化部113は、その制御情報も含むアトリビュートデータの符号化データを生成する。
ステップS113の処理が終了すると属性情報符号化処理が終了し、処理は図11に戻る。
このように各ステップの処理を行うことにより、属性情報符号化部104は、予測の方向の偏りを抑制するように階層内のアトリビュートデータの参照関係を生成することができ、符号化効率の低減を抑制することができる。
<階層化処理の流れ>
次に、図13のフローチャートを参照して、図12のステップS111において実行される階層化処理の流れの例を説明する。
階層化処理が開始されると、階層化処理部111の制御部121は、ステップS121において、全てのポイントのアトリビュートデータを処理対象とし、最初の階層(LoD)を生成するためにステップS122乃至ステップS126の各処理が行われるようにする。
なお、この最初の階層(1番目に生成される階層)は、後述するステップS127の処理により、階層化されたアトリビュートデータにおける最下位層となる。つまり、制御部121は、処理対象LoDを最下位層に設定するとも言える。
ステップS122において、階層化処理部122は、処理対象のポイントの中から参照ポイントを設定する。参照ポイントは、予測ポイントのアトリビュートデータの予測の際にアトリビュートデータを参照されるポイントである。予測ポイントは、この階層においてアトリビュートデータの予測が行われるポイントである。つまり、階層化処理部122は、処理対象の各ポイントを予測ポイントと参照ポイントのいずれかに設定するとも言える。
ステップS123において、制御部121は、この階層において、サブ階層(Sub LoD)を生成するか否かを判定する。制御部121は、例えば、ユーザやアプリケーションによる設定等、任意の情報に基づいて、この階層をサブ階層化するか否かを判定する。サブ階層化を行うと判定された場合、処理はステップS124に進む。
ステップS124において、Sub LoD生成部123は、ジオメトリデータを用いて、処理対象の階層内にサブ階層を生成する。つまり、Sub LoD生成部123は、<1.Sub LoDの生成>において上述した図3に示される表の一番上の段の「方法1」のように、階層(LoD)内におけるアトリビュートデータの参照関係を生成する。
なお、この生成方法は任意である。例えば、Sub LoD生成部123は、図3に示される表の上から2番目の段の「方法1-1」を適用してもよいし、同表の上から3番目の段の「方法1-1-1」を適用してもよいし、同表の上から4番目の段の「方法1-1-2」を適用してもよい。もちろん、Sub LoD生成部123は、その他の方法を適用してもよい。
サブ階層が生成されると、処理はステップS125に進む。
また、ステップS123において、処理対象の階層についてサブ階層化を行わないと判定された場合、ステップS124の処理はスキップされ、処理はステップS125に進む。
ステップS125において、制御部121は、ステップS122において選択された参照ポイントのアトリビュートデータを処理対象とし、次の階層(LoD)を生成するためにステップS122乃至ステップS126の各処理が行われるようにする。
なお、新たに処理対象にされた次の階層は、後述するステップS127の処理により、階層化されたアトリビュートデータにおいて、その直前の処理対象であった階層の1つ上位の階層となる。つまり、制御部121は、処理対象LoDを1つ上位の階層に更新するとも言える。
ステップS126において、制御部121は、全てのポイントを処理したか否かを判定する。上述の処理が繰り返されることにより、全てのポイントが予測ポイントに設定される(最後の1ポイントは予測を行わない場合もあり得る)。つまり、制御部121は、全階層が生成されたか否かを判定する。まだ予測ポイントに選択されていないポイントが存在し、階層化が完了していないと判定された場合、処理はステップS122に戻る。
つまり、ステップS125において新たな処理対象とされた次の階層について、ステップS122乃至ステップS126の各処理が実行される。つまり、前回参照ポイントに設定されたポイントが予測ポイントと参照ポイントのいずれかに設定される。このようにすることにより、ステップS122乃至ステップS126の各処理が、参照ポイントに設定されたポイントに対して再帰的に繰り返され、各階層および各サブ階層が生成され、階層間およびサブ階層間の参照関係が生成される。
ステップS122乃至ステップS126の各処理が繰り返し実行されることにより、全階層(および全サブ階層)が生成され、ステップS126において、全てのポイントが処理されたと判定された場合、処理はステップS127に進む。
ステップS127において、反転部124は、生成されたアトリビュートデータの階層を反転し、各階層に、生成順と逆向きに階層番号を付す。
ステップS128において、重み付け部125は、各ポイントのアトリビュートデータについて重み値を導出する。その際、重み付け部125は、サブ階層間の参照関係を反映した重み値を導出する。
また、重み付け部125は、導出した重み値とアトリビュートデータの参照関係を用いて、各ポイントについて、アトリビュートデータの予測を行い、そのアトリビュートデータと予測値との差分値を導出する。
ステップS129において、制御部121は、アトリビュートデータのサブ階層化に関する制御情報を生成し、それを復号側に伝送させる。
ステップS129の処理が終了すると階層化処理が終了し、処理は図12に戻る。
このように各ステップの処理を行うことにより、階層化処理部111は、予測の方向の偏りを抑制するように階層内のアトリビュートデータの参照関係を生成することができる。したがって、符号化装置100は、符号化効率の低減を抑制することができる。
<3.第2の実施の形態>
<復号装置>
次に、<1.Sub LoDの生成>において上述した本技術を適用する装置の他の例について説明する。図14は、本技術を適用した情報処理装置の一態様である復号装置の構成の一例を示すブロック図である。図14に示される復号装置200は、ポイントクラウド(3Dデータ)の符号化データを復号する装置である。復号装置200は、<1.Sub LoDの生成>において上述した本技術を適用してポイントクラウドの符号化データを復号する。
なお、図14においては、処理部やデータの流れ等の主なものを示しており、図14に示されるものが全てとは限らない。つまり、復号装置200において、図14においてブロックとして示されていない処理部が存在したり、図14において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
図14に示されるように復号装置200は、復号対象LoD深度設定部201、符号化データ抽出部202、位置情報復号部203、属性情報復号部204、およびポイントクラウド生成部205を有する。
復号対象LoD深度設定部201は、復号対象とする階層(LoD)の深度の設定に関する処理を行う。例えば、復号対象LoD深度設定部201は、符号化データ抽出部202に保持されているポイントクラウドの符号化データについて、どの階層まで復号するかを設定する。この復号対象とする階層深度設定の方法は任意である。
例えば、復号対象LoD深度設定部201が、ユーザやアプリケーション等の外部からの階層深度に関する指示に基づいて設定するようにしてもよい。また、復号対象LoD深度設定部201が、出力画像等、任意の情報に基づいて復号対象とする階層深度を求め、設定するようにしてもよい。
例えば、復号対象LoD深度設定部201が、ポイントクラウドから生成する2次元画像の視点位置、方向、画角、視点の動き(移動、パン、チルト、ズーム)等に基づいて、復号対象とする階層深度を設定するようにしてもよい。
なお、この復号対象とする階層深度設定のデータ単位は任意である。例えば、復号対象LoD深度設定部201は、ポイントクラウド全体について階層深度を設定することもできるし、オブジェクト毎に階層深度を設定することもできるし、オブジェクト内の部分領域毎に階層深度を設定することもできる。もちろん、これらの例以外のデータ単位で階層深度を設定することもできる。
符号化データ抽出部202は、復号装置200に入力されるビットストリームを取得し、保持する。符号化データ抽出部202は、最上位から復号対象LoD深度設定部201により指定された階層までのジオメトリデータ(位置情報)およびアトリビュートデータ(属性情報)の符号化データを、その保持しているビットストリームから抽出する。符号化データ抽出部202は、抽出したジオメトリデータの符号化データを位置情報復号部203に供給する。符号化データ抽出部202は、抽出したアトリビュートデータの符号化データを属性情報復号部204に供給する。
位置情報復号部203は、符号化データ抽出部202から供給されるジオメトリデータの符号化データを取得する。位置情報復号部203は、そのジオメトリデータの符号化データを復号し、ジオメトリデータ(復号結果)を生成する。この復号方法は、符号化装置100の位置情報復号部102の場合と同様の方法であれば任意である。位置情報復号部203は、生成したジオメトリデータ(復号結果)を、属性情報復号部204およびポイントクラウド生成部205に供給する。
属性情報復号部204は、符号化データ抽出部202から供給されるアトリビュートデータの符号化データを取得する。属性情報復号部204は、位置情報復号部203から供給されるジオメトリデータ(復号結果)を取得する。属性情報復号部204は、その位置情報(復号結果)を用いて、<1.Sub LoDの生成>において上述した本技術を適用した方法によりアトリビュートデータの符号化データを復号し、アトリビュートデータ(復号結果)を生成する。属性情報復号部204は、生成したアトリビュートデータ(復号結果)をポイントクラウド生成部205に供給する。
ポイントクラウド生成部205は、位置情報復号部203から供給されるジオメトリデータ(復号結果)を取得する。ポイントクラウド生成部205は、属性情報復号部204から供給されるアトリビュートデータ(復号結果)を取得する。ポイントクラウド生成部205は、そのジオメトリデータ(復号結果)およびアトリビュートデータ(復号結果)を用いて、ポイントクラウド(復号結果)を生成する。ポイントクラウド生成部205は、生成したポイントクラウド(復号結果)のデータを復号装置200の外部に出力する。
このような構成とすることにより、復号装置200は、複数の階層化手法を適用して逆階層化を行うことができるので、複数の階層化手法を適用して階層化されたアトリビュートデータを正しく逆階層化することができる。つまり、そのような複数の階層化手法が適用されて符号化された符号化データを正しく復号することができる。これにより、符号化効率の低減を抑制することができる。
なお、これらの処理部(復号対象LoD深度設定部201乃至ポイントクラウド生成部205)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
<属性情報復号部>
図15は、属性情報復号部204(図14)の主な構成例を示すブロック図である。なお、図15においては、処理部やデータの流れ等の主なものを示しており、図15に示されるものが全てとは限らない。つまり、属性情報復号部204において、図15においてブロックとして示されていない処理部が存在したり、図15において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
図15に示されるよう属性情報復号部204は、復号部211、逆量子化部212、および逆階層化処理部213を有する。
復号部211は、アトリビュートデータの符号化データの復号に関する処理を行う。例えば、復号部211は、属性情報復号部204に供給されるアトリビュートデータの符号化データを取得する。
復号部211は、そのアトリビュートデータの符号化データを復号し、アトリビュートデータ(復号結果)を生成する。この復号方法は、符号化装置100の符号化部113(図9)による符号化方法に対応する方法であれば任意である。また、生成したアトリビュートデータ(復号結果)は、符号化前のアトリビュートデータに対応し、第1の実施の形態において説明したように、アトリビュートデータとその予測値との差分値であり、量子化されている。復号部211は、生成したアトリビュートデータ(復号結果)を逆量子化部212に供給する。
なお、アトリビュートデータの符号化データに重み値に関する制御情報やアトリビュートデータの階層化に関する制御情報が含まれている場合、復号部211は、その制御情報も逆量子化部212に供給する。
逆量子化部212は、アトリビュートデータの逆量子化に関する処理を行う。例えば、逆量子化部212は、復号部211から供給されるアトリビュートデータ(復号結果)を取得する。復号部211から制御情報が供給される場合、逆量子化部212は、その制御情報も取得する。
逆量子化部212は、そのアトリビュートデータ(復号結果)を逆量子化する。逆量子化部212は、符号化装置100の量子化部112(図9)による量子化に対応する方法でこの逆量子化を行う。逆量子化部212は、逆量子化したアトリビュートデータを逆階層化処理部213に供給する。また、復号部211から制御情報を取得した場合、逆量子化部212は、その制御情報も逆階層化処理部213に供給する。
逆階層化処理部213は、逆量子化部212から供給される、逆量子化されたアトリビュートデータを取得する。上述のようにこのアトリビュートデータは差分値である。また、逆階層化処理部213は、位置情報復号部203から供給されるジオメトリデータ(復号結果)を取得する。逆階層化処理部213は、そのジオメトリデータを用いて、取得したアトリビュートデータ(差分値)に対して逆階層化を行う。この逆階層化は、符号化装置100の階層化処理部111(図9)による階層化の逆処理である。
その際、逆階層化処理部213は、<1.Sub LoDの生成>において上述した本技術を適用して逆階層化を行う。例えば、逆階層化処理部213は、アトリビュートデータの階層内においてサブ階層(Sub LoD)を生成し、そのサブ階層間のアトリビュートデータの参照関係を生成し、その参照関係を用いてアトリビュートデータの予測を行い、逆階層化を行う。逆階層化処理部213は、逆階層化したアトリビュートデータを復号結果としてポイントクラウド生成部205(図14)に供給する。
以上のように逆階層化を行うことにより、属性情報復号部204は、上述の「方法1」等を適用して階層化・サブ階層化されたアトリビュートデータを正しく逆階層化することができる。したがって、属性情報復号部204は、符号化効率の低減を抑制することができる。
なお、これらの処理部(復号部211乃至逆階層化処理部213)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
<逆階層化処理部>
図16は、逆階層化処理部213(図15)の主な構成例を示すブロック図である。なお、図16においては、処理部やデータの流れ等の主なものを示しており、図16に示されるものが全てとは限らない。つまり、逆階層化処理部213において、図16においてブロックとして示されていない処理部が存在したり、図16において矢印等として示されていない処理やデータの流れが存在したりしてもよい。
図16に示されるよう逆階層化処理部213は、制御部221、階層化処理部222、Sub LoD生成部223、反転部224、および逆階層化処理部225を有する。
制御部221は、階層化の制御に関する処理を行う。例えば、制御部221は、逆量子化部212(図15)から供給される、逆量子化されたアトリビュートデータを取得する。また、制御部221は、位置情報復号部203から供給されるジオメトリデータ(復号結果)も取得する。制御部221は、取得したアトリビュートデータやジオメトリデータを階層化処理部222に供給する。さらに、逆量子化部212から制御情報が供給される場合、制御部221は、その制御情報も取得し、階層化処理部222に供給する。
また、制御部221は、階層化処理部222やSub LoD生成部223を制御し、アトリビュートデータについて、階層化やサブ階層化を実行させ、符号化の際に生成された階層やサブ階層と同様の構造の階層やサブ階層を生成させる。例えば、制御部221は、<1.Sub LoDの生成>において上述した本技術を適用して階層化やサブ階層化を行わせる。例えば、制御部221は、所望の階層についてサブ階層化を行わせる。つまり、制御部221は、一部の階層についてサブ階層化を行わせたり、全ての階層についてサブ階層を行わせたりすることができる。
例えば、制御部221は、図3に示される表の上から10番目の段の「方法2-2」のように、アトリビュートデータのサブ階層化に関する制御情報に基づいて、サブ階層化を行わせるようにしてもよい。
例えば、制御部221が、アトリビュートデータのサブ階層化が許可されているか否かを示す制御情報(例えば、sub_lod_enable_flag)に基づいて、アトリビュートデータのサブ階層化を行わせるようにしてもよい。
また、制御部221が、アトリビュートデータのサンプリングの間隔を示す制御情報(例えば、sub_lod_distance)に基づいて、アトリビュートデータのサブ階層化(サンプリング)を行わせるようにしてもよい。
さらに、制御部221が、アトリビュートデータのサンプリングの方法を示す制御情報(例えば、sub_lod_mode)に基づいて、アトリビュートデータのサブ階層化(サンプリング)を行わせるようにしてもよい。
このような符号化側から伝送された制御情報を用いることにより、制御部221は、より容易に符号化側と同様のサブ階層化を行わせることができる。
階層化処理部222は、アトリビュートデータの階層化に関する処理を行う。例えば、階層化処理部222は、制御部221から供給されるアトリビュートデータやジオメトリデータ(復号結果)を取得する。
階層化処理部222は、制御部221の制御に従って、取得したアトリビュートデータを、取得したジオメトリデータを用いて階層化する。この階層化の手法は、階層化処理部122による階層化と同様のものであればよい。つまり、階層化処理部222は、アトリビュートデータを、階層化処理部122が生成したのと同様の構造に階層化する。換言するに、階層化処理部122が生成したアトリビュートデータの階層構造が再現される。階層化処理部222は、階層化されたアトリビュートデータやジオメトリデータをSub LoD生成部223に供給する。
Sub LoD生成部223は、サブ階層化に関する処理を行う。例えば、Sub LoD生成部223は、階層化処理部222から供給される、階層化されたアトリビュートデータやジオメトリデータを取得する。
Sub LoD生成部223は、制御部221の制御に従って、アトリビュートデータの階層内にサブ階層(Sub LoD)を生成する。Sub LoD生成部223は、ジオメトリデータを用いて、このようなサブ階層化を行う。
つまり、Sub LoD生成部223は、<1.Sub LoDの生成>において上述した図3に示される表の上から9番目の段の「方法2-1」のように、階層(LoD)内におけるアトリビュートデータのサブ階層(Sub LoD)を生成し、そのサブ階層間の参照関係を生成する。
このようにすることにより、Sub LoD生成部223は、予測の方向の偏りを抑制するように階層内のアトリビュートデータの参照関係を生成することができ、符号化効率の低減を抑制することができる。
Sub LoD生成部223は、Sub LoD生成部123によるサブ階層化と同様の手法により、このサブ階層化を行う。つまり、Sub LoD生成部223は、Sub LoD生成部123が生成したのと同様の構造のサブ階層を生成する。換言するに、Sub LoD生成部123が生成したアトリビュートデータのサブ階層の構造が再現される。
例えば、Sub LoD生成部223は、図3に示される表の上から2番目の段の「方法1-1」のように、階層内のポイント毎のアトリビュートデータの一部をサンプリング(選択)してサブ階層とする処理を、再帰的に繰り返してもよい。
また、Sub LoD生成部223は、図3に示される表の上から3番目の段の「方法1-1-1」のように、処理対象階層のアトリビュートデータをモートン順序に整列し、その内の一部を等間隔にサンプリングすることにより、サブ階層を生成してもよい。
また、Sub LoD生成部223は、図3に示される表の上から4番目の段の「方法1-1-2」のように、処理対象階層のアトリビュートデータをモートン順序に整列し、その内の一部を非等間隔にサンプリングすることにより、サブ階層を生成してもよい。
もちろん、これら以外の方法であってもよい。なお、制御部221によりサブ階層化が許可されない場合、Sub LoD生成部223は、サブ階層化を省略することができる。つまり、Sub LoD生成部223は、制御部221により許可された階層に対してのみサブ階層化を行うことができる。
Sub LoD生成部223は、このように制御部221の制御に従ってサブ階層化されたアトリビュートデータを反転部224に供給する。
反転部224は、階層の反転に関する処理を行う。例えば、反転部224は、Sub LoD生成部223から供給されるアトリビュートデータを取得する。
反転部224は、反転部124の場合と同様に、そのアトリビュートデータの階層を反転させる。例えば、反転部224は、アトリビュートデータの各階層に対して、その生成順と逆順に階層番号(最上位層が0、1階層下がる毎に値が1ずつインクリメントされ、最下位層が最大値となる階層を識別するための番号)を付す。
反転部224は、階層を反転させたアトリビュートデータを逆階層化処理部225に供給する。
逆階層化処理部225は、逆階層化に関する処理を行う。例えば、逆階層化処理部225は、反転部224から供給されるアトリビュートデータを取得する。このアトリビュートデータは、アトリビュートデータとその予測値との差分値により構成され、階層化処理部222により生成(再現)された階層構造と、Sub LoD生成部223により生成(再現)されたサブ階層の構造とを有する。逆階層化処理部225は、この取得したアトリビュートデータを逆階層化し、各ポイントのアトリビュートデータを生成(復元)する。
つまり、逆階層化処理部225は、各ポイントのアトリビュートデータの予測を行い、導出した予測値を用いて差分値から各ポイントのアトリビュートデータを導出する(復元する)。その際、逆階層化処理部225は、図3に示される表の上から8番目の段の「方法2」のように、上述のように再現された階層間やサブ階層間の参照関係を用いてアトリビュートデータの予測を行う(アトリビュートデータの予測値を導出する)。
例えば、逆階層化処理部225は、最上位階層から最下位層に向かう順に階層毎に(階層内においては最上位のサブ階層から最下位のサブ階層に向かう順にサブ階層毎に)、各ポイントのアトリビュートデータの予測値を導出する。
そして、逆階層化処理部225は、導出した予測値をそのポイントに対応する差分値に加算することにより、そのポイントのアトリビュートデータを導出する。このようにして逆階層化処理部225は、各ポイントのアトリビュートデータを生成(復元)する。
逆階層化処理部225は、以上のような逆階層化により生成(復元)したアトリビュートデータ(復号結果)を、ポイントクラウド生成部205(図14)に供給する。
以上のように逆階層化を行うことにより、逆階層化処理部225は、上述の「方法1」等を適用して階層化・サブ階層化されたアトリビュートデータを正しく逆階層化することができる。したがって、復号装置200は、符号化効率の低減を抑制することができる。
なお、これらの処理部(制御部221乃至逆階層化処理部225)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
<復号処理の流れ>
次に、この復号装置200により実行される処理について説明する。復号装置200は、復号処理を実行することによりポイントクラウドの符号化データを復号する。この復号処理の流れの例を、図17のフローチャートを参照して説明する。
復号処理が開始されると、復号装置200の復号対象LoD深度設定部201は、ステップS201において、復号するLoD深度(つまり復号対象とする階層の範囲)を設定する。
ステップS202において、符号化データ抽出部202は、ビットストリームを取得して保持し、最上位層からステップS201において設定されLoD深度の階層までのジオメトリデータ(位置情報)およびアトリビュートデータ(属性情報)の符号化データを抽出する。抽出されるジオメトリデータの階層とアトリビュートデータの階層(階層数)は、互いに一致していてもよいし、一致していなくてもよい。
ステップS203において、位置情報復号部203は、ステップS202において抽出されたジオメトリデータの符号化データを復号し、ジオメトリデータ(復号結果)を生成する。
ステップS204において、属性情報復号部204は、ステップS202において抽出されたアトリビュートデータの符号化データを復号し、アトリビュートデータ(復号結果)を生成する。その際、属性情報復号部204は、<1.Sub LoDの生成>において上述した本技術を適用して処理を行う。属性情報復号処理の詳細については後述する。
ステップS205において、ポイントクラウド生成部205は、ステップS203において生成されたジオメトリデータ(復号結果)と、ステップS204において生成されたアトリビュートデータ(復号結果)とを用いてポイントクラウドデータ(復号結果)を生成し、出力する。
ステップS205の処理が終了すると、復号処理が終了する。
このように各ステップの処理を行うことにより、復号装置200は、上述の「方法1」等を適用して階層化・サブ階層化されたアトリビュートデータを正しく逆階層化することができる。したがって、復号装置200は、符号化効率の低減を抑制することができる。
<属性情報復号処理の流れ>
次に、図17のステップS204において実行される属性情報復号処理の流れの例を、図18のフローチャートを参照して説明する。
属性情報復号処理が開始されると、属性情報復号部204の復号部211は、ステップS211において、アトリビュートデータの符号化データを復号し、アトリビュートデータ(復号結果)を生成する。このアトリビュートデータ(復号結果)は上述のように量子化されている。
ステップS212において、逆量子化部212は、逆量子化処理を実行することにより、ステップS211において生成されたアトリビュートデータ(復号結果)を逆量子化する。この逆量子化されたアトリビュートデータは差分値である。
ステップS213において、逆階層化処理部213は、逆階層化処理を実行することにより、ステップS212において逆量子化されたアトリビュートデータを逆階層化し、各ポイントのアトリビュートデータを導出する。その際、逆階層化処理部213は、<1.Sub LoDの生成>において上述した本技術を適用して逆階層化を行う。逆階層化処理の詳細については後述する。
ステップS213の処理が終了すると属性情報復号処理が終了し、処理は図17に戻る。
このように各ステップの処理を行うことにより、属性情報復号部204は、上述の「方法1」等を適用して階層化・サブ階層化されたアトリビュートデータを正しく逆階層化することができる。したがって、復号装置200は、符号化効率の低減を抑制することができる。
<逆階層化処理の流れ>
次に、図18のステップS213において実行される逆階層化処理の流れの例を、図19のフローチャートを参照して説明する。
逆階層化処理が開始されると、逆階層化処理部213の制御部221は、ステップS221において、ステップS121(図13)の場合と同様に、全てのポイントのアトリビュートデータ(差分値)を処理対象とし、最初の階層(LoD)を生成するためにステップS222乃至ステップS226の各処理が行われるようにする。
なお、この最初の階層(1番目に生成される階層)は、後述するステップS227の処理により、階層化されたアトリビュートデータにおける最下位層となる。つまり、制御部221は、処理対象LoDを最下位層に設定するとも言える。
ステップS222において、階層化処理部222は、ステップS122(図13)の場合と同様に、処理対象のポイントの中から参照ポイントを設定する。つまり、階層化処理部222は、処理対象の各ポイントを予測ポイントと参照ポイントのいずれかに設定するとも言える。
ステップS223において、制御部221は、ステップS123(図13)の場合と同様に、この階層においてサブ階層(Sub LoD)を生成するか否かを判定する。制御部221は、任意の情報等に基づいて、この判定を行うことができる。例えば、制御部221は、符号化側から伝送された制御情報等に基づいて、この階層をサブ階層化するか否かを判定する。サブ階層化を行うと判定された場合、処理はステップS224に進む。
ステップS224において、Sub LoD生成部223は、ステップS124(図13)の場合と同様に、ジオメトリデータを用いて、処理対象の階層内にサブ階層を生成する。つまり、Sub LoD生成部223は、<1.Sub LoDの生成>において上述した図3に示される表の上から9番目の段の「方法2-1」のように、階層(LoD)内におけるアトリビュートデータのサブ階層(Sub LoD)を生成し、そのサブ階層間の参照関係を生成する。
つまり、Sub LoD生成部223は、このステップS224において、ステップS124において行われたサブ階層化と同様の手法により、このサブ階層化を行う。つまり、Sub LoD生成部223は、ステップS124において生成されたものと同様の構造のサブ階層を生成する。換言するに、ステップS124において生成されたアトリビュートデータのサブ階層の構造が再現される。
例えば、Sub LoD生成部223は、図3に示される表の上から2番目の段の「方法1-1」を適用してもよいし、同表の上から3番目の段の「方法1-1-1」を適用してもよいし、同表の上から4番目の段の「方法1-1-2」を適用してもよい。もちろん、Sub LoD生成部223は、その他の方法を適用してもよい。
サブ階層が生成されると、処理はステップS225に進む。
また、ステップS223において、処理対象の階層についてサブ階層化を行わないと判定された場合、ステップS224の処理はスキップされ、処理はステップS225に進む。
ステップS225において、制御部221は、ステップS125(図13)の場合と同様に、ステップS222において選択された参照ポイントのアトリビュートデータを処理対象とし、次の階層(LoD)を生成するためにステップS222乃至ステップS226の各処理が行われるようにする。
なお、新たに処理対象にされた次の階層は、後述するステップS227の処理により、階層化されたアトリビュートデータにおいて、その直前の処理対象であった階層の1つ上位の階層となる。つまり、制御部221は、処理対象LoDを1つ上位の階層に更新するとも言える。
ステップS226において、制御部221は、ステップS126(図13)の場合と同様に、全てのポイントを処理したか否かを判定する。上述の処理が繰り返されることにより、全てのポイントが予測ポイントに設定される(最後の1ポイントは予測を行わない場合もあり得る)。つまり、制御部221は、全階層が生成されたか否かを判定する。まだ予測ポイントに選択されていないポイントが存在し、階層化が完了していないと判定された場合、処理はステップS222に戻る。
つまり、ステップS225において新たな処理対象とされた次の階層について、ステップS222乃至ステップS226の各処理が実行される。つまり、前回参照ポイントに設定されたポイントが予測ポイントと参照ポイントのいずれかに設定される。このようにすることにより、ステップS222乃至ステップS226の各処理が、参照ポイントに設定されたポイントに対して再帰的に繰り返され、各階層および各サブ階層が生成され、階層間およびサブ階層間の参照関係が生成(再現)される。
ステップS222乃至ステップS226の各処理が繰り返し実行されることにより、全階層(および全サブ階層)が生成(再現)され、ステップS226において、全てのポイントが処理されたと判定された場合、処理はステップS227に進む。
ステップS227において、反転部224は、ステップS127(図13)の場合と同様に、生成されたアトリビュートデータの階層を反転し、各階層に、生成順と逆向きに階層番号を付す。これにより、アトリビュートデータとその予測値との差分値により構成され、ステップS222において生成(再現)された階層構造と、ステップS224において生成(再現)されたサブ階層の構造とを有するアトリビュートデータが生成(再現)される。
ステップS228において、逆階層化処理部225は、この生成されたアトリビュートデータを逆階層化し、各ポイントのアトリビュートデータを生成(復元)する。
つまり、逆階層化処理部225は、各ポイントのアトリビュートデータの予測を行い、導出した予測値を用いて差分値から各ポイントのアトリビュートデータを導出する(復元する)。その際、逆階層化処理部225は、図3に示される表の上から8番目の段の「方法2」のように、上述のように再現された階層間やサブ階層間の参照関係を用いてアトリビュートデータの予測を行う(アトリビュートデータの予測値を導出する)。
例えば、逆階層化処理部225は、最上位階層から最下位層に向かう順に階層毎に(階層内においては最上位のサブ階層から最下位のサブ階層に向かう順にサブ階層毎に)、各ポイントのアトリビュートデータの予測値を導出する。
そして、逆階層化処理部225は、導出した予測値をそのポイントに対応する差分値に加算することにより、そのポイントのアトリビュートデータを導出する。このようにして逆階層化処理部225は、各ポイントのアトリビュートデータを生成(復元)する。
全てのポイントのアトリビュートデータを生成(復元)し、逆階層化が完了すると、逆階層化処理が終了し、処理は、図18に戻る。
このように各ステップの処理を行うことにより、逆階層化処理部213は、上述の「方法1」等を適用して階層化・サブ階層化されたアトリビュートデータを正しく逆階層化することができる。したがって、復号装置200は、符号化効率の低減を抑制することができる。
<4.付記>
<階層化・逆階層化方法>
以上においては、属性情報の階層化・逆階層化方法としてLiftingを例に説明したが、本技術は、属性情報を階層化する任意の技術に適用することができる。つまり、属性情報の階層化・逆階層化の方法は、Lifting以外であってもよい。
<コンピュータ>
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここでコンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等が含まれる。
図20は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
図20に示されるコンピュータ900において、CPU(Central Processing Unit)901、ROM(Read Only Memory)902、RAM(Random Access Memory)903は、バス904を介して相互に接続されている。
バス904にはまた、入出力インタフェース910も接続されている。入出力インタフェース910には、入力部911、出力部912、記憶部913、通信部914、およびドライブ915が接続されている。
入力部911は、例えば、キーボード、マウス、マイクロホン、タッチパネル、入力端子などよりなる。出力部912は、例えば、ディスプレイ、スピーカ、出力端子などよりなる。記憶部913は、例えば、ハードディスク、RAMディスク、不揮発性のメモリなどよりなる。通信部914は、例えば、ネットワークインタフェースよりなる。ドライブ915は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブルメディア921を駆動する。
以上のように構成されるコンピュータでは、CPU901が、例えば、記憶部913に記憶されているプログラムを、入出力インタフェース910およびバス904を介して、RAM903にロードして実行することにより、上述した一連の処理が行われる。RAM903にはまた、CPU901が各種の処理を実行する上において必要なデータなども適宜記憶される。
コンピュータが実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア921に記録して適用することができる。その場合、プログラムは、リムーバブルメディア921をドライブ915に装着することにより、入出力インタフェース910を介して、記憶部913にインストールすることができる。
また、このプログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することもできる。その場合、プログラムは、通信部914で受信し、記憶部913にインストールすることができる。
その他、このプログラムは、ROM902や記憶部913に、あらかじめインストールしておくこともできる。
<本技術の適用対象>
以上においては、ポイントクラウドデータの符号化・復号に本技術を適用する場合について説明したが、本技術は、これらの例に限らず、任意の規格の3Dデータの符号化・復号に対して適用することができる。つまり、上述した本技術と矛盾しない限り、符号化・復号方式等の各種処理、並びに、3Dデータやメタデータ等の各種データの仕様は任意である。また、本技術と矛盾しない限り、上述した一部の処理や仕様を省略してもよい。
また、以上においては、本技術の適用例として符号化装置100および復号装置200について説明したが、本技術は、任意の構成に適用することができる。
例えば、本技術は、衛星放送、ケーブルTVなどの有線放送、インターネット上での配信、およびセルラー通信による端末への配信などにおける送信機や受信機(例えばテレビジョン受像機や携帯電話機)、または、光ディスク、磁気ディスクおよびフラッシュメモリなどの媒体に画像を記録したり、これら記憶媒体から画像を再生したりする装置(例えばハードディスクレコーダやカメラ)などの、様々な電子機器に適用され得る。
また、例えば、本技術は、システムLSI(Large Scale Integration)等としてのプロセッサ(例えばビデオプロセッサ)、複数のプロセッサ等を用いるモジュール(例えばビデオモジュール)、複数のモジュール等を用いるユニット(例えばビデオユニット)、または、ユニットにさらにその他の機能を付加したセット(例えばビデオセット)等、装置の一部の構成として実施することもできる。
また、例えば、本技術は、複数の装置により構成されるネットワークシステムにも適用することもできる。例えば、本技術を、ネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングとして実施するようにしてもよい。例えば、コンピュータ、AV(Audio Visual)機器、携帯型情報処理端末、IoT(Internet of Things)デバイス等の任意の端末に対して、画像(動画像)に関するサービスを提供するクラウドサービスにおいて本技術を実施するようにしてもよい。
なお、本明細書において、システムとは、複数の構成要素(装置、モジュール(部品)等)の集合を意味し、全ての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、および、1つの筐体の中に複数のモジュールが収納されている1つの装置は、いずれも、システムである。
<本技術を適用可能な分野・用途>
本技術を適用したシステム、装置、処理部等は、例えば、交通、医療、防犯、農業、畜産業、鉱業、美容、工場、家電、気象、自然監視等、任意の分野に利用することができる。また、その用途も任意である。
<その他>
なお、本明細書において「フラグ」とは、複数の状態を識別するための情報であり、真(1)または偽(0)の2状態を識別する際に用いる情報だけでなく、3以上の状態を識別することが可能な情報も含まれる。したがって、この「フラグ」が取り得る値は、例えば1/0の2値であってもよいし、3値以上であってもよい。すなわち、この「フラグ」を構成するbit数は任意であり、1bitでも複数bitでもよい。また、識別情報(フラグも含む)は、その識別情報をビットストリームに含める形だけでなく、ある基準となる情報に対する識別情報の差分情報をビットストリームに含める形も想定されるため、本明細書においては、「フラグ」や「識別情報」は、その情報だけではなく、基準となる情報に対する差分情報も包含する。
また、符号化データ(ビットストリーム)に関する各種情報(メタデータ等)は、符号化データに関連付けられていれば、どのような形態で伝送または記録されるようにしてもよい。ここで、「関連付ける」という用語は、例えば、一方のデータを処理する際に他方のデータを利用し得る(リンクさせ得る)ようにすることを意味する。つまり、互いに関連付けられたデータは、1つのデータとしてまとめられてもよいし、それぞれ個別のデータとしてもよい。例えば、符号化データ(画像)に関連付けられた情報は、その符号化データ(画像)とは別の伝送路上で伝送されるようにしてもよい。また、例えば、符号化データ(画像)に関連付けられた情報は、その符号化データ(画像)とは別の記録媒体(または同一の記録媒体の別の記録エリア)に記録されるようにしてもよい。なお、この「関連付け」は、データ全体でなく、データの一部であってもよい。例えば、画像とその画像に対応する情報とが、複数フレーム、1フレーム、またはフレーム内の一部分などの任意の単位で互いに関連付けられるようにしてもよい。
なお、本明細書において、「合成する」、「多重化する」、「付加する」、「一体化する」、「含める」、「格納する」、「入れ込む」、「差し込む」、「挿入する」等の用語は、例えば符号化データとメタデータとを1つのデータにまとめるといった、複数の物を1つにまとめることを意味し、上述の「関連付ける」の1つの方法を意味する。
また、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
例えば、1つの装置(または処理部)として説明した構成を分割し、複数の装置(または処理部)として構成するようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成をまとめて1つの装置(または処理部)として構成されるようにしてもよい。また、各装置(または各処理部)の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部を他の装置(または他の処理部)の構成に含めるようにしてもよい。
また、例えば、上述したプログラムは、任意の装置において実行されるようにしてもよい。その場合、その装置が、必要な機能(機能ブロック等)を有し、必要な情報を得ることができるようにすればよい。
また、例えば、1つのフローチャートの各ステップを、1つの装置が実行するようにしてもよいし、複数の装置が分担して実行するようにしてもよい。さらに、1つのステップに複数の処理が含まれる場合、その複数の処理を、1つの装置が実行するようにしてもよいし、複数の装置が分担して実行するようにしてもよい。換言するに、1つのステップに含まれる複数の処理を、複数のステップの処理として実行することもできる。逆に、複数のステップとして説明した処理を1つのステップとしてまとめて実行することもできる。
また、例えば、コンピュータが実行するプログラムは、プログラムを記述するステップの処理が、本明細書で説明する順序に沿って時系列に実行されるようにしても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで個別に実行されるようにしても良い。つまり、矛盾が生じない限り、各ステップの処理が上述した順序と異なる順序で実行されるようにしてもよい。さらに、このプログラムを記述するステップの処理が、他のプログラムの処理と並列に実行されるようにしても良いし、他のプログラムの処理と組み合わせて実行されるようにしても良い。
また、例えば、本技術に関する複数の技術は、矛盾が生じない限り、それぞれ独立に単体で実施することができる。もちろん、任意の複数の本技術を併用して実施することもできる。例えば、いずれかの実施の形態において説明した本技術の一部または全部を、他の実施の形態において説明した本技術の一部または全部と組み合わせて実施することもできる。また、上述した任意の本技術の一部または全部を、上述していない他の技術と併用して実施することもできる。
なお、本技術は以下のような構成も取ることができる。
(1) 3次元形状のオブジェクトをポイントの集合として表現するポイントクラウドの属性情報を階層化し、階層間の前記属性情報の参照関係を生成する階層化部と、
前記階層化部により生成された前記属性情報の階層において、前記階層の前記属性情報をサブ階層化し、サブ階層間の前記属性情報の参照関係を生成するサブ階層化部と
を備える情報処理装置。
(2) 前記サブ階層化部は、処理対象階層の前記属性情報をモートン順序に整列し、等間隔にサンプリングすることにより、前記属性情報をサブ階層化する
(1)に記載の情報処理装置。
(3) 前記サブ階層化部は、処理対象階層の前記属性情報をモートン順序に整列し、非等間隔にサンプリングすることにより、前記属性情報をサブ階層化する
(1)に記載の情報処理装置。
(4) 前記サブ階層化部により生成された前記サブ階層間の前記属性情報の参照関係に応じて、前記階層毎の重み値を更新することにより、前記属性情報毎の重み値を導出する重み付け部
をさらに備える(1)乃至(3)のいずれかに記載の情報処理装置。
(5) 前記階層化部により生成された前記階層間の前記属性情報の参照関係、および、前記サブ階層化部により生成された前記サブ階層間の前記属性情報の参照関係に応じて、前記属性情報毎の重み値を導出する重み付け部
をさらに備える(1)乃至(3)のいずれかに記載の情報処理装置。
(6) 前記属性情報を符号化し、前記属性情報の符号化データを生成する符号化部
をさらに備える(1)乃至(5)のいずれかに記載の情報処理装置。
(7) 前記属性情報のサブ階層化に関する制御情報を生成する生成部をさらに備え、
前記符号化部は、前記生成部により生成された前記制御情報を含む前記符号化データを生成する
(6)に記載の情報処理装置。
(8) 前記生成部は、前記属性情報のサブ階層化が許可されているか否かを示す制御情報を生成する
(7)に記載の情報処理装置。
(9) 前記生成部は、前記サブ階層化部による前記属性情報のサンプリングの間隔を示す制御情報を生成する
(7)または(8)に記載の情報処理装置。
(10) 前記生成部は、前記サブ階層化部による前記属性情報のサンプリングの方法を示す制御情報を生成する
(7)乃至(9)のいずれかに記載の情報処理装置。
(11) 3次元形状のオブジェクトをポイントの集合として表現するポイントクラウドの属性情報を階層化し、階層間の前記属性情報の参照関係を生成し、
生成された前記属性情報の階層において、前記階層の前記属性情報をサブ階層化し、サブ階層間の前記属性情報の参照関係を生成する
情報処理方法。
(12) 3次元形状のオブジェクトをポイントの集合として表現するポイントクラウドの属性情報を階層化し、階層間の前記属性情報の参照関係を生成する階層化部と、
前記階層化部により生成された前記属性情報の階層において、前記階層の前記属性情報をサブ階層化し、サブ階層間の前記属性情報の参照関係を生成するサブ階層化部と、
前記階層化部により生成された前記階層間の前記属性情報の参照関係、および、前記サブ階層化部により生成された前記サブ階層間の前記属性情報の参照関係に基づいて、前記属性情報を逆階層化する逆階層化部と
を備える情報処理装置。
(13) 前記サブ階層化部は、処理対象階層の前記属性情報をモートン順序に整列し、等間隔にサンプリングすることにより、前記属性情報をサブ階層化する
(12)に記載の情報処理装置。
(14) 前記サブ階層化部は、処理対象階層の前記属性情報をモートン順序に整列し、非等間隔にサンプリングすることにより、前記属性情報をサブ階層化する
(12)に記載の情報処理装置。
(15) 前記属性情報の符号化データを復号し、前記属性情報を復元する復号部
をさらに備える(12)乃至(14)のいずれかに記載の情報処理装置。
(16) 前記復号部は、前記符号化データを復号して、前記属性情報のサブ階層化に関する制御情報を復元し、
前記サブ階層化部は、前記復号部により復元された前記制御情報に基づいて、前記属性情報をサブ階層化する
(15)に記載の情報処理装置。
(17) 前記サブ階層化部は、前記復号部により復元された前記属性情報のサブ階層化が許可されているか否かを示す制御情報に基づいて、前記属性情報をサブ階層化する
(16)に記載の情報処理装置。
(18) 前記サブ階層化部は、前記復号部により復元された前記属性情報のサンプリングの間隔を示す制御情報に基づいて、前記属性情報をサブ階層化する
(16)または(17)に記載の情報処理装置。
(19) 前記サブ階層化部は、前記復号部により復元された前記属性情報のサンプリングの方法を示す制御情報に基づいて、前記属性情報をサブ階層化する
(16)乃至(18)のいずれかに記載の情報処理装置。
(20) 3次元形状のオブジェクトをポイントの集合として表現するポイントクラウドの属性情報を階層化し、階層間の前記属性情報の参照関係を生成し、
生成された前記属性情報の階層において、前記階層の前記属性情報をサブ階層化し、サブ階層間の前記属性情報の参照関係を生成し、
生成された前記階層間の前記属性情報の参照関係、および、生成された前記サブ階層間の前記属性情報の参照関係に基づいて、前記属性情報を逆階層化する
情報処理方法。