以下、本開示を実施するための形態(以下実施の形態とする)について説明する。なお、説明は以下の順序で行う。
1.ボクセルデータの符号化
2.第1の実施の形態(符号化装置)
3.第2の実施の形態(復号装置)
4.第3の実施の形態(相関演算処理)
5.その他
<1.ボクセルデータの符号化>
<ポイントクラウド>
従来、点群の位置情報や属性情報等により3次元構造を表すポイントクラウドや、頂点、エッジ、面で構成され、多角形表現を使用して3次元形状を定義するメッシュ等のデータが存在した。
例えばポイントクラウドの場合、図1のAに示されるような立体構造物を、図1のBに示されるような多数の点(ポイントデータ)の集合(点群)として表現する。つまり、ポイントクラウドのデータは、この点群の各点の位置情報や属性情報(例えば色等)により構成される。したがってデータ構造が比較的単純であるとともに、十分に多くの点を用いることにより任意の立体構造を十分な精度で表現することができる。
しかしながら、このようなポイントクラウドやメッシュ等のデータはそのデータ量が比較的大きいので、符号化等によるデータ量の圧縮が求められている。例えば、OctreeやKDtree等といったボクセル(Voxel)を用いた符号化方法が考えられた。ボクセルは、符号化対象の位置情報を量子化するためのデータ構造である。
<有効指向性グラフ>
また、例えば、非特許文献1に記載のDAG(Directed Acyclic Graph)(有効指向性グラフとも称する)のように、Octree符号化されたデータを、自己相関を利用してさらに可逆符号化する方法も考えられた。このDAG(有効指向性グラフ)は、Octree符号化されたデータの木構造(Octreeパタン)が同一のノードをまとめることにより、冗長性を低減させて情報量を低減させることができる。
このDAGによる冗長性の低減の様子の例を、図2を参照して説明する。例えば、図2のAに示されるような2分木構造について考える。この2分木構造の各四角はノードを示している。各ノード間の矢印はノード同士を結びつけるポインタを示している。図2のAの2分木構造には、白、黒、グレーの3種類のノードが存在する。各色は値を示している。つまり、図2のAの2分木構造には、3種類の値のノードが存在する。
ここでこの2分木構造の図中一番下のノード(最下位レベルのノード)に着目すると、白と黒の2種類のノードが存在する。つまり、黒のノード同士と白のノード同士とで冗長性が生じている。そこで図2のBに示されるように黒のノードと白のノードを1つずつ残し、重複する他のノードを削除する。
そして、その一段上のレベルのノードを、残した黒のノードまたは白のノードに結びつける。つまり、下から2段目のレベルのノードの内、最下位レベルの黒のノードに結び付けられていたノードは、残した黒のノードに結び付け直し、最下位レベルの白のノードに結び付けられていたノードは、残した白のノードに結び付け直す。より具体的には、下から2段目のレベルの各ノードのポインタ(矢印)の先を、残した黒または白のノードを指定するように更新する。
このような操作により、図2のCに示されるように、最下位レベルのノードが2つに削減される。ノードの値は変化しないので、図2のCの2分木構造は、実質的に図2のAの2分木構造と同等である。つまり、可逆に圧縮される。
次に、図2のCに示されるように、下から2段目のレベルについても同様にノードを集約させる。2分木構造の各レベルについて同様の処理を行うことにより、2分木構造最終的に図2のDのようにすることができる。つまり、図2のDの2分木構造は、図2のAの2分木構造と同等である。以上のように、DAGにより、2分木構造の情報を可逆に圧縮することができる。
<OctreeとDAG>
このDAG(有効指向性グラフ)は、Octree符号化されたボクセルデータの構造であるOctreeパタンにも適用することができる。Octreeパタンにおいては、図3のAに示されるように、上位のレベルの2×2×2のボクセルの内、ポイントデータが存在するボクセルが、1段下位のレベルにおいてさらに2×2×2に分割される。図3のAにおいて、グレーで示されるボクセルが、ポイントデータが存在するボクセルであることを示している。上位のレベルのノード10のボクセルの内、2つがグレーのボクセルである。したがって、この2つのボクセルが1段下位のレベルのノード11およびノード12とされ、さらに、2×2×2のボクセルに分割されている。
図3のBはこのようなOctreeパタンのデータ構造の概要を示す。図3のBにおいて、ノード20は、上位のノードを示し、ノード21およびノード22は、そのノード20に属する1段下位のレベルのノードを示す。
各ノード内の四角は、各ボクセルのデータを示す。1ボクセルのデータは、例えば、1バイト(byte)により構成される。つまり、1ノードのデータは8バイトにより構成される。ここでは説明の便宜上、白と斜線模様の2種類のデータが存在するとする。白のデータは、ポイントデータが存在しないボクセルのデータを示し、斜線模様のデータは、ポイントデータが存在するデータを示す。
斜線模様の各データには、1段下位のノードのデータが存在するアドレスを示すポインタが付与される。つまり、ポイントデータが存在するボクセルのみ、1段下位のノードが形成される。ノードのデータ構造は、各レベルにおいて同様である。最下位のデータには、より下位レベルのデータが存在するアドレスを示すポインタは付与されない。なお、この説明では位置情報についてのみ説明し、属性情報の説明は省略している。
図3のBの例の場合、ノード21とノード22とが、各ボクセルのデータのパタンが一致している。つまり、両ノードにおけるボクセルデータの値の分布パタンが互いに同一である。すなわち、同一のデータが複数のアドレスに存在するので、冗長である。したがって、DAGを行うことにより、図4に示されるように、この2ノードが1つにマージされる。例えば、ノード21が削除され、ノード20の左から2つ目のボクセルのデータのポインタが、ノード22のアドレスを示すように更新される。このようにすることにより、このレベルのデータの冗長性を低減させることができる。
各レベルにおいて同様にして冗長性を低減させることができる。すなわち、図5に示されるように、複数のレベルについても同様に、データ構造が同一な部分をマージすることができる。
<DAGの特性>
DAGは、主にコンピュータモデルより生成された巨大なCGデータ(数億点の頂点情報を持つようなデータ)の情報量低減を目的としている。つまり、大容量かつ低ノイズのデータを対象として高圧縮率で圧縮することを目的としている。
しかしながら、自然画像等のポイントクラウドデータの場合、ノイズやデータに含まれるディテール情報等によって、同一のOctreeパタンが発生する確率が低減するため、十分な圧縮効率が得られないおそれがあった。つまり、符号化効率が低減するおそれがあった。
また、解像度が比較的低い場合(例えば頂点情報が百万点程度)の場合も、同一のOctreeパタンが発生する確率が低減するため、十分な圧縮効率が得られないおそれがあった。つまり、符号化効率が低減するおそれがあった。
なお、DAGは、記録媒体にデータを保存する場合や、GPU等において処理する際のメモリに格納する場合の容量低減を目的とした処理であり、データ伝送については考慮されていない。したがって伝送時のデータ構造等は定義されていない。
<ボクセルデータの符号化>
そこで、例えば図6に示されるように、ボクセルデータ60(ボクセル化された3次元データ)において、所定数のボクセルからなるブロック61とブロック62とのように、ボクセルデータの値の分布パタンが一致する場合(DAGと同様)だけでなく、ブロック61(ブロック62)とブロック63とのように、ボクセルデータの値の分布が近似する場合も、(両ブロックの分布パタンが同一とみなし、)マージするようにする。
換言するに、ブロック61乃至ブロック63とブロック64とのように、ボクセルデータの値の分布が一致も近似もしない場合のみ、(両ブロックのボクセルデータの値の分布パタンが互いに異なるとみなし、)マージしないようにする。
つまり、ボクセルデータ60に対して、各ブロック間における、ボクセルデータの値の分布パタンの相関の強さを求め、その相関の強さに基づいて上述のように各ブロックをマージする。このようにすることにより、情報量を低減させることができる。上述のように分布パタンが近似する場合もマージすることができるので、DAGの場合よりも情報量を低減させることができる。すなわち、符号化効率の低減を抑制することができる。
なお、図6においては、4×4×4のボクセルからなるブロックについて、ボクセルデータの値の分布パタンを比較しているが、この比較を行うブロックのサイズ(ボクセルの個数)は、任意であり、4×4×4に限定されない。
なお、以下においては符号化対象のデータとしてポイントクラウドを例に本技術の説明を行うが、本技術は、ポイントクラウドに限らず、例えばメッシュ等、3次元構造を示し、ボクセルを用いた符号化が可能なデータであればどのような符号化対象に対しても適用することができる。また、この符号化対象は、動画像であってもよいし、静止画像であってもよい。
<2.第1の実施の形態>
<符号化装置>
図7は、本技術を適用した情報処理装置の一実施の形態である符号化装置の主な構成例を示すブロック図である。図7に示される符号化装置100は、符号化対象として入力されたポイントクラウドのデータを、ボクセルを用いて符号化し、得られた符号化データ等を出力する。その際、符号化装置100は、以下に説明するように本技術を適用した方法でこの符号化を行う。
図7に示されるように、符号化装置100は、制御部101、前処理部111、バウンディングボックス設定部112、ボクセル設定部113、信号列生成部114、および符号化部115を有する。
制御部101は、符号化装置100内の各処理部の制御に関する処理を行う。例えば、制御部101は、各処理部による処理の実行またはスキップ(省略)を制御する。例えば、制御部101は、所定の制御情報に基づいてそのような制御を行う。このようにすることにより、制御部101は、不要な処理の実行を抑制することができ、負荷の増大を抑制することができる。
制御部101は、どのような構成を有するようにしてもよいが、例えば、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、処理を行うようにしてもよい。
前処理部111は、制御部101により制御され、符号化装置100に入力される符号化対象(ポイントクラウドのデータ)に対して、前処理として所定の処理を施し、処理後のデータをバウンディングボックス設定部112に供給する。
例えば、制御部101は、前処理の実行を許可または禁止する制御情報に従って、前処理の実行が許可されている(禁止されていない)場合に、前処理部111に前処理を実行させる。また、例えば、制御部101は、前処理の実行の許可または禁止の対象となる符号化対象の範囲を示す制御情報に従って、前処理の実行が許可されている(禁止されていない)符号化対象に対して、前処理部111に前処理を実行させる。さらに例えば、制御部101は、実行を許可または禁止する処理内容を指定する制御情報に従って、実行が許可されている(禁止されていない)処理を前処理部111に実行させる。このようにすることにより、不要な前処理の実行を抑制することができ、負荷の増大を抑制することができる。
なお、前処理の内容は任意である。例えば、前処理部111が、前処理として、ノイズを低減させる処理を施すようにしても良いし、解像度(点の数)を変更する処理を行うようにしても良い。また例えば、点群の密度を均等にしたり、所望の偏りを持たせたりするように、各点の配置を更新するようにしてもよい。さらに例えば、奥行き情報を有する画像情報等のようなポイントクラウドでないデータが符号化装置100に入力されるようにし、前処理部111が、前処理として、その入力されたデータをポイントクラウドのデータに変換するようにしてもよい。
前処理部111は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、前処理を行うようにしてもよい。
バウンディングボックス設定部112は、制御部101により制御されて、符号化対象の位置情報を正規化するためのバウンディングボックスの設定に関する処理を行う。
例えば、制御部101は、バウンディングボックスの設定の許可または禁止する制御情報に従って、そのバウンディングボックスの設定が許可されている(禁止されていない)場合に、バウンディングボックス設定部112にそのバウンディングボックスを設定させる。また、例えば、制御部101は、バウンディングボックスの設定の許可または禁止の対象となる符号化対象の範囲を示す制御情報に従って、そのバウンディングボックスの設定が許可されている(禁止されていない)符号化対象に対して、バウンディングボックス設定部112にそのバウンディングボックスを設定させる。さらに例えば、制御部101は、バウンディングボックスの設定に用いられるパラメータの許可または禁止に関する制御情報に従って、バウンディングボックス設定部112に、使用が許可されている(禁止されていない)パラメータを用いてバウンディングボックスを設定させる。このようにすることにより、不要なバウンディングボックスの設定や不要なパラメータの使用を抑制することができ、負荷の増大を抑制することができる。
例えば、バウンディングボックス設定部112は、符号化対象の各オブジェクトに対するバウンディングボックスを設定する。例えば、図8のAに示されるように、ポイントクラウドのデータによりオブジェクト131やオブジェクト132が表現されている場合、バウンディングボックス設定部112は、図8のBに示されるように、そのオブジェクト131やオブジェクト132をそれぞれ包含するようにバウンディングボックス141やバウンディングボックス142を設定する。図7に戻り、バウンディングボックスが設定されると、バウンディングボックス設定部112は、そのバウンディングボックスに関する情報をボクセル設定部113に供給する。
なお、バウンディングボックス設定部112は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、バウンディングボックスの設定に関する処理を行うようにしてもよい。
ボクセル設定部113は、制御部101により制御されて、符号化対象の位置情報を量子化するためのボクセルの設定に関する処理を行う。
例えば、制御部101は、ボクセルの設定の許可または禁止する制御情報に従って、そのボクセルの設定が許可されている(禁止されていない)場合に、ボクセル設定部113にそのボクセルを設定させる。また、例えば、制御部101は、ボクセルの設定の許可または禁止の対象となる符号化対象の範囲を示す制御情報に従って、そのボクセルの設定が許可されている(禁止されていない)符号化対象に対して、ボクセル設定部113にそのボクセルを設定させる。さらに例えば、制御部101は、ボクセルの設定に用いられるパラメータの許可または禁止に関する制御情報に従って、ボクセル設定部113に、使用が許可されている(禁止されていない)パラメータを用いてボクセルを設定させる。このようにすることにより、不要なボクセルの設定や不要なパラメータの使用を抑制することができ、負荷の増大を抑制することができる。
例えば、ボクセル設定部113は、バウンディングボックス設定部112により設定されたバウンディングボックス内に、ボクセルを設定する。例えば、ボクセル設定部113は、図8のCに示されるように、バウンディングボックス141を分割してボクセル151を設定する。つまり、ボクセル設定部113は、バウンディングボックス内のポイントクラウドデータをボクセルにより量子化(すなわちボクセル化)する。なお、バウンディングボックスが複数存在する場合、ボクセル設定部113は、各バウンディングボックスについてポイントクラウドデータをボクセル化する。つまり、図8のBの例の場合、ボクセル設定部113は、バウンディングボックス142に対しても同様の処理を行う。以上のようにしてボクセルが設定されると、ボクセル設定部113は、そのボクセル化されたポイントクラウドデータ(ボクセルデータとも称する)(位置情報の量子化のためのデータ構造に関する情報)や属性情報等を、信号列生成部114に供給する。
なお、ボクセル設定部113は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、ボクセルの設定に関する処理を行うようにしてもよい。
信号列生成部114は、制御部101により制御され、信号列の生成に関する処理を行う。
例えば、制御部101は、信号列の生成を許可または禁止する制御情報に従って、信号列の生成が許可されている(禁止されていない)場合に、信号列生成部114に信号列を生成させる。また、例えば、制御部101は、信号列の生成の許可または禁止の対象となる符号化対象の範囲を示す制御情報に従って、信号列の生成が許可されている(禁止されていない)符号化対象に対して、信号列生成部114に信号列を生成させる。このようにすることにより、不要な信号列の生成を抑制することができ、負荷の増大を抑制することができる。
信号列生成部114は、例えば、ポイントクラウドデータを量子化したボクセルデータ(例えば図8のCに示されるようなボクセル設定部113により生成されたボクセルデータ)を、そのボクセルデータの値の分布パタンの相関を利用して符号化する(相関情報を生成する)。例えば、信号列生成部114は、ボクセルデータが表す空間の部分領域であるブロック毎に、そのボクセルデータを符号化して相関情報を生成する。信号列生成部114は、生成した相関情報やその他の情報を信号列化し、その信号列を符号化部115に供給する。
なお、信号列生成部114は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、信号列の生成に関する処理を行うようにしてもよい。
符号化部115は、制御部101により制御され、供給された信号列の符号化に関する処理を行う。
例えば、制御部101は、信号列の符号化を許可または禁止する制御情報に従って、信号列の符号化が許可されている(禁止されていない)場合に、符号化部115に信号列を符号化させる。また、例えば、制御部101は、信号列の符号化の許可または禁止の対象となる符号化対象の範囲を示す制御情報に従って、信号列の符号化が許可されている(禁止されていない)符号化対象に対して、符号化部115に信号列を符号化させる。このようにすることにより、不要な信号列の符号化を抑制することができ、負荷の増大を抑制することができる。
符号化部115は、例えば、供給された信号列を符号化し、符号化データ(ビットストリーム)を生成する。つまり、符号化部115は、信号列生成部114により生成された相関情報を符号化し、その相関情報を含むビットストリームを生成する。
この信号列の符号化方法は任意である。例えば、符号化部115が、可変長符号化(VLC(Variable Length Code))により信号列を符号化するようにしてもよい。図8のDは、符号化された信号列の様子の例を示している。なお、符号化部115は、位置情報だけでなく、属性情報(例えば、色情報、αチャンネル、法線ベクトル等)も符号化する。
また、符号化部115は、適宜、例えば制御情報等の、ポイントクラウドデータ以外の関連情報も符号化し、ヘッダやパラメータセット等に格納する。例えば、符号化部115は、ボクセルデータが表す空間の部分領域であるブロック間におけるボクセルデータの値の分布パタンの相関の強さに基づいて設定されたボクセルデータの値の分布パタンであるユニークパタンと、そのユニークパタンを識別するためのインデックスとの対応関係を示す情報を符号化し、ヘッダやパラメータセット等に格納するようにしてもよい。
符号化部115は、上述した各種情報のビットストリームを互いに関連付ける。ここで、「関連付ける」という用語は、例えば、一方のデータを処理する際に他方のデータを利用し得る(リンクさせ得る)ようにすることを意味する。つまり、互いに関連付けられたデータは、1つのデータとしてまとめられてもよいし、それぞれ個別のデータとしてもよい。例えば、符号化データに関連付けられた制御情報は、その符号化データとは別の伝送路上で伝送されるようにしてもよい。また、例えば、符号化データに関連付けられた制御情報は、その符号化データとは別の記録媒体(または同一の記録媒体の別の記録エリア)に記録されるようにしてもよい。なお、この「関連付け」は、データ全体でなく、データの一部であってもよい。例えば、複数フレーム、1フレーム、またはフレーム内の一部分などの任意の単位で互いに関連付けられるようにしてもよい。
符号化部115は、このような符号化により得られた符号化データ(ビットストリーム)を符号化装置100の外部に出力する。この符号化装置100より出力されたデータ(符号化データや制御情報)は、例えば、図示せぬ後段の処理部により復号され、ポイントクラウドのデータが復元されるようにしてもよいし、図示せぬ通信部により送信され、所定の伝送路を介して復号装置等の他の装置に伝送されるようにしてもよいし、図示せぬ記録媒体に記録されるようにしてもよい。
なお、符号化部115は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、符号化に関する処理を行うようにしてもよい。
<ボクセルデータの符号化方法の例1>
信号列生成部114による、上述の相関の強さを利用したボクセルデータの符号化の方法は、任意である。その方法の例を、図9の表に示す。例えば、信号列生成部114は、図9に示される表のid = 1の行に示される方法により、ボクセルデータを符号化するようにしてもよい。この場合、画面内のノード(Node)に対してユニークなインデックス(Index)を付与し、符号化ブロックに用いる。つまり、ユニークパタンとそのインデックス(Index)とを用いてボクセルデータが符号化される。
この場合、信号列生成部114は、図10のAに示されるように、画面内の全ノード(Node)から冗長なノードを削減し、ユニークパタンUiを検出し、検出した各ユニークパタンUiに対して互いに異なるインデックス(Idx)を割り当てる。そして、信号列生成部114は、図10のBに示されるように、ボクセルデータ60の各ブロックのボクセルデータを、そのブロックとボクセルデータの値の分布パタンが一致または近似するユニークパタンUiに割り当てたインデックスに置き換える。つまり、全ノードがインデックスを用いて表現される。
そして、符号化部115は、図10のAに示されるようなユニークパタンとインデックスとの対応関係を示す情報や、図10のBに示されるような各ブロックのボクセルパタンと置き換えたインデックスのリスト(IdxLst)を符号化し、ビットストリームを生成する。
<信号列生成部>
図11は、この場合の信号列生成部114(図7)の主な構成例を示すブロック図である。図11に示されるように、この場合の信号列生成部114は、相関演算部201、ユニークパタン設定部202、インデックス割り当て部203、および相関情報生成部204を有する。
相関演算部201は、ボクセルデータの値の分布パタンの相関の強さ(相関度とも称する)の算出に関する処理を行う。例えば、相関演算部201は、ボクセル設定部113から供給されたボクセルデータについて、ボクセルデータが表す空間の部分領域であるブロック間のボクセルデータの値の分布パタンの相関度を算出する。
なお、この比較は任意のブロック間(つまり任意のボクセル群同士の間)で行うことができる。例えば、相関演算部201は、Octreeパタンのノードをブロックとし、そのノード間の相関度を算出するようにしてもよいし、ノードとノードでないブロックとの間の相関度を算出するようにしてもよいし、ノードでないブロック同士の相関度を算出するようにしてもよい。また、この相関度の算出方法は任意である。
相関演算部201は、供給されたボクセルデータとともに、算出した相関度を示す情報をユニークパタン設定部202に供給する。
なお、相関演算部201は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、相関度の算出に関する処理を行うようにしてもよい。
ユニークパタン設定部202は、ユニークパタンの設定に関する処理を行う。例えば、ユニークパタン設定部202は、相関演算部201から供給された相関度を利用してその分布パタンが一致または近似するかによってブロックを分類する(例えばマージする)。
そして、ユニークパタン設定部202は、その分類結果に基づいてユニークパタンUiを設定する。このユニークパタンUiは、例えば、図10のAのブロック61やブロック64のように、ユニークパタンUiとして選択されたもの同士において、分布パタンが互いに異なるボクセルデータである。つまり、ユニークパタンUiのボクセルデータの値の分布パタンは、他のユニークパタンUiのボクセルデータの値の分布パタンと異なる。
このようなユニークパタンUiを設定する際に、ユニークパタン設定部202は、上述のように、比較したブロック同士でボクセルデータの値の分布パタンが一致する場合だけでなく、近似する場合も、両ブロックのその分布パタンが同一であるとみなし、マージする。換言するに、ユニークパタン設定部202は、比較したブロックにおいてその分布パタンが一致もせず、近似もしない場合のみ、両ブロックのその分布パタンが互いに異なると判定する。なお、この分布パタンが近似していると判定する基準は、任意である。
このようにすることにより、ユニークパタン設定部202は、分布パタンが互い異なる(つまり、分布パタンが互いに一致も近似もしない)ユニークパタンUiを設定することができる。ユニークパタン設定部202は、供給されたボクセルデータとともに、設定したユニークパタンUiを、インデックス割り当て部203に供給する。
なお、ユニークパタン設定部202は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、ユニークパタンの設定に関する処理を行うようにしてもよい。
インデックス割り当て部203は、インデックスの割り当てに関する処理を行う。例えば、インデックス割り当て部203は、ユニークパタン設定部202から供給されたユニークパタンにインデックスを割り当てる。
その際、インデックス割り当て部203は、図10のAに示されるように、各ユニークパタンに対して互いに異なるインデックスを割り当てる。なお、このインデックスの割り当て方は、任意である。つまり、各ユニークパタンに対して互いに異なるインデックスを割り当てる限り、各ユニークパタンに対してどのような値のインデックスを割り当てるようにしてもよい。例えば、インデックス割り当て部203は、符号化対象のボクセルデータにおいて出現頻度のより高いユニークパタンに対して、情報量のより少ないインデックスを割り当てるようにしてもよい。このようにすることにより、相関情報の情報量をより低減させることができ、符号化効率の低減をより抑制することができる。
インデックス割り当て部203は、全てのユニークパタンUiに対して上述のようにインデックスを割り当てると、供給されたボクセルデータとともに、その割り当てた結果であるユニークパタンとインデックスとの対応関係を示す情報を、相関情報生成部204に供給する。このユニークパタンとインデックスとの対応関係を示す情報は、設定された各ユニークパタンUiと、各ユニークパタンUiに割り当てられたインデックスとを示す情報である。例えば、この情報は、ユニークパタンとインデックスとの対応関係が示されるように構成された、ユニークパタンのリストとインデックスのリストとを含む。
なお、インデックス割り当て部203は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、インデックスの割り当てに関する処理を行うようにしてもよい。
相関情報生成部204は、相関情報の生成に関する処理を行う。例えば、相関情報生成部204は、処理対象のブロックであるカレントブロックのボクセルデータを、そのカレントブロックのボクセルデータの値の分布パタンに一致または近似するユニークパタンに割り当てられたインデックスに変換し、インデックスを含む相関情報を生成する。
相関情報とは、ボクセルデータの値の分布パタンの相関を利用してボクセルデータを符号化したものである。相関情報生成部204は、符号化対象のボクセルデータの各ブロックを、上述のユニークパタンUi(のインデックス)に置き換えることにより、符号化対象のボクセルデータを符号化する。つまり、この場合、相関情報は、ユニークパタンUiのインデックスにより構成される。
より具体的には、相関情報生成部204は、インデックス割り当て部203から供給されるユニークパタンとインデックスとの対応関係を示す情報を保持する。相関情報生成部204は、ユニークパタン設定部202によりユニークパタンを設定する際に行われた各ブロックのボクセルデータの値の分布パタンの分類(マージ)に基づいて、各ブロックのその分布パタンに対応するユニークパタンUiを特定する。つまり、各ブロックとその分布パタンが一致または近似するユニークパタンUiが特定される。そして、相関情報生成部204は、保持したその情報に基づいて、その特定したユニークパタンUiに対応するインデックスを特定する。そして、相関情報生成部204は、各ブロックのボクセルデータを、その特定したインデックスに置き換える(変換する)。
このようにすることにより、その符号化結果として、図10のBに示されるような、インデックスのリスト(IdxLst)が得られる。相関情報生成部204は、供給された各ブロックのボクセルデータの代わりに、その相関情報(インデックス)を信号列として符号化部115に供給する。また、相関情報生成部204は、保持しているユニークパタンとインデックスとの対応関係を示す情報も信号列として符号化部115に供給する。つまり、これらの情報は符号化部115によって上述のように符号化され、ビットストリームに含められ、復号側に伝送されたり、記録媒体に記録されたりする。
このように各ブロックのボクセルデータを、図10のAに示されるユニークパタンUiに割り当てられたインデックスを用いて、図10のBに示されるようにインデックス化することにより、分布パタンが同一のボクセルデータがマージされるので、相関情報生成部204は、ビットストリームの冗長性を低減させることができる。また、上述のように、このユニークパタンUiは、ボクセルデータの値の分布パタンが互いに一致するブロックだけでなく、分布パタンが近似するブロックもマージして設定されるので、相関情報生成部204は、ビットストリームの冗長性をより低減させることができる。したがって、信号列生成部114は、符号化効率の低減を抑制することができる。
なお、相関情報生成部204は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、相関情報の生成に関する処理を行うようにしてもよい。
<符号化処理の流れ>
以上のような構成の符号化装置100により実行される符号化処理の流れの例を図12のフローチャートを参照して説明する。
符号化処理が開始されると、前処理部111は、ステップS101において、入力されたデータに対して前処理を行う。
ステップS102において、バウンディングボックス設定部112は、前処理されたデータに対してバウンディングボックスを設定する。
ステップS103において、ボクセル設定部113は、ステップS102において設定されたバウンディングボックスにボクセルを設定する。
ステップS104において、信号列生成部114は、データ構造に基づいて信号列を生成する。
ステップS105において、符号化部115は、ステップS104の処理により生成された信号列を符号化する。
ステップS106において、符号化部115は、その符号化により得られたビットストリームを符号化装置100の外部に出力する。このビットストリームは例えば復号側(復号装置等)に伝送されたり、記録媒体に記録されたりする。
ステップS106の処理が終了すると、符号化処理が終了する。例えば、符号化対象が動画像である場合、この一連の処理をフレーム毎に行う。
<信号列生成処理の流れ>
次に、図12のステップS104において実行される信号列生成処理の流れの例を、図13のフローチャートを参照して説明する。
信号列生成処理が開始されると、相関演算部201は、ステップS121において、ブロック間のボクセルデータの値の分布パタンの相関の強さ(相関度)を求める。
ステップS122において、ユニークパタン設定部202は、ステップS121において求めた相関度に基づいて、ユニークパタンUiを設定する。その際、ユニークパタン設定部202は、上述したように、比較したブロック同士でボクセルデータの値の分布パタンが一致する場合だけでなく、近似する場合も、両ブロックのその分布パタンが同一であるとみなす。
ステップS123において、インデックス割り当て部203は、ステップS122において設定された各ユニークパタンUiに、互いに異なるインデックスを割り当てる。
ステップS124において、相関情報生成部204は、ステップS123におけるユニークパタンUiへのインデックスの割り当て結果に基づいて、符号化対象の各ブロックのボクセルデータを、そのブロックのボクセルデータの値の分布パタンに一致または近似するユニークパタンUiのインデックスに置き換え、相関情報の信号列を生成する。また、相関情報生成部204は、ユニークパタンとインデックスとの対応関係を示す情報の信号列も生成する。
ステップS124の処理が終了すると信号列生成処理が終了し、処理は図12に戻る。
以上のように各処理を実行することにより、符号化装置100は、上述したように符号化効率の低減を抑制することができる。
<ボクセルデータの符号化方法の例2>
また例えば、信号列生成部114は、図9に示される表のid = 2の行に示される方法により、ボクセルデータを符号化するようにしてもよい。この場合、参照先のブロック(ノード(Node))を特定する空間座標情報(参照空間座標情報とも称する)を、符号化ブロックに用いる。つまり、信号列生成部114は、例えば符号化済みのブロック(ノード)からカレントブロックと高い相関を持つブロックを探索し、符号化部115は、そのブロックの絶対位置または相対位置(ベクトル)等の信号列を符号化する。
この参照空間座標情報は、処理対象のブロックであるカレントブロック(参照元のブロック)の周辺に位置する周辺ブロックの内の、ボクセルデータの値の分布パタンがカレントブロックと一致または近似する周辺ブロック(参照先のブロック)の位置を示す情報である。信号列生成部114は、カレントブロックのボクセルデータを、この参照空間座標情報に変換することにより符号化する。つまり、信号列生成部114は、その参照空間座標情報を含む相関情報を生成する。
この参照空間座標情報は、参照先のブロックの位置を絶対位置により示す情報(例えば参照先のブロックの空間座標(参照先空間座標情報とも称する))を含むようにしてもよいし、参照先のブロックの位置を参照元のブロック(カレントブロック)に対する相対位置を示す情報(例えば参照元から参照先へのベクトル(参照ベクトルとも称する))を含むようにしてもよい。
そして、符号化部115は、このような参照空間座標情報を含む相関情報を符号化し、ビットストリームを生成する。
<信号列生成部>
図14は、この場合の信号列生成部114(図7)の主な構成例を示すブロック図である。図14に示されるように、この場合の信号列生成部114は、相関演算部221、参照空間座標情報設定部222、および相関情報生成部223を有する。
相関演算部221は、相関演算部201と同様の処理部であり、相関演算部201と同様の処理を行う。すなわち、相関演算部221は、ボクセルデータの値の分布パタンの相関の強さ(相関度)の算出に関する処理を行う。例えば、相関演算部221は、ボクセル設定部113から供給されたボクセルデータについて、ボクセルデータが表す空間の部分領域であるブロック間のボクセルデータの値の分布パタンの相関度を算出する。なお、この比較は任意のブロック間で行うことができる。また、この相関度の算出方法は任意である。
相関演算部221は、供給されたボクセルデータとともに、算出した相関度を示す情報を参照空間座標情報設定部222に供給する。
なお、相関演算部221は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、相関度の算出に関する処理を行うようにしてもよい。
参照空間座標情報設定部222は、参照空間座標情報の設定に関する処理を行う。例えば、参照空間座標情報設定部222は、相関演算部201から供給された相関度に基づいて、カレントブロックと相関の高い周辺ブロックを参照先として特定し、その周辺ブロックの位置を示す参照空間座標情報を設定する。より具体的には、参照空間座標情報設定部222は、相関演算部201から供給された相関度に基づいて、候補となる各周辺ブロックについて、ボクセルデータの分布パタンがカレントブロックと一致または近似するかを判定する。なお、この分布パタンが近似していると判定する基準は、任意である。例えば、参照空間座標情報設定部222は、カレントブロックとの相関度が最も高い周辺ブロックを、分布パタンがカレントブロックに近似している周辺ブロックであると判定する。また、例えば、参照空間座標情報設定部222は、カレントブロックとの相関度が所定の基準よりも高い周辺ブロックを、分布パタンがカレントブロックに近似している周辺ブロックであると判定する。
なおこの周辺ブロックは、カレントブロックの空間的な周辺に位置するブロックであってもよい。つまり、この周辺ブロックは、カレントブロックと同じフレーム内のブロックであってもよい。また、この周辺ブロックは、カレントブロックの時間的な周辺に位置するブロックであってもよい。つまり、この周辺ブロックは、カレントブロックと異なるフレームのブロックであってもよい。例えば、周辺ブロックは、カレントブロックと異なるフレームの、カレントブロックと同じ位置のブロック(コロケーテッドブロック)、または、そのコロケーテッドブロックの周辺に位置するブロックであってもよい。さらに、この周辺ブロックは、シーケンス(ビュー、レイヤ、コンポーネント等)間で周辺に位置するブロックであってもよい。つまり、この周辺ブロックは、カレントブロックと異なるシーケンスのブロックであってもよい。例えば、周辺ブロックは、カレントブロックと異なるシーケンスの、カレントブロックと同じフレームの同じ位置のブロック(コロケーテッドブロック)そのコロケーテッドブロックの周辺に位置するブロックであってもよい。また、例えば、周辺ブロックは、カレントブロックと異なるシーケンスの、カレントブロックと異なるフレームのブロックであってもよい。
参照空間座標情報設定部222は、供給されたボクセルデータとともに、設定した参照空間座標情報を相関情報生成部223に供給する。
なお、分布パタンがカレントブロックに一致または近似する周辺ブロックが検出できない場合(そのような周辺ブロックが存在しない場合)、参照空間座標情報設定部222は、そのカレントブロックのボクセルデータを符号化しない(相関情報に置き換えない)。つまり、この場合、参照空間座標情報設定部222は、そのブロックに対応する参照空間座標の設定を省略する。
なお、参照空間座標情報設定部222は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、ユニークパタンの設定に関する処理を行うようにしてもよい。
相関情報生成部223は、相関情報の生成に関する処理を行う。例えば、相関情報生成部223は、処理対象のブロックであるカレントブロックのボクセルデータを、そのカレントブロックの周辺に位置する周辺ブロックの内の、ボクセルデータの値の分布パタンがカレントブロックと一致または近似する周辺ブロックの位置を示す情報である参照空間座標情報に変換し、その参照空間座標情報を含む相関情報を生成する。
つまり、相関情報生成部223は、符号化対象のボクセルデータの各ブロックを、参照空間座標情報設定部222から供給された参照空間座標情報に置き換えることにより、符号化対象のボクセルデータを符号化する。つまり、この場合、相関情報は、参照空間座標情報(参照先空間座標または参照ベクトル)により構成される。
ただし、参照空間座標情報設定部222において参照空間座標情報が設定されなかったブロック(つまり参照先が見つからなかったブロック)については、この相関情報の生成が省略される。
相関情報生成部223は、相関情報を生成したブロックについては、供給された各ブロックのボクセルデータの代わりに、その相関情報(参照空間座標情報)を信号列として符号化部115に供給する。また、相関情報生成部223は、相関情報を生成していないブロックについては、供給されたボクセルデータの信号列を符号化部115に供給する。
これらの信号列は、符号化部115によって上述のように符号化され、ビットストリームに含められ、復号側に伝送されたり、記録媒体に記録されたりする。
このように各ブロックのボクセルデータを、参照空間座標情報に変換することにより、情報量を低減させることができる。また、そのブロック間の参照関係を設定する際に、例えば、ボクセルデータの値の分布パタンがカレントブロックと一致する周辺ブロックのみを参照先の候補とすると、参照先が存在しないケースが増大するおそれがあり、十分に情報量を低減させることができないおそれがある。
これに対して、相関情報生成部223は、上述のように、ボクセルデータの値の分布パタンがカレントブロックと一致する周辺ブロックだけでなく、近似する周辺ブロックも参照先の候補とする。これにより、カレントブロックの参照先となり得る周辺ブロックが存在する可能性を高くすることができる。したがって、より多くのブロックを参照空間座標情報に変換することができ、情報量をより低減させることができる。したがって、信号列生成部114は、符号化効率の低減を抑制することができる。
なお、相関情報生成部223は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、相関情報の生成に関する処理を行うようにしてもよい。
<信号列生成処理の流れ>
次に、この場合に、図12のステップS104において実行される信号列生成処理の流れの例を、図15のフローチャートを参照して説明する。
信号列生成処理が開始されると、相関演算部221は、ステップS141において、ブロック間のボクセルデータの値の分布パタンの相関の強さ(相関度)を求める。
ステップS142において、参照空間座標情報設定部222は、カレントブロックと相関の高い周辺ブロックを参照先とし、参照空間座標情報を設定する。
ステップS143において、相関情報生成部223は、ステップS142において設定された参照空間座標情報を用いて相関情報を生成し、ボクセルデータに置き換える。そして相関情報生成部223は、その相関情報を含む信号列を生成する。つまり、相関情報生成部223は、参照先が存在するブロックについては、相関情報の信号列を生成し、参照先が存在しないブロックについては、ボクセルデータの信号列を生成する。
ステップS143の処理が終了すると信号列生成処理が終了し、処理は図12に戻る。
以上のように各処理を実行することにより、符号化装置100は、上述したように符号化効率の低減を抑制することができる。
なお、以上に説明した図9に示される表のid = 2の行に示される方法は、図9に示される表のid = 1の行に示される方法と併用するようにしてもよい。つまり、ユニークパタンのインデックスを含む相関情報と、参照空間座標情報を含む相関情報とが混在するようにしてもよい。
<ボクセルデータの符号化方法の例3>
また例えば、信号列生成部114は、図9に示される表のid = 3の行に示される方法により、ボクセルデータを符号化するようにしてもよい。この場合、事前に定義した分布パタンを持つブロック(ノード(Node))にインデックス(Index)を付与し、符号化ブロックに用いる。つまり、信号列生成部114は、例えば事前定義されたブロックから、カレントブロックと高い相関を持つブロックを探索し、符号化部115は、そのインデックスを符号化する。
つまり、この場合、予め、所定のユニークパタン(事前定義ユニークパタンとも称する)が用意され、各ユニークパタンに互いに異なるインデックス(事前定義インデックスとも称する)が割り当てられている。信号列生成部114は、<ボクセルデータの符号化方法の例1>において上述したように符号化対象のボクセルデータから生成したユニークパタンの代わりに、この事前定義ユニークパタンを用いて、各ブロックをインデックス化する。
より具体的には、信号列生成部114は、カレントブロックのボクセルデータを、事前定義ユニークパタンの内の、分布パタンがカレントブロックと一致または近似する事前定義ユニークパタンに割り当てられた事前定義インデックスに変換し、その事前定義インデックスを含む相関情報を生成する。
なお、事前定義ユニークパタンは、<ボクセルデータの符号化方法の例1>において上述したユニークパタンと同様に、事前定義ユニークパタン同士において、分布パタンが互いに異なる。つまり、事前定義ユニークパタンのボクセルデータの値の分布パタンは、他の事前定義ユニークパタンのボクセルデータの値の分布パタンと異なる。
<信号列生成部>
図16は、この場合の信号列生成部114(図7)の主な構成例を示すブロック図である。図16に示されるように、この場合の信号列生成部114は、相関演算部241および相関情報生成部242を有する。
相関演算部241は、ボクセルデータの値の分布パタンの相関の強さ(相関度)の算出に関する処理を行う。例えば、相関演算部241は、事前定義ユニークパタン(のボクセルデータ)を取得し、保持する。相関演算部241は、ボクセル設定部113から供給されたボクセルデータの各ブロックについて、各事前定義ユニークパタンとの間のボクセルデータの値の分布パタンの相関度を算出する。なお、この相関度の算出方法は任意である。相関演算部241は、供給されたボクセルデータとともに、算出した相関度を示す情報を相関情報生成部242に供給する。
なお、相関演算部241は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、相関度の算出に関する処理を行うようにしてもよい。
相関情報生成部242は、相関情報の生成に関する処理を行う。例えば、相関情報生成部242は、処理対象のブロックであるカレントブロックのボクセルデータを、そのカレントブロックのボクセルデータの値の分布パタンに一致または近似する事前定義ユニークパタンに割り当てられた事前定義インデックスに変換し、その事前定義インデックスを含む相関情報を生成する。
より具体的には、相関情報生成部242は、事前定義ユニークパタンと事前定義インデックスとの対応関係を示す情報を取得し、保持する。この事前定義ユニークパタンと事前定義インデックスとの対応関係を示す情報は、各事前定義ユニークパタンと、各事前定義インデックスとを示す情報である。例えば、この情報は、事前定義ユニークパタンと事前定義インデックスとの対応関係が示されるように構成された、事前定義ユニークパタンのリストと事前定義インデックスのリストとを含む。
そして、相関情報生成部242は、相関演算部241から供給された相関度に基づいて、各ブロックについて、その分布パタンが一致または近似する事前定義ユニークパタンを特定する。換言するに、相関情報生成部242は、その分布パタンが一致もせず、近似もしない場合のみ、分布パタンが異なると判定して、その事前定義ユニークパタンを特定しない。なお、この分布パタンが近似していると判定する基準は、任意である。
そして、相関情報生成部242は、保持したその情報に基づいて、その特定した事前定義ユニークパタンに対応する事前定義インデックスを特定する。そして、相関情報生成部242は、各ブロックのボクセルデータを、その特定した事前定義インデックスに置き換える(変換する)。
このようにすることにより、その符号化結果として、事前定義インデックスのリストが得られる。相関情報生成部242は、供給された各ブロックのボクセルデータの代わりに、その相関情報(事前定義インデックス)を信号列として符号化部115に供給する。この信号列は符号化部115によって上述のように符号化され、ビットストリームに含められ、復号側に伝送されたり、記録媒体に記録されたりする。
なお、相関情報生成部242は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、相関情報の生成に関する処理を行うようにしてもよい。
このように各ブロックのボクセルデータを、事前定義インデックスを用いてインデックス化することにより、分布パタンが同一のボクセルデータがマージされるので、相関情報生成部242は、ビットストリームの冗長性を低減させることができる。
なお、カレントブロックのボクセルデータの値の分布パタンと事前定義ユニークパタンとが一致する場合のみ、カレントブロックのボクセルデータを事前定義インデックスに置き換えるようにすると、事前定義ユニークパタンと一致しない分布パタンのブロックは、そのボクセルデータを事前定義インデックスに置き換えることができない。
これに対して、相関情報生成部242は、分布パタンが近似する事前定義ユニークパタンが存在するブロックも、そのボクセルデータを事前定義インデックスに置き換えることができる。したがって、より情報量を削減することができる。つまり、信号列生成部114は、符号化効率の低減を抑制することができる。
<信号列生成処理の流れ>
次に、この場合に、図12のステップS104において実行される信号列生成処理の流れの例を、図17のフローチャートを参照して説明する。
信号列生成処理が開始されると、相関演算部241は、ステップS161において、各ブロックのボクセルデータの値の分布パタンと事前定義ユニークパタンとの相関の強さ(相関度)を求める。
ステップS162において、相関情報生成部242は、その相関度に基づいて、各ブロックと相関の強い事前定義インデックスを特定し、その特定した事前定義インデックスを用いて相関情報を生成し、ボクセルデータに置き換える。そして相関情報生成部242は、その相関情報を含む信号列を生成する。
ステップS162の処理が終了すると信号列生成処理が終了し、処理は図12に戻る。
以上のように各処理を実行することにより、符号化装置100は、上述したように符号化効率の低減を抑制することができる。
なお、事前定義ユニークパタンと一致も近似もしない分布パタンのブロックは、ボクセルデータの信号列を符号化部115に供給するようにしてもよい。また、そのようなブロックの分布パタンをユニークパタンとして設定するようにしてもよいし、周辺ブロックを参照するようにしてもよい。つまり、以上に説明した図9に示される表のid = 3の行に示される方法は、図9に示される表のid = 1や2の行に示される方法と併用するようにしてもよい。つまり、ユニークパタンのインデックスを含む相関情報と、参照空間座標情報を含む相関情報と、事前定義インデックスを含む相関情報とが混在するようにしてもよい。
<ボクセルデータの符号化方法の例4>
また例えば、符号化対象のボクセルデータが動画像の場合(複数のフレームにより構成される場合)、図9に示される表のid = 4の行に示される方法を適用するようにしてもよい。つまり、異なるフレーム間での相関を利用するようにしてもよい。その場合、参照先ブロック(ノード(Node))を特定する時間情報を符号化ブロックに用いる。例えば、信号列生成部114は、符号化済みのフレームを保持し、そのフレーム内から相関の高いブロックを探索する。見つかった場合、符号化部115は、そのフレームを特定する情報(カレントフレームからの時間差分等)を符号化し、伝送する。
つまり、この場合、信号列生成部114は、処理対象のブロックであるカレントブロックのボクセルデータの値の分布パタンとの相関の強さを求める際の、参照先に対応するフレームを示す時間情報を含む相関情報を生成する。
この方法は、図9に示される表のid = 1乃至3の行に示される各方法と組み合わせて用いることができる。例えば、図9に示される表のid = 1の行に示される方法に組み合わせる場合、相関情報生成部204が過去に処理したフレームにおいて設定したユニークパタンのインデックスを用いてカレントブロックのボクセルデータをインデックス化するようにしてもよい。また、例えば、相関演算部201がカレントブロックと、カレントブロックのフレーム(カレントフレーム)以外のフレームのブロックとの相関度を算出するようにし、ユニークパタン設定部202が、その相関度に基づいて、ユニークパタンを設定するようにしてもよい。
また、例えば、図9に示される表のid = 2の行に示される方法に組み合わせる場合、相関演算部221がカレントブロックと、カレントフレーム以外のフレームのブロックとの相関度を算出するようにし、参照空間座標情報設定部222が、その相関度に基づいて、カレントフレーム以外のフレームのブロックを参照先として設定することができるようにしてもよい。
また、例えば、図9に示される表のid = 3の行に示される方法に組み合わせる場合、事前定義ユニークパタン(および事前定義インデックス)がフレーム等毎に設定されるようにし(時間方向に更新されるようにし)、相関演算部241が、カレントブロックと、カレントフレーム以外のフレームに対応する事前定義ユニークパタンとの相関度を算出するようにし、相関情報生成部242が、その相関度に基づいて、カレントブロックのボクセルデータを、カレントフレーム以外のフレームに対応する事前定義インデックスに置き換えるようにしてもよい。
このようにすることにより、相関情報とするインデックスや参照先の範囲を拡大することができる。したがって、信号列生成部114は、ビットストリームの冗長性をより低減させることができ、符号化効率の低減を抑制することができる。
<ボクセルデータの符号化方法の例5>
また例えば、図9に示される表のid = 5の行に示される方法を適用するようにしてもよい。つまり、ブロック間の相関を求める際に、比較するボクセルデータの値の分布パタンを、回転させたり、反転させたりすることできるようにしてもよい。その場合、相関情報に、回転に関する情報(回転情報)や反転に関する情報(反転情報)を含めるようにすればよい。例えば、信号列生成部114は、相関を計算する際に、参照ブロック(ノード(Node))に対して点対称や線対称となる分布パタンについてもカレントブロックとのマッチングを行う。相関が高いパタンが見つかった場合、符号化部115は、回転情報や反転情報を符号化し伝送する。
つまり、この場合、信号列生成部114は、処理対象のブロックであるカレントブロックのボクセルデータの値の分布パタンとの相関の強さを求める際の、参照先のボクセルデータの値の分布パタンの回転に関する情報、および、その参照先の分布パタンの反転に関する情報の内の少なくとも一方を含む相関情報を生成する。
この方法は、図9に示される表のid = 1乃至4の行に示される各方法と組み合わせて用いることができる。例えば、相関演算部201、相関演算部221、または相関演算部241は、カレントブロックとの相関度の算出において、参照先の分布パタン(他のブロックの分布パタンまたは事前定義ユニークパタン)の線対称や点対称となる分布パタンとも比較を行うようにしてもよい。そして、相関情報生成部204、相関情報生成部223、または相関情報生成部242は、回転情報(回転の有無、または、どのように回転したか等を示す情報)や、反転情報(反転の有無、または、どのように反転したか等を示す情報)を含む相関情報を生成するようにしてもよい。
このようにすることにより、参照先の分布パタンがカレントブロックと一致または近似する可能性を増大させることができる。また、その相関度がより高くなる可能性を増大させることができる。したがって、信号列生成部114は、ビットストリームの冗長性をより低減させることができ、符号化効率の低減を抑制することができる。
<ボクセルデータの符号化方法の例6>
また例えば、図9に示される表のid = 6の行に示される方法を適用するようにしてもよい。つまり、近傍のブロックで用いた相関情報をカレントブロックに対して再利用することができるようにしてもよい。例えば、信号列生成部114は、近傍のブロック(ノード(Node))で用いた相関情報をカレントブロックにおいて再利用した場合の相関度を算出する。その相関が高い場合、符号化部115は、再利用する旨の情報(例えばフラグ等)を符号化し伝送する。
つまり、この場合、信号列生成部114は、処理対象のブロックであるカレントブロックの周辺に位置する周辺ブロックの相関情報を用いて、カレントブロックの相関情報を生成する。
この方法は、図9に示される表のid = 1乃至5の行に示される各方法と組み合わせて用いることができる。例えば、相関演算部201、相関演算部221、または相関演算部241は、カレントブロックとの相関度の算出において、周辺ブロックの相関情報をカレントブロックに適用した場合の相関度を算出するようにしてもよい。そして、相関情報生成部204、相関情報生成部223、または相関情報生成部242は、その再利用した相関度を適用する場合(その相関度が高かった場合)、相関度を再利用する旨の情報(フラグ等)を含む相関情報を生成するようにしてもよい。なお、その際、再利用する相関度を指定する情報や、モードを指定する情報を、相関情報に含めるようにしてもよい。また、相関度を再利用するか否かを示すフラグ情報を、常に相関情報に含めるようにしてもよい。
周辺ブロックの相関情報を再利用する場合、復号側においても周辺ブロックの相関情報が再利用されるので、カレントブロックの相関情報の伝送は省略することができる。したがって、伝送する情報量を低減させることができるので、符号化効率の低減を抑制することができる。
<Octree符号化の併用>
以上に説明した相関情報を用いたボクセルデータの符号化方法は、Octree符号化と併用するようにしてもよい。例えばボクセルデータを、LoD=GのOctreeで符号化する場合は、Level=l (l=0,1,…,G-1)におけるノードn(l,i)のChildmask (8bit)を符号化する。ここで、k=4の場合、3階層のOctreeに相当するため (4 = 1<<(3-1))、n(G-1,i), n(G-2,i), n(G-3,i) のノードをまとめて、ユニークパタンUiによって表現することができる。つまり、例えば以下のように、相関情報を用いた符号化方式をOctree符号化と組み合わせることができる。
Level=0,…,G-4:Octree符号化を利用
Level=G-((log2k)+1),…,G-2:DAGを利用
Level=G-1 : 提案符号化を利用
このようにすることにより、例えば部分デコードや、粗い解像度からデコードする等といったスケーラビリティ(Scalability)に対応することができる。また、Octree符号化のみを行う場合や、DAG処理のみを適用する場合よりも、ビットストリームの冗長性を低減させることができるので、符号化効率の低減を抑制することができる。
なお、相関情報を用いた符号化をOctreeパタンの複数のレベルに適用するようにしてもよいが、相関情報を用いた符号化では近似するノードもマージするため、処理が複雑になるおそれがある。そこで、上述のように、最下位のレベルのみ相関情報を用いた符号化を適用し、最下位より上のレベルは、DAG(有効指向性グラフ)を適用するようにしてもよい。なお、このDAGは、Octreeパタンの最下位レベルより上位の全てのレベルに適用するようにしてもよいし、上述のように、最下位レベルより1つ上のレベルから途中のレベルまでのみ適用し、上位側の一部のレベルは、Octree符号化のみを適用するようにしてもよい。
<信号列生成部>
図18は、この場合の信号列生成部114(図7)の主な構成例を示すブロック図である。図18に示されるように、この場合の信号列生成部114は、相関演算部201乃至相関情報生成部204の他に、さらにOctree符号化部261およびDAG処理部262を有する。
Octree符号化部261は、Octree符号化に関する処理を行う。例えば、Octree符号化部261は、ボクセル設定部113から供給されたボクセルデータをOctree符号化し、図3を参照して説明したようにOctreeパタンを生成し、各ノードのChildmask(8ビット)を生成する。Octree符号化部261は、生成したそのChildmaskデータをDAG処理部262に供給する。
なお、Octree符号化部261は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、Octree符号化に関する処理を行うようにしてもよい。
DAG処理部262は、DAGに関する処理を行う。例えば、DAG処理部262は、Octree符号化部261から供給されたChildmaskデータの最下位レベルより上位のレベルに対してDAG処理を行い、自己相関を利用して同一のノードをマージする。DAG処理部262は、そのようにして生成したDAGデータの信号列を符号化部115に供給する。
相関演算部201乃至相関情報生成部204は、図11の場合と同様に処理を行い、相関情報を利用してボクセルデータを符号化する。つまり、Octreeパタンの最下位レベルが符号化される。相関情報生成部204は、図11を参照して説明したように信号列を符号化部115に供給する。
なお、DAG処理部262は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、DAGに関する処理を行うようにしてもよい。
符号化部115は、それらの信号列を符号化する。つまり、符号化部115は、相関情報やDAGデータ等を含むビットストリームを生成する。
このようにOctree符号化を適用することにより、相関情報を用いた符号化をスケーラビリティに対応させることができる。換言するに、Octreeパタンに対して、相関情報を用いた符号化を適用することにより、符号化効率の低減を抑制することができる。
<信号列生成処理の流れ>
次に、この場合の、図12のステップS104において実行される信号列生成処理の流れの例を、図19のフローチャートを参照して説明する。
信号列生成処理が開始されると、Octree符号化部261は、ステップS181において、Octree符号化を行う。
ステップS182において、DAG処理部262は、Octreeパタンの最下位レベルより上位のレベルのノードに対してDAG処理を行う。
ステップS183乃至ステップS186の各処理は、図13のステップS121乃至ステップS124の各処理と同様に行う。
ステップS186の処理が終了すると信号列生成処理が終了し、処理は図12に戻る。
以上のように各処理を実行することにより、符号化装置100は、上述したように、相関情報を用いた符号化をスケーラビリティに対応させたり、符号化効率の低減を抑制したりすることができる。
なお、以上においては、図9に示される表のid = 1の行に示される方法に、Octree符号化を適用する場合について説明したが、図9に示される表のその他の行に示される方法にOctree符号化を適用する場合も同様である。つまり、信号列生成部114に、Octree符号化部261およびDAG処理部262を図18の場合と同様に設け、信号列生成処理において、図19のステップS181およびステップS182と同様の処理を行うようにすればよい。
<予測残差の伝送>
以上に説明した相関情報を用いたボクセルデータの符号化において、相関情報は、ボクセルデータの予測値とも言える。つまり、上述の相関情報を用いた符号化は、この予測値のみを符号化して伝送している。そこで、さらに、ボクセルデータの予測残差も伝送するようにしてもよい。さらに、その予測残差を符号化して(情報量を低減させて)伝送するようにしてもよい。
例えば、信号列生成部114が、ボクセル設定部113から供給されたボクセルデータと、相関情報に対応するボクセルデータの予測値との差分(予測残差)を求め、その予測残差を別途符号化して伝送するようにしてもよい。この符号化方法は任意である。例えば、予測残差を直交変換するようにしてもよい。また、予測残差をチェーン符号化するようにしてもよい。さらに量子化を行うようにしてもよい。
このように予測残差を伝送することにより、復号側においてより正確な(符号化前の状態に近い)復号画像(復号されたポイントクラウドデータ)を得ることができる。つまり、復号されたポイントクラウドデータ(復号ポイントクラウドデータとも称する)の主観画質を向上させることができる。また、上述のように予測残差を符号化して伝送することにより、符号化効率の低減を抑制することができる。
<信号列生成部>
図20は、この場合の信号列生成部114(図7)の主な構成例を示すブロック図である。図20に示されるように、この場合の信号列生成部114は、図11の場合と同様に、相関演算部201乃至インデックス割り当て部203を有する。また、この場合の信号列生成部114は、相関情報生成部204の代わりに、相関情報生成部281を有する。さらに、この場合の信号列生成部114は、演算部282および予測残差符号化部283を有する。
相関情報生成部281は、基本的に相関情報生成部204と同様の処理を行うが、さらに、相関情報に含まれる各ブロックのインデックスに対応するユニークパタンを演算部282に供給する。
なお、相関情報生成部281は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、相関情報の生成に関する処理を行うようにしてもよい。
演算部282は、予測残差の生成に関する処理を行う。例えば、演算部282は、各ブロックについて、ボクセル設定部113から供給されるボクセルデータから、相関情報生成部281から供給されるユニークパタンを減算し、予測残差を生成する。演算部282は、生成した予測残差を予測残差符号化部283に供給する。
なお、演算部282は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、予測残差の生成に関する処理を行うようにしてもよい。
予測残差符号化部283は、予測残差の符号化に関する処理を行う。例えば、予測残差符号化部283は、演算部282から供給される各ブロックのボクセルデータの予測残差を符号化し、係数データに変換する。この予測残差の符号化方法は任意である。例えば、上述のように直交変換やチェーン符号化を適用するようにしてもよい。さらに、量子化を行うようにしてもよい。予測残差符号化部283は、生成した係数データの信号列を符号化部115に供給する。
なお、予測残差符号化部283は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、予測残差の符号化に関する処理を行うようにしてもよい。
符号化部115は、相関情報生成部281や予測残差符号化部283から供給される信号列を符号化する。つまり、符号化部115は、相関情報や予測残差等を含むビットストリームを生成する。
このようにすることにより、復号側においてより正確な復号ポイントクラウドデータを得ることができる。つまり、復号ポイントクラウドデータの主観画質を向上させることができる。また、上述のように予測残差を符号化して伝送することにより、符号化効率の低減を抑制することができる。
<信号列生成処理の流れ>
次に、この場合の、図12のステップS104において実行される信号列生成処理の流れの例を、図21のフローチャートを参照して説明する。
この場合の信号列性生成処理においても、ステップS201乃至ステップS204の各処理は、図13のステップS121乃至ステップS124の各処理と同様に実行される。
ステップS205において、演算部282は、ボクセルデータとユニークパタン(ボクセルデータの予測値)との差分である予測残差を求める。
ステップS206において、予測残差符号化部283は、ステップS205の処理により得られた予測残差を符号化する。
ステップS206の処理が終了すると信号列生成処理が終了し、処理は図12に戻る。
以上のように各処理を実行することにより、符号化装置100は、上述したように、復号ポイントクラウドデータの主観画質を向上させたり、符号化効率の低減を抑制したりすることができる。
なお、以上においては、図9に示される表のid = 1の行に示される方法に、予測残差の伝送を適用する場合について説明したが、図9に示される表のその他の行に示される方法に上述したような予測残差の伝送を適用することもできる。その場合も、上述した例と基本的に同様に適用することができる。つまり、信号列生成部114に、相関情報生成部281乃至予測残差符号化部283を図20の場合と同様に設け、信号列生成処理において、図20のステップS205およびステップS206と同様の処理を行うようにすればよい。
<属性情報>
ポイントクラウドの各ポイントは、位置情報(x,y,z)に加えて、色情報((R,G,B),(Y,U,V))、αチャンネル、法線ベクトル等の属性情報を持っている。そこで、上述の位置情報の符号化の際に、属性情報も同様に、相関情報を利用して符号化するようにしてもよい。つまり、符号化部115が、相関情報が生成されたブロックの属性情報の符号化を省略するようにしてもよい。
その際の、属性情報のマージの方法は任意である。例えば、カレントブロックと位置情報(構造情報)をマージする参照先の属性情報(例えば、色情報をデコードした後のRGB/YUV画素値)を、カレントブロックにおいても使用するようにしてもよい。
また、例えば、カレントブロックと位置情報(構造情報)をマージする参照先の属性情報の符号化方法(例えば、色予測モード等)を、カレントブロックにおいても使用するようにしてもよい。つまり、符号化部115が、信号列生成部114により相関情報が生成されたブロックの属性情報を、その相関情報に対応する参照先の属性情報と同一の符号化方法で符号化するようにしてもよい。
さらに、例えば、カレントブロックと位置情報(構造情報)をマージする参照先の属性情報のフィルタリング方法(カラーフォーマット変換、クロマサブサンプリング方法、デブロック等のデノイズ方法等)を、カレントブロックにおいても使用するようにしてもよい。つまり、符号化部115が、信号列生成部114により相関情報が生成されたブロックの属性情報を、その相関情報に対応する参照先の属性情報と同一のフィルタリング方法でフィルタリングするようにしてもよい。
このようにすることにより、ビットストリームの冗長性を低減させることができ、符号化効率の低減を抑制することができる。
<3.第2の実施の形態>
<復号方法の例1>
次に、以上のような符号化装置100に対応する復号装置について説明する。例えば、図9に示される表のid = 1の行に示される方法により符号化されたボクセルデータのビットストリームは、同行に示される方法により復号することができる。
つまり、この場合、ユニークパタンとインデックスとの対応関係を示す情報を復号し、その情報に基づいて、各ブロックのインデックスをユニークパタンに変換することにより、各ブロックの相関情報を復号することができる。
<復号装置>
図22は、本技術を適用した情報処理装置の一実施の形態である復号装置の主な構成例を示すブロック図である。図22に示される復号装置300は、図7の符号化装置100に対応する復号装置であり、例えばこの符号化装置100により生成されたポイントクラウドの符号化データを復号し、ポイントクラウドのデータを復元する。この符号化装置100の信号列生成部114は、上述したように図9に示される表のid = 1の行に示される方法によりボクセルデータを符号化する。図22の復号装置300は、その符号化装置100により得られたビットストリームを、図9に示される表のid = 1の行に示される方法により復号する。
図22に示されるように、この場合の復号装置300は、復号部301、ボクセルデータ生成部302、およびポイントクラウド化処理部303を有する。
復号部301は、ビットストリームの復号に関する処理を行う。例えば、復号部301は、ビットストリームを符号化部115の符号化方法に対応する復号方法で復号し、ビットストリームから、相関情報を抽出する。この相関情報は、ボクセルデータが表す空間の部分領域であるブロック毎に設定されており、復号部301は、その各ブロックの相関情報を抽出する。
この相関情報には、ブロック毎にボクセルデータを変換したインデックスが含まれている。このインデックスは、そのブロックのボクセルデータと分布パタンが一致または近似すると判定されたユニークパタンに割り当てられたものである。さらに、ビットストリームには、ユニークパタンとインデックスとの対応関係を示す情報が含まれており、復号部301は、そのユニークパタンとインデックスとの対応関係を示す情報もビットストリームから抽出する。
復号部301は、ビットストリームから抽出した情報(相関情報やユニークパタンとインデックスとの対応関係を示す情報等)をボクセルデータ生成部302に供給する。
なお、復号部301は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、復号に関する処理を行うようにしてもよい。
ボクセルデータ生成部302は、ボクセルデータの生成に関する処理を行う。例えば、ボクセルデータ生成部302は、復号部301から供給される相関情報に対応するボクセルデータを生成する。つまり、相関情報がボクセル毎に設定されている場合、ボクセルデータ生成部302は、各ブロックの相関情報をボクセルデータに変換する。
例えば、ボクセルデータ生成部302は、復号部301から供給されたユニークパタンとインデックスとの対応関係を示す情報を用いて、復号部301から供給された各ブロックの相関情報をユニークパタンに変換することにより、各ブロックのボクセルデータを生成する。
ボクセルデータ生成部302は、生成したボクセルデータをポイントクラウド化処理部303に供給する。
なお、ボクセルデータ生成部302は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、ボクセルデータの生成に関する処理を行うようにしてもよい。
ポイントクラウド化処理部303は、ポイントクラウドデータの復元に関する処理を行う。例えば、ポイントクラウド化処理部303は、供給されたボクセルデータをポイントクラウドデータに変換する(復号ポイントクラウドデータを生成する)。なお、ポイントクラウド化処理部303が、その復号ポイントクラウドデータをさらにMeshデータに変換するようにしてもよい。
ポイントクラウド化処理部303は、生成した復号ポイントクラウドデータ(またはMeshデータ)を復号装置300の外部に出力する。この出力された復号ポイントクラウドデータ(またはMeshデータ)は、例えば、図示せぬ後段の処理部により画像処理され、画像情報としてモニタ等に表示されるようにしてもよいし、図示せぬ通信部により送信され、所定の伝送路を介して他の装置に伝送されるようにしてもよいし、図示せぬ記録媒体に記録されるようにしてもよい。
なお、ポイントクラウド化処理部303は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、ポイントクラウドデータの復元に関する処理を行うようにしてもよい。
以上のように、この場合の復号装置300は、図9に示される表のid = 1の行に示される方法により復号する。したがって、この場合の復号装置300は、図9に示される表のid = 1の行に示される符号化方法による符号化効率の低減の抑制を実現することができる。
<復号処理の流れ>
この場合の復号装置300により実行される復号処理の流れの例を、図23のフローチャートを参照して説明する。
復号処理が開始されると、復号部301は、ステップS301において、ビットストリームを復号し、ユニークパタンとインデックスとの対応関係を示す情報と、インデックスを含む各ブロックの相関情報を抽出する。
ステップS302において、ボクセルデータ生成部302は、ステップS301において抽出されたユニークパタンとインデックスとの対応関係を示す情報に基づいて、各ブロックの相関情報のインデックスをそれに対応するユニークパタンに変換することにより、各ブロックのボクセルデータを生成する。
ステップS303において、ポイントクラウド化処理部303は、ステップS302の処理により得られたボクセルデータからポイントクラウドデータを復元する。
ステップS304において、ポイントクラウド化処理部303は、復元されたポイントクラウドデータ(復号ポイントクラウドデータ)を復号装置300の外部に出力する。
ステップS304の処理が終了すると、復号処理が終了する。
以上のように復号処理を行うことにより、この場合の復号装置300は、図9に示される表のid = 1の行に示される符号化方法による符号化効率の低減の抑制を実現することができる。
<復号方法の例2>
また、例えば、図9に示される表のid = 2の行に示される方法により符号化されたボクセルデータのビットストリームは、同行に示される方法により復号することができる。
つまり、この場合、各ブロックが参照するブロックの絶対位置(空間座標)または相対位置(ベクトル)等の情報を復号し、その参照先のブロックのボクセルデータを用いてカレントブロックのボクセルデータを生成することにより、各ブロックの相関情報を復号することができる。
<復号装置>
図24は、本技術を適用した情報処理装置の一実施の形態である復号装置の主な構成例を示すブロック図である。図24に示される復号装置300は、図7の符号化装置100に対応する復号装置であり、例えばこの符号化装置100により生成されたポイントクラウドの符号化データを復号し、ポイントクラウドのデータを復元する。この符号化装置100の信号列生成部114は、上述したように図9に示される表のid = 2の行に示される方法によりボクセルデータを符号化する。図24の復号装置300は、その符号化装置100により得られたビットストリームを、図9に示される表のid = 2の行に示される方法により復号する。
図24に示されるように、この場合の復号装置300は、復号部321、ボクセルデータ生成部322、およびポイントクラウド化処理部303を有する。
復号部321は、ビットストリームの復号に関する処理を行う。例えば、復号部321は、ビットストリームを符号化部115の符号化方法に対応する復号方法で復号し、ビットストリームから、相関情報を抽出する。この相関情報は、ボクセルデータが表す空間の部分領域であるブロック毎に設定されており、復号部321は、その各ブロックの相関情報を抽出する。
この相関情報には、参照空間座標情報が含まれている。この参照空間座標情報は、ボクセルデータの値の分布パタンがカレントブロックと一致または近似し、ボクセルデータの参照先として指定された周辺ブロックの位置を示す情報である。復号部321は、ビットストリームから抽出した情報(相関情報等)をボクセルデータ生成部322に供給する。
なお、復号部321は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、復号に関する処理を行うようにしてもよい。
ボクセルデータ生成部322は、ボクセルデータの生成に関する処理を行う。例えば、ボクセルデータ生成部322は、復号部321から供給される相関情報に対応するボクセルデータを生成する。つまり、相関情報がボクセル毎に設定されている場合、ボクセルデータ生成部322は、各ブロックの相関情報をボクセルデータに変換する。
例えば、ボクセルデータ生成部322は、復号部321から供給されたカレントブロックの相関情報に含まれる参照空間座標情報に基づいて、参照先のブロックを特定し、そのブロックのボクセルデータを用いて、カレントブロックのボクセルデータを生成する。ボクセルデータ生成部322は、各ブロックの相関情報についてこのような処理を行うことにより、各ブロックのボクセルデータを生成する。
ボクセルデータ生成部322は、生成したボクセルデータをポイントクラウド化処理部303に供給する。ポイントクラウド化処理部303が行う処理は、図22の場合と同様であるのでその説明を省略する。
なお、ボクセルデータ生成部322は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、ボクセルデータの生成に関する処理を行うようにしてもよい。
以上のように、この場合の復号装置300は、図9に示される表のid = 2の行に示される方法により復号する。したがって、この場合の復号装置300は、図9に示される表のid = 2の行に示される符号化方法による符号化効率の低減の抑制を実現することができる。
<復号処理の流れ>
この場合の復号装置300により実行される復号処理の流れの例を、図25のフローチャートを参照して説明する。
復号処理が開始されると、復号部321は、ステップS321において、ビットストリームを復号し、参照空間座標情報を含む各ブロックの相関情報を抽出する。
ステップS322において、ボクセルデータ生成部322は、ステップS321において抽出された各ブロックの相関情報の参照空間座標情報に基づいて、参照先のブロックを特定し、その各参照先のブロックのボクセルデータを用いて、各ブロックのボクセルデータを生成する。
ステップS323およびステップS324の各処理は、図23のステップS303およびステップS304の各処理と同様に実行される。ステップS324の処理が終了すると、復号処理が終了する。
以上のように復号処理を行うことにより、この場合の復号装置300は、図9に示される表のid = 2の行に示される符号化方法による符号化効率の低減の抑制を実現することができる。
<復号方法の例3>
また例えば、図9に示される表のid = 3の行に示される方法により符号化されたボクセルデータのビットストリームは、同行に示される方法により復号することができる。
つまり、この場合、事前定義ユニークパタンと事前定義インデックスとの対応関係を示す情報に基づいて、各ブロックの事前定義インデックスを事前定義ユニークパタンに変換することにより、各ブロックの相関情報を復号することができる。
<復号装置>
図26は、本技術を適用した情報処理装置の一実施の形態である復号装置の主な構成例を示すブロック図である。図26に示される復号装置300は、図7の符号化装置100に対応する復号装置であり、例えばこの符号化装置100により生成されたポイントクラウドの符号化データを復号し、ポイントクラウドのデータを復元する。この符号化装置100の信号列生成部114は、上述したように図9に示される表のid = 3の行に示される方法によりボクセルデータを符号化する。図26の復号装置300は、その符号化装置100により得られたビットストリームを、図9に示される表のid = 3の行に示される方法により復号する。
図26に示されるように、この場合の復号装置300は、復号部341、ボクセルデータ生成部342、およびポイントクラウド化処理部303を有する。
復号部341は、ビットストリームの復号に関する処理を行う。例えば、復号部341は、ビットストリームを符号化部115の符号化方法に対応する復号方法で復号し、ビットストリームから、相関情報を抽出する。この相関情報は、ボクセルデータが表す空間の部分領域であるブロック毎に設定されており、復号部321は、その各ブロックの相関情報を抽出する。
この相関情報には、ブロック毎にボクセルデータを変換した事前定義インデックスが含まれている。この事前定義インデックスは、事前定義ユニークパタンに割り当てられたものである。なお、図26の復号装置300は、事前定義ユニークパタンと事前定義インデックスとの対応関係を示す情報を予め有している。復号部341は、ビットストリームから抽出した情報(相関情報等)をボクセルデータ生成部342に供給する。
なお、復号部341は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、復号に関する処理を行うようにしてもよい。
ボクセルデータ生成部342は、ボクセルデータの生成に関する処理を行う。例えば、ボクセルデータ生成部342は、復号部341から供給される相関情報に対応するボクセルデータを生成する。つまり、相関情報がボクセル毎に設定されている場合、ボクセルデータ生成部342は、各ブロックの相関情報をボクセルデータに変換する。
例えば、ボクセルデータ生成部342は、復号部341から供給された各ブロックの相関情報に含まれる事前定義インデックスを、事前定義ユニークパタンと事前定義インデックスとの対応関係を示す情報に基づいて、事前定義ユニークパタンに変換することにより、各ブロックのボクセルデータを生成する。
ボクセルデータ生成部322は、生成したボクセルデータをポイントクラウド化処理部303に供給する。ポイントクラウド化処理部303が行う処理は、図22の場合と同様であるのでその説明を省略する。
なお、ボクセルデータ生成部342は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、ボクセルデータの生成に関する処理を行うようにしてもよい。
以上のように、この場合の復号装置300は、図9に示される表のid = 3の行に示される方法により復号する。したがって、この場合の復号装置300は、図9に示される表のid = 3の行に示される符号化方法による符号化効率の低減の抑制を実現することができる。
<復号処理の流れ>
この場合の復号装置300により実行される復号処理の流れの例を、図27のフローチャートを参照して説明する。
復号処理が開始されると、復号部341は、ステップS341において、ビットストリームを復号し、事前定義インデックスを含む各ブロックの相関情報を抽出する。
ステップS342において、ボクセルデータ生成部342は、事前定義ユニークパタンと事前定義インデックスとの対応関係を示す情報に基づいて、ステップS341において抽出された各ブロックの相関情報の事前定義インデックスを事前定義ユニークパタンに変換することにより、各ブロックのボクセルデータを生成する。
ステップS343およびステップS334の各処理は、図23のステップS303およびステップS304の各処理と同様に実行される。ステップS344の処理が終了すると、復号処理が終了する。
以上のように復号処理を行うことにより、この場合の復号装置300は、図9に示される表のid = 3の行に示される符号化方法による符号化効率の低減の抑制を実現することができる。
<復号方法の例4>
また例えば、図9に示される表のid = 4の行に示される方法により符号化されたボクセルデータのビットストリームは、同行に示される方法により復号することができる。つまり、この場合、フレームを特定する情報を復号することにより、復号済みのフレームを特定し、追加の情報によって、そのフレーム内のブロックから分布パタンを復号することができる。
例えば、相関情報に、カレントブロックのボクセルデータの値の分布パタンとの相関の強さを求める際の、参照先に対応するフレームを示す時間情報が含まれるようにしてもよい。そして、ビットストリームより抽出されたカレントブロックの相関情報に含まれるその時間情報に基づいて参照先に対応するフレームを特定するようにしてもよい。
このようにすることにより、相関情報とするインデックスや参照先の範囲を拡大することができるので、ビットストリームの冗長性をより低減させることができ、符号化効率の低減を抑制することができる。
<復号方法の例5>
また例えば、図9に示される表のid = 5の行に示される方法により符号化されたボクセルデータのビットストリームは、同行に示される方法により復号することができる。つまり、この場合、回転、反転等の情報を復号し、参照先のブロックに対応する操作を施して、カレントブロックの分布パタンを復号することができる。
例えば、相関情報に、カレントブロックのボクセルデータの値の分布パタンとの相関の強さを求める際の、参照先のボクセルデータの値の分布パタンの回転に関する情報(回転情報)、および、その参照先のボクセルデータの値の分布パタンの反転に関する情報(反転情報)、の内の少なくともいずれか一方が含まれるようにしてもよい。そして、各ブロックの相関情報からボクセルデータを生成する際に、ビットストリームより抽出されたカレントブロックの相関情報に含まれる回転情報および反転情報の内の少なくともいずれか一方に基づいて、参照先のボクセルデータの値の分布パタンに対して回転若しくは反転、またはその両方を行うようにしてもよい。
このようにすることにより、参照先の分布パタンがカレントブロックと一致または近似する可能性を増大させることができる。また、その相関度がより高くなる可能性を増大させることができる。したがって、ビットストリームの冗長性をより低減させることができ、符号化効率の低減を抑制することができる。
<復号方法の例6>
また例えば、図9に示される表のid = 6の行に示される方法により符号化されたボクセルデータのビットストリームは、同行に示される方法により復号することができる。つまり、この場合、周辺ブロックの相関情報を再利用して、カレントブロックのボクセルデータを生成することができる。
周辺ブロックの相関情報を再利用する場合、ビットストリームにはカレントブロックの相関情報は含まれないようにしてもよい。その代わりに、例えば、そのブロックにおいて、周辺ブロックの相関情報を再利用する旨を示す情報(フラグ等)がビットストリームに含まれるようにしてもよい。そして、カレントブロックに対してそのような情報が得られた場合、周辺ブロックの相関情報を用いて、カレントブロックの相関情報を生成し、生成した相関情報を用いて、カレントブロックのボクセルデータを生成するようにしてもよい。
このようにすることにより、周辺ブロックの相関情報を再利用するブロックの相関情報の伝送は省略することができる。したがって、伝送する情報量を低減させることができるので、符号化効率の低減を抑制することができる。
なお、符号化の場合と同様に、上述した図9に示される表のid = 1乃至6の行に示される復号方法は、適宜組み合わせることができる。
<Octree復号の併用>
なお、復号対象のビットストリームは、<Octree符号化の併用>において説明したように、相関情報を利用した符号化と、Octree符号化とを併用して生成されたものであってもよい。例えば、ビットストリームが、ボクセルデータがOctree符号化され、そのOctreeパタンの最下位レベルのノードが相関情報を利用して符号化されたものであってもよい。また、そのOctreeパタンの最下位レベルを含む複数のレベルのノードが相関情報を利用して符号化されたものであってもよい。
さらに、DAG処理も併用して生成されたものであってもよい。例えば、ビットストリームが、ボクセルデータがOctree符号化され、そのOctreeパタンの最下位レベルのノードが相関情報を利用して符号化され、最下位レベルより上位のレベルのノードがDAG処理されたものであってもよい。また、そのOctreeパタンの最下位レベルのノードが相関情報を利用して符号化され、最下位レベルより1つ上位のレベルから途中のレベルまでのノードがDAG処理され、それより上位のレベルのノードは、Octree符号化のみが適用されたものであってもよい。
<復号装置>
図28は、この場合の復号装置300の主な構成例を示すブロック図である。図28に示されるように、この場合の復号装置300は、復号部361、DAG逆処理部362、Octree復号部363、ボクセルデータ生成部364、およびポイントクラウド化処理部303を有する。
復号部361は、ビットストリームの復号に関する処理を行う。例えば、復号部361は、ビットストリームを符号化部115の符号化方法に対応する復号方法で復号し、ビットストリームから、インデックスを含む各ブロックの相関情報と、ユニークパタンとインデックスとの対応関係を示す情報と、DAG処理されたOctreeパタンであるDAGデータとを抽出する。復号部361は、抽出した各ブロックの相関情報と、ユニークパタンとインデックスとの対応関係を示す情報とをボクセルデータ生成部364に供給し、DAGデータをDAG逆処理部362に供給する。
なお、復号部361は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、復号に関する処理を行うようにしてもよい。
DAG逆処理部362は、DAG処理部262が行うDAG処理の逆処理であるDAG逆処理に関する処理を行う。つまり、DAG逆処理は、DAGデータからOctreeパタンの各ノードのChildmaskを生成する処理である。DAG逆処理部362は、復号部361から供給されたDAGデータに対してこのDAG逆処理を行って、Octreeパタンの各ノードのChildmaskを生成し、それをOctree復号部363に供給する。
なお、DAG逆処理部362は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、DAG逆処理に関する処理を行うようにしてもよい。
Octree復号部363は、Octreeパタンの復号に関する処理を行う。例えば、Octree復号部363は、Octreeパタンの各ノードのChildmaskを復号してボクセルデータを生成する。Octree復号部363は、生成したボクセルデータをボクセルデータ生成部364に供給する。
なお、Octree復号部363は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、Octree復号に関する処理を行うようにしてもよい。
ボクセルデータ生成部364は、ボクセルデータの生成に関する処理を行う。例えば、ボクセルデータ生成部364は、復号部361から供給されたユニークパタンとインデックスとの対応関係を示す情報を用いて、復号部361から供給された各ブロックの相関情報をユニークパタンに変換することにより、各ブロックのボクセルデータを生成する。
ボクセルデータ生成部364は、生成したボクセルデータと、Octree復号部363から供給されたボクセルデータとをポイントクラウド化処理部303に供給する。ポイントクラウド化処理部303が行う処理は、図22の場合と同様であるのでその説明を省略する。
なお、ボクセルデータ生成部364は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、ボクセルデータの生成に関する処理を行うようにしてもよい。
このようにOctree符号化を適用することにより、相関情報を用いた符号化をスケーラビリティに対応させることができる。換言するに、Octreeパタンに対して、相関情報を用いた符号化を適用することにより、符号化効率の低減を抑制することができる。
<復号処理の流れ>
この場合の復号装置300により実行される復号処理の流れの例を、図29のフローチャートを参照して説明する。
復号処理が開始されると、復号部361は、ステップS361において、ビットストリームを復号し、ユニークパタンとインデックスとの対応関係を示す情報と、インデックスを含む各ブロックの相関情報と、DAGデータとを抽出する。
ステップS362において、ボクセルデータ生成部364は、ステップS361において抽出されたユニークパタンとインデックスとの対応関係を示す情報に基づいて、各ブロックの相関情報のインデックスをそれに対応するユニークパタンに変換することにより、各ブロックのボクセルデータを生成する。
ステップS363において、DAG逆処理部362は、ステップS361において抽出されたDAGデータに対してDAG逆処理を施し、Octreeパタンの各ノードのChildmaskを生成する。
ステップS364において、Octree復号部363は、ステップS363の処理により得られたOctreeパタンの各ノードのChildmaskに対してOctree復号を行い、ボクセルデータを生成する。
ステップS365において、ポイントクラウド化処理部303は、ステップS362の処理により得られたボクセルデータと、ステップS364の処理により得られたボクセルデータとから、ポイントクラウドデータを復元する。
ステップS366において、ポイントクラウド化処理部303は、復元されたポイントクラウドデータ(復号ポイントクラウドデータ)を復号装置300の外部に出力する。
ステップS366の処理が終了すると、復号処理が終了する。
以上のように復号処理を行うことにより、この場合の復号装置300は、相関情報を用いた符号化をスケーラビリティに対応させたり、符号化効率の低減を抑制したりすることができる。
なお、以上においては、図9に示される表のid = 1の行に示される復号方法に、Octree復号を適用する場合について説明したが、図9に示される表のその他の行に示される復号方法にOctree復号を適用する場合も同様に適用することができる。
<予測残差の復号>
なお、復号対象のビットストリームに、<予測残差の伝送>において説明したように、ボクセルデータの予測残差が含まれるようにしてもよい。また、その予測残差は、符号化された(情報量が低減された)ものであってもよい。つまり、ビットストリームに、予測残差が符号化された係数データが含まれるようにしてもよい。この予測残差の符号化方法は任意である。例えば、予測残差が直交変換されるようにしてもよい。また、予測残差がチェーン符号化されるようにしてもよい。さらに量子化が行われるようにしてもよい。
このように予測残差を伝送することにより、復号装置300は、より正確な(符号化前の状態に近い)復号画像(復号ポイントクラウドデータ)を得ることができる。つまり、復号ポイントクラウドデータの主観画質を向上させることができる。また、上述のように符号化された予測残差を伝送することにより、符号化効率の低減を抑制することができる。
<復号装置>
図30は、この場合の復号装置300の主な構成例を示すブロック図である。図30に示されるように、この場合の復号装置300は、復号部381、予測残差復号部382、ボクセルデータ生成部383、およびポイントクラウド化処理部303を有する。ボクセルデータ生成部383は、ユニークパタン生成部391および演算部392を有する。
復号部381は、ビットストリームの復号に関する処理を行う。例えば、復号部381は、ビットストリームを符号化部115の符号化方法に対応する復号方法で復号し、ビットストリームから、インデックスを含む各ブロックの相関情報と、ユニークパタンとインデックスとの対応関係を示す情報と、予測残差が符号化された係数データとを抽出する。復号部381は、抽出した各ブロックの相関情報と、ユニークパタンとインデックスとの対応関係を示す情報とをボクセルデータ生成部383(ユニークパタン生成部391)に供給し、係数データを予測残差復号部382に供給する。
なお、復号部381は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、復号に関する処理を行うようにしてもよい。
予測残差復号部382は、係数データの復号に関する処理を行う。例えば、予測残差復号部382は、復号部381から供給された係数データを、予測残差符号化部283(図20)により行われる符号化方法に対応する復号方法により復号し、予測残差を復元する。予測残差復号部382は、復元した予測残差をボクセルデータ生成部383(演算部392)に供給する。
なお、予測残差復号部382は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、予測残差の復号に関する処理を行うようにしてもよい。
ボクセルデータ生成部383は、ボクセルデータの生成に関する処理を行う。例えば、ボクセルデータ生成部383のユニークパタン生成部391は、ユニークパタンの生成に関する処理を行う。例えば、ユニークパタン生成部391は、復号部381から供給されたユニークパタンとインデックスとの対応関係を示す情報を用いて、復号部381から供給された各ブロックの相関情報をユニークパタン(ボクセルデータ)に変換する。ユニークパタン生成部391は、生成した各ブロックのユニークパタンを演算部392に供給する。
なお、ユニークパタン生成部391は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、ユニークパタンの生成に関する処理を行うようにしてもよい。
演算部392は、ボクセルデータの生成に関する処理を行う。例えば、演算部392は、予測残差復号部382から供給された予測残差と、ユニークパタン生成部391から供給された各ブロックのユニークパタン(ボクセルデータ)とを加算し、各ブロックのボクセルデータを生成する。演算部392は、生成したボクセルデータをポイントクラウド化処理部303に供給する。ポイントクラウド化処理部303が行う処理は、図22の場合と同様であるのでその説明を省略する。
なお、演算部392は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、ボクセルデータの生成に関する処理を行うようにしてもよい。
このようにすることにより、復号装置300は、より正確な(符号化前の状態に近い)復号画像(復号ポイントクラウドデータ)を得ることができる。つまり、復号ポイントクラウドデータの主観画質を向上させることができる。また、上述のように符号化された予測残差を伝送することにより、符号化効率の低減を抑制することができる。
<復号処理の流れ>
この場合の復号装置300により実行される復号処理の流れの例を、図31のフローチャートを参照して説明する。
復号処理が開始されると、復号部381は、ステップS381において、ビットストリームを復号し、ユニークパタンとインデックスとの対応関係を示す情報と、インデックスを含む各ブロックの相関情報と、各ブロックの係数データとを抽出する。
ステップS382において、予測残差復号部382は、各ブロックについて、ステップS381において抽出された係数データに対して予測残差復号を行い、予測残差を得る。
ステップS383において、ユニークパタン生成部391は、ステップS381において抽出されたユニークパタンとインデックスとの対応関係を示す情報に基づいて、各ブロックの相関情報のインデックスをそれに対応するユニークパタンに変換する。
ステップS384において、演算部392は、各ブロックについて、ステップS382において得られた予測残差と、ステップS383において得られたユニークパタンとを加算し、ボクセルデータを生成する。
ステップS385において、ポイントクラウド化処理部303は、ステップS384の処理により得られたボクセルデータから、ポイントクラウドデータを復元する。
ステップS386において、ポイントクラウド化処理部303は、復号ポイントクラウドデータを復号装置300の外部に出力する。
ステップS386の処理が終了すると、復号処理が終了する。
以上のように復号処理を行うことにより、復号装置300は、より正確な復号画像(復号ポイントクラウドデータ)を得ることができる。つまり、復号ポイントクラウドデータの主観画質を向上させることができる。また、上述のように符号化された予測残差を伝送することにより、符号化効率の低減を抑制することができる。
なお、以上においては、図9に示される表のid = 1の行に示される復号方法に、予測残差の伝送を適用する場合について説明したが、図9に示される表のその他の行に示される復号方法に予測残差の伝送を適用する場合も同様に適用することができる。
<属性情報の参照>
また、上述の位置情報の符号化の際に、属性情報も同様に、相関情報を利用して符号化するようにしてもよい。例えば、位置情報(構造情報)の参照先となるブロック、ユニークパタン、または事前定義ユニークパタンの属性情報(例えば、色情報をデコードした後のRGB/YUV画素値)を、カレントブロックにおいても使用するようにしてもよい。その場合、ビットストリームには、参照先のブロックの属性情報を再利用するブロックの属性情報が含まれない。したがって、復号装置300は、ビットストリームより抽出された相関情報に対応する参照先の属性情報を用いて、カレントブロックの属性情報を復元する。
また、例えば、位置情報(構造情報)の参照先となるブロック、ユニークパタン、または事前定義ユニークパタンの属性情報の符号化方法(例えば、色予測モード等)を、カレントブロックにおいても使用するようにしてもよい。その場合、復号装置300は、ビットストリームより抽出された相関情報に対応する参照先の属性情報の符号化方法に対応する復号方法を用いて、カレントブロックの属性情報を復号する。
さらに、例えば、位置情報(構造情報)の参照先となるブロック、ユニークパタン、または事前定義ユニークパタンの属性情報のフィルタリング方法(カラーフォーマット変換、クロマサブサンプリング方法、デブロック等のデノイズ方法等)を、カレントブロックにおいても使用するようにしてもよい。その場合、復号装置300は、ビットストリームより抽出された相関情報に対応する参照先の属性情報のフィルタリング方法を用いて、カレントブロックの属性情報をフィルタリングする。
このようにすることにより、ビットストリームの属性情報の冗長性を低減させることができ、符号化効率の低減を抑制することができる。
<4.第3の実施の形態>
<主観画質を考慮した相関度の算出>
従来、データ同士の類似度(相関度)を評価する指標として、例えばPSNR(Peak signal-to-noise ratio)等が提案されている。しかしなら、PSNRのような一般的な評価指標は、一般的なデータとしての評価を行うので、主観的な画質(見た目の良さ)に対応しているとは限らない。そのため、ポイントクラウドデータ(ボクセルデータ)の相関度の評価において、このような一般的な評価指標のみを利用してRD最適を考慮したノードのマージを行うだけでは、復号ポイントクラウドデータにおいて、主観的な劣化が目立つおそれがあった。
また、このような一般的な評価指標は、計算の処理コストが非常に大きく、リアルタイム処理を実現することが困難になる程、処理時間が増大するおそれがあった。
そこで、ポイントクラウドデータを量子化したボクセルデータの比較において、ボクセルデータの値の分布パタンの主観的特徴に基づいて、比較対象のボクセルデータ間におけるその分布パタンの相関度を算出するようにする。
例えば、情報処理装置において、ポイントクラウドデータを量子化したボクセルデータの比較において、ボクセルデータの値の分布パタンの主観的特徴に基づいて、比較対象のボクセルデータ間におけるその分布パタンの相関度を算出する相関度算出部を備えるようにする。
このようにすることにより、復号ポイントクラウドデータの主観画質の低減を抑制することができる。
<相関演算部>
図32は、この場合の、符号化装置100の相関演算部201(図11)の主な構成例を示すブロック図である。図32に示されるように、この場合の相関演算部201は、特徴量算出部411、相関演算組設定部412、およびコスト算出部413を有する。
特徴量算出部411は、特徴量の算出に関する処理を行う。例えば、特徴量算出部411は、ボクセルデータおよびそのテクスチャに基づいて、ポイントクラウドデータの主観的な(見た目に影響を及ぼす)特徴量を算出する。特徴量算出部411は、算出した特徴量を相関演算組設定部412と、コスト算出部413とに供給する。
なお、特徴量算出部411は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、特徴量の算出に関する処理を行うようにしてもよい。
相関演算組設定部412は、相関の演算を行うボクセルデータの組の設定に関する処理を行う。例えば、相関演算組設定部412は、特徴量算出部411から供給される特徴量に基づいて、分布パタンの相関をカレントブロックと比較するボクセルデータを設定する。つまり、相関演算組設定部412は、各ブロックについて、比較対象とするボクセルデータを設定する。相関演算組設定部412は、設定したその組を示す情報(組情報)と、ボクセルデータとをコスト算出部413に供給する。
なお、相関演算組設定部412は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、組の設定に関する処理を行うようにしてもよい。
コスト算出部413は、コストの算出に関する処理を行う。例えば、コスト算出部413は、相関演算組設定部412により設定されたボクセルデータの各組について、相関度(コスト値)を算出する。例えば、コスト算出部413は、カレントブロックのボクセルデータと、相関演算組設定部412が設定した全てのボクセルデータとの間の相関度を算出する。つまり、コスト算出部413は、各ブロックについて、比較対象として設定された全てのボクセルデータとの間の相関度を算出する。なお、コスト算出部413は、特徴量算出部411により算出された特徴量も用いて、その相関度(コスト値)の算出を行う。
また、コスト算出部413は、各組の中でコスト値が最小となる組を特定する(その最小コスト値も求める)。コスト算出部413は、このようなコスト値の算出結果を、相関度として、ユニークパタン設定部202(図11)に供給する。
なお、コスト算出部413は、どのような構成を有するようにしてもよいが、例えば、CPU、ROM、RAM等を有し、CPUがROM等に記憶されているプログラムやデータをRAMにロードして実行することにより、コストの算出に関する処理を行うようにしてもよい。
<相関演算処理の流れ>
次に、図33のフローチャートを参照して、図13のステップS121において実行される相関演算処理の流れの例を説明する。
相関演算処理が開始されると、特徴量算出部411は、ステップS401において、ボクセルデータおよびテクスチャに基づいて、ポイントクラウドデータの主観的な特徴量を算出する。
ステップS402において、相関演算組設定部412は、相関演算を行うブロックの組を設定する。
その際、相関演算組設定部412は、例えば、比較対象を一部のブロックに制限するようにしてもよい。このようにすることにより、相関演算組設定部412は、相関演算を行う組数の増大を抑制することができ、相関演算の処理量(処理時間)の増大を抑制することができる。
例えば、相関演算組設定部412が、カレントブロック(カレントノード)と空間的に近い場所のブロック(ノード)とのみ相関の算出が行われるように、相関演算を行うブロックの組を設定するようにしてもよい。例えば、相関演算組設定部412が、所定の空間的範囲内において、カレントブロックと比較するボクセルデータを設定するようにしてもよい。一般的に空間的に近い場所のブロックは、比較的相関度が高い。したがって、このように、比較対象とするブロックを空間的に近い場所に限定することにより、相関演算の処理量(処理時間)の増大を抑制しながら、相関度の高い組を検出しやすくすることができる。
また、例えば、相関演算組設定部412が、Octreeパタンの1つ上位のレベルにおいて相関の算出が行われるように、相関演算を行うブロックの組を設定するようにしてもよい。例えば、相関演算組設定部412が、階層化されたボクセルデータの処理対象の階層よりも上位の階層において、カレントブロックと比較するボクセルデータを設定するようにしてもよい。
例えば、図34のAに示される4×4×4のボクセルからなるブロック421を処理対象とすると、それより1段上位のレベルにおいては、そのブロック421は、図34のBに示されるブロック422のように、2×2×2のボクセルにより構成される。つまり、上位のレベルにいくほどボクセル数が低減する。したがって、より上位のレベルで相関の算出を行う方が、相関演算の処理量(処理時間)の増大を抑制することができる。
また、例えば、相関演算組設定部412が、代表的なパタンとのみ相関度が算出されるように、相関演算を行うブロックの組を設定するようにしてもよい。また、その代表的なパタンは、予め定められた固定パタン(更新されないパタン)であってもよい。例えば、相関演算組設定部412が、予め定められた固定の代表的な分布パタンのボクセルデータを、カレントブロックと比較するボクセルデータとして設定するようにしてもよい。
もちろん、この代表的なパタンは、更新可能であってもよい。例えば、フレーム毎に代表的なパタンが更新されるようにしてもよい。例えば、フレーム内の統計情報に基づいて(統計情報に応じたパタンに)更新されるようにしてもよい。また、例えば過去の処理の統計情報に基づいて(統計情報に応じたパタンに)更新されるようにしてもよい。例えば、相関演算組設定部412が、更新可能な代表的な分布パタンのボクセルデータを、カレントブロックと比較するボクセルデータとして設定するようにしてもよい。
このように、比較対象のパタンを限定することにより、相関演算の処理量(処理時間)の増大を抑制することができる。
図33に戻り、ステップS403において、コスト算出部413は、ステップS402において設定された各組の相関について、コスト値を算出する。なお、このコスト値の算出方法は任意である。例えば、コスト算出部413が、各組について、複数の方法でコスト値を算出するようにしてもよい。例えば、コスト算出部413が、各組について、互いに異なる方法で複数のコスト値を算出し、その中の最小値を、その組のコスト値として選択するようにしてもよい。
ステップS403の処理が終了すると相関演算処理が終了し、処理は図13に戻る。
<コスト算出処理の流れ>
次に、図35のフローチャートを参照して、図33のステップS403において実行されるコスト算出処理の流れの例を説明する。
コスト算出処理が開始されると、コスト算出部413は、ステップS421において、処理対象の組について、基本コスト関数を用いてコスト値を算出する。この基本コスト関数は、一般的なコスト関数を用いる。このコスト関数は、どのようなものであってもよいが、例えば、図36の表に示されるようなコスト関数であってもよい。
図36の表において、Hausdorff Distanceは、2つの点群間の最短距離の最大値を双方向から求めて評価する関数である。ボクセルデータ(ポイントクラウドデータ)をポイント群とみなし、この評価関数を用いて2つのポイント群同士の距離を評価することで、ボクセルデータ間の相関の強さを評価することができる。
また、PSNR Point2Pointは、2点間の最短距離のPSNRを評価する関数である。この評価関数を用いて、ボクセルデータ間でポイント同士の距離を評価することで、ボクセルデータ間の相関の強さを評価することができる。
また、PSNR Point2Surfaceは、点と面との最短距離のPSNRを評価する関数である。この評価関数を用いて、一方のボクセルデータの各ポイントと、他方のボクセルデータの各ポイントの法線ベクトルに直交する面との距離を評価することで、ボクセルデータ間の相関の強さを評価することができる。
また、Hamming Distanceは、ビット列同士を比較して互いに異なる値を持つビットの数を評価する関数である。ボクセルデータをビット列とみなし、この評価関数を用いて2つのビット列を比較し、評価することで、ボクセルデータ間の相関の強さを評価することができる。
コスト算出部413は、ステップS421において、これらのコスト関数(評価関数)のいずれか、または任意の組み合わせにより、コスト値を算出する。
ただし、これらのコスト関数(評価関数)では、主観的な画質については考慮されてない。そこで、図35に戻り、コスト算出部413は、ステップS422において、処理対象の組について、補正用指標を用いてペナルティ値を算出する。ペナルティ値とは、主観的に相関が弱いことを示す値であり、この値をコスト値に加算することにより、コスト値が増大する(つまり、相関度が低く評価される)値である。
例えば、図37に示されるような指標0乃至指標3により、このペナルティ値を算出する。図37のAに示される指標0の場合、相関を評価するボクセルデータにおいて、4×4×4のボクセルからなるブロック431の中の、2×2×2のボクセル(グレーで示されるボクセル)において、X個(0<X≦8)以上のポイントが減少する場合、ペナルティ値が設定される。
また、例えば図37のBに示される指標1の場合、相関を評価するボクセルデータにおいて、4×4×4のボクセルからなるブロック431の中の、4×1×1のボクセル(グレーで示されるボクセル)において、X個(0<X≦4)以上のポイントが減少する場合、ペナルティ値が設定される。
また、例えば図37のCに示される指標2の場合、相関を評価するボクセルデータにおいて、4×4×4のボクセルからなるブロック431の中の、4×2×1のボクセル(グレーで示されるボクセル)において、X個(0<X≦8)以上のポイントが減少する場合、ペナルティ値が設定される。
また、例えば図37のDに示される指標3の場合、相関を評価するボクセルデータにおいて、4×4×4のボクセルからなるブロック431の中の、4×4×1のボクセル(グレーで示されるボクセル)において、X個(0<X≦16)以上のポイントが減少する場合、ペナルティ値が設定される。
ここで設定されるペナルティ値は、正の値であれば任意である。ポイントの減少量に応じて値が変化するようにしてもよい。
つまり、これらの指標(補正用指標)は、相関の強さを算出するボクセルデータにおいて、所定の形状の範囲を定義し、その範囲内において互いの分布パタンが所定の基準以上に異なる場合、それらのボクセルデータの相関が(基本コスト関数を用いて算出した相関の強さよりも)弱いと評価するものである。
この範囲の形状は、主観的な特徴を有する分布パタン(主観的に識別可能な分布パタン)とする。例えば、線や面等であってもよい。つまり、この補正用指標は、比較するボクセルデータのいずれかが、見て分かるような所定の形状の分布パタンを有しない場合、それらのボクセルデータ間の相関度をより低く算出する指標である。換言するに、この補正用指標は、比較するボクセルデータの全てが、その見て分かる形状の分布パタンを有する場合、それらのボクセルデータ間の相関度をより高く評価する指標である。
例えば、主観的な分布パタンが(分布パタンの見た目の形状)が全く異なる場合であっても、上述の基本コスト関数では、相関性が強く評価される場合がある。このような場合、ボクセルデータがブロック単位でマージされてしまうので、復号ポイントクラウドデータにおいて、主観的に大きく異なる構造となるおそれがある。これに対して上述の補正用指標は、主観的特徴を考慮して相関度を評価するので、このような主観的な変化の発生を抑制することができる。したがって、復号ポイントクラウドデータの主観画質の低減を抑制することができる。
なお、以上において指標0乃至指標3について説明したが、適用する補正用指標の数は任意である。また、各指標の範囲の形状は、主観的な特徴を有する(見て分かる)ものであれば、任意であり、上述の例に限定されない。
図35に戻り、ステップS423において、コスト算出部413は、処理対象の組について、ステップS401(図33)において算出された主観的な特徴量に基づいて、補正値を算出する。
つまり、相関を算出するブロックが、ポイントクラウドデータ全体におけるどのような主観的特徴を有する部分に位置するかによって、相関度を評価する。
例えば、相関を算出するブロックのテクスチャが所定の基準より細かい場合、分布パタンの違いが主観的により大きな影響を及ぼす(見た目の変化がより大きい)可能性が高いので、コスト算出部413が、相関度をより低く算出するように補正値を算出するようにしてもよい。例えば、その場合、コスト算出部413が、コスト値がより大きくなるように、正の値の補正値を設定するようにしてもよい。
また例えば、相関を算出するブロックが色のピーク点を有する場合、分布パタンの違いが主観的により大きな影響を及ぼす(見た目の変化がより大きい)可能性が高いので、コスト算出部413が、相関度をより低く算出するように補正値を算出するようにしてもよい。例えば、相関を算出するブロックが周囲のボクセルに対してピークとなる色成分を有するボクセルを含む場合、コスト算出部413が、コスト値がより大きくなるように、正の値の補正値を設定するようにしてもよい。
また例えば、相関を算出するブロックが、注目度がより高い領域のブロックである場合、分布パタンの違いが主観的により大きな影響を及ぼす(変化がより目立つ)可能性が高いので、コスト算出部413が、相関度をより低く算出するように補正値を算出するようにしてもよい。例えば、その場合、コスト算出部413が、コスト値がより大きくなるように、正の値の補正値を設定するようにしてもよい。
また例えば、相関を算出するブロックが、ポイントクラウドで描画される3次元構造における人の顔部分に相当するブロックである場合、分布パタンの違いが主観的により大きな影響を及ぼす(変化がより目立つ)可能性が高いので、コスト算出部413が、相関度をより低く算出するように補正値を算出するようにしてもよい。例えば、その場合、コスト算出部413が、コスト値がより大きくなるように、正の値の補正値を設定するようにしてもよい。
また例えば、相関を算出するブロックが、ポイントクラウドで描画される3次元構造におけるエッジ部分に相当するブロックである場合、分布パタンの違いが主観的により大きな影響を及ぼす(変化がより目立つ)可能性が高いので、コスト算出部413が、相関度をより低く算出するように補正値を算出するようにしてもよい。例えば、その場合、コスト算出部413が、コスト値がより大きくなるように、正の値の補正値を設定するようにしてもよい。
さらに例えば、相関を算出するブロックが、ポイントクラウドで描画される3次元構造における面を構成する4点の少なくともいずれか1つを含むブロックである場合、コスト算出部413が、相関度をより低く算出するように補正値を算出するようにしてもよい。例えば、ポイントクラウドで描画される3次元構造における面において、4点を残しておけばその4点を用いてその面を復元することができる。したがって、ポイントクラウドで描画される3次元構造における面の部分において少なくとも4点が残るように、コスト算出部413が、正の値の補正値を設定するようにしてもよい。
このようにすることにより、ブロックの主観的特徴に基づいてコスト値を補正することができるので、主観的な変化の発生を抑制することができる。したがって、復号ポイントクラウドデータの主観画質の低減を抑制することができる。
なお、コスト算出部413が補正値を設定する主観的特徴は任意であり、上述した例に限定されない。また、コスト算出部413が補正値を設定する主観的特徴の数も任意である。また、コスト算出部413がこれらのような主観的特徴に対して設定する補正値の値は任意である。例えば、主観的特徴に応じた値が設定されるようにしてもよい。
図35に戻り、ステップS424において、コスト算出部413は、ステップS421乃至ステップS423のそれぞれにおいて算出した値を用いて、処理対象の組に対応する最終的なコスト値(最終コスト値)を算出する。つまり、コスト算出部413は、主観的特徴を考慮して最終コスト値を算出する。したがって、復号ポイントクラウドデータの主観画質の低減を抑制することができる。
ステップS425において、コスト算出部413は、カレントブロックに対応する未処理の組が存在するか否かを判定する。未処理の組が存在すると判定された場合、未処理の組が新たな処理対象とされ、処理はステップS421に戻る。つまり、カレントブロックに対応する各組について、ステップS421乃至ステップS425の各処理が実行される。
そして、ステップS425において、カレントブロックに対応する全ての組を処理したと判定された場合、処理はステップS426に進む。
ステップS426において、コスト算出部413は、以上のようにして算出された各組の最終コスト値の中の最小値(コスト最小値)を求め、そのコスト最小値に対応する組を特定する。
ステップS426の処理が終了すると、コスト算出処理が終了し、処理は図33に戻る。
<ユニークパタンの設定>
例えば、図11を参照して説明したように、以上のように算出されたコスト値は、ユニークパタン設定部202に供給され、ユニークパタンの設定に利用される。例えば、コスト値が十分に小さい(分布パタンが一致または近似している)と判定された場合、ユニークパタン設定部202は、そのボクセルデータの組の分布パタンを用いて、ユニークパタンを設定する。
その際のユニークパタンの設定方法は任意である。例えば、ユニークパタン設定部202は、存在頻度の高い分布パタンをユニークパタンとするようにしてもよい。例えば、図38のAに示されるように、ブロック451とブロック452とが、分布パタンが近似していると判定されたとする。ここで、ブロック452の分布パタンの方がブロック451の分布パタンよりも存在頻度が高いとすると、ユニークパタン設定部202は、図38のBに示されるように、ブロック452の分布パタンをユニークパタンに採用する。
また、例えば、ユニークパタン設定部202は、分布パタンを所定の基準に基づいて評価し、その評価値(スコア)がより高い分布パタンをユニークパタンとするようにしてもよい。例えば、モデルとなる分布パタンを予め定めておき、そのモデルの分布パタンに最も近似する分布パタンをユニークパタンとするようにしてもよい。例えば、ブロック451の分布パタンがモデルの分布パタンに最も近似しているとすると、ユニークパタン設定部202は、図38のCに示されるように、ブロック451の分布パタンをユニークパタンに採用する。
さらに、例えば、ユニークパタン設定部202は、各分布パタンを用いて所定の方法により導出される新たな分布パタンをユニークパタンとするようにしてもよい。例えば、ユニークパタン設定部202は、図38のDに示されるブロック453のように、ブロック451の分布パタンとブロック452の分布パタンを混合した新たな分布パタンをユニークパタンに採用する。
このように相関度を算出した分布パタンを用いてユニークパタンを設定することにより、復号ポイントクラウドデータの主観画質の低減を抑制することができる。
<Early Termination>
上述したコスト値算出処理は、算出した一部のコスト値に応じて、全てのコスト値を算出する前に終了するようにしてもよい。
例えば、基本コスト関数を用いて算出したコスト値が所定の基準以上である場合、その組の分布パタンの相関性は低い(分布パタンが一致も近似もしない)と判定し、ペナルティ値や補正値の算出を省略するようにしてもよい。また、例えば、算出したペナルティ値が所定の基準以上である場合、その組の分布パタンの相関性は低い(分布パタンが一致も近似もしない)と判定し、補正値の算出を省略するようにしてもよい。
また、例えば、カレントブロックについて、算出したある組についての最終コスト値が所定の基準以下である場合、その組の分布パタンの相関性が十分に高い(分布パタンが一致または近似する組である)と判定し、カレントブロックについては、その他の組のコスト値の算出を省略するようにしてもよい。
<コスト値算出処理の流れ>
図39のフローチャートを参照して、この場合の、図33のステップS403において実行されるコスト算出処理の流れの例を説明する。
コスト算出処理が開始されると、コスト算出部413は、ステップS441において、処理対象の組について、基本コスト関数を用いてコスト値を算出する。
ステップS442において、コスト算出部413は、そのコスト値が予め定められた所定の閾値TH_MAX_0より小さいか否かを判定する。コスト値が予め定められた所定の閾値TH_MAX_0より小さいと判定された場合、処理はステップS443に進む。
ステップS443において、コスト算出部413は、処理対象の組について、補正用指標を用いてペナルティ値を算出する。
ステップS444において、コスト算出部413は、そのペナルティ値が予め定められた所定の閾値TH_MAX_1より小さいか否かを判定する。コスト値が予め定められた所定の閾値TH_MAX_1より小さいと判定された場合、処理はステップS445に進む。
ステップS445において、コスト算出部413は、処理対象の組について、ステップS401(図33)において算出された主観的な特徴量に基づいて、補正値を算出する。
ステップS446において、コスト算出部413は、ステップS441、ステップS443、およびステップS445のそれぞれにおいて算出した値を用いて、処理対象の組に対応する最終的なコスト値(最終コスト値)を算出する。つまり、コスト算出部413は、主観的特徴を考慮して最終コスト値を算出する。したがって、復号ポイントクラウドデータの主観画質の低減を抑制することができる。
ステップS447において、コスト算出部413は、その最終コスト値が予め定められた所定の閾値TH_MINより大きいか否かを判定する。最終コスト値が予め定められた所定の閾値TH_MINより小さいと判定された場合、処理はステップS449に進む。
また、ステップS442において、ステップS441において算出されたコスト値が閾値TH_MAX_0以上であると判定された場合、処理はステップS448に進む。また、ステップS444において、ステップS443において算出されたペナルティ値が閾値TH_MAX_1以上であると判定された場合、処理はステップS448に進む。
ステップS448において、コスト算出部413は、処理対象の組について分布パタンの相関性無し(分布パタンが一致も近似もしない)と判定する。ステップS448の処理が終了すると処理はステップS449に進む。
ステップS449において、コスト算出部413は、カレントブロックに対応する未処理の組が存在するか否かを判定する。未処理の組が存在すると判定された場合、未処理の組が新たな処理対象とされ、処理はステップS441に戻る。つまり、カレントブロックに対応する各組について、ステップS441乃至ステップS449の各処理が実行される。
そして、ステップS449において、カレントブロックに対応する全ての組を処理したと判定された場合、処理はステップS450に進む。
ステップS450において、コスト算出部413は、以上のようにして算出された各組の最終コスト値の中の最小値(コスト最小値)を求め、そのコスト最小値に対応する組を特定する。
ステップS450の処理が終了すると、コスト算出処理が終了し、処理は図33に戻る。
また、ステップS447において、最終コスト値が閾値TH_MIN以下であると判定された場合、処理はステップS451に進む。
ステップS451において、コスト算出部413は、その最終コスト値に対応する組について分布パタンの相関性が十分に高い(分布パタンが一致または近似する)と判定し、(全ての組の最終コスト値を算出する前に、)そのコスト値をコスト最小値とする。ステップS451の処理が終了すると、コスト算出処理が終了し、処理は図33に戻る。
このように算出したコスト値に応じて有益性の低い処理を適宜省略することにより、コスト値算出処理の処理量(処理時間)の増大を抑制することができる。
<相関演算の適用例>
以上においては、信号列生成部114が図9に示される表のid = 1の行に示される方法によりボクセルデータを符号化する場合について説明したが、本技術を適用した相関演算は、相関演算を行う方法であれば、任意の方法でボクセルデータを符号化する場合にも適用することができる。
例えば、本技術を適用した相関演算は、図9に示される表のid = 1乃至6のいずれの行に示される方法によってボクセルデータを符号化する場合にも、上述した例と同様に適用することができる。また、Octree符号化やDAG処理を併用する場合も上述した例と同様に適用することができる。さらに、予測残差を伝送する場合も上述した例と同様に適用することができる。
また、以上においては、ポイントクラウドデータの符号化において、本技術を適用した相関演算を適用するように説明したが、上述した本技術を適用した相関演算は、相関演算を用いる任意の処理に適用することができる。
例えば、ポイントクラウドの位置合わせにおいて行われる相関演算にも適用することができる。ポイントクラウドの位置合わせ(Registration)は、例えば、複数視点から撮影されたポイントクラウド(Point cloud)の合成や、時間方向に連続するポイントクラウドデータの合成等に用いられる。
ポイントクラウドの位置合わせ(Registration)には、それぞれのポイントクラウドの位置情報の誤差が最小となるように、移動量を求める探索アルゴリズムが用いられる。この時に用いる誤差の指標として、本技術を適用した相関演算を適用してもよい。
例えば、図40のAに示されるように、ポイントクラウド471とポイントクラウド472とを動かして両者の位置を図40のBの例のように揃えるように位置合わせを行う場合に、本技術を適用した相関演算を適用して、ウサギの胴体の表面形状が保たれるような指標を用いることで、主観的画質の低減を抑制することができる。
<画像処理装置>
図41は、本技術を適用した情報処理装置の一実施の形態である画像処理装置の主な構成例を示すブロック図である。図41に示される画像処理装置500は、ポイントクラウドデータ(またはボクセルデータ)同士の位置合わせ(Registration)を行う。その際、符号化装置100は、本技術を適用した相関演算を行う。
図41に示されるように、画像処理装置は、位置設定部501、相関演算部502、および判定部503を有する。
位置設定部501は、位置合わせを行う各ポイントクラウドデータの位置を設定する。
相関演算部502は、位置設定部501により設定された位置関係において、位置合わせを行う各ポイントクラウドデータの分布パタンの相関性の強さ(相関度)をコスト値として算出する。
判定部503は、相関演算部502により算出されたコスト値に基づいて、各ポイントクラウドデータが最も近づく位置を判定する。
位置設定部501は、ポイントクラウドデータ(またはボクセルデータ)の位置を更新し、相関演算部502は、再度コスト値を算出する。位置設定部501および相関演算部502は、ポイントクラウドデータを移動させる全ての位置について、以上の処理を繰り返す。そして、判定部503は、各位置のコスト値から最小コスト値(つまり、ポイントクラウド同士が最も近づく位置)を求める。
このような画像処理装置500において、相関演算部502が、上述したような本技術を適用した相関演算を行って、ボクセルデータの値の分布パタンの主観的特徴に基づいて、比較対象のボクセルデータ間における前記分布パタンの相関度を算出することで、主観画質の低減を抑制しながら位置合わせを行うことができる。
<位置合わせ処理の流れ>
このような画像処理装置500により実行される位置合わせ処理の流れの例を図42のフローチャートを参照して説明する。
位置合わせ処理が開始されると、位置設定部501は、ステップS501において、位置合わせを行う各ポイントクラウドの位置を設定する。
ステップS502において、相関演算部502は、比較対象のポイントクラウド同士の誤差(位置ずれの大きさ)について、図32乃至図39を参照して説明した場合と同様にして、コスト値を算出する。
ステップS503において、位置設定部501は、ポイントクラウドを移動可能な全ての位置においてコスト値を算出したか否かを判定する。未処理の位置が存在すると判定された場合、処理はステップS501に戻る。つまり、ポイントクラウドを移動可能な全ての位置について、ステップS501乃至ステップS503の各処理が実行される。
そしてステップS503において、全ての位置においてコスト値を算出したと判定された場合、処理はステップS504に進む。
ステップS504において、判定部503は、相関演算部502により算出されたコスト値の中から、最小コスト値を求め、ポイントクラウド同士が最も近づく位置を特定する。
ステップS504の処理が終了すると位置合わせ処理が終了する。
以上のように、本技術を適用した相関演算を適用することにより、ボクセルデータの値の分布パタンの主観的特徴を考慮してコスト値を算出することができるので、主観画質の低減を抑制しながら位置合わせを行うことができる。
<5.その他>
<ソフトウエア>
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。また、一部の処理をハードウエアにより実行させ、他の処理をソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここでコンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等が含まれる。
図43は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
図43に示されるコンピュータ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が各種の処理を実行する上において必要なデータなども適宜記憶される。
コンピュータ(CPU901)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア921に記録して適用することができる。その場合、プログラムは、リムーバブルメディア921をドライブ915に装着することにより、入出力インタフェース910を介して、記憶部913にインストールすることができる。また、このプログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することもできる。その場合、プログラムは、通信部914で受信し、記憶部913にインストールすることができる。その他、このプログラムは、ROM902や記憶部913に、あらかじめインストールしておくこともできる。
<補足>
本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
例えば、本技術は、装置またはシステムを構成するあらゆる構成、例えば、システムLSI(Large Scale Integration)等としてのプロセッサ、複数のプロセッサ等を用いるモジュール、複数のモジュール等を用いるユニット、ユニットにさらにその他の機能を付加したセット等(すなわち、装置の一部の構成)として実施することもできる。
なお、本明細書において、システムとは、複数の構成要素(装置、モジュール(部品)等)の集合を意味し、全ての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、および、1つの筐体の中に複数のモジュールが収納されている1つの装置は、いずれも、システムである。
また、上述した処理部は、その処理部について説明した機能を有するようにすれば、どのような構成により実現するようにしてもよい。例えば、処理部が、任意の回路、LSI、システムLSI、プロセッサ、モジュール、ユニット、セット、デバイス、装置、またはシステム等により構成されるようにしてもよい。また、それらを複数組み合わせるようにしてもよい。例えば、複数の回路、複数のプロセッサ等のように同じ種類の構成を組み合わせるようにしてもよいし、回路とLSI等のように異なる種類の構成を組み合わせるようにしてもよい。
また、例えば、1つの装置(または処理部)として説明した構成を分割し、複数の装置(または処理部)として構成するようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成をまとめて1つの装置(または処理部)として構成されるようにしてもよい。また、各装置(または各処理部)の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部を他の装置(または他の処理部)の構成に含めるようにしてもよい。
また、例えば、本技術は、1つの機能を、ネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
また、例えば、上述したプログラムは、任意の装置において実行することができる。その場合、その装置が、必要な機能(機能ブロック等)を有し、必要な情報を得ることができるようにすればよい。
また、例えば、上述のフローチャートで説明した各ステップは、1つの装置で実行する他、複数の装置で分担して実行することができる。さらに、1つのステップに複数の処理が含まれる場合には、その1つのステップに含まれる複数の処理は、1つの装置で実行する他、複数の装置で分担して実行することができる。換言するに、1つのステップに含まれる複数の処理を、複数のステップの処理として実行することもできる。逆に、複数のステップとして説明した処理を1つのステップとしてまとめて実行することもできる。
コンピュータが実行するプログラムは、プログラムを記述するステップの処理が、本明細書で説明する順序に沿って時系列に実行されるようにしても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで個別に実行されるようにしても良い。つまり、矛盾が生じない限り、各ステップの処理が上述した順序と異なる順序で実行されるようにしてもよい。さらに、このプログラムを記述するステップの処理が、他のプログラムの処理と並列に実行されるようにしても良いし、他のプログラムの処理と組み合わせて実行されるようにしても良い。
本明細書において複数説明した本技術は、矛盾が生じない限り、それぞれ独立に単体で実施することができる。もちろん、任意の複数の本技術を併用して実施することもできる。例えば、いずれかの実施の形態において説明した本技術の一部または全部を、他の実施の形態において説明した本技術の一部または全部と組み合わせて実施することもできる。また、上述した任意の本技術の一部または全部を、上述していない他の技術と併用して実施することもできる。
なお、本技術は以下のような構成も取ることができる。
(1) ポイントクラウドデータを量子化したボクセルデータを、前記ボクセルデータの値の分布パタンの相関を利用して符号化した相関情報を生成する相関情報生成部と、
前記相関情報生成部により生成された前記相関情報を符号化し、前記相関情報を含むビットストリームを生成する符号化部と
を備える情報処理装置。
(2) 前記相関情報生成部は、前記ボクセルデータが表す空間の部分領域であるブロック毎に、前記ボクセルデータを符号化して前記相関情報を生成する
(1)に記載の情報処理装置。
(3) 前記相関情報生成部は、
処理対象のブロックであるカレントブロックのボクセルデータを、
ボクセルデータの値の分布パタンであって、前記ポイントクラウドデータを量子化したボクセルデータを用いて生成されたユニークパタンの内の、
前記カレントブロックのボクセルデータの値の分布パタンに一致または近似するユニークパタン
に割り当てられたインデックスに変換し、
前記インデックスを含む前記相関情報を生成する
(2)に記載の情報処理装置。
(4) 前記相関情報生成部は、
ユニークパタンとインデックスとの対応関係を示す情報を保持し、
前記情報に基づいて、前記カレントブロックのボクセルデータの値の分布パタンに一致または近似するユニークパタンに割り当てられたインデックスを特定し、
前記カレントブロックのボクセルデータを、特定した前記インデックスに変換する
(3)に記載の情報処理装置。
(5) 前記符号化部は、前記相関情報生成部が保持する前記情報を符号化し、前記ビットストリームに含める
(4)に記載の情報処理装置。
(6) 前記ポイントクラウドデータを量子化したボクセルデータを用いて生成されたユニークパタンにインデックスを割り当てるインデックス割り当て部をさらに備え、
前記相関情報生成部は、前記インデックス割り当て部が割り当てたユニークパタンとインデックスとの対応関係を示す情報を保持するように構成される
(4)または(5)に記載の情報処理装置。
(7) ブロック間のボクセルデータの値の分布パタンの相関の強さを利用して前記分布パタンが一致または近似するかによってブロックを分類し、その分類結果に基づいてユニークパタンを設定するユニークパタン設定部をさらに備え、
前記インデックス割り当て部は、前記ユニークパタン設定部により設定されたユニークパタンにインデックスを割り当てるように構成される
(6)に記載の情報処理装置。
(8) ブロック間のボクセルデータの値の分布パタンの相関の強さを算出する相関演算部をさらに備え、
前記ユニークパタン設定部は、前記相関演算部により算出された前記ブロック間の前記分布パタンの相関の強さを利用してブロックを分類し、その分類結果に基づいて前記ユニークパタンを設定するように構成され、
前記相関情報生成部は、その分類結果に基づいて、前記カレントブロックのボクセルデータの値の分布パタンに一致または近似するユニークパタンを特定するように構成される
(7)に記載の情報処理装置。
(9) 前記相関情報生成部は、
処理対象のブロックであるカレントブロックのボクセルデータを、
前記カレントブロックの周辺に位置する周辺ブロックの内の、
ボクセルデータの値の分布パタンが前記カレントブロックと一致または近似する周辺ブロック
の位置を示す情報である参照空間座標情報に変換し、
前記参照空間座標情報を含む前記相関情報を生成する
(2)乃至(8)のいずれかに記載の情報処理装置。
(10) 前記参照空間座標情報は、前記周辺ブロックの絶対位置を示す情報である参照先空間座標情報を含む
(9)に記載の情報処理装置。
(11) 前記参照空間座標情報は、前記周辺ブロックの前記カレントブロックに対する相対位置を示す情報である参照ベクトルを含む
(9)に記載の情報処理装置。
(12) ブロック間のボクセルデータの値の分布パタンの相関の強さに基づいて前記分布パタンが前記カレントブロックと一致または近似する前記周辺ブロックを特定し、特定した前記周辺ブロックに対応する前記参照空間座標情報を設定する参照空間座標情報設定部をさらに備え、
前記相関情報生成部は、前記カレントブロックのボクセルデータを、前記参照空間座標情報設定部により設定された前記参照空間座標情報に変換し、前記相関情報を生成するように構成される
(9)乃至(11)のいずれかに記載の情報処理装置。
(13) ブロック間のボクセルデータの値の分布パタンの相関の強さを算出する相関演算部をさらに備え、
前記参照空間座標情報設定部は、前記相関演算部により算出された前記ブロック間の前記分布パタンの相関の強さに基づいて前記参照空間座標情報を設定するように構成される
(12)に記載の情報処理装置。
(14) 前記相関情報生成部は、
処理対象のブロックであるカレントブロックのボクセルデータを、
予め用意されたボクセルデータの値の分布パタンであるユニークパタンの内の、
前記カレントブロックのボクセルデータの値の分布パタンに一致または近似するユニークパタン
に割り当てられたインデックスに変換し、
前記インデックスを含む前記相関情報を生成する
(2)乃至(13)のいずれかに記載の情報処理装置。
(15) 前記相関情報生成部は、
ユニークパタンとインデックスとの対応関係を示す情報を保持し、
前記情報に基づいて、前記カレントブロックのボクセルデータの値の分布パタンに一致または近似するユニークパタンに割り当てられたインデックスを特定し、
前記カレントブロックのボクセルデータを、特定した前記インデックスに変換する
(14)に記載の情報処理装置。
(16) 前記カレントブロックのボクセルデータの値の分布パタンとユニークパタンとの相関の強さを算出する相関演算部をさらに備え、
前記相関情報生成部は、
前記相関演算部により算出された前記カレントブロックの前記分布パタンと前記ユニークパタンとの相関の強さに基づいて、前記カレントブロックのボクセルデータの値の分布パタンに一致または近似するユニークパタンを特定するように構成される
(15)に記載の情報処理装置。
(17) 前記相関情報生成部は、
処理対象のブロックであるカレントブロックのボクセルデータの値の分布パタンとの相関の強さを求める際の、参照先に対応するフレームを示す時間情報
を含む前記相関情報を生成する
(2)乃至(16)のいずれかに記載の情報処理装置。
(18) 前記相関情報生成部は、
処理対象のブロックであるカレントブロックのボクセルデータの値の分布パタンとの相関の強さを求める際の、参照先のボクセルデータの値の分布パタンの回転に関する情報、
および、前記参照先の前記分布パタンの反転に関する情報
の内の少なくとも一方を含む前記相関情報を生成する
(2)乃至(17)のいずれかに記載の情報処理装置。
(19) 前記相関情報生成部は、処理対象のブロックであるカレントブロックの周辺に位置する周辺ブロックの前記相関情報を用いて、前記カレントブロックの前記相関情報を生成する
(2)乃至(18)のいずれかに記載の情報処理装置。
(20) ポイントクラウドデータを量子化したボクセルデータを、Octree符号化して階層化するOctree符号化部をさらに備え、
前記相関情報生成部は、前記Octree符号化部により階層化されたボクセルデータの最下位レベルのノードについて前記相関情報を生成するように構成され、
前記符号化部は、前記Octree符号化部により階層化されたボクセルデータの各ノードと、前記相関情報生成部により生成された前記相関情報とを含む信号列を符号化するように構成される
(2)乃至(19)のいずれかに記載の情報処理装置。
(21) 前記Octree符号化部により階層化されたボクセルデータの最下位レベルの1つ上のレベルから所定のレベルまでのノードを、自己相関を用いて符号化する有効指向性グラフ処理を行う有効指向性グラフ処理部をさらに備え、
前記符号化部は、前記有効指向性グラフ処理されたノードをさらに含む信号列を符号化するように構成される
(20)に記載の情報処理装置。
(22) 処理対象のブロックであるカレントブロックのボクセルデータの値の分布パタンと、前記カレントブロックの前記相関情報に対応するボクセルデータの値の分布パタンとの差分である予測残差を符号化する予測残差符号化部をさらに備え、
前記符号化部は、前記相関情報生成部により生成された前記相関情報と、前記予測残差符号化部により前記予測残差が符号化されて得られる係数データとを含む信号列を符号化するように構成される
(2)乃至(21)のいずれかに記載の情報処理装置。
(23) 前記符号化部は、前記相関情報生成部により前記相関情報が生成されたブロックの属性情報の符号化を省略する
(2)乃至(22)のいずれかに記載の情報処理装置。
(24) 前記符号化部は、前記相関情報生成部により前記相関情報が生成されたブロックの属性情報を、前記相関情報に対応する参照先の属性情報と同一の符号化方法で符号化する
(2)乃至(23)のいずれかに記載の情報処理装置。
(25) 前記符号化部は、前記相関情報生成部により前記相関情報が生成されたブロックの属性情報を、前記相関情報に対応する参照先の属性情報と同一のフィルタリング方法でフィルタリングする
(2)乃至(24)のいずれかに記載の情報処理装置。
(26) ポイントクラウドデータを量子化したボクセルデータを、前記ボクセルデータの値の分布パタンの相関を利用して符号化した相関情報を生成し、
生成された前記相関情報を符号化し、前記相関情報を含むビットストリームを生成する
情報処理方法。
(31) ポイントクラウドデータを量子化したボクセルデータを、前記ボクセルデータの値の分布パタンの相関を利用して符号化した相関情報
を含むビットストリームを復号し、前記相関情報を抽出する復号部と、
前記復号部により前記ビットストリームから抽出された前記相関情報に対応するボクセルデータを生成するボクセルデータ生成部と
を備える情報処理装置。
(32) 前記復号部は、前記ボクセルデータが表す空間の部分領域であるブロック毎に設定された前記相関情報を抽出し、
前記ボクセルデータ生成部は、各ブロックの前記相関情報に基づいて、各ブロックのボクセルデータを生成する
(31)に記載の情報処理装置。
(33) 前記相関情報は、ボクセルデータの値の分布パタンであって、前記ポイントクラウドデータを量子化したボクセルデータを用いて生成されたユニークパタンの内の、処理対象のブロックであるカレントブロックのボクセルデータの値の分布パタンに一致または近似するユニークパタンに割り当てられたインデックスを含み、
前記ビットストリームは、さらに、ユニークパタンとインデックスとの対応関係を示す情報を含み、
前記復号部は、前記ビットストリームを復号し、前記相関情報および前記ユニークパタンとインデックスとの対応関係を示す情報を抽出するように構成され、
前記ボクセルデータ生成部は、前記復号部により前記ビットストリームより抽出された前記カレントブロックの前記相関情報のインデックスに対応するユニークパタンを、前記ユニークパタンとインデックスとの対応関係を示す情報を用いて特定し、特定した前記ユニークパタンを用いて、前記カレントブロックのボクセルデータを生成するように構成される
(32)に記載の情報処理装置。
(34) 前記相関情報は、処理対象のブロックであるカレントブロックの周辺に位置する周辺ブロックの内の、ボクセルデータの値の分布パタンが前記カレントブロックと一致または近似する周辺ブロックの位置を示す情報である参照空間座標情報を含み、
前記ボクセルデータ生成部は、前記復号部により前記ビットストリームより抽出された前記カレントブロックの前記相関情報に含まれる前記参照空間座標情報に対応する位置のブロックのボクセルデータを用いて、前記カレントブロックのボクセルデータを生成するように構成される
(32)または(33)に記載の情報処理装置。
(35) 前記相関情報は、予め用意されたボクセルデータの値の分布パタンであるユニークパタンの内の、処理対象のブロックであるカレントブロックのボクセルデータの値の分布パタンに一致または近似するユニークパタンに割り当てられたインデックスを含み、
前記ボクセルデータ生成部は、前記復号部により前記ビットストリームより抽出された前記カレントブロックの前記相関情報に含まれるインデックスに対応するユニークパタンを特定し、特定した前記ユニークパタンを用いて、前記カレントブロックのボクセルデータを生成するように構成される
(32)乃至(34)のいずれかに記載の情報処理装置。
(36) 前記相関情報は、処理対象のブロックであるカレントブロックのボクセルデータの値の分布パタンとの相関の強さを求める際の、参照先に対応するフレームを示す時間情報を含み、
前記ボクセルデータ生成部は、前記復号部により前記ビットストリームより抽出された前記カレントブロックの前記相関情報に含まれる前記時間情報に基づいて前記参照先に対応するフレームを特定するように構成される
(32)乃至(35)のいずれかに記載の情報処理装置。
(37) 前記相関情報は、処理対象のブロックであるカレントブロックのボクセルデータの値の分布パタンとの相関の強さを求める際の、参照先のボクセルデータの値の分布パタンの回転に関する情報、および、前記参照先の前記分布パタンの反転に関する情報、の内の少なくともいずれか一方を含み、
前記ボクセルデータ生成部は、前記復号部により前記ビットストリームより抽出された前記カレントブロックの前記相関情報に含まれる前記回転に関する情報、および、前記反転に関する情報の内の少なくともいずれか一方に基づいて、参照先のボクセルデータの値の分布パタンに対して回転若しくは反転、またはその両方を行うように構成される
(32)乃至(36)のいずれかに記載の情報処理装置。
(38) 前記ボクセルデータ生成部は、処理対象のブロックであるカレントブロックの周辺に位置する周辺ブロックの前記相関情報を用いて、前記カレントブロックの前記相関情報を生成し、生成した前記相関情報を用いて、前記カレントブロックのボクセルデータを生成する
(32)乃至(37)のいずれかに記載の情報処理装置。
(39) 前記ビットストリームは、ポイントクラウドデータを量子化したボクセルデータがOctree符号化された、階層化されたボクセルデータの各ノードの係数データをさらに含み、
前記復号部は、前記ビットストリームを復号し、前記階層化されたボクセルデータの各ノードの係数データをさらに抽出するように構成され、
前記復号部により前記ビットストリームより抽出された前記階層化されたボクセルデータの各ノードをOctree復号するOctree復号部をさらに備える
(32)乃至(38)のいずれかに記載の情報処理装置。
(40) 前記ビットストリームは、前記階層化されたボクセルデータの最下位レベルの1つ上のレベルから所定のレベルまでのノードに対して、自己相関を用いて符号化する有効指向性グラフ処理を行うことにより得られる有効指向性グラフデータをさらに含み、
前記復号部は、前記ビットストリームを復号し、前記有効指向性グラフデータをさらに抽出するように構成され、
前記復号部により前記ビットストリームより抽出された前記有効指向性グラフデータに対して、自己相関を用いて復号する有効指向性グラフ逆処理を行う有効指向性グラフ逆処理部をさらに備える
(39)に記載の情報処理装置。
(41) 前記ビットストリームは、ポイントクラウドデータを量子化したボクセルデータの値の分布パタンと前記相関情報に対応するボクセルデータの値の分布パタンとの差分である予測残差が符号化された係数データをさらに含み、
前記復号部は、前記ビットストリームを復号し、前記係数データをさらに抽出するように構成され、
前記復号部により前記ビットストリームより抽出された前記係数データを復号する予測残差復号部をさらに備え、
前記ボクセルデータ生成部は、前記復号部により前記ビットストリームより抽出された前記相関情報に対応するボクセルデータの値の分布パタンと、前記予測残差復号部により前記係数データが復号されて復元された前記予測残差とを用いて、ボクセルデータを生成する
(32)乃至(40)のいずれかに記載の情報処理装置。
(42) 前記ボクセルデータ生成部は、前記復号部により前記ビットストリームより抽出された前記相関情報に対応する参照先の属性情報を用いて、処理対象のブロックであるカレントブロックの属性情報を復元する
(32)乃至(41)のいずれかに記載の情報処理装置。
(43) 前記ボクセルデータ生成部は、前記復号部により前記ビットストリームより抽出された前記相関情報に対応する参照先の属性情報の符号化方法を用いて、処理対象のブロックであるカレントブロックの属性情報を復号する
(32)乃至(42)のいずれかに記載の情報処理装置。
(44) 前記ボクセルデータ生成部は、前記復号部により前記ビットストリームより抽出された前記相関情報に対応する参照先の属性情報のフィルタリング方法を用いて、処理対象のブロックであるカレントブロックの属性情報をフィルタリングする
(32)乃至(43)のいずれかに記載の情報処理装置。
(45) ポイントクラウドデータを量子化したボクセルデータを、前記ボクセルデータの値の分布パタンの相関を利用して符号化した相関情報
を含むビットストリームを復号し、前記相関情報を抽出し、
前記ビットストリームから抽出された前記相関情報に対応するボクセルデータを生成する
情報処理方法。
(101) ポイントクラウドデータを量子化したボクセルデータの比較において、ボクセルデータの値の分布パタンの主観的特徴に基づいて、比較対象のボクセルデータ間における前記分布パタンの相関度を算出する相関度算出部
を備える情報処理装置。
(102) 前記相関度算出部は、前記ボクセルデータが表す空間の部分領域であるブロック毎に前記相関度を算出する
(101)に記載の情報処理装置。
(103) 前記相関度算出部は、
比較対象の全てのボクセルデータが所定の形状の前記分布パタンを有する場合、前記相関度をより高く算出し、
前記比較対象の少なくともいずれかのボクセルデータが前記所定の形状の前記分布パタンを有しない場合、前記相関度をより低く算出する
(102)に記載の情報処理装置。
(104) 前記所定の形状は、線または面である
(103)に記載の情報処理装置。
(105) ポイントクラウドで描画される3次元構造の特徴量を算出する特徴量算出部をさらに備え、
前記相関度算出部は、前記特徴量算出部により算出された前記特徴量に基づいて、前記相関度を算出する
(102)乃至(104)のいずれかに記載の情報処理装置。
(106) 前記相関度算出部は、前記特徴量算出部により算出された前記特徴量に基づいて、テクスチャが所定の基準より細かいブロックにおいて、前記相関度をより低く算出する
(105)に記載の情報処理装置。
(107) 前記相関度算出部は、前記特徴量算出部により算出された前記特徴量に基づいて、周囲のボクセルに対してピークとなる色成分を有するボクセルを含むブロックにおいて、前記相関度をより低く算出する
(105)または(106)に記載の情報処理装置。
(108) 前記相関度算出部は、前記特徴量算出部により算出された前記特徴量に基づいて、注目度のより高い領域のブロックにおいて、前記相関度をより低く算出する
(105)乃至(107)のいずれかに記載の情報処理装置。
(109) 前記相関度算出部は、前記特徴量算出部により算出された前記特徴量に基づいて、ポイントクラウドで描画される3次元構造における人の顔部分に相当するブロックにおいて、前記相関度をより低く算出する
(105)乃至(108)のいずれかに記載の情報処理装置。
(110) 前記相関度算出部は、前記特徴量算出部により算出された前記特徴量に基づいて、ポイントクラウドで描画される3次元構造におけるエッジ部分に相当するブロックにおいて、前記相関度をより低く算出する
(105)乃至(109)のいずれかに記載の情報処理装置。
(111) 前記相関度算出部は、前記特徴量算出部により算出された前記特徴量に基づいて、ポイントクラウドで描画される3次元構造における面を構成する4点の少なくともいずれか1つを含むブロックにおいて、前記相関度をより低く算出する
(105)乃至(110)のいずれかに記載の情報処理装置。
(112) 前記相関度算出部は、コスト関数を用いて、比較対象のボクセルデータ間の相関についてのコスト値を算出し、算出した前記コスト値を、前記分布パタンの主観的特徴に基づいて補正することにより、比較対象のボクセルデータ間の相関度を算出する
(102)乃至(111)のいずれかに記載の情報処理装置。
(113) 前記コスト関数は、Hausdorff Distanceである
(112)に記載の情報処理装置。
(114) 前記コスト関数は、PSNR Point2Pointである
(112)または(113)に記載の情報処理装置。
(115) 前記コスト関数は、PSNR Point2Surfaceである
(112)乃至(114)のいずれかに記載の情報処理装置。
(116) 前記コスト関数は、Hamming Distanceである
(112)乃至(115)のいずれかに記載の情報処理装置。
(117) 処理対象のブロックであるカレントブロックと比較するボクセルデータを設定する設定部をさらに備え、
前記相関度算出部は、前記カレントブロックのボクセルデータと、前記設定部が設定した全てのボクセルデータとの間の相関度を算出する
(102)乃至(116)のいずれかに記載の情報処理装置。
(118) 前記設定部は、所定の空間的範囲内において、前記カレントブロックと比較するボクセルデータを設定する
(117)に記載の情報処理装置。
(119) 前記設定部は、階層化されたボクセルデータの処理対象の階層よりも上位の階層において、前記カレントブロックと比較するボクセルデータを設定する
(117)または(118)に記載の情報処理装置。
(120) 前記設定部は、予め定められた固定の代表的なパタンの前記分布パタンを有するボクセルデータを、前記カレントブロックと比較するボクセルデータとして設定する
(117)乃至(119)のいずれかに記載の情報処理装置。
(121) 前記設定部は、更新可能な代表的なパタンであるボクセルデータを、前記カレントブロックと比較するボクセルデータとして設定する
(117)乃至(120)のいずれかに記載の情報処理装置。
(122) 前記相関度算出部は、前記設定部が設定した各ボクセルデータについて複数の方法で前記相関度を順次算出し、いずれかの方法で算出した前記相関度が所定の基準よりも低いと判定された場合、比較した前記ボクセルデータの前記分布パタンは前記カレントブロックの前記分布パタンと一致および近似しないと判定し、前記ボクセルデータとの相関度の算出を中止する
(117)乃至(121)のいずれかに記載の情報処理装置。
(123) 前記相関度算出部は、前記設定部が設定した各ボクセルデータについて複数の方法で前記相関度を順次算出し、いずれかの方法で算出した前記相関度が所定の基準よりも高いと判定された場合、比較した前記ボクセルデータの前記分布パタンが前記カレントブロックの分布パタンと一致または最も近似すると判定し、前記カレントブロックについての相関度の算出を中止する
(117)乃至(122)のいずれかに記載の情報処理装置。
(124) 前記相関度算出部により算出された前記相関度に基づいて、前記比較対象のボクセルデータの前記分布パタン同士が一致または近似するかを判定し、一致または近似すると判定された場合、前記比較対象のボクセルデータのそれぞれの前記分布パタンと一致または近似する前記分布パタンであるユニークパタンを設定するユニークパタン設定部をさらに備える
(102)乃至(123)のいずれかに記載の情報処理装置。
(125) 前記ユニークパタン設定部は、前記比較対象のボクセルデータの内、存在頻度が最も高いボクセルデータの前記分布パタンを前記ユニークパタンとして設定する
(124)に記載の情報処理装置。
(126) 前記ユニークパタン設定部は、前記比較対象のボクセルデータの内、予め定められた所定の分布パタンに最も近似するボクセルデータの前記分布パタンを前記ユニークパタンとして設定する
(124)または(125)に記載の情報処理装置。
(127) 前記ユニークパタン設定部は、各比較対象のボクセルデータの前記分布パタンを用いて所定の方法により導出される新たな前記分布パタンを前記ユニークパタンとして設定する
(124)乃至(126)のいずれかに記載の情報処理装置。
(128) 前記相関度算出部により算出された前記相関度に基づいて前記比較対象のボクセルデータの位置を、互いに近づけるように設定する位置設定部をさらに備える
(102)乃至(127)のいずれかに記載の情報処理装置。
(129) ポイントクラウドデータを量子化したボクセルデータの比較において、ボクセルデータの値の分布パタンの主観的特徴に基づいて、比較対象のボクセルデータ間における前記分布パタンの相関度を算出する
情報処理方法。