本開示の一態様に係る三次元データ符号化方法は、複数の三次元点が含まれる対象空間に含まれる複数のサブ空間を符号化することでビットストリームを生成し、前記ビットストリームの生成では、前記ビットストリームに含まれる、前記複数のサブ空間に共通の第1ヘッダに、前記対象空間の座標である第1座標を示す第1情報を格納し、前記ビットストリームに含まれる、サブ空間単位の第2ヘッダに、対応する前記サブ空間の座標である第2座標と前記第1座標との差分を示す第2情報を格納する。
これによれば、第2情報として第1座標と第2座標との差分を示す情報を格納されるので、ビットストリームの符号量を低減できる。
例えば、前記複数のサブ空間に含まれる第1サブ空間と第2サブ空間との一部は重複してもよい。
例えば、前記ビットストリームの生成では、前記第2ヘッダに、対応する前記サブ空間の大きさを示す第3情報を格納してもよい。
例えば、前記ビットストリームの生成では、前記第1ヘッダに、前記複数のサブ空間の大きさを示す第3情報を格納してもよい。
例えば、前記ビットストリームの生成では、前記第1ヘッダに、前記複数のサブ空間の数を示す第4情報を格納してもよい。
例えば、前記ビットストリームの生成では、前記複数のサブ空間の複数の前記第2ヘッダを含むストリームを、前記複数のサブ空間の符号化データとは独立したストリームとして生成してもよい。
これによれば、例えば、三次元データ復号装置は、第2ヘッダを含むストリームを参照することで、必要なサブ空間を判定し、必要なサブ空間の符号化データを選択的に取得することができる。
本開示の一態様に係る三次元データ復号方法は、複数の三次元点が含まれる対象空間に含まれる複数のサブ空間が符号化されることで得らえたビットストリームを復号し、前記ビットストリームの復号では、前記ビットストリームに含まれる、前記複数のサブ空間に共通の第1ヘッダから、前記対象空間の座標である第1座標を示す第1情報を復号し、前記ビットストリームに含まれる、サブ空間単位の第2ヘッダから、対応する前記サブ空間の座標である第2座標と前記第1座標との差分を示す第2情報を復号する。
これによれば、第2情報として第1座標と第2座標との差分を示す情報を格納されるので、ビットストリームの符号量を低減できる。
例えば、前記複数のサブ空間に含まれる第1サブ空間と第2サブ空間との一部は重複してもよい。
例えば、前記ビットストリームの復号では、前記第2ヘッダから、対応する前記サブ空間の大きさを示す第3情報を復号してもよい。
例えば、前記ビットストリームの復号では、前記第1ヘッダから、前記複数のサブ空間の大きさを示す第3情報を復号してもよい。
例えば、前記ビットストリームの復号では、前記第1ヘッダから、前記複数のサブ空間の数を示す第4情報を復号してもよい。
例えば、前記複数のサブ空間の複数の前記第2ヘッダを含むストリームは、前記複数のサブ空間の復号データとは独立したストリームとして生成されていてもよい。
これによれば、例えば、三次元データ復号装置は、第2ヘッダを含むストリームを参照することで、必要なサブ空間を判定し、必要なサブ空間の符号化データを選択的に取得することができる。
また、本開示の一態様に係る三次元データ符号化装置は、プロセッサと、メモリとを備え、前記プロセッサは、前記メモリを用いて、複数の三次元点が含まれる対象空間に含まれる複数のサブ空間を符号化することでビットストリームを生成し、前記ビットストリームの生成では、前記ビットストリームに含まれる、前記複数のサブ空間に共通の第1ヘッダに、前記対象空間の座標である第1座標を示す第1情報を格納し、前記ビットストリームに含まれる、サブ空間単位の第2ヘッダに、対応する前記サブ空間の座標である第2座標と前記第1座標との差分を示す第2情報を格納する。
これによれば、第2情報として第1座標と第2座標との差分を示す情報を格納されるので、ビットストリームの符号量を低減できる。
また、本開示の一態様に係る三次元データ復号装置は、プロセッサと、メモリとを備え、前記プロセッサは、前記メモリを用いて、複数の三次元点が含まれる対象空間に含まれる複数のサブ空間が符号化されることで得らえたビットストリームを復号し、前記ビットストリームの復号では、前記ビットストリームに含まれる、前記複数のサブ空間に共通の第1ヘッダから、前記対象空間の座標である第1座標を示す第1情報を復号し、前記ビットストリームに含まれる、サブ空間単位の第2ヘッダから、対応する前記サブ空間の座標である第2座標と前記第1座標との差分を示す第2情報を復号する。
これによれば、第2情報として第1座標と第2座標との差分を示す情報を格納されるので、ビットストリームの符号量を低減できる。
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なCD−ROMなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラム及び記録媒体の任意な組み合わせで実現されてもよい。
以下、実施の形態について、図面を参照しながら具体的に説明する。なお、以下で説明する実施の形態は、いずれも本開示の一具体例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本開示を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
(実施の形態1)
まず、本実施の形態に係る符号化三次元データ(以下、符号化データとも記す)のデータ構造について説明する。図1は、本実施の形態に係る符号化三次元データの構成を示す図である。
本実施の形態では、三次元空間は、動画像の符号化におけるピクチャに相当するスペース(SPC)に分割され、スペースを単位として三次元データが符号化される。スペースは、さらに、動画像符号化におけるマクロブロックなどに相当するボリューム(VLM)に分割され、VLMを単位として予測及び変換が行われる。ボリュームは、位置座標が対応付けられる最小単位である複数のボクセル(VXL)を含む。なお、予測とは、二次元画像で行われる予測と同様に、他の処理単位を参照し、処理対象の処理単位と類似する予測三次元データを生成し、当該予測三次元データと処理対象の処理単位との差分を符号化することである。また、この予測は、同一時刻の他の予測単位を参照する空間予測のみならず、異なる時刻の予測単位を参照する時間予測を含む。
例えば、三次元データ符号化装置(以下、符号化装置とも記す)は、ポイントクラウドなどの点群データにより表現される三次元空間を符号化する際には、ボクセルのサイズに応じて、点群の各点、又は、ボクセル内に含まれる複数点をまとめて符号化する。ボクセルを細分化すれば点群の三次元形状を高精度に表現でき、ボクセルのサイズを大きくすれば点群の三次元形状をおおまかに表現できる。
なお、以下では、三次元データがポイントクラウドである場合を例に説明を行うが、三次元データはポイントクラウドに限定されず、任意の形式の三次元データでよい。
また、階層構造のボクセルを用いてもよい。この場合、n次の階層では、n−1次以下の階層(n次の階層の下層)にサンプル点が存在するかどうかを順に示してもよい。例えば、n次の階層のみを復号する際において、n−1次以下の階層にサンプル点が存在する場合は、n次階層のボクセルの中心にサンプル点が存在するとみなして復号できる。
また、符号化装置は、点群データを、距離センサ、ステレオカメラ、単眼カメラ、ジャイロ、又は慣性センサなどを用いて取得する。
スペースは、動画像の符号化と同様に、単独で復号可能なイントラ・スペース(I−SPC)、単方向の参照のみ可能なプレディクティブ・スペース(P−SPC)、及び、双方向の参照が可能なバイディレクショナル・スペース(B−SPC)を含む少なくとも3つの予測構造のいずれかに分類される。また、スペースは復号時刻と表示時刻との2種類の時刻情報を有する。
また、図1に示すように、複数のスペースを含む処理単位として、ランダムアクセス単位であるGOS(Group Of Space)が存在する。さらに、複数のGOSを含む処理単位としてワールド(WLD)が存在する。
ワールドが占める空間領域は、GPS又は緯度及び経度情報などにより、地球上の絶対位置と対応付けられる。この位置情報はメタ情報として格納される。なお、メタ情報は、符号化データに含まれてもよいし、符号化データとは別に伝送されてもよい。
また、GOS内では、全てのSPCが三次元的に隣接してもよいし、他のSPCと三次元的に隣接しないSPCが存在してもよい。
なお、以下では、GOS、SPC又はVLM等の処理単位に含まれる三次元データに対する、符号化、復号又は参照等の処理を、単に、処理単位を符号化、復号又は参照する等とも記す。また、処理単位に含まれる三次元データは、例えば、三次元座標等の空間位置と、色情報等の特性値との少なくとも一つの組を含む。
次に、GOSにおけるSPCの予測構造について説明する。同一GOS内の複数のSPC、又は、同一SPC内の複数のVLMは、互いに異なる空間を占めるが、同じ時刻情報(復号時刻及び表示時刻)を持つ。
また、GOS内で復号順で先頭となるSPCはI−SPCである。また、GOSにはクローズドGOSとオープンGOSとの2種類が存在する。クローズドGOSは、先頭I−SPCから復号開始する際に、GOS内の全てのSPCを復号できるGOSである。オープンGOSでは、GOS内で先頭I−SPCよりも表示時刻が前となる一部のSPCは異なるGOSを参照しており、当該GOSのみで復号を行うことができない。
なお、地図情報などの符号化データでは、WLDを符号化順とは逆方向から復号することがあり、GOS間に依存性があると逆方向再生が困難である。よって、このような場合には、基本的にはクローズドGOSが用いられる。
また、GOSは、高さ方向にレイヤ構造を有し、下のレイヤのSPCから順に符号化又は復号が行われる。
図2はGOSの最下層レイヤに属するSPC間の予測構造の一例を示す図である。図3はレイヤ間の予測構造の一例を示す図である。
GOS内には1つ以上のI−SPCが存在する。三次元空間内には、ヒト、動物、車、自転車、信号、又はランドマークとなる建物などのオブジェクトが存在するが、特にサイズが小さいオブジェクトはI−SPCとして符号化すると有効である。例えば、三次元データ復号装置(以下、復号装置とも記す)は、GOSを低処理量又は高速に復号する際には、GOS内のI−SPCのみを復号する。
また、符号化装置は、WLD内のオブジェクトの粗密さに応じてI−SPCの符号化間隔又は出現頻度を切替えてもよい。
また、図3に示す構成において、符号化装置又は復号装置は、複数のレイヤを下層(レイヤ1)から順に符号化又は復号する。これにより、例えば自動走行車などにとってより情報量の多い地面付近のデータの優先度を上げることができる。
なお、ドローンなどで用いられる符号化データでは、GOS内において高さ方向で上のレイヤのSPCから順に符号化又は復号してもよい。
また、符号化装置又は復号装置は、復号装置が荒くGOSを把握でき、徐々に解像度を上げるようにできるように、複数のレイヤを符号化又は復号してもよい。例えば、符号化装置又は復号装置は、レイヤ3、8、1、9…の順に符号化又は復号してもよい。
次に、静的オブジェクト及び動的オブジェクトの扱い方について説明する。
三次元空間には、建物又は道路など静的なオブジェクト又はシーン(以降、まとめて静的オブジェクトと呼ぶ)と、車又はヒトなどの動的なオブジェクト(以降、動的オブジェクトと呼ぶ)とが存在する。オブジェクトの検出は、ポイントクラウドのデータ、又は、ステレオカメラなどのカメラ映像などから特徴点を抽出するなどして、別途行われる。ここでは、動的オブジェクトの符号化方法の例について説明する。
第1方法は、静的オブジェクトと動的オブジェクトとを区別せずに符号化する方法である。第2方法は、静的オブジェクトと動的オブジェクトとを識別情報により区別する方法である。
例えば、GOSが識別単位として用いられる。この場合、静的オブジェクトを構成するSPCを含むGOSと、動的オブジェクトを構成するSPCを含むGOSとが、符号化データ内、又は符号化データとは別途格納される識別情報により区別される。
または、SPCが識別単位として用いられてもよい。この場合、静的オブジェクトを構成するVLMを含むSPCと、動的オブジェクトを構成するVLMを含むSPCとが、上記識別情報により区別される。
または、VLM或いはVXLが識別単位として用いられてもよい。この場合、静的オブジェクトを含むVLM又はVXLと、動的オブジェクトを含むVLM又はVXLとが上記識別情報により区別される。
また、符号化装置は、動的オブジェクトを1以上のVLM又はSPCとして符号化し、静的オブジェクトを含むVLM又はSPCと、動的オブジェクトを含むSPCとを、互いに異なるGOSとして符号化してもよい。また、符号化装置は、動的オブジェクトのサイズに応じてGOSのサイズが可変となる場合には、GOSのサイズをメタ情報として別途格納する。
また、符号化装置は、静的オブジェクトと動的オブジェクトとを互いに独立に符号化し、静的オブジェクトから構成されるワールドに対して、動的オブジェクトを重畳してもよい。このとき、動的オブジェクトは1以上のSPCから構成され、各SPCは、当該SPCが重畳される静的オブジェクトを構成する1以上のSPCに対応付けられる。なお、動的オブジェクトをSPCではなく、1以上のVLM又はVXLにより表現してもよい。
また、符号化装置は、静的オブジェクトと動的オブジェクトとを互いに異なるストリームとして符号化してもよい。
また、符号化装置は、動的オブジェクトを構成する1以上のSPCを含むGOSを生成してもよい。さらに、符号化装置は、動的オブジェクトを含むGOS(GOS_M)と、GOS_Mの空間領域に対応する静的オブジェクトのGOSとを同一サイズ(同一の空間領域を占める)に設定してもよい。これにより、GOS単位で重畳処理を行うことができる。
動的オブジェクトを構成するP−SPC又はB−SPCは、符号化済みの異なるGOSに含まれるSPCを参照してもよい。動的オブジェクトの位置が時間的に変化し、同一の動的オブジェクトが異なる時刻のGOSとして符号化されるケースでは、GOSを跨いだ参照が圧縮率の観点から有効となる。
また、符号化データの用途に応じて、上記の第1方法と第2方法とを切替えてもよい。例えば、符号化三次元データを地図として用いる場合は、動的オブジェクトを分離できることが望ましいため、符号化装置は、第2方法を用いる。一方、符号化装置は、コンサート又はスポーツなどのイベントの三次元データを符号化する場合に、動的オブジェクトを分離する必要がなければ、第1方法を用いる。
また、GOS又はSPCの復号時刻と表示時刻とは符号化データ内、又はメタ情報として格納できる。また、静的オブジェクトの時刻情報は全て同一としてもよい。このとき、実際の復号時刻と表示時刻は、復号装置が決定するものとしてもよい。あるいは、復号時刻として、GOS、あるいは、SPC毎に異なる値が付与され、表示時刻として全て同一の値が付与されてもよい。さらに、HEVCのHRD(Hypothetical Reference Decoder)など動画像符号化におけるデコーダモデルのように、デコーダが所定のサイズのバッファを有し、復号時刻に従って所定のビットレートでビットストリームを読み込めば破綻なく復号できることを保証するモデルを導入してもよい。
次に、ワールド内におけるGOSの配置について説明する。ワールドにおける三次元空間の座標は、互いに直交する3本の座標軸(x軸、y軸、z軸)により表現される。GOSの符号化順に所定のルールを設けることで、空間的に隣接するGOSが符号化データ内で連続するように符号化を行える。例えば、図4に示す例では、xz平面内のGOSを連続的に符号化する。あるxz平面内の全てのGOSの符号化終了後にy軸の値を更新する。すなわち、符号化が進むにつれて、ワールドはy軸方向に伸びていく。また、GOSのインデックス番号は符号化順に設定される。
ここで、ワールドの三次元空間は、GPS、或いは緯度及び経度などの地理的な絶対座標と1対1に対応付けておく。或いは、予め設定した基準位置からの相対位置により三次元空間が表現されてもよい。三次元空間のx軸、y軸、z軸の方向は、緯度及び経度などに基づいて決定される方向ベクトルとして表現され、当該方向ベクトルはメタ情報として符号化データと共に格納される。
また、GOSのサイズは固定とし、符号化装置は、当該サイズをメタ情報として格納する。また、GOSのサイズは、例えば、都市部か否か、又は、室内か外かなどに応じて切替えられてもよい。つまり、GOSのサイズは、情報としての価値があるオブジェクトの量又は性質に応じて切替えられてもよい。あるいは、符号化装置は、同一ワールド内において、オブジェクトの密度などに応じて、GOSのサイズ、又は、GOS内のI−SPCの間隔を適応的に切替えてもよい。例えば、符号化装置は、オブジェクトの密度が高いほど、GOSのサイズを小さくし、GOS内のI−SPCの間隔を短くする。
図5の例では、3番目から10番目のGOSの領域では、オブジェクトの密度が高いため、細かい粒度でのランダムアクセスを実現するために、GOSが細分化されている。なお、7番目から10番目のGOSは、それぞれ、3番目から6番目のGOSの裏側に存在する。
次に、本実施の形態に係る三次元データ符号化装置の構成及び動作の流れを説明する。図6は、本実施の形態に係る三次元データ符号化装置100のブロック図である。図7は、三次元データ符号化装置100の動作例を示すフローチャートである。
図6に示す三次元データ符号化装置100は、三次元データ111を符号化することで符号化三次元データ112を生成する。この三次元データ符号化装置100は、取得部101と、符号化領域決定部102と、分割部103と、符号化部104とを備える。
図7に示すように、まず、取得部101は、点群データである三次元データ111を取得する(S101)。
次に、符号化領域決定部102は、取得した点群データに対応する空間領域のうち、符号化対象の領域を決定する(S102)。例えば、符号化領域決定部102は、ユーザ又は車両の位置に応じて、当該位置の周辺の空間領域を符号化対象の領域に決定する。
次に、分割部103は、符号化対象の領域に含まれる点群データを、各処理単位に分割する。ここで処理単位とは、上述したGOS及びSPC等である。また、この符号化対象の領域は、例えば、上述したワールドに対応する。具体的には、分割部103は、予め設定したGOSのサイズ、又は、動的オブジェクトの有無或いはサイズに基づいて、点群データを処理単位に分割する(S103)。また、分割部103は、各GOSにおいて符号化順で先頭となるSPCの開始位置を決定する。
次に、符号化部104は、各GOS内の複数のSPCを順次符号化することで符号化三次元データ112を生成する(S104)。
なお、ここでは、符号化対象の領域をGOS及びSPCに分割した後に、各GOSを符号化する例を示したが、処理の手順は上記に限らない。例えば、一つのGOSの構成を決定した後にそのGOSを符号化し、その後、次のGOSの構成を決定する等の手順を用いてもよい。
このように、三次元データ符号化装置100は、三次元データ111を符号化することで符号化三次元データ112を生成する。具体的には、三次元データ符号化装置100は、三次元データを、ランダムアクセス単位であって、各々が三次元座標に対応付けられている第1処理単位(GOS)に分割し、第1処理単位(GOS)を複数の第2処理単位(SPC)に分割し、第2処理単位(SPC)を複数の第3処理単位(VLM)に分割する。また、第3処理単位(VLM)は、位置情報が対応付けられる最小単位である1以上のボクセル(VXL)を含む。
次に、三次元データ符号化装置100は、複数の第1処理単位(GOS)の各々を符号化することで符号化三次元データ112を生成する。具体的には、三次元データ符号化装置100は、各第1処理単位(GOS)において、複数の第2処理単位(SPC)の各々を符号化する。また、三次元データ符号化装置100は、各第2処理単位(SPC)において、複数の第3処理単位(VLM)の各々を符号化する。
例えば、三次元データ符号化装置100は、処理対象の第1処理単位(GOS)がクローズドGOSである場合には、処理対象の第1処理単位(GOS)に含まれる処理対象の第2処理単位(SPC)を、処理対象の第1処理単位(GOS)に含まれる他の第2処理単位(SPC)を参照して符号化する。つまり、三次元データ符号化装置100は、処理対象の第1処理単位(GOS)とは異なる第1処理単位(GOS)に含まれる第2処理単位(SPC)を参照しない。
一方、処理対象の第1処理単位(GOS)がオープンGOSである場合には、処理対象の第1処理単位(GOS)に含まれる処理対象の第2処理単位(SPC)を、処理対象の第1処理単位(GOS)に含まれる他の第2処理単位(SPC)、又は、処理対象の第1処理単位(GOS)とは異なる第1処理単位(GOS)に含まれる第2処理単位(SPC)を参照して符号化する。
また、三次元データ符号化装置100は、処理対象の第2処理単位(SPC)のタイプとして、他の第2処理単位(SPC)を参照しない第1タイプ(I−SPC)、他の一つの第2処理単位(SPC)を参照する第2タイプ(P−SPC)、及び他の二つの第2処理単位(SPC)を参照する第3タイプのうちいずれかを選択し、選択したタイプに従い処理対象の第2処理単位(SPC)を符号化する。
次に、本実施の形態に係る三次元データ復号装置の構成及び動作の流れを説明する。図8は、本実施の形態に係る三次元データ復号装置200のブロックのブロック図である。図9は、三次元データ復号装置200の動作例を示すフローチャートである。
図8に示す三次元データ復号装置200は、符号化三次元データ211を復号することで復号三次元データ212を生成する。ここで、符号化三次元データ211は、例えば、三次元データ符号化装置100で生成された符号化三次元データ112である。この三次元データ復号装置200は、取得部201と、復号開始GOS決定部202と、復号SPC決定部203と、復号部204とを備える。
まず、取得部201は、符号化三次元データ211を取得する(S201)。次に、復号開始GOS決定部202は、復号対象のGOSに決定する(S202)。具体的には、復号開始GOS決定部202は、符号化三次元データ211内、又は符号化三次元データとは別に格納されたメタ情報を参照して、復号を開始する空間位置、オブジェクト、又は、時刻に対応するSPCを含むGOSを復号対象のGOSに決定する。
次に、復号SPC決定部203は、GOS内で復号するSPCのタイプ(I、P、B)を決定する(S203)。例えば、復号SPC決定部203は、(1)I−SPCのみを復号するか、(2)I−SPC及びP−SPCを復号するか、(3)全てのタイプを復号するかを決定する。なお、全てのSPCを復号するなど、予め復号するSPCのタイプが決定している場合は、本ステップは行われなくてもよい。
次に、復号部204は、GOS内で復号順(符号化順と同一)で先頭となるSPCが符号化三次元データ211内で開始するアドレス位置を取得し、当該アドレス位置から先頭SPCの符号化データを取得し、当該先頭SPCから順に各SPCを順次復号する(S204)。なお、上記アドレス位置は、メタ情報等に格納されている。
このように、三次元データ復号装置200は、復号三次元データ212を復号する。具体的には、三次元データ復号装置200は、ランダムアクセス単位であって、各々が三次元座標に対応付けられている第1処理単位(GOS)の符号化三次元データ211の各々を復号することで第1処理単位(GOS)の復号三次元データ212を生成する。より具体的には、三次元データ復号装置200は、各第1処理単位(GOS)において、複数の第2処理単位(SPC)の各々を復号する。また、三次元データ復号装置200は、各第2処理単位(SPC)において、複数の第3処理単位(VLM)の各々を復号する。
以下、ランダムアクセス用のメタ情報について説明する。このメタ情報は、三次元データ符号化装置100で生成され、符号化三次元データ112(211)に含まれる。
従来の二次元の動画像におけるランダムアクセスでは、指定した時刻の近傍となるランダムアクセス単位の先頭フレームから復号を開始していた。一方、ワールドにおいては、時刻に加えて、空間(座標又はオブジェクトなど)に対するランダムアクセスが想定される。
そこで、少なくとも座標、オブジェクト、及び時刻の3つの要素へのランダムアクセスを実現するために、各要素とGOSのインデックス番号とを対応付けるテーブルを用意する。さらに、GOSのインデックス番号とGOSの先頭となるI−SPCのアドレスを対応付ける。図10は、メタ情報に含まれるテーブルの一例を示す図である。なお、図10に示す全てのテーブルが用いられる必要はなく、少なくとも一つのテーブルが用いられればよい。
以下、一例として、座標を起点とするランダムアクセスについて説明する。座標(x2、y2、z2)にアクセスする際には、まず、座標−GOSテーブルを参照して、座標が(x2、y2、z2)である地点は2番目のGOSに含まれることが分かる。次に、GOSアドレステーブルを参照し、2番目のGOSにおける先頭のI−SPCのアドレスがaddr(2)であることが分かるため、復号部204は、このアドレスからデータを取得して復号を開始する。
なお、アドレスは、論理フォーマットにおけるアドレスであっても、HDD又はメモリの物理アドレスであってもよい。また、アドレスの代わりにファイルセグメントを特定する情報が用いられてもよい。例えば、ファイルセグメントは、1つ以上のGOSなどをセグメント化した単位である。
また、オブジェクトが複数のGOSに跨る場合には、オブジェクト−GOSテーブルにおいて、オブジェクトが属するGOSを複数示してもよい。当該複数のGOSがクローズドGOSであれば、符号化装置及び復号装置は、並列に符号化又は復号を行うことができる。一方、当該複数のGOSがオープンGOSであれば、複数のGOSが互いに参照しあうことでより圧縮効率を高めることができる。
オブジェクトの例としては、ヒト、動物、車、自転車、信号、又はランドマークとなる建物などがある。例えば、三次元データ符号化装置100は、ワールドの符号化時に三次元のポイントクラウドなどからオブジェクトに特有の特徴点を抽出し、当該特徴点に基づきオブジェクトを検出し、検出したオブジェクトをランダムアクセスポイントとして設定できる。
このように、三次元データ符号化装置100は、複数の第1処理単位(GOS)と、複数の第1処理単位(GOS)の各々に対応付けられている三次元座標とを示す第1情報を生成する。また、符号化三次元データ112(211)は、この第1情報を含む。また、第1情報は、さらに、複数の第1処理単位(GOS)の各々に対応付けられている、オブジェクト、時刻及びデータ格納先のうち少なくとも一つを示す。
三次元データ復号装置200は、符号化三次元データ211から第1情報を取得し、第1情報を用いて、指定された三次元座標、オブジェクト又は時刻に対応する第1処理単位の符号化三次元データ211を特定し、当該符号化三次元データ211を復号する。
以下、その他のメタ情報の例について説明する。ランダムアクセス用のメタ情報の他に、三次元データ符号化装置100は、以下のようなメタ情報を生成及び格納してもよい。また、三次元データ復号装置200は、このメタ情報を復号時に利用してもよい。
三次元データを地図情報として用いる場合などには、用途に応じてプロファイルが規定され、当該プロファイルを示す情報がメタ情報に含まれてもよい。例えば、市街地或いは郊外向け、又は、飛行物体向けのプロファイルが規定され、それぞれにおいてワールド、SPC又はVLMの最大又は最小サイズなどが定義される。例えば、市街地向けでは、郊外向けよりも詳細な情報が必要なため、VLMの最小サイズが小さく設定される。
メタ情報は、オブジェクトの種類を示すタグ値を含んでもよい。このタグ値はオブジェクトを構成するVLM、SPC、又はGOSと対応付けられる。例えば、タグ値「0」は「人」を示し、タグ値「1」は「車」を示し、タグ値「2」は「信号機」を示す、などオブジェクトの種類ごとにタグ値が設定されてもよい。または、オブジェクトの種類が判定しにくい又は判定する必要がない場合はサイズ、又は、動的オブジェクトか静的オブジェクトかなどの性質を示すタグ値が用いられてもよい。
また、メタ情報は、ワールドが占める空間領域の範囲を示す情報を含んでもよい。
また、メタ情報は、符号化データのストリーム全体、又は、GOS内のSPCなど、複数のSPCに共通のヘッダ情報として、SPC又はVXLのサイズを格納してもよい。
また、メタ情報は、ポイントクラウドの生成に用いた距離センサ或いはカメラなどの識別情報、又は、ポイントクラウド内の点群の位置精度を示す情報を含んでもよい。
また、メタ情報は、ワールドが静的オブジェクトのみから構成されるか、動的オブジェクトを含むかを示す情報を含んでもよい。
以下、本実施の形態の変形例について説明する。
符号化装置又は復号装置は、互いに異なる2以上のSPC又はGOSを並列で符号化又は復号してもよい。並列で符号化又は復号するGOSは、GOSの空間位置を示すメタ情報などに基づいて決定できる。
三次元データを車又は飛行物体などが移動する際の空間地図として用いる、又はこのような空間地図を生成するケースなどでは、符号化装置又は復号装置は、GPS、経路情報、又はズーム倍率などに基づいて特定される空間に含まれるGOS又はSPCを符号化又は復号してもよい。
また、復号装置は、自己位置又は走行経路に近い空間から順に復号を行ってもよい。符号化装置又は復号装置は、自己位置又は走行経路から遠い空間を、近い空間に比べて優先度を落として符号化又は復号してもよい。ここで、優先度を落とすとは、処理順を下げる、解像度を下げる(間引いて処理する)、又は、画質を下げる(符号化効率を上げる。例えば、量子化ステップを大きくする。)等である。
また、復号装置は、空間内で階層的に符号化されている符号化データを復号する際は、低階層のみを復号してもよい。
また、復号装置は、地図のズーム倍率又は用途に応じて、低階層から優先的に復号してもよい。
また、車又はロボットの自律走行時に行う自己位置推定又は物体認識などの用途では、符号化装置又は復号装置は、路面から特定高さ以内の領域(認識を行う領域)以外は解像度を落として符号化又は復号を行ってもよい。
また、符号化装置は、室内と室外との空間形状を表現するポイントクラウドをそれぞれ個別に符号化してもよい。例えば、室内を表現するGOS(室内GOS)と室外を表現するGOS(室外GOS)とを分けることで、復号装置は、符号化データを利用する際に、視点位置に応じて復号するGOSを選択できる。
また、符号化装置は、座標が近い室内GOSと室外GOSとを、符号化ストリーム内で隣接するように符号化してもよい。例えば、符号化装置は、両者の識別子を対応付け、符号化ストリーム内、又は別途格納されるメタ情報内に対応付けた識別子を示す情報を格納する。これにより、復号装置は、メタ情報内の情報を参照して、座標が近い室内GOSと室外GOSとを識別できる。
また、符号化装置は、室内GOSと室外GOSとで、GOS又はSPCのサイズを切替えてもよい。例えば、符号化装置は、室内では室外に比べてGOSのサイズを小さく設定する。また、符号化装置は、室内GOSと室外GOSとで、ポイントクラウドから特徴点を抽出する際の精度、又はオブジェクト検出の精度などを変更してもよい。
また、符号化装置は、復号装置が動的オブジェクトを静的オブジェクトと区別して表示するための情報を符号化データに付加してもよい。これにより、復号装置は、動的オブジェクトと赤枠又は説明用の文字などとを合わせて表示できる。なお、復号装置は、動的オブジェクトの代わりに赤枠又は説明用の文字のみを表示してもよい。また、復号装置は、より細かいオブジェクト種別を表示してもよい。例えば、車には赤枠が用いられ、ヒトには黄色枠が用いられてもよい。
また、符号化装置又は復号装置は、動的オブジェクトの出現頻度、又は、静的オブジェクトと動的オブジェクトとの割合などに応じて、動的オブジェクトと静的オブジェクトとを異なるSPC又はGOSとして符号化又は復号するかどうかを決定してもよい。例えば、動的オブジェクトの出現頻度又は割合が閾値を超える場合には、動的オブジェクトと静的オブジェクトとが混在するSPC又はGOSが許容され、動的オブジェクトの出現頻度又は割合が閾値を超えない場合には、動的オブジェクトと静的オブジェクトとが混在するSPC又はGOSが許容されない。
動的オブジェクトをポイントクラウドではなく、カメラの二次元画像情報から検出する際には、符号化装置は、検出結果を識別するための情報(枠又は文字など)とオブジェクト位置とを別途取得し、これらの情報を三次元の符号化データの一部として符号化してもよい。この場合、復号装置は、静的オブジェクトの復号結果に対して、動的オブジェクトを示す補助情報(枠又は文字)を重畳して表示する。
また、符号化装置は、静的オブジェクトの形状の複雑さなどに応じて、SPCにおけるVXL又はVLMの粗密さを変更してもよい。例えば、符号化装置は、静的オブジェクトの形状が複雑なほど、VXL又はVLMを密に設定する。さらに、符号化装置は、空間位置又は色情報を量子化する際の量子化ステップなどをVXL又はVLMの粗密さに応じて決定してもよい。例えば、符号化装置は、VXL又はVLMが密なほど量子化ステップを小さく設定する。
以上のように、本実施の形態に係る符号化装置又は復号装置は、座標情報を有するスペース単位で空間の符号化又は復号を行う。
また、符号化装置及び復号装置は、スペース内において、ボリューム単位で符号化又は復号を行う。ボリュームは、位置情報が対応付けられる最小単位であるボクセルを含む。
また、符号化装置及び復号装置は、座標、オブジェクト、及び時間等を含む空間情報の各要素とGOPとを対応付けたテーブル、又は各要素間を対応付けたテーブルにより任意の要素間を対応付けて符号化又は復号を行う。また、復号装置は、選択された要素の値を用いて座標を判定し、座標からボリューム、ボクセル又はスペースを特定し、当該ボリューム又はボクセルを含むスペース、又は特定されたスペースを復号する。
また、符号化装置は、特徴点抽出又はオブジェクト認識により、要素により選択可能なボリューム、ボクセル又はスペースを判定し、ランダムアクセス可能なボリューム、ボクセル又はスペースとして符号化する。
スペースは、当該スペース単体で符号化又は復号可能なI−SPCと、任意の1つの処理済みスペースを参照して符号化又は復号されるP−SPCと、任意の二つの処理済みスペースを参照して符号化又は復号されるB−SPCとの3種類のタイプに分類される。
1以上のボリュームが、静的オブジェクト又は動的なオブジェクトに対応する。静的オブジェクトを含むスペースと動的オブジェクトを含むスペースとは互いに異なるGOSとして符号化又は復号される。つまり、静的オブジェクトを含むSPCと、動的オブジェクトを含むSPCとが異なるGOSに割り当てられる。
動的オブジェクトはオブジェクトごとに符号化又は復号され、静的オブジェクトを含む1以上のスペースに対応付けられる。つまり、複数の動的オブジェクトは個別に符号化され、得られた複数の動的オブジェクトの符号化データは、静的オブジェクトを含むSPCに対応付けられる。
符号化装置及び復号装置は、GOS内のI−SPCの優先度を上げて、符号化又は復号を行う。例えば、符号化装置は、I−SPCの劣化が少なくなるように(復号後に元の三次元データがより忠実に再現されるように)符号化を行う。また、復号装置は、例えば、I−SPCのみを復号する。
符号化装置は、ワールド内のオブジェクトの疎密さ又は数(量)に応じてI−SPCを用いる頻度を変えて符号化を行ってもよい。つまり、符号化装置は、三次元データに含まれるオブジェクトの数又は粗密さに応じて、I−SPCを選択する頻度を変更する。例えば、符号化装置は、ワールド内のオブジェクトが密であるほどIスペースを用いる頻度を上げる。
また、符号化装置は、ランダムアクセスポイントをGOS単位で設定し、GOSに対応する空間領域を示す情報をヘッダ情報に格納する。
符号化装置は、GOSの空間サイズとして、例えば、デフォルト値を使用する。なお、符号化装置は、オブジェクト又は動的オブジェクトの数(量)又は粗密さに応じてGOSのサイズを変更してもよい。例えば、符号化装置は、オブジェクト或いは動的オブジェクトが密なほど、又は数が多いほど、GOSの空間サイズを小さくする。
また、スペース又はボリュームは、デプスセンサ、ジャイロ、又はカメラ等のセンサで得られた情報を用いて導出された特徴点群を含む。特徴点の座標はボクセルの中心位置に設定される。また、ボクセルの細分化により位置情報の高精度化を実現できる。
特徴点群は、複数のピクチャを用いて導出される。複数のピクチャは、実際の時刻情報と、スペースに対応付けられた複数のピクチャで同一の時刻情報(例えば、レート制御等に用いられる符号化時刻)との少なくとも2種類の時刻情報を有する。
また、1以上のスペースを含むGOS単位で符号化又は復号が行われる。
符号化装置及び復号装置は、処理済みのGOS内のスペースを参照して、処理対象のGOS内のPスペース又はBスペースの予測を行う。
または、符号化装置及び復号装置は、異なるGOSを参照せず、処理対象のGOS内の処理済スペースを用いて処理対象のGOS内のPスペース又はBスペースの予測を行う。
また、符号化装置及び復号装置は、1以上のGOSを含むワールド単位で符号化ストリームを送信又は受信する。
また、GOSは少なくともワールド内で1方向にレイヤ構造を持ち、符号化装置及び復号装置は、下位レイヤから符号化又は復号を行う。例えば、ランダムアクセス可能なGOSは最下位レイヤに属する。上位レイヤに属するGOSは同一レイヤ以下に属するGOSを参照する。つまり、GOSは、予め定められた方向に空間分割され、各々が1以上のSPCを含む複数のレイヤを含む。符号化装置及び復号装置は、各SPCを、当該SPCと同一レイヤ又は当該SPCより下層のレイヤに含まれるSPCを参照して符号化又は復号する。
また、符号化装置及び復号装置は、複数のGOSを含むワールド単位内で、連続してGOSを符号化又は復号する。符号化装置及び復号装置は、符号化又は復号の順序(方向)を示す情報をメタデータとして書き込む又は読み出す。つまり、符号化データは、複数のGOSの符号化順を示す情報を含む。
また、符号化装置及び復号装置は、互いに異なる2以上のスペース又はGOSを並列で符号化又は復号する。
また、符号化装置及び復号装置は、スペース又はGOSの空間情報(座標、サイズ等)を符号化又は復号する。
また、符号化装置及び復号装置は、GPS、経路情報、又は倍率など、自己の位置又は/及び領域サイズに関する外部情報に基づいて特定される特定空間に含まれるスペース又はGOSを符号化又は復号する。
符号化装置又は復号装置は、自己の位置から遠い空間は、近い空間に比べて優先度を落として符号化又は復号する。
符号化装置は、倍率又は用途に応じて、ワールドのある1方向を設定し、当該方向にレイヤ構造を持つGOSを符号化する。また、復号装置は、倍率又は用途に応じて設定されたワールドのある1方向にレイヤ構造を持つGOSを、下位レイヤから優先的に復号する。
符号化装置は、室内と室外とでスペースに含まれる特徴点抽出、オブジェクト認識の精度、又は空間領域サイズなどを変化させる。ただし、符号化装置及び復号装置は、座標が近い室内GOSと室外GOSとをワールド内で隣接して符号化又は復号し、これらの識別子も対応付けて符号化又は復号する。
(実施の形態2)
ポイントクラウドの符号化データを実際の装置又はサービスにおいて使用する際には、ネットワーク帯域を抑制するために用途に応じて必要な情報を送受信することが望ましい。しかしながら、これまで、三次元データの符号化構造にはそのような機能が存在せず、そのための符号化方法も存在しなかった。
本実施の形態では、三次元のポイントクラウドの符号化データにおいて用途に応じて必要な情報のみを送受信する機能を提供するための三次元データ符号化方法及び三次元データ符号化装置、並びに、当該符号化データを復号する三次元データ復号方法及び三次元データ復号装置について説明する。
特徴量を一定以上持つボクセル(VXL)を特徴ボクセル(FVXL)と定義し、FVXLで構成されるワールド(WLD)をスパースワールド(SWLD)と定義する。図11は、スパースワールド及びワールドの構成例を示す図である。SWLDには、FVXLで構成されるGOSであるFGOSと、FVXLで構成されるSPCであるFSPCと、FVXLで構成されるVLMであるFVLMと含まれる。FGOS、FSPC及びFVLMのデータ構造及び予測構造はGOS、SPC及びVLMと同様であっても構わない。
特徴量とは、VXLの三次元位置情報、又はVXL位置の可視光情報を表現する特徴量であり、特に立体物のコーナー及びエッジ等で多く検出される特徴量である。具体的には、この特徴量は、下記のような三次元特徴量又は可視光の特徴量であるが、その他、VXLの位置、輝度、又は色情報などを表す特徴量であれば、どのようなものでも構わない。
三次元特徴量として、SHOT特徴量(Signature of Histograms of OrienTations)、PFH特徴量(Point Feature Histograms)、又はPPF特徴量(Point Pair Feature)が用いられる。
SHOT特徴量は、VXL周辺を分割し、基準点と分割された領域の法線ベクトルとの内積を計算してヒストグラム化することで得られる。このSHOT特徴量は、次元数が高く、特徴表現力が高いという特徴を有する。
PFH特徴量は、VXL近傍の多数の2点組を選択し、その2点から法線ベクトル等を算出してヒストグラム化することで得られる。このPFH特徴量は、ヒストグラム特徴なので、多少の外乱に対してロバスト性を有し、特徴表現力も高いという特徴を有する。
PPF特徴量は、2点のVXL毎に法線ベクトル等を用いて算出される特徴量である。このPPF特徴量には、全VXLが使われるため、オクルージョンに対してロバスト性を有する。
また、可視光の特徴量として、画像の輝度勾配情報等の情報を用いたSIFT(Scale−Invariant Feature Transform)、SURF(Speeded Up Robust Features)、又はHOG(Histogram of Oriented Gradients)等を用いることができる。
SWLDは、WLDの各VXLから上記特徴量を算出し、FVXLを抽出することで生成される。ここで、SWLDはWLDが更新される度に更新しても構わないし、WLDの更新タイミングに関わらず、一定時間経過後に定期的に更新するようにしても構わない。
SWLDは特徴量毎に生成しても構わない。例えば、SHOT特徴量に基づくSWLD1とSIFT特徴量に基づくSWLD2とのように、特徴量毎に別々のSWLDが生成され、用途に応じてSWLDを使い分けるようにしても構わない。また、算出した各FVXLの特徴量を特徴量情報として各FVXLに保持するようにしても構わない。
次に、スパースワールド(SWLD)の利用方法について説明する。SWLDは特徴ボクセル(FVXL)のみを含むため、全てのVXLを含むWLDと比べて一般的にデータサイズが小さい。
特徴量を利用して何らかの目的を果たすアプリケーションにおいては、WLDの代わりにSWLDの情報を利用することで、ハードディスクからの読み出し時間、並びにネットワーク転送時の帯域及び転送時間を抑制することができる。例えば、地図情報として、WLDとSWLDとをサーバに保持しておき、クライアントからの要望に応じて、送信する地図情報をWLD又はSWLDに切り替えることにより、ネットワーク帯域及び転送時間を抑制することができる。以下、具体的な例を示す。
図12及び図13は、SWLD及びWLDの利用例を示す図である。図12に示すように、車載装置であるクライアント1が自己位置判定用途として地図情報を必要な場合は、クライアント1はサーバに自己位置推定用の地図データの取得要望を送る(S301)。サーバは、当該取得要望に応じてSWLDをクライアント1に送信する(S302)。クライアント1は、受信したSWLDを用いて自己位置判定を行う(S303)。この際、クライアント1はレンジファインダなどの距離センサ、ステレオカメラ、又は複数の単眼カメラの組合せ等の様々な方法でクライアント1の周辺のVXL情報を取得し、得られたVXL情報とSWLDとから自己位置情報を推定する。ここで自己位置情報は、クライアント1の三次元位置情報及び向き等を含む。
図13に示すように、車載装置であるクライアント2が三次元地図等の地図描画の用途として地図情報が必要な場合は、クライアント2はサーバに地図描画用の地図データの取得要望を送る(S311)。サーバは、当該取得要望に応じてWLDをクライアント2に送信する(S312)。クライアント2は、受信したWLDを用いて地図描画を行う(S313)。この際、クライアント2は、例えば、自己が可視光カメラ等で撮影した画像と、サーバから取得したWLDとを用いてレンダリング画像を作成し、作成した画像をカーナビ等の画面に描画する。
上記のように、サーバは、自己位置推定のような各VXLの特徴量を主に必要とする用途ではSWLDをクライアントに送信し、地図描画のように詳細なVXL情報が必要な場合はWLDをクライアントに送信する。これにより、地図データを効率よく送受信することが可能となる。
なお、クライアントは、自分でSWLDとWLDのどちらが必要かを判断し、サーバへSWLD又はWLDの送信を要求しても構わない。また、サーバは、クライアント又はネットワークの状況に合わせて、SWLDかWLDのどちらを送信すべきかを判断しても構わない。
次に、スパースワールド(SWLD)とワールド(WLD)との送受信を切り替える方法を説明する。
ネットワーク帯域に応じてWLD又はSWLDを受信するかを切替えるようにしてもよい。図14は、この場合の動作例を示す図である。例えば、LTE(Long Term Evolution)環境下等の使用できるネットワーク帯域が限られている低速ネットワークが用いられている場合には、クライアントは、低速ネットワーク経由でサーバにアクセスし(S321)、サーバから地図情報としてSWLDを取得する(S322)。一方、Wi‐Fi(登録商標)環境下等のネットワーク帯域に余裕がある高速ネットワークが用いられている場合には、クライアントは、高速ネットワーク経由でサーバにアクセスし(S323)、サーバからWLDを取得する(S324)。これにより、クライアントは、当該クライアントのネットワーク帯域に応じて適切な地図情報を取得することができる。
具体的には、クライアントは、屋外ではLTE経由でSWLDを受信し、施設等の屋内に入った場合はWi‐Fi(登録商標)経由でWLDを取得する。これにより、クライアントは、屋内のより詳細な地図情報を取得することが可能となる。
このように、クライアントは、自身が用いるネットワークの帯域に応じてサーバにWLD又はSWLDを要求してもよい。または、クライアントは、自身が用いるネットワークの帯域を示す情報をサーバに送信し、サーバは当該情報に応じて当該クライアントに適したデータ(WLD又はSWLD)を送信してもよい。または、サーバは、クライアントのネットワーク帯域を判別し、当該クライアントに適したデータ(WLD又はSWLD)を送信してもよい。
また、移動速度に応じてWLD又はSWLDを受信するかを切替えるようにしてもよい。図15は、この場合の動作例を示す図である。例えば、クライアントが高速移動をしている場合は(S331)、クライアントはSWLDをサーバから受信する(S332)。一方、クライアントが低速移動をしている場合は(S333)、クライアントはWLDをサーバから受信する(S334)。これにより、クライアントは、ネットワーク帯域を抑制しながら、速度に合った地図情報を取得することができる。具体的には、クライアントは、高速道路を走行中にはデータ量の少ないSWLDを受信することにより、大まかな地図情報を適切な速度で更新することができる。一方、クライアントは、一般道路を走行中にはWLDを受信することにより、より詳細な地図情報を取得することが可能となる。
このように、クライアントは、自身の移動速度に応じてサーバにWLD又はSWLDを要求してもよい。または、クライアントは、自身の移動速度を示す情報をサーバに送信し、サーバは当該情報に応じて当該クライアントに適したデータ(WLD又はSWLD)を送信してもよい。または、サーバは、クライアントの移動速度を判別し、当該クライアントに適したデータ(WLD又はSWLD)を送信してもよい。
また、クライアントは、最初にSWLDをサーバより取得し、その中で重要な領域のWLDを取得しても構わない。例えば、クライアントは、地図データを取得する際に、最初に大まかな地図情報をSWLDで取得し、そこから建物、標識、又は人物等の特徴が多く出現する領域を絞り込み、絞り込んだ領域のWLDを後から取得する。これにより、クライアントは、サーバからの受信データ量を抑制しつつ、必要な領域の詳細な情報を取得することが可能となる。
また、サーバは、WLDから物体毎に別々のSWLDを作成し、クライアントは、用途に合わせて、それぞれを受信してもよい。これにより、ネットワーク帯域を抑制できる。例えば、サーバは、WLDから予め人又は車を認識し、人のSWLDと車のSWLDを作成する。クライアントは、周囲の人の情報を取得したい場合には人のSWLDを、車の情報を取得したい場合には車のSWLDを受信する。また、このようなSWLDの種類はヘッダ等に付加された情報(フラグ又はタイプ等)によって区別するようにしても構わない。
次に、本実施の形態に係る三次元データ符号化装置(例えばサーバ)の構成及び動作の流れを説明する。図16は、本実施の形態に係る三次元データ符号化装置400のブロック図である。図17は、三次元データ符号化装置400による三次元データ符号化処理のフローチャートである。
図16に示す三次元データ符号化装置400は、入力三次元データ411を符号化することで符号化ストリームである符号化三次元データ413及び414を生成する。ここで、符号化三次元データ413はWLDに対応する符号化三次元データであり、符号化三次元データ414はSWLDに対応する符号化三次元データである。この三次元データ符号化装置400は、取得部401と、符号化領域決定部402と、SWLD抽出部403と、WLD符号化部404と、SWLD符号化部405とを備える。
図17に示すように、まず、取得部401は、三次元空間内の点群データである入力三次元データ411を取得する(S401)。
次に、符号化領域決定部402は、点群データが存在する空間領域に基づいて、符号化対象の空間領域を決定する(S402)。
次に、SWLD抽出部403は、符号化対象の空間領域をWLDと定義し、WLDに含まれる各VXLから特徴量を算出する。そして、SWLD抽出部403は、特徴量が予め定められた閾値以上のVXLを抽出し、抽出したVXLをFVXLと定義し、当該FVXLをSWLDへ追加することで、抽出三次元データ412を生成する(S403)。つまり、入力三次元データ411から特徴量が閾値以上の抽出三次元データ412が抽出される。
次に、WLD符号化部404は、WLDに対応する入力三次元データ411を符号化することでWLDに対応する符号化三次元データ413を生成する(S404)。このとき、WLD符号化部404は、符号化三次元データ413のヘッダに、当該符号化三次元データ413がWLDを含むストリームであることを区別するための情報を付加する。
また、SWLD符号化部405は、SWLDに対応する抽出三次元データ412を符号化することでSWLDに対応する符号化三次元データ414を生成する(S405)。このとき、SWLD符号化部405は、符号化三次元データ414のヘッダに、当該符号化三次元データ414がSWLDを含むストリームであることを区別するための情報を付加する。
なお、符号化三次元データ413を生成する処理と、符号化三次元データ414を生成する処理との処理順は上記と逆でもよい。また、これらの処理の一部又は全てが並列に行われてもよい。
符号化三次元データ413及び414のヘッダに付与される情報として、例えば、「world_type」というパラメータが定義される。world_type=0の場合はストリームがWLDを含むことを表し、world_type=1の場合はストリームがSWLDを含むことを表す。更にその他の多数の種別を定義する場合には、world_type=2のように割り当てる数値を増やすようにしても構わない。また、符号化三次元データ413及び414の一方に特定のフラグが含まれてもよい。例えば、符号化三次元データ414に、当該ストリームがSWLDを含むことを含むフラグが付与されてもよい。この場合、復号装置は、フラグの有無によりWLDを含むストリームか、SWLDを含むストリームかを判別できる。
また、WLD符号化部404がWLDを符号化する際に使用する符号化方法と、SWLD符号化部405がSWLDを符号化する際に使用する符号化方法とは異なってもよい。
例えば、SWLDではデータが間引かされているため、WLDに比べ、周辺のデータとの相関が低くなる可能性がある。よって、SWLDに用いられる符号化方法では、WLDに用いられる符号化方法よりもイントラ予測及びインター予測のうちインター予測が優先されてもよい。
また、SWLDに用いられる符号化方法とWLDに用いられる符号化方法とでは、三次元位置の表現手法が異なってもよい。例えば、SWLDでは、三次元座標によりFVXLの三次元位置を表現し、WLDでは、後述する8分木により三次元位置が表現されてもよいし、その逆でもよい。
また、SWLD符号化部405は、SWLDの符号化三次元データ414のデータサイズがWLDの符号化三次元データ413のデータサイズより小さくなるように符号化を行う。例えば、上述したようにSWLDは、WLDに比べ、データ間の相関が低くなる可能性がある。これにより、符号化効率が下がり、符号化三次元データ414のデータサイズがWLDの符号化三次元データ413のデータサイズより大きくなる可能性がある。よって、SWLD符号化部405は、得られた符号化三次元データ414のデータサイズが、WLDの符号化三次元データ413のデータサイズより大きい場合には、再符号化を行うことで、データサイズを低減した符号化三次元データ414を再生成する。
例えば、SWLD抽出部403は、抽出する特徴点の数を減らした抽出三次元データ412を再生成し、SWLD符号化部405は、当該抽出三次元データ412を符号化する。または、SWLD符号化部405における量子化の程度をより粗くしてもよい。例えば、後述する8分木構造において、最下層のデータを丸め込むことで、量子化の程度を粗くすることができる。
また、SWLD符号化部405は、SWLDの符号化三次元データ414のデータサイズをWLDの符号化三次元データ413のデータサイズより小さくできない場合は、SWLDの符号化三次元データ414を生成しなくてもよい。または、WLDの符号化三次元データ413がSWLDの符号化三次元データ414にコピーされてもよい。つまり、SWLDの符号化三次元データ414としてWLDの符号化三次元データ413がそのまま用いられてもよい。
次に、本実施の形態に係る三次元データ復号装置(例えばクライアント)の構成及び動作の流れを説明する。図18は、本実施の形態に係る三次元データ復号装置500のブロック図である。図19は、三次元データ復号装置500による三次元データ復号処理のフローチャートである。
図18に示す三次元データ復号装置500は、符号化三次元データ511を復号することで復号三次元データ512又は513を生成する。ここで、符号化三次元データ511は、例えば、三次元データ符号化装置400で生成された符号化三次元データ413又は414である。
この三次元データ復号装置500は、取得部501と、ヘッダ解析部502と、WLD復号部503と、SWLD復号部504とを備える。
図19に示すように、まず、取得部501は、符号化三次元データ511を取得する(S501)。次に、ヘッダ解析部502は、符号化三次元データ511のヘッダを解析し、符号化三次元データ511がWLDを含むストリームか、SWLDを含むストリームかを判別する(S502)。例えば、上述したworld_typeのパラメータが参照され、判別が行われる。
符号化三次元データ511がWLDを含むストリームである場合(S503でYes)、WLD復号部503は、符号化三次元データ511を復号することでWLDの復号三次元データ512を生成する(S504)。一方、符号化三次元データ511がSWLDを含むストリームである場合(S503でNo)、SWLD復号部504は、符号化三次元データ511を復号することでSWLDの復号三次元データ513を生成する(S505)。
また、符号化装置と同様に、WLD復号部503がWLDを復号する際に使用する復号方法と、SWLD復号部504がSWLDを復号する際に使用する復号方法とは異なってもよい。例えば、SWLDに用いられる復号方法では、WLDに用いられる復号方法よりもイントラ予測及びインター予測のうちインター予測が優先されてもよい。
また、SWLDに用いられる復号方法とWLDに用いられる復号方法とでは、三次元位置の表現手法が異なってもよい。例えば、SWLDでは、三次元座標によりFVXLの三次元位置を表現し、WLDでは、後述する8分木により三次元位置が表現されてもよいし、その逆でもよい。
次に、三次元位置の表現手法である8分木表現について説明する。三次元データに含まれるVXLデータは8分木構造に変換された後、符号化される。図20は、WLDのVXLの一例を示す図である。図21は、図20に示すWLDの8分木構造を示す図である。図20に示す例では、点群を含むVXL(以下、有効VXL)である3つVXL1〜3が存在する。図21に示すように、8分木構造はノードとリーフで構成される。各ノードは最大で8つのノードまたはリーフを持つ。各リーフはVXL情報を持つ。ここで、図21に示すリーフのうち、リーフ1、2、3はそれぞれ図20に示すVXL1、VXL2、VXL3を表す。
具体的には、各ノード及びリーフは三次元位置に対応する。ノード1は、図20に示す全体のブロックに対応する。ノード1に対応するブロックは8つのブロックに分割され、8つのブロックのうち、有効VXLを含むブロックがノードに設定され、それ以外のブロックはリーフに設定される。ノードに対応するブロックは、さらに8つのノードまたはリーフに分割され、この処理が木構造の階層分繰り返される。また、最下層のブロックは、全てリーフに設定される。
また、図22は、図20に示すWLDから生成したSWLDの例を示す図である。図20に示すVXL1及びVXL2は特徴量抽出の結果、FVXL1及びFVXL2と判定され、SWLDに加えられている。一方で、VXL3はFVXLと判定されず、SWLDに含まれていない。図23は、図22に示すSWLDの8分木構造を示す図である。図23に示す8分木構造では、図21に示す、VXL3に相当するリーフ3が削除されている。これにより、図21に示すノード3が有効VXLを持たなくなり、リーフに変更されている。このように一般的にSWLDのリーフ数はWLDのリーフ数より少なくなり、SWLDの符号化三次元データもWLDの符号化三次元データより小さくなる。
以下、本実施の形態の変形例について説明する。
例えば、車載装置等のクライアントは、自己位置推定を行う場合に、SWLDをサーバから受信し、SWLDを用いて自己位置推定を行い、障害物検知を行う場合は、レンジファインダなどの距離センサ、ステレオカメラ、又は複数の単眼カメラの組合せ等の様々な方法を用いて自分で取得した周辺の三次元情報に基づいて障害物検知を実施してもよい。
また、一般的にSWLDには平坦領域のVXLデータが含まれにくい。そのため、サーバは、静的な障害物の検知用に、WLDをサブサンプルしたサブサンプルワールド(subWLD)を保持し、SWLDとsubWLDをクライアントに送信してもよい。これにより、ネットワーク帯域を抑制しつつ、クライアント側で自己位置推定及び障害物検知を行うことができる。
また、クライアントが三次元地図データを高速に描画する際には、地図情報がメッシュ構造である方が便利な場合がある。そこで、サーバは、WLDからメッシュを生成し、メッシュワールド(MWLD)として予め保持してもよい。例えばクライアントは、粗い三次元描画を必要としている場合にはMWLDを受信し、詳細な三次元描画を必要としている場合にはWLDを受信する。これにより、ネットワーク帯域を抑制することができる。
また、サーバは、各VXLのうち、特徴量が閾値以上であるVXLをFVXLに設定したが、異なる方法にてFVXLを算出しても構わない。例えば、サーバは、信号又は交差点などを構成するVXL、VLM、SPC、又はGOSを、自己位置推定、運転アシスト、又は自動運転等に必要と判断し、FVXL、FVLM、FSPC、FGOSとしてSWLDに含めるようにしても構わない。また、上記判断は手動で行われてもよい。なお、特徴量に基づき設定されたFVXL等に、上記方法で得られたFVXL等を加えてもよい。つまり、SWLD抽出部403は、さらに、入力三次元データ411から予め定められた属性を有する物体に対応するデータを抽出三次元データ412として抽出してもよい。
また、それらの用途に必要な旨を特徴量とは別にラベリングするようにしても構わない。また、サーバは、SWLDの上位レイヤ(例えばレーンワールド)として、信号又は交差点などの自己位置推定、運転アシスト、又は自動運転等に必要なFVXLを別途保持してもよい。
また、サーバは、WLD内のVXLにもランダムアクセス単位又は所定の単位毎に属性を付加してもよい。属性は、例えば、自己位置推定に必要或いは不要かを示す情報、又は、信号或いは交差点などの交通情報として重要かどうかなどを示す情報を含む。また、属性は、レーン情報(GDF:Geographic Data Filesなど)におけるFeature(交差点又は道路など)との対応関係を含んでもよい。
また、WLD又はSWLDの更新方法として下記のような方法を用いても構わない。
人、工事、又は並木(トラック向け)の変化などを示す更新情報が点群又はメタデータとしてサーバにアップロードされる。サーバは、当該アップロードに基づき、WLDを更新し、その後、更新したWLDを用いてSWLDを更新する。
また、クライアントは、自己位置推定時に自身で生成した三次元情報とサーバから受信した三次元情報との不整合を検知した場合、自身で生成した三次元情報を更新通知とともにサーバに送信してもよい。この場合、サーバは、WLDを用いてSWLDを更新する。SWLDが更新されない場合、サーバは、WLD自体が古いと判断する。
また、符号化ストリームのヘッダ情報として、WLDかSWLDかを区別する情報が付加されるとしたが、例えば、メッシュワールド又はレーンワールド等、多種類のワールドが存在する場合には、それらを区別する情報がヘッダ情報に付加されても構わない。また、特徴量が異なるSWLDが多数存在する場合には、それぞれを区別する情報がヘッダ情報に付加されても構わない。
また、SWLDは、FVXLで構成されるとしたが、FVXLと判定されなかったVXLを含んでもよい。例えば、SWLDは、FVXLの特徴量を算出する際に使用する隣接VXLを含んでもよい。これにより、SWLDの各FVXLに特徴量情報が付加されない場合でも、クライアントは、SWLDを受信した際にFVXLの特徴量を算出することができる。なお、その際には、SWLDは各VXLがFVXLかVXLかを区別するための情報を含んでもよい。
以上のように、三次元データ符号化装置400は、入力三次元データ411(第1三次元データ)から特徴量が閾値以上の抽出三次元データ412(第2三次元データ)を抽出し、抽出三次元データ412を符号化することで符号化三次元データ414(第1符号化三次元データ)を生成する。
これによれば、三次元データ符号化装置400は、特徴量が閾値以上のデータを符号化した符号化三次元データ414を生成する。これにより、入力三次元データ411をそのまま符号化する場合に比べてデータ量を削減できる。よって、三次元データ符号化装置400は、伝送するデータ量を削減できる。
また、三次元データ符号化装置400は、さらに、入力三次元データ411を符号化することで符号化三次元データ413(第2符号化三次元データ)を生成する。
これによれば、三次元データ符号化装置400は、例えば、使用用途等に応じて、符号化三次元データ413と符号化三次元データ414とを選択的に伝送できる。
また、抽出三次元データ412は、第1符号化方法により符号化され、入力三次元データ411は、第1符号化方法とは異なる第2符号化方法により符号化される。
これによれば、三次元データ符号化装置400は、入力三次元データ411と抽出三次元データ412とにそれぞれ適した符号化方法を用いることができる。
また、第1符号化方法では、第2符号化方法よりもイントラ予測及びインター予測のうちインター予測が優先される。
これによれば、三次元データ符号化装置400は、隣接するデータ間の相関が低くなりやすい抽出三次元データ412に対して、インター予測の優先度を上げることができる。
また、第1符号化方法と第2符号化方法とでは、三次元位置の表現手法が異なる。例えば、例えば、第2符号化方法では、8分木により三次元位置が表現され、第1符号化方法では、三次元座標により三次元位置を表現される。
これによれば、三次元データ符号化装置400は、データ数(VXL又はFVXLの数)が異なる三次元データに対して、より適した三次元位置の表現手法を用いることができる。
また、符号化三次元データ413及び414の少なくとも一方は、当該符号化三次元データが入力三次元データ411を符号化することで得られた符号化三次元データであるか、入力三次元データ411のうちの一部を符号化することで得られた符号化三次元データであるかを示す識別子を含む。つまり、当該識別子は、符号化三次元データがWLDの符号化三次元データ413であるかSWLDの符号化三次元データ414であるかを示す。
これによれば、復号装置は、取得した符号化三次元データが符号化三次元データ413であるか符号化三次元データ414であるかを容易に判定できる。
また、三次元データ符号化装置400は、符号化三次元データ414のデータ量が符号化三次元データ413のデータ量より小さくなるように抽出三次元データ412を符号化する。
これによれば、三次元データ符号化装置400は、符号化三次元データ414のデータ量を符号化三次元データ413のデータ量より小さくできる。
また、三次元データ符号化装置400は、さらに、入力三次元データ411から予め定められた属性を有する物体に対応するデータを抽出三次元データ412として抽出する。例えば、予め定められた属性を有する物体とは、自己位置推定、運転アシスト、又は自動運転等に必要な物体であり、信号又は交差点などである。
これによれば、三次元データ符号化装置400は、復号装置で必要となるデータを含む符号化三次元データ414を生成できる。
また、三次元データ符号化装置400(サーバ)は、さらに、クライアントの状態に応じて、符号化三次元データ413及び414の一方をクライアントに送信する。
これによれば、三次元データ符号化装置400は、クライアントの状態に応じて適切なデータを送信できる。
また、クライアントの状態は、クライアントの通信状況(例えばネットワーク帯域)、又はクライアントの移動速度を含む。
また、三次元データ符号化装置400は、さらに、クライアントの要求に応じて、符号化三次元データ413及び414の一方をクライアントに送信する。
これによれば、三次元データ符号化装置400は、クライアントの要求に応じて適切なデータを送信できる。
また、本実施の形態に係る三次元データ復号装置500は、上記三次元データ符号化装置400により生成された符号化三次元データ413又は414を復号する。
つまり、三次元データ復号装置500は、入力三次元データ411から抽出された特徴量が閾値以上の抽出三次元データ412が符号化されることで得られた符号化三次元データ414を第1復号方法により復号する。また、三次元データ復号装置500は、入力三次元データ411が符号化されることで得られた符号化三次元データ413を、第1復号方法とは異なる第2復号方法により復号する。
これによれば、三次元データ復号装置500は、特徴量が閾値以上のデータを符号化した符号化三次元データ414と、符号化三次元データ413とを、例えば、使用用途等に応じて選択的に受信できる。これにより、三次元データ復号装置500は、伝送するデータ量を削減できる。さらに、三次元データ復号装置500は、入力三次元データ411と抽出三次元データ412とにそれぞれ適した復号方法を用いることができる。
また、第1復号方法では、第2復号方法よりもイントラ予測及びインター予測のうちインター予測が優先される。
これによれば、三次元データ復号装置500は、隣接するデータ間の相関が低くなりやすい抽出三次元データに対して、インター予測の優先度を上げることができる。
また、第1復号方法と第2復号方法とでは、三次元位置の表現手法が異なる。例えば、例えば、第2復号方法では、8分木により三次元位置が表現され、第1復号方法では、三次元座標により三次元位置を表現される。
これによれば、三次元データ復号装置500は、データ数(VXL又はFVXLの数)が異なる三次元データに対して、より適した三次元位置の表現手法を用いることができる。
また、符号化三次元データ413及び414の少なくとも一方は、当該符号化三次元データが入力三次元データ411を符号化することで得られた符号化三次元データであるか、入力三次元データ411のうちの一部を符号化することで得られた符号化三次元データであるかを示す識別子を含む。三次元データ復号装置500は、当該識別子を参照して、符号化三次元データ413及び414を識別する。
これによれば、三次元データ復号装置500は、取得した符号化三次元データが符号化三次元データ413であるか符号化三次元データ414であるかを容易に判定できる。
また、三次元データ復号装置500は、さらに、クライアント(三次元データ復号装置500)の状態をサーバに通知する。三次元データ復号装置500は、クライアントの状態に応じて、サーバから送信された符号化三次元データ413及び414の一方を受信する。
これによれば、三次元データ復号装置500は、クライアントの状態に応じて適切なデータを受信できる。
また、クライアントの状態は、クライアントの通信状況(例えばネットワーク帯域)、又はクライアントの移動速度を含む。
また、三次元データ復号装置500は、さらに、符号化三次元データ413及び414の一方をサーバに要求し、当該要求に応じて、サーバから送信された符号化三次元データ413及び414の一方を受信する。
これによれば、三次元データ復号装置500は、用途に応じた適切なデータを受信できる。
(実施の形態3)
本実施の形態では、車両間での三次元データを送受信する方法について説明する。例えば、自車両と周辺車両との間での三次元データの送受信が行われる。
図24は、本実施の形態に係る三次元データ作成装置620のブロック図である。この三次元データ作成装置620は、例えば、自車両に含まれ、三次元データ作成装置620が作成した第1三次元データ632に、受信した第2三次元データ635を合成することで、より密な第3三次元データ636を作成する。
この三次元データ作成装置620は、三次元データ作成部621と、要求範囲決定部622と、探索部623と、受信部624と、復号部625と、合成部626とを備える。
まず、三次元データ作成部621は、自車両が備えるセンサで検知したセンサ情報631を用いて第1三次元データ632を作成する。次に、要求範囲決定部622は、作成した第1三次元データ632の中でデータが不足している三次元空間範囲である要求範囲を決定する。
次に、探索部623は、要求範囲の三次元データを所有する周辺車両を探索し、探索により特定した周辺車両に要求範囲を示す要求範囲情報633を送信する。次に、受信部624は、周辺車両から、要求範囲の符号化ストリームである符号化三次元データ634を受信する(S624)。なお、探索部623は、特定範囲に存在する全ての車両に対し、無差別にリクエストを出し、応答があった相手から符号化三次元データ634を受信してもよい。また、探索部623は、車両に限らず、信号機又は標識などの物体にリクエストを出し、当該物体から符号化三次元データ634を受信してもよい。
次に、復号部625は、受信した符号化三次元データ634を復号することで第2三次元データ635を取得する。次に、合成部626は、第1三次元データ632と第2三次元データ635とを合成することで、より密な第3三次元データ636を作成する。
次に、本実施の形態に係る三次元データ送信装置640の構成及び動作を説明する。図25は、三次元データ送信装置640のブロック図である。
三次元データ送信装置640は、例えば、上述した周辺車両に含まれ、周辺車両が作成した第5三次元データ652を自車両が要求する第6三次元データ654に加工し、第6三次元データ654を符号化することで符号化三次元データ634を生成し、符号化三次元データ634を自車両に送信する。
三次元データ送信装置640は、三次元データ作成部641と、受信部642と、抽出部643と、符号化部644と、送信部645とを備える。
まず、三次元データ作成部641は、周辺車両が備えるセンサで検知したセンサ情報651を用いて第5三次元データ652を作成する。次に、受信部642は、自車両から送信された要求範囲情報633を受信する。
次に、抽出部643は、第5三次元データ652から、要求範囲情報633で示される要求範囲の三次元データを抽出することで、第5三次元データ652を第6三次元データ654に加工する。次に、符号化部644は、第6三次元データ654を符号化することで、符号化ストリームである符号化三次元データ634を生成する。そして、送信部645は、自車両へ符号化三次元データ634を送信する。
なお、ここでは、自車両が三次元データ作成装置620を備え、周辺車両が三次元データ送信装置640を備える例を説明するが、各車両が、三次元データ作成装置620と三次元データ送信装置640との機能を有してもよい。
(実施の形態4)
本実施の形態では、三次元マップに基づく自己位置推定における異常系の動作について説明する。
車の自動運転、又は、ロボット、或いはドローンなどの飛行体などの移動体を自律的に移動させるなどの用途が今後拡大すると予想される。このような自律的な移動を実現する手段の一例として、移動体が、三次元マップ内における自らの位置を推定(自己位置推定)しながら、マップに従って走行する方法がある。
自己位置推定は、三次元マップと、自車に搭載したレンジファインダー(LiDARなど)又はステレオカメラなどのセンサにより取得した自車周辺の三次元情報(以降、自車検知三次元データ)とをマッチングして、三次元マップ内の自車位置を推定することで実現できる。
三次元マップは、HERE社が提唱するHDマップなどのように、三次元のポイントクラウドだけでなく、道路及び交差点の形状情報など二次元の地図データ、又は、渋滞及び事故などの実時間で変化する情報を含んでもよい。三次元データ、二次元データ、実時間で変化するメタデータなど複数のレイヤから三次元マップが構成され、装置は、必要なデータのみを取得、又は、参照することも可能である。
ポイントクラウドのデータは、上述したSWLDであってもよいし、特徴点ではない点群データを含んでもよい。また、ポイントクラウドのデータの送受信は、1つ、または、複数のランダムアクセス単位を基本として行われる。
三次元マップと自車検知三次元データとのマッチング方法として以下の方法を用いることができる。例えば、装置は、互いのポイントクラウドにおける点群の形状を比較し、特徴点間の類似度が高い部位が同一位置であると決定する。また、装置は、三次元マップがSWLDから構成される場合、SWLDを構成する特徴点と、自車検知三次元データから抽出した三次元特徴点とを比較してマッチングを行う。
ここで、高精度に自己位置推定を行うためには、(A)三次元マップと自車検知三次元データが取得できており、かつ、(B)それらの精度が予め定められた基準を満たすことが必要となる。しかしながら、以下のような異常ケースでは、(A)又は(B)が満たせない。
(1)三次元マップを通信経由で取得できない。
(2)三次元マップが存在しない、又は、三次元マップを取得したが破損している。
(3)自車のセンサが故障している、又は、悪天候のために、自車検知三次元データの生成精度が十分でない。
これらの異常ケースに対処するための動作を、以下で説明する。以下では、車を例に動作を説明するが、以下の手法は、ロボット又はドローンなど、自律的に移動する動物体全般に対して適用できる。
以下、三次元マップ又は自車検知三次元データにおける異常ケースに対応するための、本実施の形態に係る三次元情報処理装置の構成及び動作を説明する。図26は、本実施の形態に係る三次元情報処理装置700の構成例を示すブロック図である。
三次元情報処理装置700は、例えば、自動車等の動物体に搭載される。図26に示すように、三次元情報処理装置700は、三次元マップ取得部701と、自車検知データ取得部702と、異常ケース判定部703と、対処動作決定部704と、動作制御部705とを備える。
なお、三次元情報処理装置700は、二次元画像を取得するカメラ、又は、超音波或いはレーザーを用いた一次元データのセンサなど、自車周辺の構造物又は動物体を検知するための図示しない二次元又は一次元のセンサを備えてもよい。また、三次元情報処理装置700は、三次元マップを4G或いは5Gなどの移動体通信網、又は、車車間通信或いは路車間通信により取得するための通信部(図示せず)を備えてもよい。
三次元マップ取得部701は、走行経路近傍の三次元マップ711を取得する。例えば、三次元マップ取得部701は、移動体通信網、又は、車車間通信或いは路車間通信により三次元マップ711を取得する。
次に、自車検知データ取得部702は、センサ情報に基づいて自車検知三次元データ712を取得する。例えば、自車検知データ取得部702は、自車が備えるセンサにより取得されたセンサ情報に基づき、自車検知三次元データ712を生成する。
次に、異常ケース判定部703は、取得した三次元マップ711及び自車検知三次元データ712の少なくとも一方に対して予め定められたチェックを実施することで異常ケースを検出する。つまり、異常ケース判定部703は、取得した三次元マップ711及び自車検知三次元データ712の少なくとも一方が異常であるかを判定する。
異常ケースが検出された場合、対処動作決定部704は、異常ケースに対する対処動作を決定する。次に、動作制御部705は、三次元マップ取得部701など、対処動作の実施に必要となる各処理部の動作を制御する。
一方、異常ケースが検出されない場合、三次元情報処理装置700は、処理を終了する。
また、三次元情報処理装置700は、三次元マップ711と自車検知三次元データ712とを用いて、三次元情報処理装置700を有する車両の自己位置推定を行う。次に、三次元情報処理装置700は、自己位置推定の結果を用いて、当該車両を自動運転する。
このように、三次元情報処理装置700は、第1の三次元位置情報を含むマップデータ(三次元マップ711)を通信路を介して取得する。例えば、第1の三次元位置情報は、三次元の座標情報を有する部分空間を単位として符号化され、各々が1以上の部分空間の集合体であり、各々を独立に復号可能な複数のランダムアクセス単位を含む。例えば、第1の三次元位置情報は、三次元の特徴量が所定の閾値以上となる特徴点が符号化されたデータ(SWLD)である。
また、三次元情報処理装置700は、センサで検知した情報から第2の三次元位置情報(自車検知三次元データ712)を生成する。次に、三次元情報処理装置700は、第1の三次元位置情報又は第2の三次元位置情報に対して異常判定処理を実施することで、第1の三次元位置情報又は前記第2の三次元位置情報が異常であるかどうかを判定する。
三次元情報処理装置700は、第1の三次元位置情報又は第2の三次元位置情報が異常であると判定された場合、当該異常に対する対処動作を決定する。次に、三次元情報処理装置700は、対処動作の実施に必要となる制御を実施する。
これにより、三次元情報処理装置700は、第1の三次元位置情報又は第2の三次元位置情報の異常を検知し、対処動作を行うことができる。
(実施の形態5)
本実施の形態では、後続車両への三次元データ送信方法等について説明する。
図27は、本実施の形態に係る三次元データ作成装置810の構成例を示すブロック図である。この三次元データ作成装置810は、例えば、車両に搭載される。三次元データ作成装置810は、外部の交通監視クラウド、前走車両又は後続車両と三次元データの送受信を行うとともに、三次元データを作成及び蓄積する。
三次元データ作成装置810は、データ受信部811と、通信部812と、受信制御部813と、フォーマット変換部814と、複数のセンサ815と、三次元データ作成部816と、三次元データ合成部817と、三次元データ蓄積部818と、通信部819と、送信制御部820と、フォーマット変換部821と、データ送信部822とを備える。
データ受信部811は、交通監視クラウド又は前走車両から三次元データ831を受信する。三次元データ831は、例えば、自車両のセンサ815で検知不能な領域を含む、ポイントクラウド、可視光映像、奥行き情報、センサ位置情報、又は速度情報などの情報を含む。
通信部812は、交通監視クラウド又は前走車両と通信し、データ送信要求などを交通監視クラウド又は前走車両に送信する。
受信制御部813は、通信部812を介して、対応フォーマット等の情報を通信先と交換し、通信先との通信を確立する。
フォーマット変換部814は、データ受信部811が受信した三次元データ831にフォーマット変換等を行うことで三次元データ832を生成する。また、フォーマット変換部814は、三次元データ831が圧縮又は符号化されている場合には、伸張又は復号処理を行う。
複数のセンサ815は、LiDAR、可視光カメラ又は赤外線カメラなどの、車両の外部の情報を取得するセンサ群であり、センサ情報833を生成する。例えば、センサ情報833は、センサ815がLiDARなどのレーザセンサである場合、ポイントクラウド(点群データ)等の三次元データである。なお、センサ815は複数でなくてもよい。
三次元データ作成部816は、センサ情報833から三次元データ834を生成する。三次元データ834は、例えば、ポイントクラウド、可視光映像、奥行き情報、センサ位置情報、又は速度情報などの情報を含む。
三次元データ合成部817は、自車両のセンサ情報833に基づいて作成された三次元データ834に、交通監視クラウド又は前走車両等が作成した三次元データ832を合成することで、自車両のセンサ815では検知できない前走車両の前方の空間も含む三次元データ835を構築する。
三次元データ蓄積部818は、生成された三次元データ835等を蓄積する。
通信部819は、交通監視クラウド又は後続車両と通信し、データ送信要求などを交通監視クラウド又は後続車両に送信する。
送信制御部820は、通信部819を介して、対応フォーマット等の情報を通信先と交換し、通信先と通信を確立する。また、送信制御部820は、三次元データ合成部817で生成された三次元データ832の三次元データ構築情報と、通信先からのデータ送信要求とに基づき、送信対象の三次元データの空間である送信領域を決定する。
具体的には、送信制御部820は、交通監視クラウド又は後続車両からのデータ送信要求に応じて、後続車両のセンサでは検知できない自車両の前方の空間を含む送信領域を決定する。また、送信制御部820は、三次元データ構築情報に基づいて送信可能な空間又は送信済み空間の更新有無等を判断することで送信領域を決定する。例えば、送信制御部820は、データ送信要求で指定された領域であり、かつ、対応する三次元データ835が存在する領域を送信領域に決定する。そして、送信制御部820は、通信先が対応するフォーマット、及び送信領域をフォーマット変換部821に通知する。
フォーマット変換部821は、三次元データ蓄積部818に蓄積されている三次元データ835のうち、送信領域の三次元データ836を、受信側が対応しているフォーマットへ変換することで三次元データ837を生成する。なお、フォーマット変換部821は、三次元データ837を圧縮又は符号化することでデータ量を削減してもよい。
データ送信部822は、三次元データ837を交通監視クラウド又は後続車両に送信する。この三次元データ837は、例えば、後続車両の死角になる領域を含む、自車両の前方のポイントクラウド、可視光映像、奥行き情報、又はセンサ位置情報などの情報を含む。
なお、ここでは、フォーマット変換部814及び821にてフォーマット変換等が行われる例を述べたが、フォーマット変換は行われなくてもよい。
このような構成により、三次元データ作成装置810は、自車両のセンサ815では検知できない領域の三次元データ831を外部から取得し、三次元データ831と自車両のセンサ815で検知したセンサ情報833に基づく三次元データ834とを合成することで三次元データ835を生成する。これにより、三次元データ作成装置810は、自車両のセンサ815で検知できない範囲の三次元データを生成できる。
また、三次元データ作成装置810は、交通監視クラウド又は後続車両からのデータ送信要求に応じて、後続車両のセンサでは検知できない自車両の前方の空間を含む三次元データを、交通監視クラウド又は後続車両等へ送信できる。
(実施の形態6)
実施の形態5において、車両等のクライアント装置が、他の車両又は交通監視クラウド等のサーバに三次元データを送信する例を説明した。本実施の形態では、クライアント装置は、サーバ又は他のクライアント装置にセンサで得られたセンサ情報を送信する。
まず、本実施の形態に係るシステムの構成を説明する。図28は、本実施の形態に係る三次元マップ及びセンサ情報の送受信システムの構成を示す図である。このシステムは、サーバ901と、クライアント装置902A及び902Bを含む。なお、クライアント装置902A及び902Bを特に区別しない場合には、クライアント装置902とも記す。
クライアント装置902は、例えば、車両等の移動体に搭載される車載機器である。サーバ901は、例えば、交通監視クラウド等であり、複数のクライアント装置902と通信可能である。
サーバ901は、クライアント装置902に、ポイントクラウドから構成される三次元マップを送信する。なお、三次元マップの構成はポイントクラウドに限定されず、メッシュ構造等、他の三次元データを表すものであってもよい。
クライアント装置902は、サーバ901に、クライアント装置902が取得したセンサ情報を送信する。センサ情報は、例えば、LiDAR取得情報、可視光画像、赤外画像、デプス画像、センサ位置情報及び速度情報のうち少なくとも一つを含む。
サーバ901とクライアント装置902との間で送受信されるデータは、データ削減のために圧縮されてもよいし、データの精度を維持するために非圧縮のままでも構わない。データを圧縮する場合、ポイントクラウドには例えば8分木構造に基づく三次元圧縮方式を用いることができる。また、可視光画像、赤外画像、及びデプス画像には二次元の画像圧縮方式を用いることできる。二次元の画像圧縮方式とは、例えば、MPEGで規格化されたMPEG−4 AVC又はHEVC等である。
また、サーバ901は、クライアント装置902からの三次元マップの送信要求に応じてサーバ901で管理する三次元マップをクライアント装置902に送信する。なお、サーバ901はクライアント装置902からの三次元マップの送信要求を待たずに三次元マップを送信してもよい。例えば、サーバ901は、予め定められた空間にいる1つ以上のクライアント装置902に三次元マップをブロードキャストしても構わない。また、サーバ901は、一度送信要求を受けたクライアント装置902に、一定時間毎にクライアント装置902の位置に適した三次元マップを送信してもよい。また、サーバ901は、サーバ901が管理する三次元マップが更新される度にクライアント装置902に三次元マップを送信してもよい。
クライアント装置902は、サーバ901に三次元マップの送信要求を出す。例えば、クライアント装置902が、走行時に自己位置推定を行いたい場合に、クライアント装置902は、三次元マップの送信要求をサーバ901に送信する。
なお、次のような場合に、クライアント装置902はサーバ901に三次元マップの送信要求を出してもよい。クライアント装置902の保持する三次元マップが古い場合に、クライアント装置902はサーバ901に三次元マップの送信要求を出してもよい。例えば、クライアント装置902が三次元マップを取得してから一定期間が経過した場合に、クライアント装置902はサーバ901に三次元マップの送信要求を出してもよい。
クライアント装置902が保持する三次元マップで示される空間から、クライアント装置902が外に出る一定時刻前に、クライアント装置902はサーバ901に三次元マップの送信要求を出してもよい。例えば、クライアント装置902が、クライアント装置902が保持する三次元マップで示される空間の境界から予め定められた距離以内に存在する場合に、クライアント装置902はサーバ901に三次元マップの送信要求を出してもよい。また、クライアント装置902の移動経路及び移動速度が把握できている場合には、これらに基づき、クライアント装置902が保持する三次元マップで示される空間から、クライアント装置902が外に出る時刻を予測してもよい。
クライアント装置902がセンサ情報から作成した三次元データと三次元マップとの位置合せ時の誤差が一定以上の場合に、クライアント装置902はサーバ901に三次元マップの送信要求を出してもよい。
クライアント装置902は、サーバ901から送信されたセンサ情報の送信要求に応じて、サーバ901にセンサ情報を送信する。なお、クライアント装置902はサーバ901からのセンサ情報の送信要求を待たずにセンサ情報をサーバ901に送ってもよい。例えば、クライアント装置902は、一度サーバ901からセンサ情報の送信要求を得た場合、一定期間の間、定期的にセンサ情報をサーバ901に送信してもよい。また、クライアント装置902は、クライアント装置902がセンサ情報を元に作成した三次元データと、サーバ901から得た三次元マップとの位置合せ時の誤差が一定以上の場合、クライアント装置902の周辺の三次元マップに変化が生じた可能性があると判断し、その旨とセンサ情報とをサーバ901に送信してもよい。
サーバ901は、クライアント装置902にセンサ情報の送信要求を出す。例えば、サーバ901は、クライアント装置902から、GPS等のクライアント装置902の位置情報を受信する。サーバ901は、クライアント装置902の位置情報に基づき、サーバ901が管理する三次元マップにおいて情報が少ない空間にクライアント装置902が近づいていると判断した場合、新たな三次元マップを生成するためにクライアント装置902にセンサ情報の送信要求を出す。また、サーバ901は、三次元マップを更新したい場合、積雪時或いは災害時などの道路状況を確認したい場合、渋滞状況、或いは事件事故状況等を確認したい場合に、センサ情報の送信要求を出してもよい。
また、クライアント装置902は、サーバ901から受け取るセンサ情報の送信要求の受信時における通信状態又は帯域に応じて、サーバ901に送信するセンサ情報のデータ量を設定してもよい。サーバ901に送信するセンサ情報のデータ量を設定するというのは、例えば、当該データそのものを増減させること、又は圧縮方式を適宜選択することである。
図29は、クライアント装置902の構成例を示すブロック図である。クライアント装置902は、サーバ901からポイントクラウド等で構成される三次元マップを受信し、クライアント装置902のセンサ情報に基づいて作成した三次元データからクライアント装置902の自己位置を推定する。また、クライアント装置902は、取得したセンサ情報をサーバ901に送信する。
クライアント装置902は、データ受信部1011と、通信部1012と、受信制御部1013と、フォーマット変換部1014と、複数のセンサ1015と、三次元データ作成部1016と、三次元画像処理部1017と、三次元データ蓄積部1018と、フォーマット変換部1019と、通信部1020と、送信制御部1021と、データ送信部1022とを備える。
データ受信部1011は、サーバ901から三次元マップ1031を受信する。三次元マップ1031は、WLD又はSWLD等のポイントクラウドを含むデータである。三次元マップ1031には、圧縮データ、及び非圧縮データのどちらが含まれていてもよい。
通信部1012は、サーバ901と通信し、データ送信要求(例えば、三次元マップの送信要求)などをサーバ901に送信する。
受信制御部1013は、通信部1012を介して、対応フォーマット等の情報を通信先と交換し、通信先との通信を確立する。
フォーマット変換部1014は、データ受信部1011が受信した三次元マップ1031にフォーマット変換等を行うことで三次元マップ1032を生成する。また、フォーマット変換部1014は、三次元マップ1031が圧縮又は符号化されている場合には、伸張又は復号処理を行う。なお、フォーマット変換部1014は、三次元マップ1031が非圧縮データであれば、伸張又は復号処理を行わない。
複数のセンサ1015は、LiDAR、可視光カメラ、赤外線カメラ、又はデプスセンサなど、クライアント装置902が搭載されている車両の外部の情報を取得するセンサ群であり、センサ情報1033を生成する。例えば、センサ情報1033は、センサ1015がLiDARなどのレーザセンサである場合、ポイントクラウド(点群データ)等の三次元データである。なお、センサ1015は複数でなくてもよい。
三次元データ作成部1016は、センサ情報1033に基づいて自車両の周辺の三次元データ1034を作成する。例えば、三次元データ作成部1016は、LiDARで取得した情報と、可視光カメラで得られた可視光映像とを用いて自車両の周辺の色情報付きのポイントクラウドデータを作成する。
三次元画像処理部1017は、受信したポイントクラウド等の三次元マップ1032と、センサ情報1033から生成した自車両の周辺の三次元データ1034とを用いて、自車両の自己位置推定処理等を行う。なお、三次元画像処理部1017は、三次元マップ1032と三次元データ1034とを合成することで自車両の周辺の三次元データ1035を作成し、作成した三次元データ1035を用いて自己位置推定処理を行ってもよい。
三次元データ蓄積部1018は、三次元マップ1032、三次元データ1034及び三次元データ1035等を蓄積する。
フォーマット変換部1019は、センサ情報1033を、受信側が対応しているフォーマットへ変換することでセンサ情報1037を生成する。なお、フォーマット変換部1019は、センサ情報1037を圧縮又は符号化することでデータ量を削減してもよい。また、フォーマット変換部1019は、フォーマット変換をする必要がない場合は処理を省略してもよい。また、フォーマット変換部1019は、送信範囲の指定に応じて送信するデータ量を制御してもよい。
通信部1020は、サーバ901と通信し、データ送信要求(センサ情報の送信要求)などをサーバ901から受信する。
送信制御部1021は、通信部1020を介して、対応フォーマット等の情報を通信先と交換し、通信を確立する。
データ送信部1022は、センサ情報1037をサーバ901に送信する。センサ情報1037は、例えば、LiDARで取得した情報、可視光カメラで取得した輝度画像、赤外線カメラで取得した赤外画像、デプスセンサで取得したデプス画像、センサ位置情報、及び速度情報など、複数のセンサ1015によって取得した情報を含む。
次に、サーバ901の構成を説明する。図30は、サーバ901の構成例を示すブロック図である。サーバ901は、クライアント装置902から送信されたセンサ情報を受信し、受信したセンサ情報に基づいて三次元データを作成する。サーバ901は、作成した三次元データを用いて、サーバ901が管理する三次元マップを更新する。また、サーバ901は、クライアント装置902からの三次元マップの送信要求に応じて、更新した三次元マップをクライアント装置902に送信する。
サーバ901は、データ受信部1111と、通信部1112と、受信制御部1113と、フォーマット変換部1114と、三次元データ作成部1116と、三次元データ合成部1117と、三次元データ蓄積部1118と、フォーマット変換部1119と、通信部1120と、送信制御部1121と、データ送信部1122とを備える。
データ受信部1111は、クライアント装置902からセンサ情報1037を受信する。センサ情報1037は、例えば、LiDARで取得した情報、可視光カメラで取得した輝度画像、赤外線カメラで取得した赤外画像、デプスセンサで取得したデプス画像、センサ位置情報、及び速度情報などを含む。
通信部1112は、クライアント装置902と通信し、データ送信要求(例えば、センサ情報の送信要求)などをクライアント装置902に送信する。
受信制御部1113は、通信部1112を介して、対応フォーマット等の情報を通信先と交換し、通信を確立する。
フォーマット変換部1114は、受信したセンサ情報1037が圧縮又は符号化されている場合には、伸張又は復号処理を行うことでセンサ情報1132を生成する。なお、フォーマット変換部1114は、センサ情報1037が非圧縮データであれば、伸張又は復号処理を行わない。
三次元データ作成部1116は、センサ情報1132に基づいてクライアント装置902の周辺の三次元データ1134を作成する。例えば、三次元データ作成部1116は、LiDARで取得した情報と、可視光カメラで得られた可視光映像とを用いてクライアント装置902の周辺の色情報付ポイントクラウドデータを作成する。
三次元データ合成部1117は、センサ情報1132を元に作成した三次元データ1134を、サーバ901が管理する三次元マップ1135に合成することで三次元マップ1135を更新する。
三次元データ蓄積部1118は、三次元マップ1135等を蓄積する。
フォーマット変換部1119は、三次元マップ1135を、受信側が対応しているフォーマットへ変換することで三次元マップ1031を生成する。なお、フォーマット変換部1119は、三次元マップ1135を圧縮又は符号化することでデータ量を削減してもよい。また、フォーマット変換部1119は、フォーマット変換をする必要がない場合は処理を省略してもよい。また、フォーマット変換部1119は、送信範囲の指定に応じて送信するデータ量を制御してもよい。
通信部1120は、クライアント装置902と通信し、データ送信要求(三次元マップの送信要求)などをクライアント装置902から受信する。
送信制御部1121は、通信部1120を介して、対応フォーマット等の情報を通信先と交換し、通信を確立する。
データ送信部1122は、三次元マップ1031をクライアント装置902に送信する。三次元マップ1031は、WLD又はSWLD等のポイントクラウドを含むデータである。三次元マップ1031には、圧縮データ、及び非圧縮データのどちらが含まれていてもよい。
次に、クライアント装置902の動作フローについて説明する。図31は、クライアント装置902による三次元マップ取得時の動作を示すフローチャートである。
まず、クライアント装置902は、サーバ901へ三次元マップ(ポイントクラウド等)の送信を要求する(S1001)。このとき、クライアント装置902は、GPS等で得られたクライアント装置902の位置情報を合わせて送信することで、その位置情報に関連する三次元マップの送信をサーバ901に要求してもよい。
次に、クライアント装置902は、サーバ901から三次元マップを受信する(S1002)。受信した三次元マップが圧縮データであれば、クライアント装置902は、受信した三次元マップを復号して非圧縮の三次元マップを生成する(S1003)。
次に、クライアント装置902は、複数のセンサ1015で得られたセンサ情報1033からクライアント装置902の周辺の三次元データ1034を作成する(S1004)。次に、クライアント装置902は、サーバ901から受信した三次元マップ1032と、センサ情報1033から作成した三次元データ1034とを用いてクライアント装置902の自己位置を推定する(S1005)。
図32は、クライアント装置902によるセンサ情報の送信時の動作を示すフローチャートである。まず、クライアント装置902は、サーバ901からセンサ情報の送信要求を受信する(S1011)。送信要求を受信したクライアント装置902は、センサ情報1037をサーバ901に送信する(S1012)。なお、クライアント装置902は、センサ情報1033が複数のセンサ1015で得られた複数の情報を含む場合、各情報を、各情報に適した圧縮方式で圧縮することでセンサ情報1037を生成してもよい。
次に、サーバ901の動作フローについて説明する。図33は、サーバ901によるセンサ情報の取得時の動作を示すフローチャートである。まず、サーバ901は、クライアント装置902へセンサ情報の送信を要求する(S1021)。次に、サーバ901は、当該要求に応じてクライアント装置902から送信されたセンサ情報1037を受信する(S1022)。次に、サーバ901は、受信したセンサ情報1037を用いて三次元データ1134を作成する(S1023)。次に、サーバ901は、作成した三次元データ1134を三次元マップ1135に反映する(S1024)。
図34は、サーバ901による三次元マップの送信時の動作を示すフローチャートである。まず、サーバ901は、クライアント装置902から三次元マップの送信要求を受信する(S1031)。三次元マップの送信要求を受信したサーバ901は、クライアント装置902へ三次元マップ1031を送信する(S1032)。このとき、サーバ901は、クライアント装置902の位置情報に合わせてその付近の三次元マップを抽出し、抽出した三次元マップを送信してもよい。また、サーバ901は、ポイントクラウドで構成される三次元マップを、例えば8分木構造による圧縮方式等を用いて圧縮し、圧縮後の三次元マップを送信してもよい。
以下、本実施の形態の変形例について説明する。
サーバ901は、クライアント装置902から受信したセンサ情報1037を用いてクライアント装置902の位置付近の三次元データ1134を作成する。次に、サーバ901は、作成した三次元データ1134と、サーバ901が管理する同エリアの三次元マップ1135とのマッチングを行うことによって、三次元データ1134と三次元マップ1135との差分を算出する。サーバ901は、差分が予め定められた閾値以上の場合は、クライアント装置902の周辺で何らかの異常が発生したと判断する。例えば、地震等の自然災害によって地盤沈下等が発生した際などに、サーバ901が管理する三次元マップ1135と、センサ情報1037を基に作成した三次元データ1134との間に大きな差が発生することが考えられる。
センサ情報1037は、センサの種類、センサの性能、及びセンサの型番のうち少なくとも一つを示す情報を含んでもよい。また、センサ情報1037に、センサの性能に応じたクラスID等が付加されてもよい。例えば、センサ情報1037がLiDARで取得された情報である場合、数mm単位の精度で情報を取得できるセンサをクラス1、数cm単位の精度で情報を取得できるセンサをクラス2、数m単位の精度で情報を取得できるセンサをクラス3のように、センサの性能に識別子を割り当てることが考えられる。また、サーバ901は、センサの性能情報等を、クライアント装置902の型番から推定してもよい。例えば、クライアント装置902が車両に搭載されている場合、サーバ901は、当該車両の車種からセンサのスペック情報を判断してもよい。この場合、サーバ901は、車両の車種の情報を事前に取得していてもよいし、センサ情報に、当該情報が含まれてもよい。また、サーバ901は取得したセンサ情報1037を用いて、センサ情報1037を用いて作成した三次元データ1134に対する補正の度合いを切り替えてもよい。例えば、センサ性能が高精度(クラス1)である場合、サーバ901は、三次元データ1134に対する補正を行わない。センサ性能が低精度(クラス3)である場合、サーバ901は、三次元データ1134に、センサの精度に応じた補正を適用する。例えば、サーバ901は、センサの精度が低いほど補正の度合い(強度)を強くする。
サーバ901は、ある空間にいる複数のクライアント装置902に同時にセンサ情報の送信要求を出してもよい。サーバ901は、複数のクライアント装置902から複数のセンサ情報を受信した場合に、全てのセンサ情報を三次元データ1134の作成に利用する必要はなく、例えば、センサの性能に応じて、利用するセンサ情報を選択してもよい。例えば、サーバ901は、三次元マップ1135を更新する場合、受信した複数のセンサ情報の中から高精度なセンサ情報(クラス1)を選別し、選別したセンサ情報を用いて三次元データ1134を作成してもよい。
サーバ901は、交通監視クラウド等のサーバのみに限定されず、他のクライアント装置(車載)であってもよい。図35は、この場合のシステム構成を示す図である。
例えば、クライアント装置902Cが近くにいるクライアント装置902Aにセンサ情報の送信要求を出し、クライアント装置902Aからセンサ情報を取得する。そして、クライアント装置902Cは、取得したクライアント装置902Aのセンサ情報を用いて三次元データを作成し、クライアント装置902Cの三次元マップを更新する。これにより、クライアント装置902Cは、クライアント装置902Aから取得可能な空間の三次元マップを、クライアント装置902Cの性能を活かして生成できる。例えば、クライアント装置902Cの性能が高い場合に、このようなケースが発生すると考えられる。
また、この場合、センサ情報を提供したクライアント装置902Aは、クライアント装置902Cが生成した高精度な三次元マップを取得する権利が与えられる。クライアント装置902Aは、その権利に従ってクライアント装置902Cから高精度な三次元マップを受信する。
また、クライアント装置902Cは近くにいる複数のクライアント装置902(クライアント装置902A及びクライアント装置902B)にセンサ情報の送信要求を出してもよい。クライアント装置902A又はクライアント装置902Bのセンサが高性能である場合には、クライアント装置902Cは、この高性能なセンサで得られたセンサ情報を用いて三次元データを作成できる。
図36は、サーバ901及びクライアント装置902の機能構成を示すブロック図である。サーバ901は、例えば、三次元マップを圧縮及び復号する三次元マップ圧縮/復号処理部1201と、センサ情報を圧縮及び復号するセンサ情報圧縮/復号処理部1202とを備える。
クライアント装置902は、三次元マップ復号処理部1211と、センサ情報圧縮処理部1212とを備える。三次元マップ復号処理部1211は、圧縮された三次元マップの符号化データを受信し、符号化データを復号して三次元マップを取得する。センサ情報圧縮処理部1212は、取得したセンサ情報から作成した三次元データの代わりに、センサ情報そのものを圧縮し、圧縮したセンサ情報の符号化データをサーバ901へ送信する。この構成により、クライアント装置902は、三次元マップ(ポイントクラウド等)を復号する処理を行う処理部(装置又はLSI)を内部に保持すればよく、三次元マップ(ポイントクラウド等)の三次元データを圧縮する処理を行う処理部を内部に保持する必要がない。これにより、クライアント装置902のコスト及び消費電力等を抑えることができる。
以上のように、本実施の形態に係るクライアント装置902は、移動体に搭載され、移動体に搭載されたセンサ1015により得られた、移動体の周辺状況を示すセンサ情報1033から、移動体の周辺の三次元データ1034を作成する。クライアント装置902は、作成された三次元データ1034を用いて移動体の自己位置を推定する。クライアント装置902は、取得したセンサ情報1033をサーバ901又は他の移動体902に送信する。
これによれば、クライアント装置902は、センサ情報1033をサーバ901等に送信する。これにより、三次元データを送信する場合に比べて、送信データのデータ量を削減できる可能性がある。また、三次元データの圧縮又は符号化等の処理をクライアント装置902で行う必要がないので、クライアント装置902の処理量を削減できる。よって、クライアント装置902は、伝送されるデータ量の削減、又は、装置の構成の簡略化を実現できる。
また、クライアント装置902は、さらに、サーバ901に三次元マップの送信要求を送信し、サーバ901から三次元マップ1031を受信する。クライアント装置902は、自己位置の推定では、三次元データ1034と三次元マップ1032とを用いて、自己位置を推定する。
また、センサ情報1033は、レーザセンサで得られた情報、輝度画像、赤外画像、デプス画像、センサの位置情報、及びセンサの速度情報のうち少なくとも一つを含む。
また、センサ情報1033は、センサの性能を示す情報を含む。
また、クライアント装置902は、センサ情報1033を符号化又は圧縮し、センサ情報の送信では、符号化又は圧縮後のセンサ情報1037を、サーバ901又は他の移動体902に送信する。これによれば、クライアント装置902は、伝送されるデータ量を削減できる。
例えば、クライアント装置902は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態に係るサーバ901は、移動体に搭載されるクライアント装置902と通信可能であり、移動体に搭載されたセンサ1015により得られた、移動体の周辺状況を示すセンサ情報1037をクライアント装置902から受信する。サーバ901は、受信したセンサ情報1037から、移動体の周辺の三次元データ1134を作成する。
これによれば、サーバ901は、クライアント装置902から送信されたセンサ情報1037を用いて三次元データ1134を作成する。これにより、クライアント装置902が三次元データを送信する場合に比べて、送信データのデータ量を削減できる可能性がある。また、三次元データの圧縮又は符号化等の処理をクライアント装置902で行う必要がないので、クライアント装置902の処理量を削減できる。よって、サーバ901は、伝送されるデータ量の削減、又は、装置の構成の簡略化を実現できる。
また、サーバ901は、さらに、クライアント装置902にセンサ情報の送信要求を送信する。
また、サーバ901は、さらに、作成された三次元データ1134を用いて三次元マップ1135を更新し、クライアント装置902からの三次元マップ1135の送信要求に応じて三次元マップ1135をクライアント装置902に送信する。
また、センサ情報1037は、レーザセンサで得られた情報、輝度画像、赤外画像、デプス画像、センサの位置情報、及びセンサの速度情報のうち少なくとも一つを含む。
また、センサ情報1037は、センサの性能を示す情報を含む。
また、サーバ901は、さらに、センサの性能に応じて、三次元データを補正する。これによれば、当該三次元データ作成方法は、三次元データの品質を向上できる。
また、サーバ901は、センサ情報の受信では、複数のクライアント装置902から複数のセンサ情報1037を受信し、複数のセンサ情報1037に含まれるセンサの性能を示す複数の情報に基づき、三次元データ1134の作成に用いるセンサ情報1037を選択する。これによれば、サーバ901は、三次元データ1134の品質を向上できる。
また、サーバ901は、受信したセンサ情報1037を復号又は伸張し、復号又は伸張後のセンサ情報1132から、三次元データ1134を作成する。これによれば、サーバ901は、伝送されるデータ量を削減できる。
例えば、サーバ901は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
(実施の形態7)
本実施の形態では、インター予測処理を用いた三次元データの符号化方法及び復号方法について説明する。
図37は、本実施の形態に係る三次元データ符号化装置1300のブロック図である。この三次元データ符号装置1300は、三次元データを符号化することで符号化信号である符号化ビットストリーム(以下、単にビットストリームとも記す)を生成する。図37に示すように、三次元データ符号化装置1300は、分割部1301と、減算部1302と、変換部1303と、量子化部1304と、逆量子化部1305と、逆変換部1306と、加算部1307と、参照ボリュームメモリ1308と、イントラ予測部1309と、参照スペースメモリ1310と、インター予測部1311と、予測制御部1312と、エントロピー符号化部1313とを備える。
分割部1301は、三次元データに含まれる各スペース(SPC)を符号化単位である複数のボリューム(VLM)に分割する。また、分割部1301は、各ボリューム内のボクセルを8分木表現化(Octree化)する。なお、分割部1301は、スペースとボリュームを同一サイズとし、スペースを8分木表現化してもよい。また、分割部1301は、8分木化に必要な情報(深度情報など)をビットストリームのヘッダ等に付加してもよい。
減算部1302は、分割部1301から出力されたボリューム(符号化対象ボリューム)と、後述するイントラ予測又はインター予測によって生成される予測ボリュームとの差分を算出し、算出された差分を予測残差として変換部1303に出力する。図38は、予測残差の算出例を示す図である。なお、ここで示す符号化対象ボリューム及び予測ボリュームのビット列は、例えば、ボリュームに含まれる三次元点(例えばポイントクラウド)の位置を示す位置情報である。
以下、8分木表現とボクセルのスキャン順について説明する。ボリュームは8分木構造に変換(8分木化)された後、符号化される。8分木構造はノードとリーフとで構成される。各ノードは8つのノード又はリーフを持ち、各リーフはボクセル(VXL)情報を持つ。図39は、複数のボクセルを含むボリュームの構造例を示す図である。図40は、図39に示すボリュームを8分木構造に変換した例を示す図である。ここで、図40に示すリーフのうち、リーフ1、2、3はそれぞれ図39に示すボクセルVXL1、VXL2、VXL3を表し、点群を含むVXL(以下、有効VXL)を表現している。
8分木は、例えば0、1の二値列で表現される。例えば、ノード又は有効VXLを値1、それ以外を値0とすると、各ノード及びリーフには図40に示す二値列が割当てられる。そして、幅優先又は深さ優先のスキャン順に応じて、この二値列がスキャンされる。例えば幅優先でスキャンされた場合、図41のAに示す二値列が得られる。深さ優先でスキャンした場合は図41のBに示す二値列が得られる。このスキャンにより得られた二値列はエントロピー符号化によって符号化され情報量が削減される。
次に、8分木表現における深度情報について説明する。8分木表現における深度は、ボリューム内に含まれるポイントクラウド情報を、どの粒度まで保持するかをコントロールするために使用される。深度を大きく設定すると、より細かいレベルまでポイントクラウド情報を再現することができるが、ノード及びリーフを表現するためのデータ量が増える。逆に深度を小さく設定すると、データ量が減少するが、複数の異なる位置及び色の異なるポイントクラウド情報が同一位置かつ同一色であるとみなされるため、本来のポイントクラウド情報が持つ情報を失うことになる。
例えば、図42は、図40に示す深度=2の8分木を、深度=1の8分木で表現した例を示す図である。図42に示す8分木は図40に示す8分木よりデータ量が少なくなる。つまり、図42に示す8分木は図42に示す8分木より二値列化後のビット数が少ない。ここで、図40に示すリーフ1とリーフ2が図41に示すリーフ1で表現されることになる。つまり、図40に示すリーフ1とリーフ2とが異なる位置であったという情報が失われる。
図43は、図42に示す8分木に対応するボリュームを示す図である。図39に示すVXL1とVXL2が図43に示すVXL12に対応する。この場合、三次元データ符号化装置1300は、図43に示すVXL12の色情報を、図39に示すVXL1とVXL2との色情報から生成する。例えば、三次元データ符号化装置1300は、VXL1とVXL2との色情報の平均値、中間値、又は重み平均値などをVXL12の色情報として算出する。このように、三次元データ符号化装置1300は、8分木の深度を変えることで、データ量の削減を制御してもよい。
三次元データ符号化装置1300は、8分木の深度情報を、ワールド単位、スペース単位、及びボリューム単位のいずれの単位で設定しても構わない。またその際、三次元データ符号化装置1300は、ワールドのヘッダ情報、スペースのヘッダ情報、又はボリュームのヘッダ情報に深度情報を付加してもよい。また、時間の異なる全てのワールド、スペース、及びボリュームで深度情報して同一の値を使用してもよい。この場合、三次元データ符号化装置1300は、全時間のワールドを管理するヘッダ情報に深度情報を付加してもよい。
ボクセルに色情報が含まれる場合には、変換部1303は、ボリューム内のボクセルの色情報の予測残差に対し、直交変換等の周波数変換を適用する。例えば、変換部1303は、あるスキャン順で予測残差をスキャンすることで一次元配列を作成する。その後、変換部1303は、作成した一次元配列に一次元の直交変換を適用することで一次元配列を周波数領域に変換する。これにより、ボリューム内の予測残差の値が近い場合には低域の周波数成分の値が大きくなり、高域の周波数成分の値が小さくなる。よって、量子化部1304においてより効率的に符号量を削減することができる。
また、変換部1303は、一次元ではなく、二次元以上の直交変換を用いてもよい。例えば、変換部1303は、あるスキャン順で予測残差を二次元配列にマッピングし、得られた二次元配列に二次元直交変換を適用する。また、変換部1303は、複数の直交変換方式から使用する直交変換方式を選択してもよい。この場合、三次元データ符号化装置1300は、どの直交変換方式を用いたかを示す情報をビットストリームに付加する。また、変換部1303は、次元の異なる複数の直交変換方式から使用する直交変換方式を選択してもよい。この場合、三次元データ符号化装置1300は、どの次元の直交変換方式を用いたかをビットストリームに付加する。
例えば、変換部1303は、予測残差のスキャン順を、ボリューム内の8分木におけるスキャン順(幅優先又は深さ優先など)に合わせる。これにより、予測残差のスキャン順を示す情報をビットストリームに付加する必要がないので、オーバーヘッドを削減できる。また、変換部1303は、8分木のスキャン順とは異なるスキャン順を適用してもよい。この場合、三次元データ符号化装置1300は、予測残差のスキャン順を示す情報をビットストリームに付加する。これにより、三次元データ符号化装置1300は、予測残差を効率よく符号化することができる。また、三次元データ符号化装置1300は、8分木のスキャン順を適用するか否かを示す情報(フラグ等)をビットストリームに付加し、8分木のスキャン順を適用しない場合に、予測残差のスキャン順を示す情報をビットストリームに付加してもよい。
変換部1303は、色情報の予測残差だけでなく、ボクセルが持つその他の属性情報を変換してもよい。例えば、変換部1303は、ポイントクラウドをLiDAR等で取得した際に得られる反射度等の情報を変換し、符号化してもよい。
変換部1303は、スペースが色情報等の属性情報を持たない場合は、処理をスキップしてもよい。また、三次元データ符号化装置1300は、変換部1303の処理をスキップするか否かを示す情報(フラグ)をビットストリームに付加してもよい。
量子化部1304は、変換部1303で生成された予測残差の周波数成分に対し、量子化制御パラメータを用いて量子化を行うことで量子化係数を生成する。これにより情報量が削減される。生成された量子化係数はエントロピー符号化部1313に出力される。量子化部1304は、量子化制御パラメータを、ワールド単位、スペース単位、又はボリューム単位で制御してもよい。その際には、三次元データ符号化装置1300は、量子化制御パラメータをそれぞれのヘッダ情報等に付加する。また、量子化部1304は、予測残差の周波数成分毎に、重みを変えて量子化制御を行ってもよい。例えば、量子化部1304は、低周波数成分は細かく量子化し、高周波成分は粗く量子化してもよい。この場合、三次元データ符号化装置1300は、各周波数成分の重みを表すパラメータをヘッダに付加してもよい。
量子化部1304は、スペースが色情報等の属性情報を持たない場合は、処理をスキップしてもよい。また、三次元データ符号化装置1300は、量子化部1304の処理をスキップするか否かを示す情報(フラグ)をビットストリームに付加してもよい。
逆量子化部1305は、量子化制御パラメータを用いて、量子化部1304で生成された量子化係数に逆量子化を行うことで予測残差の逆量子化係数を生成し、生成した逆量子化係数を逆変換部1306に出力する。
逆変換部1306は、逆量子化部1305で生成された逆量子化係数に対し逆変換を適用することで逆変換適用後予測残差を生成する。この逆変換適用後予測残差は、量子化後に生成された予測残差であるため、変換部1303が出力した予測残差とは完全には一致しなくてもよい。
加算部1307は、逆変換部1306で生成された逆変換適用後予測残差と、量子化前の予測残差の生成に用いられた、後述するイントラ予測又はインター予測により生成された予測ボリュームとを加算して再構成ボリュームを生成する。この再構成ボリュームは、参照ボリュームメモリ1308、又は、参照スペースメモリ1310に格納される。
イントラ予測部1309は、参照ボリュームメモリ1308に格納された隣接ボリュームの属性情報を用いて、符号化対象ボリュームの予測ボリュームを生成する。属性情報とは、ボクセルの色情報又は反射度を含む。イントラ予測部1309は、符号化対象ボリュームの色情報又は反射度の予測値を生成する。
図44は、イントラ予測部1309の動作を説明するための図である。例えば、イントラ予測部1309は、図44に示す、符号化対象ボリューム(ボリュームidx=3)の予測ボリュームを、隣接ボリューム(ボリュームidx=0)から生成する。ここで、ボリュームidxとはスペース内のボリュームに対し付加される識別子情報であり、各ボリュームに異なる値が割当てられる。ボリュームidxの割当ての順番は符号化順と同じ順番であってもよいし、符号化順とは異なる順番であってもよい。例えば、イントラ予測部1309は、図44に示す符号化対象ボリュームの色情報の予測値として、隣接ボリュームであるボリュームidx=0内に含まれるボクセルの色情報の平均値を用いる。この場合、符号化対象ボリューム内に含まれる各ボクセルの色情報から、色情報の予測値が差し引かれることで予測残差が生成される。この予測残差に対して変換部1303以降の処理が行われる。また、この場合、三次元データ符号化装置1300は、隣接ボリューム情報と、予測モード情報とをビットストリームに付加する。ここで隣接ボリューム情報とは、予測に用いた隣接ボリュームを示す情報であり、例えば、予測に用いた隣接ボリュームのボリュームidxを示す。また、予測モード情報とは、予測ボリュームの生成に使用したモードを示す。モードとは、例えば、隣接ボリューム内のボクセルの平均値から予測値を生成する平均値モード、又は隣接ボリューム内のボクセルの中間値から予測値を生成する中間値モード等である。
イントラ予測部1309は、予測ボリュームを、複数の隣接ボリュームから生成してもよい。例えば、図44に示す構成において、イントラ予測部1309は、ボリュームidx=0のボリュームから予測ボリューム0を生成し、ボリュームidx=1のボリュームから予測ボリューム1を生成する。そして、イントラ予測部1309は、予測ボリューム0と予測ボリューム1の平均を最終的な予測ボリュームとして生成する。この場合、三次元データ符号化装置1300は、予測ボリュームの生成に使用した複数のボリュームの複数のボリュームidxをビットストリームに付加してもよい。
図45は、本実施の形態に係るインター予測処理を模式的に示す図である。インター予測部1311は、ある時刻T_Curのスペース(SPC)を、異なる時刻T_LXの符号化済みスペースを用いて符号化(インター予測)する。この場合、インター予測部1311は、異なる時刻T_LXの符号化済みスペースに回転及び並進処理を適用して符号化処理を行う。
また、三次元データ符号化装置1300は、異なる時刻T_LXのスペースに適用した回転及び並進処理に関わるRT情報をビットストリームに付加する。異なる時刻T_LXとは、例えば、前記ある時刻T_Curより前の時刻T_L0である。このとき、三次元データ符号化装置1300は、時刻T_L0のスペースに適用した回転及び並進処理に関わるRT情報RT_L0をビットストリームに付加してもよい。
または、異なる時刻T_LXとは、例えば、前記ある時刻T_Curより後の時刻T_L1である。このとき、三次元データ符号化装置1300は、時刻T_L1のスペースに適用した回転及び並進処理に関わるRT情報RT_L1をビットストリームに付加してもよい。
または、インター予測部1311は、異なる時刻T_L0及び時刻T_L1の両方のスペースを参照して符号化(双予測)を行う。この場合には、三次元データ符号化装置1300は、それぞれのスペースに適用した回転及び並進に関わるRT情報RT_L0及びRT_L1の両方をビットストリームに付加してもよい。
なお、上記ではT_L0をT_Curより前の時刻、T_L1をT_Curより後の時刻としたが、必ずしもこれに限らない。例えば、T_L0とT_L1は共にT_Curより前の時刻でもよい。または、T_L0とT_L1は共にT_Curより後の時刻でもよい。
また、三次元データ符号化装置1300は、複数の異なる時刻のスペースを参照して符号化を行う場合には、それぞれのスペースに適用した回転及び並進に関わるRT情報をビットストリームに付加してもよい。例えば、三次元データ符号化装置1300は、参照する複数の符号化済みスペースを2つの参照リスト(L0リスト及びL1リスト)で管理する。L0リスト内の第1の参照スペースをL0R0とし、L0リスト内の第2の参照スペースをL0R1とし、L1リスト内の第1の参照スペースをL1R0とし、L1リスト内の第2の参照スペースをL1R1とした場合、三次元データ符号化装置1300は、L0R0のRT情報RT_L0R0と、L0R1のRT情報RT_L0R1と、L1R0のRT情報RT_L1R0と、L1R1のRT情報RT_L1R1とをビットストリームに付加する。例えば、三次元データ符号化装置1300は、これらのRT情報をビットストリームのヘッダ等に付加する。
また、三次元データ符号化装置1300は、複数の異なる時刻の参照スペースを参照して符号化を行う場合、参照スペース毎に回転及び並進を適用するか否かを判定する。その際、三次元データ符号化装置1300は、参照スペース毎に回転及び並進を適用したか否かを示す情報(RT適用フラグ等)をビットストリームのヘッダ情報等に付加してもよい。例えば、三次元データ符号化装置1300は、符号化対象スペースから参照する参照スペース毎にICP(Interactive Closest Point)アルゴリズムを用いてRT情報、及びICPエラー値を算出する。三次元データ符号化装置1300は、ICPエラー値が、予め定められた一定値以下の場合は、回転及び並進を行う必要がないと判定してRT適用フラグをオフに設定する。一方、三次元データ符号化装置1300は、ICPエラー値が上記一定値より大きい場合は、RT適用フラグをオンに設定し、RT情報をビットストリームに付加する。
図46は、RT情報及びRT適用フラグをヘッダに付加するシンタックス例を示す図である。なお、各シンタックスに割当てるビット数は、そのシンタックスが取りうる範囲で決定してもよい。例えば、参照リストL0内に含まれる参照スペース数が8つの場合、MaxRefSpc_l0には3bitが割当てられてもよい。割当てるビット数を、各シンタックスが取りうる値に応じて可変にしてもよいし、取りうる値に関わらず固定にしてもよい。割り当てるビット数を固定にする場合は、三次元データ符号化装置1300は、その固定ビット数を別のヘッダ情報に付加してもよい。
ここで、図46に示す、MaxRefSpc_l0は、参照リストL0内に含まれる参照スペース数を示す。RT_flag_l0[i]は、参照リストL0内の参照スペースiのRT適用フラグである。RT_flag_l0[i]が1の場合、参照スペースiに回転及び並進が適用される。RT_flag_l0[i]が0の場合、参照スペースiに回転及び並進が適用されない。
R_l0[i]及びT_l0[i]は、参照リストL0内の参照スペースiのRT情報である。R_l0[i]は、参照リストL0内の参照スペースiの回転情報である。回転情報は、適用された回転処理の内容を示し、例えば、回転行列、又はクォータニオン等である。T_l0[i]は、参照リストL0内の参照スペースiの並進情報である。並進情報は、適用された並進処理の内容を示し、例えば、並進ベクトル等である。
MaxRefSpc_l1は、参照リストL1内に含まれる参照スペース数を示す。RT_flag_l1[i]は、参照リストL1内の参照スペースiのRT適用フラグである。RT_flag_l1[i]が1の場合、参照スペースiに回転及び並進が適用される。RT_flag_l1[i]が0の場合、参照スペースiに回転及び並進が適用されない。
R_l1[i]及びT_l1[i]は、参照リストL1内の参照スペースiのRT情報である。R_l1[i]は、参照リストL1内の参照スペースiの回転情報である。回転情報は、適用された回転処理の内容を示し、例えば、回転行列、又はクォータニオン等である。T_l1[i]は、参照リストL1内の参照スペースiの並進情報である。並進情報は、適用された並進処理の内容を示し、例えば、並進ベクトル等である。
インター予測部1311は、参照スペースメモリ1310に格納された符号化済みの参照スペースの情報を用いて符号化対象ボリュームの予測ボリュームを生成する。上述したように、インター予測部1311は、符号化対象ボリュームの予測ボリュームを生成する前に、符号化対象スペースと参照スペースの全体的な位置関係を近づけるために、符号化対象スペースと参照スペースでICP(Interactive Closest Point)アルゴリズムを用いてRT情報を求める。そして、インター予測部1311は、求めたRT情報を用いて参照スペースに回転及び並進処理を適用することで参照スペースBを得る。その後、インター予測部1311は、符号化対象スペース内の符号化対象ボリュームの予測ボリュームを参照スペースB内の情報を用いて生成する。ここで、三次元データ符号化装置1300は、参照スペースBを得るために用いられたRT情報を符号化対象スペースのヘッダ情報等に付加する。
このように、インター予測部1311は、参照スペースに回転及び並進処理を適用することにより符号化対象スペースと参照スペースとの全体的な位置関係を近づけてから、参照スペースの情報を用いて予測ボリュームを生成することで予測ボリュームの精度を向上できる。また、予測残差を抑制できるので符号量を削減できる。なお、ここでは、符号化対象スペースと参照スペースとを用いてICPを行う例を示したが、必ずしもこれに限らない。例えば、インター予測部1311は、処理量を削減するために、ボクセル又はポイントクラウド数を間引いた符号化対象スペース、及び、ボクセル又はポイントクラウド数を間引いた参照スペースの少なくとも一方を用いてICPを行うことで、RT情報を求めてもよい。
また、インター予測部1311は、ICPの結果得られるICPエラー値が、予め定められた第1閾値より小さい場合、つまり、例えば符号化対象スペースと参照スペースの位置関係が近い場合には、回転及び並進処理は必要ないと判断し、回転及び並進を行わなくてもよい。この場合、三次元データ符号化装置1300は、RT情報をビットストリームに付加しないことによりオーバーヘッドを抑制してもよい。
また、インター予測部1311は、ICPエラー値が、予め定められた第2閾値より大きい場合には、スペース間の形状変化が大きいと判断し、符号化対象スペースの全てのボリュームにイントラ予測を適用してもよい。以下、イントラ予測を適用するスペースをイントラスペースと呼ぶ。また、第2閾値は上記第1閾値より大きい値である。また、ICPに限定せず、2つのボクセル集合、又は、2つのポイントクラウド集合からRT情報を求める方法であれば、どのような手法を適用してもよい。
また、三次元データに形状又は色等の属性情報が含まれる場合には、インター予測部1311は、符号化対象スペース内の符号化対象ボリュームの予測ボリュームとして、例えば参照スペース内で符号化対象ボリュームと最も形状又は色等の属性情報が近いボリュームを探索する。また、この参照スペースは、例えば、上述した回転及び並進処理が行われた後の参照スペースである。インター予測部1311は、探索により得られたボリューム(参照ボリューム)から予測ボリュームを生成する。図47は、予測ボリュームの生成動作を説明するための図である。インター予測部1311は、図47に示す符号化対象ボリューム(ボリュームidx=0)を、インター予測を用いて符号化する場合、参照スペース内の参照ボリュームを順にスキャンしながら、符号化対象ボリュームと参照ボリュームとの差分である予測残差が一番小さいボリュームを探索する。インター予測部1311は、予測残差が一番小さいボリュームを予測ボリュームとして選択する。符号化対象ボリュームと予測ボリュームとの予測残差が変換部1303以降の処理により符号化される。ここで、予測残差とは、符号化対象ボリュームの属性情報と予測ボリュームの属性情報との差分である。また、三次元データ符号化装置1300は、予測ボリュームとして参照した参照スペース内の参照ボリュームのボリュームidxをビットストリームのヘッダ等に付加する。
図47に示す例では、参照スペースL0R0のボリュームidx=4の参照ボリュームが符号化対象ボリュームの予測ボリュームとして選択される。そして、符号化対象ボリュームと参照ボリュームとの予測残差と、参照ボリュームidx=4とが符号化されてビットストリームに付加される。
なお、ここでは属性情報の予測ボリュームを生成する例を説明したが、位置情報の予測ボリュームについても同様の処理が行われてもよい。
予測制御部1312は、符号化対象ボリュームをイントラ予測、及びインター予測のいずれを用いて符号化するかを制御する。ここで、イントラ予測、及びインター予測を含むモードを予測モードと呼ぶ。例えば、予測制御部1312は、符号化対象ボリュームをイントラ予測で予測した場合の予測残差と、インター予測で予測した場合の予測残差とを評価値として算出し、評価値が小さい方の予測モードを選択する。なお、予測制御部1312は、イントラ予測の予測残差とインター予測の予測残差とに、それぞれ直交変換、量子化、及び、エントロピー符号化を適用することで実際の符号量を算出し、算出した符号量を評価値として予測モードを選択してもよい。また、評価値に予測残差以外のオーバーヘッド情報(参照ボリュームidx情報など)を加えるようにしてもよい。また、予測制御部1312は、符号化対象スペースをイントラスペースで符号化すると予め決定されている場合には、常にイントラ予測を選択してもよい。
エントロピー符号化部1313は、量子化部1304からの入力である量子化係数を可変長符号化することにより符号化信号(符号化ビットストリーム)を生成する。具体的には、エントロピー符号化部1313は、例えば、量子化係数を二値化し、得られた二値信号を算術符号化する。
次に、三次元データ符号化装置1300により生成された符号化信号を復号する三次元データ復号装置について説明する。図48は、本実施の形態に係る三次元データ復号装置1400のブロック図である。この三次元データ復号装置1400は、エントロピー復号部1401と、逆量子化部1402と、逆変換部1403と、加算部1404と、参照ボリュームメモリ1405と、イントラ予測部1406と、参照スペースメモリ1407と、インター予測部1408と、予測制御部1409とを備える。
エントロピー復号部1401は、符号化信号(符号化ビットストリーム)を可変長復号する。例えば、エントロピー復号部1401は、符号化信号を算術復号して二値信号を生成し、生成した二値信号から量子化係数を生成する。
逆量子化部1402は、エントロピー復号部1401から入力された量子化係数を、ビットストリーム等に付加された量子化パラメータを用いて逆量子化することで逆量子化係数を生成する。
逆変換部1403は、逆量子化部1402から入力された逆量子化係数を逆変換することで予測残差を生成する。例えば、逆変換部1403は、逆量子化係数を、ビットストリームに付加された情報に基づいて逆直交変換することで予測残差を生成する。
加算部1404は、逆変換部1403で生成された予測残差と、イントラ予測又はインター予測により生成された予測ボリュームとを加算して再構成ボリュームを生成する。この再構成ボリュームは、復号三次元データとして出力されるとともに、参照ボリュームメモリ1405、又は、参照スペースメモリ1407に格納される。
イントラ予測部1406は、参照ボリュームメモリ1405内の参照ボリュームとビットストリームに付加された情報とを用いてイントラ予測により予測ボリュームを生成する。具体的には、イントラ予測部1406は、ビットストリームに付加された隣接ボリューム情報(例えばボリュームidx)と、予測モード情報とを取得し、隣接ボリューム情報で示さる隣接ボリュームを用いて、予測モード情報で示されるモードにより予測ボリュームを生成する。なお、これらの処理の詳細は、ビットストリームに付与された情報が用いられる点を除き、上述したイントラ予測部1309による処理と同様である。
インター予測部1408は、参照スペースメモリ1407内の参照スペースとビットストリームに付加された情報とを用いてインター予測により予測ボリュームを生成する。具体的には、インター予測部1408は、ビットストリームに付加された参照スペース毎のRT情報を用いて参照スペースに対して回転及び並進処理を適用し、適用後の参照スペースを用いて予測ボリュームを生成する。なお、参照スペース毎のRT適用フラグがビットストリーム内に存在する場合には、インター予測部1408は、RT適用フラグに応じて参照スペースに回転及び並進処理を適用する。なお、これらの処理の詳細は、ビットストリームに付与された情報が用いられる点を除き、上述したインター予測部1311による処理と同様である。
予測制御部1409は、復号対象ボリュームをイントラ予測で復号するか、インター予測で復号するかを制御する。例えば、予測制御部1409は、ビットストリームに付加された、使用する予測モードを示す情報に応じてイントラ予測又はインター予測を選択する。なお、予測制御部1409は、復号対象スペースをイントラスペースで復号すると予め決定されている場合は、常にイントラ予測を選択してもよい。
以下、本実施の形態の変形例について説明する。本実施の形態ではスペース単位で回転及び並進が適用される例を説明したが、より細かい単位で回転及び並進が適用されてもよい。例えば、三次元データ符号化装置1300は、スペースをサブスペースに分割し、サブスペース単位で回転及び並進を適用してもよい。この場合、三次元データ符号化装置1300は、サブスペース毎にRT情報を生成し、生成したRT情報をビットストリームのヘッダ等に付加する。また、三次元データ符号化装置1300は、符号化単位であるボリューム単位で回転及び並進を適用してもよい。この場合、三次元データ符号化装置1300は、符号化ボリューム単位でRT情報を生成し、生成したRT情報をビットストリームのヘッダ等に付加する。さらに、上記を組み合わせてもよい。つまり、三次元データ符号化装置1300は、大きい単位で回転及び並進を適用し、その後、細かい単位で回転及び並進を適用してもよい。例えば、三次元データ符号化装置1300は、スペース単位で回転及び並進を適用し、得られたスペースに含まれる複数のボリュームの各々に対して、互いに異なる回転及び並進を適用してもよい。
また、本実施の形態では参照スペースに回転及び並進を適用する例を説明したが、必ずしもこれに限らない。例えば、三次元データ符号化装置1300は、例えば、スケール処理を適用して三次元データの大きさを変化させてもよい。また、三次元データ符号化装置1300は、回転、並進及びスケールのうち、いずれか1つ又は2つを適用してもよい。また、上記のように多段階で異なる単位で処理を適用する場合には、各単位に適用される処理の種類が異なってもよい。例えば、スペース単位では回転及び並進が適用され、ボリューム単位では並進が適用されてもよい。
なお、これらの変形例については、三次元データ復号装置1400に対しても同様に適用できる。
以上のように、本実施の形態に係る三次元データ符号化装置1300は、以下の処理を行う。図48は、三次元データ符号化装置1300によるインター予測処理のフローチャートである。
まず、三次元データ符号化装置1300は、対象三次元データ(例えば符号化対象スペース)と異なる時刻の参照三次元データ(例えば参照スペース)に含まれる三次元点の位置情報を用いて予測位置情報(例えば予測ボリューム)を生成する(S1301)。具体的には、三次元データ符号化装置1300は、参照三次元データに含まれる三次元点の位置情報に回転及び並進処理を適用することで予測位置情報を生成する。
なお、三次元データ符号化装置1300は、回転及び並進処理を第1の単位(例えばスペース)で行い、予測位置情報の生成を第1の単位より細かい第2の単位(例えばボリューム)で行ってもよい。例えば、三次元データ符号化装置1300は、回転及び並進処理後の参照スペースに含まれる複数のボリュームのうち、符号化対象スペースに含まれる符号化対象ボリュームと位置情報の差が最小となるボリュームを探索し、得られたボリュームを予測ボリュームとして用いる。なお、三次元データ符号化装置1300は、回転及び並進処理と、予測位置情報の生成とを同一の単位で行ってもよい。
また、三次元データ符号化装置1300は、参照三次元データに含まれる三次元点の位置情報に第1の単位(例えばスペース)で第1回転及び並進処理を適用し、第1回転及び並進処理により得られた三次元点の位置情報に、第1の単位より細かい第2の単位(例えばボリューム)で第2回転及び並進処理を適用することで予測位置情報を生成してもよい。
ここで、三次元点の位置情報及び予測位置情報は、例えば図41に示すように、8分木構造で表現される。例えば、三次元点の位置情報及び予測位置情報は、8分木構造における深度と幅とのうち、幅を優先したスキャン順で表される。または、三次元点の位置情報及び予測位置情報は、8分木構造における深度と幅とのうち、深度を優先したスキャン順で表される。
また、図46に示すように、三次元データ符号化装置1300は、参照三次元データに含まれる三次元点の位置情報に回転及び並進処理を適用するか否かを示すRT適用フラグを符号化する。つまり、三次元データ符号化装置1300は、RT適用フラグを含む符号化信号(符号化ビットストリーム)を生成する。また、三次元データ符号化装置1300は、回転及び並進処理の内容を示すRT情報を符号化する。つまり、三次元データ符号化装置1300は、RT情報を含む符号化信号(符号化ビットストリーム)を生成する。なお、三次元データ符号化装置1300は、RT適用フラグにより回転及び並進処理を適用することが示される場合にRT情報を符号化し、RT適用フラグにより回転及び並進処理を適用しないことが示される場合にRT情報を符号化しなくてもよい。
また、三次元データは、例えば、三次元点の位置情報と、各三次元点の属性情報(色情報等)とを含む。三次元データ符号化装置1300は、参照三次元データに含まれる三次元点の属性情報を用いて予測属性情報を生成する(S1302)。
次に、三次元データ符号化装置1300は、対象三次元データに含まれる三次元点の位置情報を、予測位置情報を用いて符号化する。例えば、三次元データ符号化装置1300は、図38に示すように対象三次元データに含まれる三次元点の位置情報と予測位置情報との差分である差分位置情報を算出する(S1303)。
また、三次元データ符号化装置1300は、対象三次元データに含まれる三次元点の属性情報を、予測属性情報を用いて符号化する。例えば、三次元データ符号化装置1300は、対象三次元データに含まれる三次元点の属性情報と予測属性情報との差分である差分属性情報を算出する(S1304)。次に、三次元データ符号化装置1300は、算出された差分属性情報に変換及び量子化を行う(S1305)。
最後に、三次元データ符号化装置1300は、差分位置情報と、量子化後の差分属性情報とを符号化(例えばエントロピー符号化)する(S1306)。つまり、三次元データ符号化装置1300は、差分位置情報と差分属性情報とを含む符号化信号(符号化ビットストリーム)を生成する。
なお、三次元データに属性情報が含まれない場合には、三次元データ符号化装置1300は、ステップS1302、S1304及びS1305を行わなくてもよい。また、三次元データ符号化装置1300は、三次元点の位置情報の符号化と、三次元点の属性情報の符号化とのうち、一方のみを行ってもよい。
また、図49に示す処理の順序は一例であり、これに限定されない。例えば、位置情報に対する処理(S1301、S1303)と、属性情報に対する処理(S1302、S1304、S1305)とは互いに独立しているため、任意の順序で行われてもよいし、一部が並列処理されてもよい。
以上により、本実施の形態に三次元データ符号化装置1300は、対象三次元データと異なる時刻の参照三次元データに含まれる三次元点の位置情報を用いて予測位置情報を生成し、対象三次元データに含まれる三次元点の位置情報と予測位置情報との差分である差分位置情報を符号化する。これにより、符号化信号のデータ量を削減できるので符号化効率を向上できる。
また、本実施の形態に三次元データ符号化装置1300は、参照三次元データに含まれる三次元点の属性情報を用いて予測属性情報を生成し、対象三次元データに含まれる三次元点の属性情報と予測属性情報との差分である差分属性情報を符号化する。これにより、符号化信号のデータ量を削減できるので符号化効率を向上できる。
例えば、三次元データ符号化装置1300は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
図48は、三次元データ復号装置1400によるインター予測処理のフローチャートである。
まず、三次元データ復号装置1400は、符号化信号(符号化ビットストリーム)から、差分位置情報と差分属性情報とを復号(例えばエントロピー復号)する(S1401)。
また、三次元データ復号装置1400は、符号化信号から、参照三次元データに含まれる三次元点の位置情報に回転及び並進処理を適用するか否かを示すRT適用フラグを復号する。また、三次元データ復号装置1400は、回転及び並進処理の内容を示すRT情報を復号する。なお、三次元データ復号装置1400は、RT適用フラグにより回転及び並進処理を適用することが示される場合にRT情報を復号し、RT適用フラグにより回転及び並進処理を適用しないことが示される場合にRT情報を復号しなくてもよい。
次に、三次元データ復号装置1400は、復号された差分属性情報に逆量子化及び逆変換を行う(S1402)。
次に、三次元データ復号装置1400は、対象三次元データ(例えば復号対象スペース)と異なる時刻の参照三次元データ(例えば参照スペース)に含まれる三次元点の位置情報を用いて予測位置情報(例えば予測ボリューム)を生成する(S1403)。具体的には、三次元データ復号装置1400は、参照三次元データに含まれる三次元点の位置情報に回転及び並進処理を適用することで予測位置情報を生成する。
より具体的には、三次元データ復号装置1400は、RT適用フラグにより回転及び並進処理を適用することが示される場合に、RT情報で示される参照三次元データに含まれる三次元点の位置情報に回転及び並進処理を適用する。一方、RT適用フラグにより回転及び並進処理を適用しないことが示される場合には、三次元データ復号装置1400は、参照三次元データに含まれる三次元点の位置情報に回転及び並進処理を適用しない。
なお、三次元データ復号装置1400は、回転及び並進処理を第1の単位(例えばスペース)で行い、予測位置情報の生成を第1の単位より細かい第2の単位(例えばボリューム)で行ってもよい。なお、三次元データ復号装置1400は、回転及び並進処理と、予測位置情報の生成とを同一の単位で行ってもよい。
また、三次元データ復号装置1400は、参照三次元データに含まれる三次元点の位置情報に第1の単位(例えばスペース)で第1回転及び並進処理を適用し、第1回転及び並進処理により得られた三次元点の位置情報に、第1の単位より細かい第2の単位(例えばボリューム)で第2回転及び並進処理を適用することで予測位置情報を生成してもよい。
ここで、三次元点の位置情報及び予測位置情報は、例えば図41に示すように、8分木構造で表現される。例えば、三次元点の位置情報及び予測位置情報は、8分木構造における深度と幅とのうち、幅を優先したスキャン順で表される。または、三次元点の位置情報及び予測位置情報は、8分木構造における深度と幅とのうち、深度を優先したスキャン順で表される。
三次元データ復号装置1400は、参照三次元データに含まれる三次元点の属性情報を用いて予測属性情報を生成する(S1404)。
次に、三次元データ復号装置1400は、符号化信号に含まれる符号化位置情報を予測位置情報を用いて復号することで対象三次元データに含まれる三次元点の位置情報を復元する。ここで、符号化位置情報とは、例えば、差分位置情報であり、三次元データ復号装置1400は、差分位置情報と予測位置情報とを加算することで対象三次元データに含まれる三次元点の位置情報を復元する(S1405)。
また、三次元データ復号装置1400は、符号化信号に含まれる符号化属性情報を予測属性情報を用いて復号することで対象三次元データに含まれる三次元点の属性情報を復元する。ここで、符号化属性情報とは、例えば、差分属性情報であり、三次元データ復号装置1400は、差分属性情報と予測属性情報とを加算することで対象三次元データに含まれる三次元点の属性情報を復元する(S1406)。
なお、三次元データに属性情報が含まれない場合には、三次元データ復号装置1400は、ステップS1402、S1404及びS1406を行わなくてもよい。また、三次元データ復号装置1400は、三次元点の位置情報の復号と、三次元点の属性情報の復号とのうち、一方のみを行ってもよい。
また、図50に示す処理の順序は一例であり、これに限定されない。例えば、位置情報に対する処理(S1403、S1405)と、属性情報に対する処理(S1402、S1404、S1406)とは互いに独立しているため、任意の順序で行われてもよいし、一部が並列処理されてもよい。
(実施の形態8)
本実施の形態では、三次元データの符号化における三次元点(ポイントクラウド)の表現手法について説明する。
図51は、本実施の形態に係る三次元データの配信システムの構成を示すブロック図である。図51に示す配信システムは、サーバ1501と、複数のクライアント1502とを含む。
サーバ1501は、記憶部1511と、制御部1512とを含む。記憶部1511は、符号化された三次元データである符号化三次元マップ1513を格納している。
図52は、符号化三次元マップ1513のビットストリームの構成例を示す図である。三次元マップは、複数のサブマップ(sub−map)に分割され、各サブマップが符号化される。各サブマップには、サブ座標情報を含むランダムアクセスヘッダ(RA)が付加される。サブ座標情報は、サブマップの符号化効率を向上させるために用いられる。このサブ座標情報は、サブマップのサブ座標(sub−coordinate)を示す。サブ座標は、基準座標(reference coordinate)を基準としたサブマップの座標である。なお、複数のサブマップが含まれる三次元マップを全体マップと呼ぶ。また、全体マップにおいて基準となる座標(例えば原点)を基準座標と呼ぶ。つまり、サブ座標は、全体マップの座標系におけるサブマップの座標である。言い換えると、サブ座標は、全体マップの座標系とサブマップの座標系とのオフセットを示す。また、基準座標を基準とする全体マップの座標系における座標を全体座標と呼ぶ。サブ座標を基準とするサブマップの座標系における座標を差分座標と呼ぶ。
クライアント1502は、サーバ1501にメッセージを送信する。このメッセージは、クライアント1502の位置情報を含む。サーバ1501に含まれる制御部1512は、受信したメッセージに含まれる位置情報に基づき、クライアント1502の位置に最も近い位置のサブマップのビットストリームを取得する。サブマップのビットストリームは、サブ座標情報を含み、クライアント1502に送信される。クライアント1502に含まれるデコーダ1521は、このサブ座標情報を用いて、基準座標を基準としたサブマップの全体座標を得る。クライアント1502に含まれるアプリケーション1522は、得られたサブマップの全体座標を用いて、自己位置に関連するアプリケーションを実行する。
また、サブマップは全体マップの一部領域を示す。サブ座標は全体マップの基準座標空間においてサブマップが位置する座標である。例えばAの全体マップ中に、AAのサブマップA、及びABのサブマップBが存在するとする。車両は、AAの地図を参照したい場合は、サブマップAから復号を開始し、ABの地図を参照したい場合は、サブマップBから復号を開始する。ここでサブマップはランダムアクセスポイントである。具体的には、Aは大阪府、AAは大阪市、ABは高槻市などである。
各サブマップはサブ座標情報と共にクライアントに送信される。サブ座標情報は各サブマップのヘッダ情報、又は送信パケット等に含まれる。
各サブマップのサブ座標情報の基準の座標となる基準座標は、全体マップのヘッダ情報などサブマップより上位の空間のヘッダ情報に付加されてもよい。
サブマップは1つのスペース(SPC)で構成されてもよい。また、サブマップは複数のSPCで構成されてもよい。
また、サブマップは、GOS(Group of Space)を含んでもよい。またサブマップは、ワールドで構成されてもよい。例えば、サブマップの中に複数のオブジェクトがある場合、複数のオブジェクトを別々のSPCに割り当てるとサブマップは複数のSPCで構成される。また複数のオブジェクトを1つのSPCに割り当てるとサブマップは1つのSPCで構成される。
次に、サブ座標情報を用いた場合の符号化効率の改善効果について説明する。図53は、この効果を説明するための図である。例えば、図53に示す、基準座標から遠い位置の三次元点Aを符号化するためには、多くのビット数が必要となる。ここで、サブ座標と三次元点Aとの距離は、基準座標と三次元点Aとの距離よりも短い。よって、基準座標を基準とした三次元点Aの座標を符号化する場合よりも、サブ座標を基準とした三次元点Aの座標を符号化することで、符号化効率を改善できる。また、サブマップのビットストリームは、サブ座標情報を含む。サブマップのビットストリームと基準座標とを復号側(クライアント)に送ることで、復号側においてサブマップの全体座標を復元できる。
図54は、サブマップの送信側であるサーバ1501による処理のフローチャートである。
まず、サーバ1501は、クライアント1502から、クライアント1502の位置情報を含むメッセージを受信する(S1501)。制御部1512は、記憶部1511から、クライアントの位置情報に基づくサブマップの符号化ビットストリームを取得する(S1502)。そして、サーバ1501は、サブマップの符号化ビットストリームと基準座標とをクライアント1502に送信する(S1503)。
図55は、サブマップの受信側であるクライアント1502による処理のフローチャートである。
まず、クライアント1502は、サーバ1501から送信されたサブマップの符号化ビットストリームと基準座標とを受信する(S1511)。次に、クライアント1502は、符号化ビットストリームを復号することでサブマップとサブ座標情報とを取得する(S1512)。次に、クライアント1502は、基準座標とサブ座標とを用いてサブマップ内の差分座標を全体座標に復元する(S1513)。
次に、サブマップに関する情報のシンタックス例を説明する。サブマップの符号化において、三次元データ符号化装置は、各ポイントクラウド(三次元点)の座標からサブ座標を減算することで差分座標を算出する。そして、三次元データ符号化装置は、各ポイントクラウドの値として、差分座標をビットストリームに符号化する。また、符号化装置は、サブ座標を示すサブ座標情報をビットストリームのヘッダ情報として符号化する。これにより、三次元データ復号装置は、各ポイントクラウドの全体座標を得ることができる。例えば、三次元データ符号化装置はサーバ1501に含まれ、三次元データ復号装置はクライアント1502に含まれる。
図56は、サブマップのシンタックス例を示す図である。図56に示すNumOfPointは、サブマップに含まれるポイントクラウド数を示す。sub_coordinate_x、sub_coordinate_y、及びsub_coordinate_zは、サブ座標情報である。sub_coordinate_xは、サブ座標のx座標を示す。sub_coordinate_yは、サブ座標のy座標を示す。sub_coordinate_zは、サブ座標のz座標を示す。
また、diff_x[i]、diff_y[i]、及びdiff_z[i]は、サブマップ内のi番目ポイントクラウドの差分座標である。diff_x[i]は、サブマップ内のi番目ポイントクラウドのx座標とサブ座標のx座標との差分値を示す。diff_y[i]は、サブマップ内のi番目ポイントクラウドのy座標とサブ座標のy座標との差分値を示す。diff_z[i]は、サブマップ内のi番目ポイントクラウドのz座標とサブ座標のz座標との差分値を示す。
三次元データ復号装置は、i番目のポイントクラウドの全体座標であるpoint_cloud[i]_x、point_cloud[i]_y、及びpoint_cloud[i]_zを下記式を用いて復号する。point_cloud[i]_xは、i番目のポイントクラウドの全体座標のx座標である。point_cloud[i]_yは、i番目のポイントクラウドの全体座標のy座標である。point_cloud[i]_zは、i番目のポイントクラウドの全体座標のz座標である。
point_cloud[i]_x=sub_coordinate_x+diff_x[i]
point_cloud[i]_y=sub_coordinate_y+diff_y[i]
point_cloud[i]_z=sub_coordinate_z+diff_z[i]
次に、8分木符号化の適用の切り替え処理について説明する。三次元データ符号化装置は、サブマップ符号化時に、各ポイントクラウドを8分木表現で符号化する(以下、8分木符号化(octree符号化)と呼ぶ)を用いるか、サブ座標からの差分値を符号化する(以下、非8分木符号化(non−octree符号化)と呼ぶ)を用いるかを選択する。図57は、この動作を模式的に示す図である。例えば、三次元データ符号化装置は、サブマップ内のポイントクラウド数が予め定められた閾値以上の場合には、サブマップに8分木符号化を適用する。三次元データ符号化装置は、サブマップ内のポイントクラウド数が上記閾値より小さい場合は、サブマップに非8分木符号化を適用する。これにより、三次元データ符号化装置は、サブマップ内に含まれるオブジェクトの形状及び密度に応じて適切に8分木符号化を用いるか、非8分木符号化を用いるかを選択できるので、符号化効率を向上することができる。
また、三次元データ符号化装置は、サブマップに8分木符号化と非8分木符号化とのどちらを適用したかを示す情報(以下、8分木符号化適用情報と呼ぶ)を、サブマップのヘッダ等に付加する。これにより、三次元データ復号装置は、ビットストリームが、サブマップが8分木符号化されることで得られたビットストリームであるか、サブマップが非8分木符号化されることで得られたビットストリームであるかを判別できる。
また、三次元データ符号化装置は、8分木符号化と非8分木符号化とのそれぞれを同一のポイントクラウドに適用した際の符号化効率を算出し、符号化効率が良い符号化方式をサブマップに適用してもよい。
図58は、この切り替えを行う場合のサブマップのシンタックス例を示す図である。図58に示すcoding_typeは、符号化タイプを示す情報であり、上記8分木符号化適用情報である。coding_type=00は、8分木符号化が適用されたことを示す。coding_type=01は、非8分木符号化が適用されたことを示す。coding_type=10又は11は、上記外の他の符号化方式などが適用されたことを示す。
符号化タイプが非8分木符号化(non_octree)の場合、サブマップは、NumOfPointと、サブ座標情報(sub_coordinate_x、sub_coordinate_y、及びsub_coordinate_z)とを含む。
符号化タイプが8分木符号化(octree)の場合、サブマップは、octree_infoを含む。octree_infoは、8分木符号化に必要な情報であり、例えばdepth情報などを含む。
符号化タイプが非8分木符号化(non_octree)の場合、サブマップは、差分座標(diff_x[i]、diff_y[i]、及びdiff_z[i])を含む。
符号化タイプが8分木符号化(octree)の場合、サブマップは、8分木符号化に関する符号化データであるoctree_dataを含む。
なお、ここでは、ポイントクラウドの座標系としてxyz座標系が用いられる例を示したが、極座標系が用いられてもよい。
図59は、三次元データ符号化装置による三次元データ符号化処理のフローチャートである。まず、三次元データ符号化装置は、処理対象のサブマップである対象サブマップ内のポイントクラウド数を算出する(S1521)。次に、三次元データ符号化装置は、算出されたポイントクラウド数が予め定められた閾値以上であるか否かを判定する(S1522)。
ポイントクラウド数が閾値以上の場合(S1522でYes)、三次元データ符号化装置は、対象サブマップに8分木符号化を適用する(S1523)。また、三次元点データ符号化装置は、対象サブマップに8分木符号化を適用したことを示す8分木符号化適用情報をビットストリームのヘッダに付加する(S1525)。
一方、ポイントクラウド数が閾値未満の場合(S1522でNo)、三次元データ符号化装置は、対象サブマップに非8分木符号化を適用する(S1524)。また、三次元点データ符号化装置は、対象サブマップに非8分木符号化を適用したことを示す8分木符号化適用情報をビットストリームのヘッダに付加する(S1525)。
図60は、三次元データ復号装置による三次元データ復号処理のフローチャートである。まず、三次元データ復号装置は、ビットストリームのヘッダから8分木符号化適用情報を復号する(S1531)。次に、三次元データ復号装置は、復号した8分木符号化適用情報に基づき、対象サブマップに適用された符号化タイプが8分木符号化であるか否かを判定する(S1532)。
8分木符号化適用情報により示される符号化タイプが8分木符号化である場合(S1532でYes)、三次元データ復号装置は、8分木復号により対象サブマップを復号する(S1533)。一方、8分木符号化適用情報により示される符号化タイプが非8分木符号化である場合(S1532でNo)、三次元データ復号装置は、非8分木復号により対象サブマップを復号する(S1534)。
以下、本実施の形態の変形例について説明する。図61〜図63は、符号化タイプの切り替え処理の変形例の動作を模式的に示す図である。
図61に示すように、三次元データ符号化装置は、8分木符号化を適用するか非8分木符号化を適用するかをスペース毎に選択してもよい。この場合は、三次元データ符号化装置は、8分木符号化適用情報をスペースのヘッダに付加する。これにより、三次元データ復号装置は、8分木符号化が適用されたか否かをスペース毎に判断できる。また、この場合、三次元データ符号化装置は、スペース毎にサブ座標を設定し、スペース内の各ポイントクラウドの座標からサブ座標の値を引いた差分値を符号化する。
これにより、三次元データ符号化装置は、スペース内のオブジェクトの形状又はポイントクラウド数に応じて8分木符号化を適用するか否かを適切に切り替えることができるので、符号化効率を向上できる。
また、図62に示すように、三次元データ符号化装置は、8分木符号化を適用するか非8分木符号化を適用するかをボリューム毎に選択してもよい。この場合は、三次元データ符号化装置は、8分木符号化適用情報をボリュームのヘッダに付加する。これにより、三次元データ復号装置は、8分木符号化が適用されたか否かをボリューム毎に判断できる。また、この場合、三次元データ符号化装置は、ボリューム毎にサブ座標を設定し、ボリューム内の各ポイントクラウドの座標からサブ座標の値を引いた差分値を符号化する。
これにより、三次元データ符号化装置は、ボリューム内のオブジェクトの形状又はポイントクラウド数に応じて8分木符号化を適用するか否かを適切に切り替えることができるので、符号化効率を向上できる。
また、上記説明では、非8分木符号化として、各ポイントクラウドの座標からサブ座標を引いた差分を符号化する例を示したが、必ずしもこれに限らず、8分木符号化以外のどのような符号化方法で符号化してもよい。例えば、図63に示すように、三次元データ符号化装置は、非8分木符号化として、サブ座標からの差分ではなく、サブマップ、スペース、又はボリューム内のポイントクラウドの値そのものを符号化する方式(以下、原座標符号化と呼ぶ)を用いてもよい。
その場合は、三次元データ符号化装置は、対象空間(サブマップ、スペース、又はボリューム)に原座標符号化が適用されたことを示す情報をヘッダに格納する。これにより、三次元データ復号装置は、対象空間に原座標符号化が適用されたか否かを判断できる。
また、原座標符号化を適用する場合には、三次元データ符号化装置は、原座標に量子化及び算術符号化を適用せずに符号化を行ってもよい。また、三次元データ符号化装置は、原座標を予め定められた固定のビット長で符号化してもよい。これにより、三次元データ符号化装置は、あるタイミングで一定のビット長のストリームを生成することができる。
また、上記説明では、非8分木符号化として、各ポイントクラウドの座標からサブ座標を引いた差分を符号化する例を示したが、必ずしもこれに限らない。
例えば、三次元データ符号化装置は、各ポイントクラウドの座標間の差分値を順に符号化してもよい。図64は、この場合の動作を説明するための図である。例えば、図64に示す例では、三次元データ符号化装置は、ポイントクラウドPAを符号化する際に、サブ座標を予測座標として用い、ポイントクラウドPAの座標と予測座標との差分値を符号化する。また、三次元データ符号化装置は、ポイントクラウドPBを符号化する際には、ポイントクラウドPAの座標を予測座標として用い、ポイントクラウドPBと予測座標との差分値を符号化する。また、三次元データ符号化装置は、ポイントクラウドPCを符号化する際には、ポイントクラウドPBを予測座標として用い、ポイントクラウドPBと予測座標との差分値を符号化する。このように、三次元データ符号化装置は、複数のポイントクラウドにスキャン順を設定し、処理対象の対象ポイントクラウドの座標と、対象ポイントクラウドに対してスキャン順で直前のポイントクラウドの座標との差分値を符号化してもよい。
また、上記説明では、サブ座標は、サブマップの左下手前の隅の座標であったが、サブ座標の位置はこれに限らない。図65〜図67は、サブ座標の位置の別の例を示す図である。サブ座標は、サブ座標の設定位置は、対象空間(サブマップ、スペース、又はボリューム)内のどの座標に設定されてもよい。つまり、サブ座標は、上述したように、対象空間の左下手前の隅の座標であってもよい。図65に示すように、サブ座標は、対象空間の中心の座標であってもよい。図66に示すように、サブ座標は、対象空間の右上奥の隅の座標であってもよい。また、サブ座標は、対象空間の左下手前又は右上奥の隅の座標に限らず、対象空間のいずれかの隅の座標であってもよい。
また、サブ座標の設定位置は、対象空間(サブマップ、スペース、又はボリューム)内のあるポイントクラウドの座標と同一であってもよい。例えば、図67に示す例では、サブ座標の座標は、ポイントクラウドPDの座標と一致する。
また、本実施の形態では、8分木符号化を適用するか、非8分木符号化を適用するかを切り替える例を示したが、必ずしもこれには限らない。例えば、三次元データ符号化装置は、8分木以外の別の木構造を適用するかと、当該木構造以外の非木構造を適用するかとを切り替えてもよい。例えば、別の木構造とは、座標軸の1つに垂直な平面を使って分割を行うkd木などである。なお、別の木構造として、どのような方式を用いてもよい。
また、本実施の形態では、ポイントクラウドが持つ座標情報を符号化する例を示したが、必ずしもこれには限らない。三次元データ符号化装置は、例えば、色情報、三次元特徴量又は、可視光の特徴量なども座標情報と同様の方法で符号化してもよい。例えば、三次元データ符号化装置は、サブマップ内の各ポイントクラウドが持つ色情報の平均値をサブ色情報(sub−color)に設定し、各ポイントクラウドの色情報とサブ色情報との差分を符号化してもよい。
また、本実施の形態では、ポイントクラウドの数等に応じて符号化効率が良い符号化方式(8分木符号化又は非8分木符号化)を選択する例を示したが、必ずこれには限らない。例えば、サーバ側である三次元データ符号化装置は、8分木符号化により符号化したポイントクラウドのビットストリーム、非8分木符号化により符号化したポイントクラウドのビットストリーム、及びその両方により符号化したポイントクラウドのビットストリームを保持しておき、通信環境又は三次元データ復号装置の処理能力に応じて、三次元データ復号装置に送信するビットストリームを切り替えてもよい。
図68は、8分木符号化の適用を切り替える場合のボリュームのシンタックス例を示す図である。図68に示すシンタックスは、図58に示すシンタックスと基本的には同じであるが、各情報がボリューム単位の情報である点が異なる。具体的には、NumOfPointは、ボリュームに含まれるポイントクラウド数を示す。sub_coordinate_x、sub_coordinate_y、及びsub_coordinate_zは、ボリュームのサブ座標情報である。
また、diff_x[i]、diff_y[i]、及びdiff_z[i]は、ボリューム内のi番目ポイントクラウドの差分座標である。diff_x[i]は、ボリューム内のi番目ポイントクラウドのx座標とサブ座標のx座標との差分値を示す。diff_y[i]は、ボリューム内のi番目ポイントクラウドのy座標とサブ座標のy座標との差分値を示す。diff_z[i]は、ボリューム内のi番目ポイントクラウドのz座標とサブ座標のz座標との差分値を示す。
なお、スペースにおけるボリュームの相対位置が計算できる場合は、三次元データ符号化装置は、サブ座標情報をボリュームのヘッダに含めなくてもよい。つまり、三次元データ符号化装置は、サブ座標情報をヘッダに含めずに、スペースにおけるボリュームの相対位置を計算し、計算した位置を各ボリュームのサブ座標として用いてよい。
以上のように、本実施の形態に係る三次元データ符号化装置は、三次元データに含まれる複数の空間単位(例えば、サブマップ、スペース又はボリューム)のうち対象空間単位を8分木構造で符号化するか否かを判定する(例えば、図59のS1522)。例えば、三次元データ符号化装置は、対象空間単位に含まれる三次元点の数が予め定められた閾値より多い場合、対象空間単位を8分木構造で符号化すると判定する。また、三次元データ符号化装置は、対象空間単位に含まれる三次元点の数が上記閾値以下の場合、対象空間単位を8分木構造で符号化しないと判定する。
対象空間単位を8分木構造で符号化すると判定された場合(S1522でYes)、三次元データ符号化装置は、対象空間単位を8分木構造を用いて符号化する(S1523)。また、対象空間単位を8分木構造で符号化しないと判定された場合(S1522でNo)、三次元データ符号化装置は、対象空間単位を8分木構造とは異なる方式で符号化する(S1524)。例えば、三次元データ符号化装置は、異なる方式では、対象空間単位に含まれる三次元点の座標を符号化する。具体的には、三次元データ符号化装置は、異なる方式では、対象空間単位の基準座標と、対象空間単位に含まれる三次元点の座標との差分を符号化する。
次に、三次元データ符号化装置は、対象空間単位を8分木構造で符号化したか否かを示す情報をビットストリームに付加する(S1525)。
これによれば、当該三次元データ符号化装置は、符号化信号のデータ量を削減できるので符号化効率を向上できる。
例えば、三次元データ符号化装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態に係る三次元データ復号装置は、三次元データに含まれる複数の対象空間単位(例えば、サブマップ、スペース又はボリューム)のうち対象空間単位を8分木構造で復号するか否かを示す情報をビットストリームから復号する(例えば、図60のS1531)。上記情報により対象空間単位を8分木構造で復号すると示される場合(S1532でYes)、三次元データ復号装置は、対象空間単位を8分木構造を用いて復号する(S1533)。
上記情報により前記対象空間単位を8分木構造で復号しないと示される場合(S1532でNo)、三次元データ復号装置は、対象空間単位を8分木構造とは異なる方式で復号する(S1534)。例えば、三次元データ復号装置は、異なる方式では、対象空間単位に含まれる三次元点の座標を復号する。具体的には、三次元データ復号装置は、異なる方式では、対象空間単位の基準座標と、対象空間単位に含まれる三次元点の座標との差分を復号する。
これによれば、当該三次元データ復号装置は、符号化信号のデータ量を削減できるので符号化効率を向上できる。
例えば、三次元データ復号装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
(実施の形態9)
本実施の形態では、8分木構造等の木構造の符号化方法の別の例について説明する。図69は、本実施の形態に係る木構造の一例を示す図である。なお、図69は、4分木構造の例を示す。
三次元点が含まれるリーフを有効リーフと呼び、三次元点が含まれないリーフを無効リーフと呼ぶ。有効リーフの数が閾値以上である枝(branch)を密な枝(dense branch)と呼ぶ。有効リーフの数が閾値より小さい枝を疎な枝(sparse branch)と呼ぶ。
三次元データ符号化装置は、木構造のある層(レイヤ)において、各枝に含まれる三次元点の数(つまり有効リーフの数)を算出する。図69は、閾値が5である場合の例を表す。この例では、層1に2つの枝が存在する。左側の枝には7個の三次元点が含まれるため、左側の枝は密な枝と判定される。右側の枝には2個の三次元点が含まれるため、右側の枝は疎な枝と判定される。
図70は、例えば、層5の各枝が持つ有効リーフの数(3D points)の例を表す図である。図70の横軸は、層5の枝の識別番号であるインデックスを示す。図70に示すように、特定の枝に、他の枝に比べて明らかに多くの三次元点が含まれる。このような密な枝には、疎な枝に比べて、オキュパンシー符号化がより有効である。
以下、オキュパンシー符号化とロケーション符号化の適用方法について説明する。図71は、層5における各枝に含まれる三次元点の数(有効リーフの数)と適用する符号化方式との関係を示す図である。図71に示すように、三次元データ符号化装置は、密な枝に対してはオキュパンシー符号化を適用し、疎な枝に対してはロケーション符号化を適用する。これにより、符号化効率を向上できる。
図72は、LiDARデータにおける密な枝領域の例を示す図である。図72に示すように、領域によって、各枝に含まれる三次元点の数から算出される三次元点の密度が異なる。
また、密な三次元点(枝)と疎な三次元点(枝)とを分離することで以下の利点がある。LiDARセンサに近いほど三次元点の密度は高くなる。よって、疎密に応じて枝を分離することで、距離方向の区画が可能となる。このような区画は、特定のアプリケーションでは有効である。また、疎な枝に対しては、オキュパンシー符号化以外の手法を用いることが有効である。
本実施の形態では、三次元データ符号化装置は、入力された三次元点群を2つ以上のサブ三次元点群に分離し、各サブ三次元点群に異なる符号化方法を適用する。
例えば、三次元データ符号化装置は、入力された三次元点群を密な枝を含むサブ三次元点群A(密な三次元点群:dense cloud)と、疎な枝を含むサブ三次元点群B(疎な三次元点群:sparse cloud)とに分離する。図73は、図69に示す木構造から分離された、密な枝を含むサブ三次元点群A(密な三次元点群)の例を示す図である。図74は、図69に示す木構造から分離された、疎な枝を含むサブ三次元点群B(疎な三次元点群)の例を示す図である。
次に、三次元データ符号化装置は、サブ三次元点群Aをオキュパンシー符号化で符号化し、サブ三次元点群Bをロケーション符号化で符号化する。
なお、ここでは、異なる符号化方法として、異なる符号化方式(オキュパンシー符号化とロケーション符号化)を適用する例を示したが、例えば、三次元データ符号化装置は、サブ三次元点群Aとサブ三次元点群Bとに同じ符号化方式を用い、かつ、サブ三次元点群Aとサブ三次元点群Bとで符号化に用いるパラメータを異ならせてもよい。
以下、三次元データ符号化装置による三次元データ符号化処理の流れについて説明する。図75は、本実施の形態に係る三次元データ符号化装置による三次元データ符号化処理のフローチャートである。
まず、三次元データ符号化装置は、入力された三次元点群を、サブ三次元点群に分離する(S1701)。三次元データ符号化装置は、この分離を自動的に行ってもよいし、ユーザにより入力された情報に基づき行ってもよい。例えば、ユーザによりサブ三次元点群の範囲等が指定されてもよい。また、自動的に行う例としては、例えば、入力データがLiDARデータである場合には、三次元データ符号化装置は、各点群までの距離情報を用いて分離を行う。具体的には、三次元データ符号化装置は、計測地点から一定の範囲内にある点群と範囲外にある点群とを分離する。また、三次元データ符号化装置は、重要なエリアとそうでないエリアといった情報を用いて分離を行ってもよい。
次に、三次元データ符号化装置は、サブ三次元点群Aを手法Aで符号化することで符号化データ(符号化ビットストリーム)を生成する(S1702)。また、三次元データ符号化装置は、サブ三次元点群Bを手法Bで符号化することで符号化データを生成する(S1703)。なお、三次元データ符号化装置は、サブ三次元点群Bを手法Aで符号化してもよい。この場合、三次元データ符号化装置は、サブ三次元点群Aの符号化に用いた符号化パラメータとは異なるパラメータを用いてサブ三次元点群Bを符号化する。例えば、このパラメータは量子化パラメータであってもよい。例えば、三次元データ符号化装置は、サブ三次元点群Aの符号化に用いた量子化パラメータよりも大きい量子化パラメータを用いて、サブ三次元点群Bを符号化する。この場合、三次元データ符号化装置は、各サブ三次元点群の符号化データのヘッダに当該サブ三次元点群の符号化に用いた量子化パラメータを示す情報を付加してもよい。
次に、三次元データ符号化装置は、ステップS1702で得られた符号化データと、ステップS1703で得られた符号化データとを結合することでビットストリームを生成する(S1704)。
また、三次元データ符号化装置は、ビットストリームのヘッダ情報として、各サブ三次元点群を復号するための情報を符号化してもよい。例えば、三次元データ符号化装置は、下記のような情報を符号化してもよい。
ヘッダ情報は、符号化されたサブ三次元点の数を示す情報を含んでもよい。この例では、この情報は2を示す。
ヘッダ情報は、各サブ三次元点群に含まれる三次元点の数と符号化方法とを示す情報を含んでもよい。この例では、この情報は、サブ三次元点群Aに含まれる三次元点の数と、サブ三次元点群Aに適用した符号化方法(手法A)と、サブ三次元点群Bに含まれる三次元点の数と、サブ三次元点群Bに適用した符号化方法(手法B)とを示す。
ヘッダ情報は、各サブ三次元点群の符号化データの開始位置、又は終端位置を識別するための情報を含んでもよい。
また、三次元データ符号化装置は、サブ三次元点群Aとサブ三次元点群Bとを並列に符号化してもよい。または、三次元データ符号化装置は、サブ三次元点群Aとサブ三次元点群Bと順に符号化してもよい。
また、サブ三次元点群への分離の方法は、上記に限らない。例えば、三次元データ符号化装置は、分離方法を変化させて、複数の分離方法の各々を用いて符号化を行い、各分離方法を用いて得られた符号化データの符号化効率を算出する。そして、三次元データ符号化装置は、最も符号化効率が高い分離方法を選択する。例えば、三次元データ符号化装置は、複数の層の各々で三次元点群を分離し、それぞれの場合における符号化効率を算出し、最も符号化効率が高くなる分離方法(つまり分離を行う層)を選択し、選択した分離方法でサブ三次元点群を生成して符号化を行ってもよい。
また、三次元データ符号化装置は、符号化データを結合する際に、重要なサブ三次元点群の符号化情報ほど、ビットストリームの先頭に近い位置に配置してもよい。これにより、三次元データ復号装置は、先頭のビットストリームを復号するだけで重要な情報を取得できるので、重要な情報を早く取得できることが可能となる。
次に、三次元データ復号装置による三次元データ復号処理の流れについて説明する。図76は、本実施の形態に係る三次元データ復号装置による三次元データ復号処理のフローチャートである。
まず、三次元データ復号装置は、例えば、上記三次元データ符号化装置で生成されたビットストリームを取得する。次に、三次元データ復号装置は、取得したビットストリームからサブ三次元点群Aの符号化データとサブ三次元点群Bの符号化データとを分離する(S1711)。具体的には、三次元データ復号装置は、ビットストリームのヘッダ情報から各サブ三次元点群を復号するための情報を復号し、当該情報を用いて各サブ三次元点群の符号化データを分離する。
次に、三次元データ復号装置は、サブ三次元点群Aの符号化データを手法Aで復号することでサブ三次元点群Aを得る(S1712)。また、三次元データ復号装置は、サブ三次元点群Bの符号化データを手法Bで復号することでサブ三次元点群Bを得る(S1713)。次に、三次元データ復号装置は、サブ三次元点群Aとサブ三次元点群Bとを結合する(S1714)。
なお、三次元データ復号装置は、サブ三次元点群Aとサブ三次元点群Bとを並列に復号してもよい。または、三次元データ復号装置は、サブ三次元点群Aとサブ三次元点群Bとを順に復号してもよい。
また、三次元データ復号装置は、必要なサブ三次元点群を復号してもよい。例えば、三次元データ復号装置は、サブ三次元点群Aを復号し、サブ三次元点群Bを復号しなくてもよい。例えば、サブ三次元点群AがLiDARデータの重要エリアに含まれる三次元点群である場合、三次元データ復号装置は、その重要エリアの三次元点群を復号する。この重要エリアの三次元点群を用いて車等における自己位置推定などが行われる。
次に、本実施の形態に係る符号化処理の具体例を説明する。図77は、本実施の形態に係る三次元データ符号化装置による三次元データ符号化処理のフローチャートである。
まず、三次元データ符号化装置は、入力された三次元点を疎な三次元点群と密な三次元点群とに分離する(S1721)。具体的には、三次元データ符号化装置は、8分木構造のある層の枝が持つ有効リーフの数をカウントする。三次元データ符号化装置は、各枝の有効リーフ数に応じて、各枝を密な枝又は疎な枝に設定する。そして、三次元データ符号化装置は、密な枝を集めたサブ三次元点群(密な三次元点群)と、疎な枝を集めたサブ三次元点群(疎な三次元点群)とを生成する。
次に、三次元データ符号化装置は、疎な三次元点群を符号化することで符号化データを生成する(S1722)。例えば、三次元データ符号化装置は、ロケーション符号化を用いて疎な三次元点群を符号化する。
また、三次元データ符号化装置は、密な三次元点群を符号化することで符号化データを生成する(S1723)。例えば、三次元データ符号化装置は、オキュパンシー符号化を用いて密な三次元点群を符号化する。
次に、三次元データ符号化装置は、ステップS1722で得られた疎な三次元点群の符号化データと、ステップS1723で得られた密な三次元点群の符号化データとを結合することでビットストリームを生成する(S1724)。
また、三次元データ符号化装置は、ビットストリームのヘッダ情報として、疎な三次元点群と密な三次元点群を復号するための情報を符号化してもよい。例えば、三次元データ符号化装置は、下記のような情報を符号化してもよい。
ヘッダ情報は、符号化されたサブ三次元点群の数を示す情報を含んでもよい。この例では、この情報は2を示す。
ヘッダ情報は、各サブ三次元点群に含まれる三次元点の数と符号化方法とを示す情報を含んでもよい。この例では、この情報は、疎な三次元点群に含まれる三次元点の数と、疎な三次元点群に適用した符号化方法(ロケーション符号化)と、密な三次元点群に含まれる三次元点の数と、密な三次元点群に適用した符号化方法(オキュパンシー符号化)とを示す。
ヘッダ情報は、各サブ三次元点群の符号化データの開始位置、又は終端位置を識別するための情報を含んでもよい。この例では、この情報は、疎な三次元点群の符号化データの開始位置及び終端位置、並びに、密な三次元点群の符号化データの開始位置及び終端位置のすくなくとも一つを示す。
また、三次元データ符号化装置は、疎な三次元点群と密な三次元点群とを並列に符号化してもよい。または、三次元データ符号化装置は、疎な三次元点群と密な三次元点群とを順に符号化してもよい。
次に、三次元データ復号処理の具体例について説明する。図78は、本実施の形態に係る三次元データ復号装置による三次元データ復号処理のフローチャートである。
まず、三次元データ復号装置は、例えば、上記三次元データ符号化装置で生成されたビットストリームを取得する。次に、三次元データ復号装置は、取得したビットストリームから疎な三次元点群の符号化データと密な三次元点群の符号化データとに分離する(S1731)。具体的には、三次元データ復号装置は、ビットストリームのヘッダ情報から各サブ三次元点群を復号するための情報を復号し、当該情報を用いて各サブ三次元点群の符号化データを分離する。この例では、三次元データ復号装置は、ビットストリームから疎な三次元点群と密な三次元点群の符号化データをヘッダ情報を用いて分離する。
次に、三次元データ復号装置は、疎な三次元点群の符号化データを復号することで疎な三次元点群を得る(S1732)。例えば、三次元データ復号装置は、ロケーション符号化された符号化データを復号するためのロケーション復号を用いて疎な三次元点群を復号する。
また、三次元データ復号装置は、密な三次元点群の符号化データを復号することで密な三次元点群を得る(S1733)。例えば、三次元データ復号装置は、オキュパンシー符号化された符号化データを復号するためのオキュパンシー復号を用いて密な三次元点群を復号する。
次に、三次元データ復号装置は、ステップS1732で得られた疎な三次元点群と、ステップS1733で得られた密な三次元点群とを結合する(S1734)。
なお、三次元データ復号装置は、疎な三次元点群と密な三次元点群とを並列に復号してもよい。または、三次元データ復号装置は、疎な三次元点群と密な三次元点群とを順に復号してもよい。
また、三次元データ復号装置は、一部の必要なサブ三次元点群を復号してもよい。例えば、三次元データ復号装置は、密な三次元点群を復号し、疎な三次元データを復号しなくてもよい。例えば、密な三次元点群がLiDARデータの重要エリアに含まれる三次元点群である場合、三次元データ復号装置は、その重要エリアの三次元点群を復号する。この重要エリアの三次元点群を用いて車等における自己位置推定などが行われる。
図79は、本実施の形態に係る符号化処理のフローチャートである。まず、三次元データ符号化装置は、入力された三次元点群を疎な三次元点群と密な三次元点群とに分離することで、疎な三次元点群と密な三次元点群を生成する(S1741)。
次に、三次元データ符号化装置は、密な三次元点群を符号化することで符号化データを生成する(S1742)。また、三次元データ符号化装置は、疎な三次元点群を符号化することで符号化データを生成する(S1743)。最後に、三次元データ符号化装置は、ステップS1742で得られた疎な三次元点群の符号化データと、ステップS1743で得られた密な三次元点群の符号化データとを結合することでビットストリーム生成する(S1744)。
図80は、本実施の形態に係る復号処理のフローチャートである。まず、三次元データ復号装置は、ビットスリームから、密な三次元点群の符号化データと疎な三次元点群の符号化データとを抽出する(S1751)。次に、三次元データ復号装置は、密な三次元点群の符号化データを復号することで密な三次元点群の復号データを得る(S1752)。また、三次元データ復号装置は、疎な三次元点群の符号化データを復号することで疎な三次元点群の復号データを得る(S1753)。次に、三次元データ復号装置は、ステップS1752で得られた密な三次元点群の復号データと、ステップS1753で得られた疎な三次元点群の復号データとを結合することで三次元点群を生成する(S1754)。
なお、三次元データ符号化装置及び三次元データ復号装置は、密な三次元点群と疎な三次元点群とのどちらを先に符号化又は復号してもよい。また、複数のプロセッサ等により、並列に符号化処理又は復号処理が行われてもよい。
また、三次元データ符号化装置は、密な三次元点群と疎な三次元点群との一方を符号化してもよい。例えば、密な三次元点群に重要な情報が含まれる場合、三次元データ符号化装置は、入力された三次元点群から密な三次元点群と疎な三次元点群とを抽出し、密な三次元点群を符号化し、疎な三次元点群を符号化しない。これにより、三次元データ符号化装置は、ビット量を抑制しつつ、重要な情報をストリームに付加することができる。例えば、サーバとクライアントとの間において、サーバにクライアントからクライアント周囲の三次元点群情報の送信要求があった場合、サーバは、クライアント周囲の重要な情報を密な三次元点群として符号化してクライアントに送信する。これにより、サーバは、ネットワーク帯域を抑えつつ、クライアントが要求する情報を送信することができる。
また、三次元データ復号装置は、密な三次元点群と疎な三次元点群との一方を復号してもよい。例えば、密な三次元点群に重要な情報が含まれる場合、三次元データ復号装置は、密な三次元点群を復号し、疎な三次元点群を復号しない。これにより、三次元データ復号装置は、復号処理の処理負荷を抑えつつ、必要な情報を取得できる。
図81は、図79に示す三次元点の分離処理(S1741)のフローチャートである。まず、三次元データ符号化装置は、層Lと閾値THを設定する(S1761)。なお、三次元データ符号化装置は、設定した層Lと閾値THとを示す情報をビットストリームに付加してもよい。つまり、三次元データ符号化装置は、設定した層Lと閾値THとを示す情報を含むビットストリームを生成してもよい。
次に、三次元データ符号化装置は、処理対象の位置を、8分木のルートから層Lの先頭の枝に移動する。つまり、三次元データ符号化装置は、処理対象の枝として、層Lの先頭の枝を選択する(S1762)。
次に、三次元データ符号化装置は、層Lの処理対象の枝の有効リーフ数をカウントする(S1763)。処理対象の枝の有効リーフ数が閾値THより多い場合(S1764でYes)、三次元データ符号化装置は、処理対象の枝を密な枝として密な三次元点群に登録する(S1765)。一方、処理対象の枝の有効リーフ数が閾値TH以下の場合(S1764でNo)、三次元データ符号化装置は、処理対象の枝を疎な枝として疎な三次元点群に登録する(S1766)。
層Lの全ての枝の処理を完了していない場合(S1767でNo)、三次元データ符号化装置は、処理対象の位置を、層Lの次の枝に移動する。つまり、三次元データ符号化装置は、処理対象の枝として、層Lの次の枝を選択する(S1768)。そして、三次元データ符号化装置は、選択した次の処理対象の枝に対してステップS1763以降の処理を行う。
上記の処理が、層Lの全ての枝の処理を完了するまで(S1767でYes)、繰り返される。
なお、上記説明では層Lと閾値THは予め設定されているが、必ずしもこれに限らない。例えば、三次元データ符号化装置は、層Lと閾値THとの組を複数パターン設定し、各組を用いて密な三次元点群と疎な三次元点群を生成し、それぞれを符号化する。三次元データ符号化装置は、複数の組のうち、生成された符号化データの符号化効率が最も高い層Lと閾値THとの組で最終的に密な三次元点群と疎な三次元点群を符号化する。これにより符号化効率を高めることができる。また、三次元データ符号化装置は、例えば、層L及び閾値THを算出してもよい。例えば、三次元データ符号化装置は、木構造に含まれる層の最大値の半分の値を層Lに設定してもよい。また、三次元データ符号化装置は、木構造に含まれる複数の三次元点の総数の半分の値を閾値THに設定してもよい。
また、上記説明では、入力三次元点群を密な三次元点群と疎な三次元点群との2種類に分類する例を述べたが、三次元データ符号化装置は、入力三次元点群をを3種類以上の三次元点群に分類してもよい。例えば、三次元データ符号化装置は、処理対象の枝の有効リーフ数が閾値TH1以上の場合、処理対象の枝を第1の密な三次元点群に分類し、処理対象の枝の有効リーフ数が第1閾値TH1未満かつ第2閾値TH2以上の場合、処理対象の枝を第2の密な三次元点群に分類する。三次元データ符号化装置は、処理対象の枝の有効リーフ数が第2閾値TH2未満かつ第3閾値TH3以上の場合、処理対象の枝を第1の疎な三次元点群に分類し、処理対象の枝の有効リーフ数が閾値TH3未満の場合、処理対象の枝を第2の疎な三次元点群に分類する。
以下、本実施の形態に係る三次元点群の符号化データのシンタックス例について説明する。図82は、このシンタックス例を示す図である。pc_header()は、例えば、入力された複数の三次元点のヘッダ情報である。
図82に示すnum_sub_pcは、サブ三次元点群の数を示す。numPoint[i]は、i番目のサブ三次元点群の中に含まれる三次元点の数を示す。coding_type[i]は、i番目のサブ三次元点群に適用される符号化タイプ(符号化方式)を示す符号化タイプ情報である。例えば、coding_type=00はロケーション符号化が適用されていることを示す。coding_type=01はオキュパンシー符号化が適用されていることを示す。coding_type=10又は11は、他の符号化方式が適用されていることを示す。
data_sub_cloud()は、i番目のサブ三次元点群の符号化データである。coding_type_00_dataは、coding_typeが00の符号化タイプが適用された符号化データであり、例えばロケーション符号化が適用された符号化データである。coding_type_01_dataは、coding_typeが01の符号化タイプが適用された符号化データであり、例えばオキュパンシー符号化が適用された符号化データである。
end_of_dataは、符号化データの終端を示す終端情報である。例えば、このend_of_dataには、符号化データに使用しない固定のビット列が割り当てられる。これにより、三次元データ復号装置は、例えば、end_of_dataのビット列をビットストリームから探索することで、復号の必要のない符号化データの復号処理をスキップできる。
なお、三次元データ符号化装置は、上記方法で生成された符号化データをエントロピー符号化してもよい。例えば、三次元データ符号化装置は、各値を2値化したうえで算出符号化する。
また、本実施の形態では、4分木構造又は8分木構造の例を示したが、必ずしもこれに限らず、2分木、16分木等のN分木(Nは2以上の整数)、又は、その他の木構造に対して、上記手法を適用してもよい。
[変形例]
上記説明では、図74及び図75に示すように、密な枝と、その上層(全体の木構造のルートから密な枝のルートに至る木構造)とを含む木構造が符号化され、疎な枝と、その上層(全体の木構造のルートから疎な枝のルートに至る木構造)とを含む木構造が符号化される。本変形例では、三次元データ符号化装置は、密な枝と疎な枝とを分離し、密な枝と疎な枝とを符号化する。つまり、符号化する木構造には、上層の木構造は含まれない。例えば、三次元データ符号化装置は、密な枝にオキュパンシー符号化を適用し、疎な枝にロケーション符号化を適用する。
図83は、図69に示す木構造から分離された、密な枝の例を示す図である。図84は、図69に示す木構造から分離された、疎な枝の例を示す図である。本変形例は、図83及び図84に示す木構造がそれぞれ符号化される。
また、三次元データ符号化装置は、上層の木構造を符号化しない代わりに、枝の位置を示す情報を符号化する。例えば、この情報は、枝のルートの位置を示す。
例えば、三次元データ符号化装置は、密な枝を生成した層を示すレイヤ情報と、密な枝が当該層の何番目の枝であるかを示す枝情報とを、当該密な枝の符号化データとして符号化する。これにより、三次元データ復号装置は、ビットストリームからレイヤ情報及び枝情報を復号し、これらのレイヤ情報及び枝情報を用いて、復号した密な枝がどの層の何番目の枝の三次元点群であるかを把握できる。また同様に、三次元データ符号化装置は、疎な枝を生成した層を示すレイヤ情報と、疎な枝が当該層の何番目の枝であるかを示す枝情報を、疎な枝の符号化データとして符号化する。
これにより、三次元データ復号装置は、ビットストリームからレイヤ情報及び枝情報を復号し、これらのレイヤ情報及び枝情報を用いて、復号した疎な枝がどの層の何番目の枝の三次元点群であるかを把握できる。これにより、密な枝及び疎な枝より上位の層の情報を符号化することによるオーバヘッドを削減できるので、符号化効率を向上できる。
なお、枝情報は、レイヤ情報で示される層内の各枝に割り振られた値を示してもよい。また、枝情報は、8分木のルートを起点として各ノードに割り振られた値を示してもよい。この場合、レイヤ情報は符号化されなくてもよい。また、三次元データ符号化装置は、密な枝と疎な枝をそれぞれ複数生成してもよい。
図85は、本変形例における符号化処理のフローチャートである。まず、三次元データ符号化装置は、入力された三次元点群から1以上の疎な枝と1以上の密な枝とを生成する(S1771)。
次に、三次元データ符号化装置は、密な枝を符号化することで符号化データを生成する(S1772)。次に、三次元データ符号化装置は、ステップS1771で生成した全ての密な枝の符号化が完了したか否かを判定する(S1773)。
全ての密な枝の符号化が完了していない場合(S1773でNo)、三次元データ符号化装置は、次の密な枝を選択し(S1774)、選択した密な枝を符号化することで符号化データを生成する(S1772)。
一方、全ての密な枝の符号化が完了した場合(S1773でYes)、三次元データ符号化装置は、疎な枝を符号化することで符号化データを生成する(S1775)。次に、三次元データ符号化装置は、ステップS1771で生成した全ての疎な枝の符号化が完了したか否かを判定する(S1776)。
全ての疎な枝の符号化が完了していない場合(S1776でNo)、三次元データ符号化装置は、次の疎な枝を選択し(S1777)、選択した疎な枝を符号化することで符号化データを生成する(S1775)。
一方、全ての疎な枝の符号化が完了した場合(S1776でYes)、三次元データ符号化装置は、ステップS1772及びS1775で生成された符号化データを結合してビットストリームを生成する(S1778)。
図85は、本変形例における復号処理のフローチャートである。まず、三次元データ復号装置は、ビットストリームから、密な枝の1以上の符号化データと疎な枝の1以上の符号化データとを抽出する(S1781)。次に、三次元データ復号装置は、密な枝の符号化データを復号することで密な枝の復号データを得る(S1782)。
次に、三次元データ復号装置は、ステップS1781で抽出した全ての密な枝の符号化データの復号が完了したか否かを判定する(S1783)。全ての密な枝の符号化データの復号が完了していない場合(S1783でNo)、三次元データ復号装置は、次の密な枝の符号化データを選択し(S1784)、選択した密な枝の符号化データを復号することで密な枝の復号データを得る(S1782)。
一方、全ての密な枝の符号化データの復号が完了した場合(S1783でYes)、三次元データ復号装置は、疎な枝の符号化データを復号することで疎な枝の復号データを得る(S1785)。
次に、三次元データ復号装置は、ステップS1781で抽出した全ての疎な枝の符号化データの復号が完了したか否かを判定する(S1786)。全ての疎な枝の符号化データの復号が完了していない場合(S1786でNo)、三次元データ復号装置は、次の疎な枝の符号化データを選択し(S1787)、選択した疎な枝の符号化データを復号することで疎な枝の復号データを得る(S1785)。
一方、全ての疎な枝の符号化データの復号が完了した場合(S1786でYes)、三次元データ復号装置は、ステップS1782及びS1785で得られた復号データを結合することで三次元点群を生成する(S1788)。
なお、三次元データ符号化装置及び三次元データ復号装置は、密な枝と疎な枝とのどちらを先に符号化又は復号してもよい。また、複数のプロセッサ等により、並列に符号化処理、又は復号処理が行われてもよい。
また、三次元データ符号化装置は、密な枝と疎な枝との一方を符号化してもよい。また、三次元データ符号化装置は、複数の密な枝の一部を符号化してもよい。例えば、特定の密な枝に重要な情報が含まれる場合、三次元データ符号化装置は、入力された三次元点群から密な枝と疎な枝とを抽出し、重要な情報が含まれる密な枝を符号化し、他の密な枝及び疎な枝を符号化しない。これにより、三次元データ符号化装置は、ビット量を抑制しつつ、重要な情報をストリームに付加することができる。例えば、サーバとクライアントとの間において、サーバにクライアントからクライアント周囲の三次元点群情報の送信要求があった場合、サーバは、クライアント周囲の重要な情報を密な枝として符号化してクライアントに送信する。これにより、サーバは、ネットワーク帯域を抑えつつ、クライアントが要求する情報を送信することができる。
また、三次元データ復号装置は、密な枝と疎な枝との一方を復号してもよい。また、三次元データ復号装置は、複数の密な枝の一部を復号してもよい。例えば、特定の密な枝に重要な情報が含まれる場合、三次元データ復号装置は、その特定の密な枝を復号し、他の密な枝及び疎な枝を復号しない。これにより、三次元データ復号装置は、復号処理の処理負荷を抑えつつ、必要な情報を取得できる。
図87は、図85に示す三次元点の分離処理(S1771)のフローチャートである。まず、三次元データ符号化装置は、層Lと閾値THを設定する(S1761)。なお、三次元データ符号化装置は、設定した層Lと閾値THとを示す情報をビットストリームに付加してもよい。
次に、三次元データ符号化装置は、処理対象の枝として、層Lの先頭の枝を選択する(S1762)。次に、三次元データ符号化装置は、層Lの処理対象の枝の有効リーフ数をカウントする(S1763)。処理対象の枝の有効リーフ数が閾値THより多い場合(S1764でYes)、三次元データ符号化装置は、処理対象の枝を密な枝に設定し、ビットストリームにレイヤ情報と枝情報とを付加する(S1765A)。一方、処理対象の枝の有効リーフ数が閾値TH以下の場合(S1764でNo)、三次元データ符号化装置は、処理対象の枝を疎な枝に設定し、ビットストリームにレイヤ情報と枝情報とを付加する(S1766A)。
層Lの全ての枝の処理を完了していない場合(S1767でNo)、三次元データ符号化装置は、処理対象の枝として、層Lの次の枝を選択する(S1768)。そして、三次元データ符号化装置は、選択した次の処理対象の枝に対してステップS1763以降の処理を行う。上記の処理が、層Lの全ての枝の処理を完了するまで(S1767でYes)、繰り返される。
なお、上記説明では層Lと閾値THは予め設定されているが、必ずしもこれに限らない。例えば、三次元データ符号化装置は、層Lと閾値THとの組を複数パターン設定し、各組を用いて密な枝と疎な枝とを生成し、それぞれを符号化する。三次元データ符号化装置は、複数の組のうち、生成された符号化データの符号化効率が最も高い層Lと閾値THとの組で最終的に密な枝と疎な枝を符号化する。これにより符号化効率を高めることができる。また、三次元データ符号化装置は、例えば、層L及び閾値THを算出してもよい。例えば、三次元データ符号化装置は、木構造に含まれる層の最大値の半分の値を層Lに設定してもよい。また、三次元データ符号化装置は、木構造に含まれる複数の三次元点の総数の半分の値を閾値THに設定してもよい。
以下、本変形例に係る三次元点群の符号化データのシンタックス例について説明する。図88は、このシンタックス例を示す図である。図88に示すシンタックス例では、図82に示すシンタックス例に対して、レイヤ情報であるlayer_id[i]と、枝情報であるbranch_id[i]とが追加されている。
layer_id[i]は、i番目のサブ三次元点群が属するレイヤ番号を示す。branch_id[i]は、i番目のサブ三次元点群のlayer_id[i]内における枝番号を示す。
layer_id[i]及びbranch_id[i]は、例えば8分木における枝の場所を表すレイヤ情報及び枝情報である。例えば、layer_id[i]=2、branch_id[i]=5は、i番目の枝が層2の5番目の枝であることを示す。
なお、三次元データ符号化装置は、上記方法で生成された符号化データをエントロピー符号化してもよい。例えば、三次元データ符号化装置は、各値を2値化したうえで算出符号化する。
また、本変形例では、4分木構造又は8分木構造の例を示したが、必ずしもこれに限らず、2分木、16分木等のN分木(Nは2以上の整数)、又は、その他の木構造に対して、上記手法を適用してもよい。
以上のように、本実施の形態に係る三次元データ符号化装置は、図89に示す処理を行う。
まず、三次元データ符号化装置は、三次元データに含まれる複数の三次元点のN(Nは2以上の整数)分木構造を生成する(S1801)。
次に、三次元データ符号化装置は、N分木構造に含まれる複数の層のいずれかである第1層に含まれる第1ノードをルートとする第1の枝を第1符号化処理で符号化することで第1符号化データを生成する(S1802)。
また、三次元データ符号化装置は、第1層に含まれる、第1ノードと異なる第2ノードをルートとする第2の枝を第1符号化処理と異なる第2符号化処理で符号化することで第2符号化データを生成する(S1803)。
次に、三次元データ符号化装置は、第1符号化データと第2符号化データとを含むビットストリームを生成する(S1804)。
これによれば、三次元データ符号化装置は、N分木構造に含まれる各々の枝に適した符号化処理を適用できるので符号化効率を向上できる。
例えば、第1の枝に含まれる三次元点の数は、予め定められた閾値より少なく、第2の枝に含まれる三次元点の数は、閾値より多い。つまり、三次元データ符号化装置は、処理対象の枝に含まれる三次元点の数が、閾値より少ない場合、処理対象の枝を第1の枝に設定し、処理対象の枝に含まれる三次元点の数が、閾値より多い場合、処理対象の枝を第2の枝に設定する。
例えば、第1符号化データは、第1の枝に含まれる複数の第1三次元点の第1N分木構造を第1方式で表す第1情報を含む。第2符号化データは、第2の枝に含まれる複数の第2三次元点の第2N分木構造を第2方式で表す第2情報を含む。つまり、第1符号化処理と第2符号化処理とは、符号化方式が異なる。
例えば、第1符号化処理ではロケーション符号化が用いられ、第2符号化処理ではオキュパンシー符号化が用いられる。つまり、第1情報は、複数の第1三次元点の各々に対応する三次元点情報を含む。各三次元点情報は、第1N分木構造における複数の層の各々に対応するインデックスを含む。各インデックスは、対応する層に属するN個のサブブロックのうち、対応する第1三次元点が属するサブブロックを示す。第2情報は、第2N分木構造における複数の層に属する複数のサブブロックの各々に対応し、対応するサブブロックに三次元点が存在するか否かを示す1ビットの情報を複数含む。
例えば、第2符号化処理で使用される量子化パラメータは、第1符号化処理で使用される量子化パラメータと異なる。つまり、第1符号化処理と第2符号化処理とは、符号化方式は同一であり、使用されるパラメータが異なる。
例えば、図73及び図74に示すように、三次元データ符号化装置は、第1の枝の符号化では、N分木構造のルートから第1ノードに至る木構造と、第1の枝とを含む木構造を第1符号化処理で符号化し、第2の枝の符号化では、N分木構造のルートから第2ノードに至る木構造と、第2の枝とを含む木構造を第2符号化処理で符号化する。
例えば、第1符号化データは、第1の枝の符号化データと、N分木構造における第1ノードの位置を示す第3情報とを含む。第2符号化データは、第2の枝の符号化データと、N分木構造における第2ノードの位置を示す第4情報とを含む。
例えば、第3情報は、第1層を示す情報(レイヤ情報)と、第1ノードが第1層に含まれるノードのうちいずれのノードであるかを示す情報(枝情報)とを含む。第4情報は、第1層を示す情報(レイヤ情報)と、第2ノードが第1層に含まれるノードのうちいずれのノードであるかを示す情報(枝情報)とを含む。
例えば、第1符号化データは、第1の枝に含まれる三次元点の数を示す情報(numPoint)を含み、第2符号化データは、第2の枝に含まれる三次元点の数を示す情報(numPoint)を含む。
例えば、三次元データ符号化装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、実施の形態に係る三次元データ復号装置は、図90に示す処理を行う。
まず、三次元データ復号装置は、ビットストリームから、複数の三次元点のN(Nは2以上の整数)分木構造に含まれる複数の層のいずれかである第1層に含まれる第1ノードをルートとする第1の枝が符号化されることで得られた第1符号化データと、第1層に含まれる、第1ノードと異なる第2ノードをルートとする第2の枝が符号化されることで得られた第2符号化データとを取得する(S1811)。
次に、三次元データ復号装置は、第1符号化データを第1復号処理で復号することで第1の枝の第1復号データを生成する(S1812)。
また、三次元データ復号装置は、第2符号化データを、第1復号処理と異なる第2復号処理で復号することで第2の枝の第2復号データを生成する(S1813)。
次に、三次元データ復号装置は、第1復号データと第2復号データとを用いて複数の三次元点を復元する(S1814)。例えば、この三次元点は、第1復号データで示される複数の三次元点と、第2復号データで示される複数の三次元点とを含む。
これによれば、三次元データ復号装置は、符号化効率を向上したビットストリームを復号できる。
例えば、第1の枝に含まれる三次元点の数は、予め定められた閾値より少なく、第2の枝に含まれる三次元点の数は、閾値より多い。
例えば、第1符号化データは、第1の枝に含まれる複数の第1三次元点の第1N分木構造を第1方式で表す第1情報を含む。第2符号化データは、第2の枝に含まれる複数の第2三次元点の第2N分木構造を第2方式で表す第2情報を含む。つまり、第1復号処理と第2復号処理とは、符号化方式(復号方式)が異なる。
例えば、第1符号化データにはロケーション符号化が用いられており、第2符号化データにはオキュパンシー符号化が用いられている。つまり、第1情報は、複数の第1三次元点の各々に対応する三次元点情報を含む。各三次元点情報は、第1N分木構造における複数の層の各々に対応するインデックスを含む。各インデックスは、対応する層に属するN個のサブブロックのうち、対応する第1三次元点が属するサブブロックを示す。第2情報は、第2N分木構造における複数の層に属する複数のサブブロックの各々に対応し、対応するサブブロックに三次元点が存在するか否かを示す1ビットの情報を複数含む。
例えば、第2復号処理で使用される量子化パラメータは、第1復号処理で使用される量子化パラメータと異なる。つまり、第1復号処理と第2復号処理とは、符号化方式(復号方式)は同一であり、使用されるパラメータが異なる。
例えば、図73及び図74に示すように、三次元データ復号装置は、第1の枝の復号では、N分木構造のルートから第1ノードに至る木構造と、第1の枝とを含む木構造を第1復号処理で復号し、第2の枝の復号では、N分木構造のルートから第2ノードに至る木構造と、第2の枝とを含む木構造を第2復号処理で復号する。
例えば、第1符号化データは、第1の枝の符号化データと、N分木構造における第1ノードの位置を示す第3情報とを含む。第2符号化データは、第2の枝の符号化データと、N分木構造における第2ノードの位置を示す第4情報とを含む。
例えば、第3情報は、第1層を示す情報(レイヤ情報)と、第1ノードが第1層に含まれるノードのうちいずれのノードであるかを示す情報(枝情報)とを含む。第4情報は、第1層を示す情報(レイヤ情報)と、第2ノードが第1層に含まれるノードのうちいずれのノードであるかを示す情報(枝情報)とを含む。
例えば、第1符号化データは、第1の枝に含まれる三次元点の数を示す情報(numPoint)を含み、第2符号化データは、第2の枝に含まれる三次元点の数を示す情報(numPoint)を含む。
例えば、三次元データ復号装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
(実施の形態10)
本実施の形態では、オキュパンシー符号の符号化時における参照の制御方法について説明する。なお、以下では、主に三次元データ符号化装置の動作を説明するが、三次元データ復号装置においても同様の処理が行われてもよい。
図91及び図92は、本実施の形態に係る参照関係を示す図である、図91は、参照関係を8分木構造上で示す図であり、図92は、参照関係を空間領域上で示す図である。
本実施の形態では、三次元データ符号化装置は、符号化対象のノード(以下、対象ノードと呼ぶ)の符号化情報を符号化する際に、対象ノードが属する親ノード(parent node)内の各ノードの符号化情報を参照する。ただし、親ノードと同一層の他のノード(以下、親隣接ノード)内の各ノードの符号化情報は参照しない。つまり、三次元データ符号化装置は、親隣接ノードの参照を不可に設定する、又は参照を禁止にする。
なお、三次元データ符号化装置は、親ノードが属する親ノード(以下、祖父ノード(grandparent node)と呼ぶ)内の符号化情報の参照を許可してもよい。つまり、三次元データ符号化装置は、対象ノードが属する親ノード及び祖父ノードの符号化情報を参照して対象ノードの符号化情報を符号化してもよい。
ここで符号化情報とは、例えばオキュパンシー符号である。三次元データ符号化装置は、対象ノードのオキュパンシー符号を符号化する際に、対象ノードが属する親ノード内の各ノードに点群が含まれるか否かを示す情報(以下、占有情報)を参照する。言い換えると、三次元データ符号化装置は、対象ノードのオキュパンシー符号を符号化する際に、親ノードのオキュパンシー符号を参照する。一方で、三次元データ符号化装置は、親隣接ノード内の各ノードの占有情報は参照しない。つまり、三次元データ符号化装置は、親隣接ノードのオキュパンシー符号を参照しない。また、三次元データ符号化装置は、祖父ノード内の各ノードの占有情報を参照してもよい。つまり、三次元データ符号化装置は、親ノード及び親隣接ノードの占有情報を参照してもよい。
例えば、三次元データ符号化装置は、対象ノードのオキュパンシー符号を符号化する際に、対象ノードが属する親ノード又は祖父ノードのオキュパンシー符号を用いて対象ノードのオキュパンシー符号をエントロピー符号化する際に用いる符号化テーブルを切替える。なお、この詳細は後述する。この際、三次元データ符号化装置は、親隣接ノードのオキュパンシー符号を参照しなくてもよい。これにより、三次元データ符号化装置は、対象ノードのオキュパンシー符号を符号化する際に、親ノード又は祖父ノードのオキュパンシー符号の情報に応じて適切に符号化テーブルを切替えることができるので、符号化効率を向上できる。また、三次元データ符号化装置は、親隣接ノードを参照しないことで、親隣接ノードの情報の確認処理、及びそれらを記憶するためのメモリ容量を抑制することができる。また、8分木の各ノードのオキュパンシー符号を深さ優先順にスキャンして符号化することが容易となる。
以下、親ノードのオキュパンシー符号を用いた符号化テーブル切替例について説明する。図93は、対象ノードと隣接参照ノードの例を示す図である。図94は、親ノードとノードとの関係を示す図である。図95は、親ノードのオキュパンシー符号の例を示す図である。ここで、隣接参照ノードとは、対象ノードに空間的に隣接するノードのうち、対象ノードの符号化の際に参照されるノードである。図93に示す例では、隣接ノードは、対象ノードと同一層に属するノードである。また、参照隣接ノードとして対象ブロックのx方向に隣接するノードXと、y方向に隣接するノードYと、z方向に隣接するノードZとが用いられる。つまり、x、y、zの各方向においてそれぞれ1つの隣接ブロックが参照隣接ブロックに設定される。
なお、図94に示すノード番号は一例であり、ノード番号とノードの位置との関係はこれに限らない。また、図95では、下位ビットにノード0が割り当てられ、上位ビットにノード7が割り当てられているが、逆の順序で割り当てが行われてもよい。また、各ノードは任意のビットに割り当てられてもよい。
三次元データ符号化装置は、対象ノードのオキュパンシー符号をエントロピー符号化する際の符号化テーブルを、例えば下記式により決定する。
CodingTable=(FlagX<<2)+(FlagY<<1)+(FlagZ)
ここで、CodingTableは、対象ノードのオキュパンシー符号用の符号化テーブルを示し、値0〜7のいずれかを示す。FlagXは、隣接ノードXの占有情報であり、隣接ノードXが点群を含む(占有)なら1を示し、そうでないなら0を示す。FlagYは、隣接ノードYの占有情報であり、隣接ノードYが点群を含む(占有)なら1を示し、そうでないなら0を示す。FlagZは、隣接ノードZの占有情報であり、隣接ノードZが点群を含む(占有)なら1を示し、そうでないなら0を示す。
なお、隣接ノードが占有であるか否かを示す情報は、親ノードのオキュパンシー符号にに含まれているため、三次元データ符号化装置は、親ノードのオキュパンシー符号に示される値を用いて符号化テーブルを選択してもよい。
以上により、三次元データ符号化装置は、対象ノードの隣接ノードに点群が含まれるか否かを示す情報を用いて符号化テーブルを切替えることで符号化効率を向上できる。
また、三次元データ符号化装置は、図93に示すように、親ノード内の対象ノードの空間位置に応じて隣接参照ノードを切替えてもよい。つまり、三次元データ符号化装置は、対象ノードの親ノード内の空間位置に応じて、複数の隣接ノードのうち、参照する隣接ノードを切り替えてもよい。
次に、三次元データ符号化装置及び三次元データ復号装置の構成例を説明する。図96は、本実施の形態に係る三次元データ符号化装置2100のブロック図である。図96に示す三次元データ符号化装置2100は、8分木生成部2101と、幾何情報算出部2102と、符号化テーブル選択部2103と、エントロピー符号化部2104とを備える。
8分木生成部2101は、入力された三次元点(ポイントクラウド)から、例えば8分木を生成し、8分木に含まれる各ノードのオキュパンシー符号を生成する。幾何情報算出部2102は、対象ノードの隣接参照ノードが占有であるか否かを示す占有情報を取得する。例えば、幾何情報算出部2102は、対象ノードが所属する親ノードのオキュパンシー符号から隣接参照ノードの占有情報を取得する。なお、幾何情報算出部2102は、図93に示すように、対象ノードの親ノード内の位置に応じて隣接参照ノードを切替えてもよい。また、幾何情報算出部2102は、親隣接ノード内の各ノードの占有情報は参照しない。
符号化テーブル選択部2103は、幾何情報算出部2102で算出された隣接参照ノードの占有情報を用いて対象ノードのオキュパンシー符号のエントロピー符号化に用いる符号化テーブルを選択する。エントロピー符号化部2104は、選択された符号化テーブルを用いてオキュパンシー符号をエントロピー符号化することでビットストリームを生成する。なお、エントロピー符号化部2104は、選択された符号化テーブルを示す情報をビットストリームに付加してもよい。
図97は、本実施の形態に係る三次元データ復号装置2110のブロック図である。図97に示す三次元データ復号装置2110は、8分木生成部2111と、幾何情報算出部2112と、符号化テーブル選択部2113と、エントロピー復号部2114とを備える。
8分木生成部2111は、ビットストリームのヘッダ情報等を用いて、ある空間(ノード)の8分木を生成する。8分木生成部2111は、例えば、ヘッダ情報に付加されたある空間のx軸、y軸、z軸方向の大きさを用いて大空間(ルートノード)を生成し、その空間をx軸、y軸、z軸方向にそれぞれ2分割することで8個の小空間A(ノードA0〜A7)を生成して8分木を生成する。また、対象ノードとしてノードA0〜A7が順に設定される。
幾何情報算出部2112は、対象ノードの隣接参照ノードが占有であるか否かを示す占有情報を取得する。例えば、幾何情報算出部2112は、対象ノードが所属する親ノードのオキュパンシー符号から隣接参照ノードの占有情報を取得する。なお、幾何情報算出部2112は、図93に示すように、対象ノードの親ノード内の位置に応じて隣接参照ノードを切替えてもよい。また、幾何情報算出部2112は、親隣接ノード内の各ノードの占有情報は参照しない。
符号化テーブル選択部2113は、幾何情報算出部2112で算出された隣接参照ノードの占有情報を用いて対象ノードのオキュパンシー符号のエントロピー復号に用いる符号化テーブル(復号テーブル)を選択する。エントロピー復号部2114は、選択された符号化テーブルを用いてオキュパンシー符号をエントロピー復号することで、三次元点を生成する。なお、符号化テーブル選択部2113は、ビットストリームに付加された、選択された符号化テーブルの情報を復号して取得し、エントロピー復号部2114は、取得された情報で示される符号化テーブルを用いてもよい。
ビットストリームに含まれるオキュパンシー符号(8ビット)の各ビットは、8個の小空間A(ノードA0〜ノードA7)にそれぞれ点群が含まれるか否かを示す。また更に、三次元データ復号装置は、小空間ノードA0を8個の小空間B(ノードB0〜ノードB7)に分割して8分木を生成し、小空間Bの各ノードに点群が含まれるか否かを示す情報をオキュパンシー符号を復号して取得する。このように、三次元データ復号装置は、大空間から小空間へと8分木を生成しながら各ノードのオキュパンシー符号を復号する。
以下、三次元データ符号化装置及び三次元データ復号装置による処理の流れを説明する。図98は、三次元データ符号化装置における三次元データ符号化処理のフローチャートである。まず、三次元データ符号化装置は、入力された三次元点群の一部又は全てが含まれる空間(対象ノード)を決定(定義)する(S2101)。次に、三次元データ符号化装置は、対象ノードを8分割して8個の小空間(ノード)を生成する(S2102)。次に、三次元データ符号化装置は、各ノードに点群が含まれるか否かに応じて対象ノードのオキュパンシー符号を生成する(S2103)。
次に、三次元データ符号化装置は、対象ノードの隣接参照ノードの占有情報を、対象ノードの親ノードのオキュパンシー符号から算出(取得)する(S2104)。次に、三次元データ符号化装置は、決定した対象ノードの隣接参照ノードの占有情報に基づき、エントロピー符号化に用いる符号化テーブルを選択する(S2105)。次に、三次元データ符号化装置は、選択した符号化テーブルを用いて対象ノードのオキュパンシー符号をエントロピー符号化する(S2106)。
さらに、三次元データ符号化装置は、各ノードをそれぞれ8分割し、各ノードのオキュパンシー符号を符号化するという処理を、ノードが分割できなくなるまで繰り返す(S2107)。つまり、ステップS2102〜S2106までの処理が再帰的に繰り返される。
図99は、三次元データ復号装置における三次元データ復号方法のフローチャートである。まず、三次元データ復号装置は、ビットストリームのヘッダ情報を用いて復号する空間(対象ノード)を決定(定義)する(S2111)。次に、三次元データ復号装置は、対象ノードを8分割して8個の小空間(ノード)を生成する(S2112)。次に、三次元データ復号装置は、対象ノードの隣接参照ノードの占有情報を、対象ノードの親ノードのオキュパンシー符号から算出(取得)する(S2113)。
次に、三次元データ復号装置は、隣接参照ノードの占有情報に基づきエントロピー復号に用いる符号化テーブルを選択する(S2114)。次に、三次元データ復号装置は、選択した符号化テーブルを用いて対象ノードのオキュパンシー符号をエントロピー復号する(S2115)。
さらに、三次元データ復号装置は、各ノードをそれぞれ8分割し、各ノードのオキュパンシー符号を復号するという処理を、ノードが分割できなくなるまで繰り返す(S2116)。つまり、ステップS2112〜S2115までの処理が再帰的に繰り返される。
次に、符号化テーブルの切替えの例を説明する。図100は、符号化テーブルの切替え例を示す図である。例えば、図100に示す符号化テーブル0のように、複数のオキュパンシー符号に同一のコンテキストモデルが適用されてもよい。また、各オキュパンシー符号に別々のコンテキストモデルが割り当てられてもよい。これにより、オキュパンシー符号の出現確率に応じてコンテキストモデルを割り当てることができるので、符号化効率を向上できる。また、オキュパンシー符号の出現頻度に応じて確率テーブルを更新するコンテキストモデルが用いられてもよい。または、確率テーブルを固定したコンテキストモデルが用いられてもよい。
以下、本実施の形態の変形例1について説明する。図101は、本変形例における参照関係を示す図である。上記実施の形態では、三次元データ符号化装置は、親隣接ノードのオキュパンシー符号を参照しないとしたが、親隣接ノードのオキュパンシー符号化を参照するか否かを、特定の条件に応じて切り替えてもよい。
例えば、三次元データ符号化装置は、8分木を幅優先でスキャンしながら符号化を行うときは、親隣接ノード内のノードの占有情報を参照して、対象ノードのオキュパンシー符号を符号化する。一方、三次元データ符号化装置は、8分木を深さ優先でスキャンしながら符号化するときは、親隣接ノード内のノードの占有情報の参照を禁止する。このように8分木のノードのスキャン順(符号化順)に応じて、適切に参照可能なノードを切替えることにより、符号化効率の向上と処理負荷の抑制を実現できる。
なお、三次元データ符号化装置は、8分木を幅優先で符号化したか、深さ優先で符号化したか等の情報をビットストリームのヘッダに付加してもよい。図102は、この場合のヘッダ情報のシンタックス例を示す図である。図102に示すoctree_scan_orderは、8分木の符号化順を示す符号化順情報(符号化順フラグ)である。例えば、octree_scan_orderが0の場合、幅優先を示し、1の場合は深さ優先を示す。これにより、三次元データ復号装置は、octree_scan_orderを参照することで、ビットストリームが幅優先及び深さ優先のどちらで符号化されたかを知ることができるので、ビットストリームを適切に復号できる。
また、三次元データ符号化装置は、親隣接ノードの参照を禁止するか否かを示す情報をビットストリームのヘッダ情報に付加してもよい。図103は、この場合のヘッダ情報のシンタックス例を示す図である。limit_refer_flagは、親隣接ノードの参照を禁止するか否かを示す禁止切替情報(禁止切替フラグ)である。例えば、limit_refer_flagが1の場合は親隣接ノードの参照を禁止することを示し、0の場合は参照制限なし(親隣接ノードの参照を許可する)を示す。
つまり、三次元データ符号化装置は、親隣接ノードの参照を禁止するか否かを決定し、上記決定の結果に基づき、親隣接ノードの参照を禁止するか、許可するかを切り替える。また、三次元データ符号化装置は、上記決定の結果であって、親隣接ノードの参照を禁止するか否かを示す禁止切替情報を含むビットストリームを生成する。
また、三次元データ復号装置は、親隣接ノードの参照を禁止するか否かを示す禁止切替情報をビットストリームから取得し、禁止切替情報に基づき、親隣接ノードの参照を禁止するか、許可するかを切り替える。
これにより三次元データ符号化装置は、親隣接ノードの参照を制御してビットストリームを生成できる。また、三次元データ復号装置は、親隣接ノードの参照が禁止されているか否かを示す情報をビットストリームのヘッダから取得できる。
また、本実施の形態では、親隣接ノードの参照を禁止する符号化処理の例としてオキュパンシー符号の符号化処理を例として記載したが、必ずしもこれに限らない。例えば、8分木のノードの他の情報を符号化する際にも同様の手法を適用可能である。例えば、ノードに付加された色、法線ベクトル、又は反射率等のその他の属性情報を符号化する際に、本実施の形態の手法を適用してもよい。また、符号化テーブル又は予測値を符号化する際にも同様の手法を適用できる。
次に、本実施の形態の変形例2について説明する。上記説明では、図93に示すように、3つの参照隣接ノードが用いられる例を示したが4つ以上の参照隣接ノードが用いられてもよい。図104は、対象ノード及び参照隣接ノードの例を示す図である。
例えば、三次元データ符号化装置は、図104に示す対象ノードのオキュパンシー符号をエントロピー符号化する際の符号化テーブルを、例えば下記式により算出する。
CodingTable=(FlagX0<<3)+(FlagX1<<2)+(FlagY<<1)+(FlagZ)
ここで、CodingTableは、対象ノードのオキュパンシー符号用の符号化テーブルを示し、値0〜15のいずれかを示す。FlagXNは、隣接ノードXN(N=0..1)の占有情報であり、隣接ノードXNが点群を含む(占有)なら1を示し、そうでないなら0を示す。FlagYは、隣接ノードYの占有情報であり、隣接ノードYが点群を含む(占有)なら1を示し、そうでないなら0を示す。FlagZは、隣接ノードZの占有情報であり、隣接ノードZが点群を含む(占有)なら1を示し、そうでないなら0を示す。
この際、もし隣接ノード、例えば図104の隣接ノードX0が参照不可(参照禁止)の場合は、三次元データ符号化装置は、代替値として1(占有)、又は、0(非占有)のような固定値を用いてもよい。
図105は、対象ノード及び隣接ノードの例を示す図である。図105に示すように、隣接ノードが参照不可(参照禁止)の場合は、対象ノードの祖父ノードのオキュパンシー符号を参照して、隣接ノードの占有情報を算出してもよい。例えば、三次元データ符号化装置は、図105に示す隣接ノードX0の代わりに、隣接ノードG0の占有情報を用いて上式のFlagX0を算出し、算出したFlagX0を用いて符号化テーブルの値を決定してもよい。なお、図105に示す隣接ノードG0は、祖父ノードのオキュパンシー符号で占有か否かが判別できる隣接ノードである。隣接ノードX1は、親ノードのオキュパンシー符号で占有か否かが判別できる隣接ノードである。
以下、本実施の形態の変形例3について説明する。図106及び図107は、本変形例に係る参照関係を示す図である、図106は、参照関係を8分木構造上で示す図であり、図107は、参照関係を空間領域上で示す図である。
本変形例では、三次元データ符号化装置は、符号化対象のノード(以下、対象ノード2と呼ぶ)の符号化情報を符号化する際に、対象ノード2が属する親ノード内の各ノードの符号化情報を参照する。つまり、三次元データ符号化装置は、複数の隣接ノードのうち、対象ノードと親ノードが同一である第1ノードの子ノードの情報(例えば占有情報)の参照を許可する。例えば、三次元データ符号化装置は、図106に示す対象ノード2のオキュパンシー符号を符号化する際に、対象ノード2が属する親ノード内に存在するノード、例えば、図106に示す対象ノードのオキュパンシー符号を参照する。図106に示す対象ノードのオキュパンシー符号は、図107に示すように、例えば、対象ノード2に隣接する対象ノード内の各ノードが占有であるか否かを表している。よって、三次元データ符号化装置は、対象ノードのより細かい形状に応じて対象ノード2のオキュパンシー符号の符号化テーブルを切替えることができるので符号化効率を向上できる。
三次元データ符号化装置は、対象ノード2のオキュパンシー符号をエントロピー符号化する際の符号化テーブルを、例えば下記式により算出してもよい。
CodingTable=(FlagX1<<5)+(FlagX2<<4)+(FlagX3<<3)+(FlagX4<<2)+(FlagY<<1)+(FlagZ)
ここで、CodingTableは、対象ノード2のオキュパンシー符号用の符号化テーブルを示し、値0〜63のいずれかを示す。FlagXNは、隣接ノードXN(N=1..4)の占有情報であり、隣接ノードXNが点群を含む(占有)なら1を示し、そうでないなら0を示す。FlagYは、隣接ノードYの占有情報であり、隣接ノードYが点群を含む(占有)なら1を示し、そうでないなら0を示す。FlagZは、隣接ノードYの占有情報であり、隣接ノードZが点群を含む(占有)なら1を示し、そうでないなら0を示す。
なお、三次元データ符号化装置は、符号化テーブルの算出方法を親ノード内における対象ノード2のノード位置に応じて変更してもよい。
また、三次元データ符号化装置は、親隣接ノードの参照が禁止されていない場合、親隣接ノード内の各ノードの符号化情報を参照してよい。例えば、親隣接ノードの参照が禁止されていない場合、対象ノードと親ノードが異なる第3ノードの子ノードの情報(例えば占有情報)の参照が許可される。例えば、図105に示す例では、三次元データ符号化装置は、対象ノードと親ノードが異なる隣接ノードX0のオキュパンシー符号を参照して、隣接ノードX0の子ノードの占有情報を取得する。三次元データ符号化装置は、取得した隣接ノードX0の子ノードの占有情報に基づき、対象ノードのオキュパンシー符号のエントロピー符号化に用いる符号化テーブルを切替える。
以上のように、本実施の形態に係る三次元データ符号化装置は、三次元データに含まれる複数の三次元点のN(Nは2以上の整数)分木構造に含まれる対象ノードの情報(例えばオキュパンシー符号)を符号化する。図91及び図92に示すように、三次元データ符号化装置は、上記符号化では、対象ノードと空間的に隣接する複数の隣接ノードのうち、対象ノードと親ノードが同一である第1ノードの情報(例えば占有情報)の参照を許可し、対象ノードと親ノードが異なる第2ノードの情報(例えば占有情報)の参照を禁止する。言い換えると、三次元データ符号化装置は、上記符号化では、親ノードの情報(例えばオキュパンシー符号)の参照を許可し、親ノードと同一層の他のノード(親隣接ノード)の情報(例えばオキュパンシー符号)の参照を禁止する。
これによれば、当該三次元データ符号化装置は、対象ノードと空間的に隣接する複数の隣接ノードのうち、対象ノードと親ノードが同一である第1ノードの情報の参照することで符号化効率を向上できる。また、当該三次元データ符号化装置は、複数の隣接ノードのうち、対象ノードと親ノードが異なる第2ノードの情報の参照をしないことにより、処理量を低減できる。このように、当該三次元データ符号化装置は、符号化効率を向上できるとともに、処理量を低減できる。
例えば、三次元データ符号化装置は、さらに、第2ノードの情報の参照を禁止するか否かを決定し、上記符号化では、上記決定の結果に基づき、第2ノードの情報の参照を禁止するか、許可するかを切り替える。三次元データ符号化装置は、さらに、上記決定の結果であって、第2ノードの情報の参照を禁止するか否かを示す禁止切替情報(例えば、図103に示すlimit_refer_flag)を含むビットストリームを生成する。
これによれば、当該三次元データ符号化装置は、第2ノードの情報の参照を禁止するか否かを切り替えることができる。また、三次元データ復号装置は、禁止切替情報を用いて適切に復号処理を行うことができる。
例えば、対象ノードの情報は、対象ノードに属する子ノードの各々に三次元点が存在するか否かを示す情報(例えオキュパンシー符号)であり、第1ノードの情報は、第1ノードに三次元点が存在するか否かを示す情報(第1ノードの占有情報)であり、第2ノードの情報は、第2ノードに三次元点が存在するか否かを示す情報(第2ノードの占有情報)である。
例えば、三次元データ符号化装置は、上記符号化では、第1ノードに三次元点が存在するか否かに基づき、符号化テーブルを選択し、選択された符号化テーブルを用いて、対象ノードの情報(例えばオキュパンシー符号)をエントロピー符号化する。
例えば、三次元データ符号化装置は、上記符号化では、図106及び図107に示すように、複数の隣接ノードのうち、第1ノードの子ノードの情報(例えば占有情報)の参照を許可する。
これによれば、当該三次元データ符号化装置は、隣接ノードのより詳細な情報を参照することができるので符号化効率を向上できる。
例えば、三次元データ符号化装置は、図93に示すように、上記符号化では、対象ノードの親ノード内の空間位置に応じて、複数の隣接ノードのうち、参照する隣接ノードを切り替える。
これによれば、当該三次元データ符号化装置は、対象ノードの親ノード内の空間位置に応じて、適切な隣接ノードを参照できる。
例えば、三次元データ符号化装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態に係る三次元データ復号装置は、三次元データに含まれる複数の三次元点のN(Nは2以上の整数)分木構造に含まれる対象ノードの情報(例えばオキュパンシー符号)を復号する。図91及び図92に示すように、三次元データ復号装置は、上記復号では、対象ノードと空間的に隣接する複数の隣接ノードのうち、対象ノードと親ノードが同一である第1ノードの情報(例えば占有情報)の参照を許可し、対象ノードと親ノードが異なる第2ノードの情報(例えば占有情報)の参照を禁止する。言い換えると、三次元データ復号装置は、上記復号では、親ノードの情報(例えばオキュパンシー符号)の参照を許可し、親ノードと同一層の他のノード(親隣接ノード)の情報(例えばオキュパンシー符号)の参照を禁止する。
これによれば、当該三次元データ復号装置は、対象ノードと空間的に隣接する複数の隣接ノードのうち、対象ノードと親ノードが同一である第1ノードの情報の参照することで符号化効率を向上できる。また、当該三次元データ復号装置は、複数の隣接ノードのうち、対象ノードと親ノードが異なる第2ノードの情報の参照をしないことにより、処理量を低減できる。このように、当該三次元データ復号装置は、符号化効率を向上できるとともに、処理量を低減できる。
例えば、三次元データ復号装置は、さらに、第2ノードの情報の参照を禁止するか否かを示す禁止切替情報(例えば、図103に示すlimit_refer_flag)をビットストリームから取得し、上記復号では、禁止切替情報に基づき、第2ノードの情報の参照を禁止するか、許可するかを切り替える。
これによれば、当該三次元データ復号装置は、禁止切替情報を用いて適切に復号処理を行うことができる。
例えば、対象ノードの情報は、対象ノードに属する子ノードの各々に三次元点が存在するか否かを示す情報(例えオキュパンシー符号)であり、第1ノードの情報は、第1ノードに三次元点が存在するか否かを示す情報(第1ノードの占有情報)であり、第2ノードの情報は、第2ノードに三次元点が存在するか否かを示す情報(第2ノードの占有情報)である。
例えば、三次元データ復号装置は、上記復号では、第1ノードに三次元点が存在するか否かに基づき、符号化テーブルを選択し、選択された符号化テーブルを用いて、対象ノードの情報(例えばオキュパンシー符号)をエントロピー復号する。
例えば、三次元データ復号装置は、上記復号では、図106及び図107に示すように、複数の隣接ノードのうち、第1ノードの子ノードの情報(例えば占有情報)の参照を許可する。
これによれば、当該三次元データ復号装置は、隣接ノードのより詳細な情報を参照することができるので符号化効率を向上できる。
例えば、三次元データ復号装置は、図93に示すように、上記復号では、対象ノードの親ノード内の空間位置に応じて、複数の隣接ノードのうち、参照する隣接ノードを切り替える。
これによれば、当該三次元データ復号装置は、対象ノードの親ノード内の空間位置に応じて、適切な隣接ノードを参照できる。
例えば、三次元データ復号装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
(実施の形態11)
本実施の形態では、三次元データ符号化装置は、入力された三次元点群を2つ以上のサブ三次元点群に分離し、複数のサブ三次元点群に依存関係が発生しないように各サブ三次元点群を符号化する。これにより、三次元データ符号化装置は、複数のサブ三次元点群を並列に符号化できる。例えば、三次元データ符号化装置は、入力された三次元点群をサブ三次元点群Aとサブ三次元点群Bに分離し、サブ三次元点群Aとサブ三次元点群Bとを並列に符号化する。
なお、分離の方法としては、三次元データ符号化装置は、例えば、8分木構造を用いて符号化を行う場合、8分木に分割した8個の子ノードを並列に符号化する。例えば、三次元データ符号化装置は、各子ノードをルートとする複数の木構造を並列に符号化する。
なお、三次元データ符号化装置は、複数のサブ三次元点群を必ずしも並列に符号化する必要はなく、依存関係が発生しないように、複数のサブ三次元点群を逐次的に符号化してもよい。また、8分木に限定されず、4分木又は16分木等のN分木(Nは2以上の整数)に本実施の形態の手法を適用してもよい。また、三次元データ符号化装置は、点群の色、反射率又は法線ベクトル等の属性情報を用いて分割を行ってもよい。また、三次元データ符号化装置は、実施の形態9の図73〜図74等を用いて説明したように、点群の密度の違いによって分割を行ってもよい。
また、三次元データ符号化装置は、符号化した複数のサブ三次元点群の複数の符号化データを1個のビットストリームに結合してもよい。この際、三次元データ符号化装置は、各サブ三次元点群の各符号化データの開始位置をビットストリームのヘッダ等に含めてもよい。例えば、三次元データ符号化装置は、ビットストリームの先頭からのアドレス(ビット位置又はバイト数等)をヘッダ等に含めてもよい。これにより、三次元データ復号装置は、各サブ三次元点群の符号化データの開始位置をビットストリームの先頭を復号することで知ることができる。また、三次元データ復号装置は、複数のサブ三次元点群の符号化データを並列に復号できるので、処理時間を削減できる。
なお、三次元データ符号化装置は、複数のサブ三次元点群に依存関係が発生しないように複数のサブ三次元点群を符号化したことを示す、又は、複数のサブ三次元点群を並列に符号化したことを示すフラグをビットストリームのヘッダに付加してもよい。これにより、三次元データ復号装置は、ヘッダを復号することで、複数の三次元点群の複数の符号化データを並列に復号可能か否かを判断できる。
ここで、複数のサブ三次元点群に依存関係が発生しないとは、例えば、複数のサブ三次元点群の複数のノードのオキュパンシー符号又はリーフ情報等を符号化するための符号化テーブル(エントロピー符号化に用いられる確率テーブル等)を、各サブ三次元点群に対して独立に持つことを意味する。例えば、三次元データ符号化装置は、サブ三次元点群Aとサブ三次元点群Bを依存関係が発生しないように符号化するために、サブ三次元点群Aとサブ三次元点群Bとに対して異なる符号化テーブルを用いる。または、三次元データ符号化装置は、サブ三次元点群Aとサブ三次元点群Bを逐次的に処理する場合、サブ三次元点群Aとサブ三次元点群Bとに依存関係が発生しないように、サブ三次元点群Aを符号化した後、かつサブ三次元点群Bを符号化する前に符号化テーブルを初期化する。このように、三次元データ符号化装置は、各サブ三次元点群の符号化テーブルを独立に持つ、又は、符号化前に符号化テーブルを初期化することで、複数のサブ三次元点群に依存関係が発生しないように複数のサブ三次元点群を符号化できる。また、三次元データ復号装置も同様に、各サブ三次元点群の符号化テーブル(復号テーブル)を独立に持つ、または、各サブ三次元点群の復号前に符号化テーブルを初期化することで、各サブ三次元点群を適切に復号できる。
また、複数のサブ三次元点群に依存関係が発生しないとは、例えば、複数のサブ三次元点群の複数のノードのオキュパンシー符号又はリーフ情報等を符号化する際に、サブ三次元点群間で参照を禁止することを意味してもよい。例えば、三次元データ符号化装置は、符号化対象の対象ノードのオキュパンシー符号を符号化する際に、8分木における隣接ノードの情報を用いて符号化を行う。この場合において、三次元データ符号化装置は、隣接ノードが別のサブ三次元点群に含まれる場合、その隣接ノードを参照せずに対象ノードを符号化する。この場合、三次元データ符号化装置は、隣接ノードは存在しないとして符号化を行ってもよいし、隣接ノードは存在するが、当該隣接ノードが別のサブ三次元点群に含まれるという条件の元で対象ノードを符号化してもよい。
同様に、三次元データ復号装置は、例えば、複数のサブ三次元点群の複数のノードのオキュパンシー符号又はリーフ情報等を復号する際に、サブ三次元点群間で参照を禁止する。例えば、三次元データ復号装置は、復号対象の対象ノードのオキュパンシー符号を復号する際に、8分木における隣接ノードの情報を用いて復号を行う。この場合において、三次元データ復号装置は、隣接ノードが別のサブ三次元点群に含まれる場合、その隣接ノードを参照せずに対象ノードを復号する。この場合、三次元データ復号装置は、隣接ノードは存在しないとして復号を行ってもよいし、隣接ノードは存在するが当該隣接ノードが別のサブ三次元点群に含まれるという条件の元で対象ノードを復号してもよい。
また、三次元データ符号化装置は、複数のサブ三次元点群の三次元位置情報と属性情報(色、反射率又は法線ベクトル等)とをそれぞれ符号化する際に、一方に対しては依存関係が発生しないように符号化を行い、他方に対しては依存関係があるように符号化を行ってもよい。例えば、三次元データ符号化装置は、依存関係が発生しないように三次元位置情報を符号化し、依存関係があるように属性情報を符号化してもよい。これにより、三次元データ符号化装置は、三次元位置情報を並列に符号化することで処理時間を削減でき、属性情報を逐次的に符号化することで符号化量を削減できる。なお、三次元データ符号化装置は、三次元位置情報を依存関係がないように符号化したか否かを示す情報と、属性情報を依存関係がないように符号化したか否かを示す情報との両方をヘッダに付加してもよい。これにより、三次元データ復号装置はヘッダを復号することで、三次元位置情報を依存関係がないように復号できるか、属性情報を依存関係がないように復号できるかをそれぞれ判断できる。これにより、三次元データ復号装置は、依存関係がない場合は並列に復号を行うことができる。例えば、三次元データ復号装置は、三次元位置情報が依存関係が発生しないように符号化されており、属性情報が依存関係があるように符号化されている場合、三次元位置情報を並列に復号することで処理時間を削減し、属性情報を逐次的に復号する。
図108は、木構造の例を示す図である。なお、図108では、4分木の例を示すが、8分木等の他の分木構造が用いられてもよい。三次元データ符号化装置は、図108に示す木構造を、例えば、図109に示すサブ三次元点群Aと、図110に示すサブ三次元群Bとに分割する。なお、この例では、層1の有効ノードで分割が行われる。つまり、4分木の場合には、最大で4個のサブ三次元点群が生成され、8分木の場合には、最大で8個のサブ三次元点群が生成される。また、三次元データ符号化装置は、属性情報、又は点群密度等の情報を利用して分割を行ってもよい。
三次元データ符号化装置は、サブ三次元点群Aとサブ三次元点群Bに依存関係が発生しないように符号化を行う。例えば、三次元データ符号化装置は、サブ三次元点群毎にオキュパンシー符号のエントロピー符号化に用いる符号化テーブルを切替える。または、三次元データ符号化装置は、各サブ三次元点群の符号化前に符号化テーブルを初期化する。または、三次元データ符号化装置は、ノードの隣接情報を算出する際に、隣接ノードが異なるサブ三次元点群に含まれる場合は当該隣接ノードの参照を禁止する。
図111は、本実施の形態に係るビットストリームの構成例を示す図である。図111に示すようにビットストリームは、ヘッダと、サブ三次元点群Aの符号化データと、サブ三次元点群Bの符号化データとを含む。ヘッダは、点群数情報と、依存関係情報と、先頭アドレス情報A及び先頭アドレス情報Bとを含む。
点群数情報は、ビットストリームに含まれるサブ三次元点群の個数を示す。なお、点群数情報として、オキュパンシー符号により個数が示されてもよい。例えば、図108に示す例では、層0のオキュパンシー符号「1010」が用いられ、オキュパンシー符号に含まれる「1」の数によりサブ三次元点群の個数が示される。
依存関係情報は、サブ三次元点群を依存関係なく符号化したか否かを示す。例えば、三次元データ復号装置は、この依存関係情報に基づき、サブ三次元点群を並列に復号するか否かを判定する。
先頭アドレス情報Aは、サブ三次元点群Aの符号化データの先頭アドレスを示す。先頭アドレス情報Bは、サブ三次元点群Bの符号化データの先頭アドレスを示す。
以下、並列符号化の効果について説明する。三次元点群(ポイントクラウド)の8分木データにおいて、幾何情報(三次元位置情報)又は属性情報を分割し、並列符号化することで、処理時間を低減できる。親ノードの階層においてノードが他のノードから独立している場合に並列符号化を実現できる。つまり、隣接親ノードを参照しない必要がある。この条件は、子ノード及び孫ノードの全てにおいても満たされる必要がある。
図112は、木構造の例を示す図である。図112に示す例において、深さ優先の符号化が用いられる場合、ノードAは、層1からノードCと独立している。また、ノードCは、層2からノードDと独立している。ノードAは、層3からノードBと独立している。
三次元データ符号化装置は、各ノードのこの独立の情報を用いて、ハードウェアの種別、ユーザ設定、アルゴリズム、又はデータの適応性等に基づき、2つの方式の並列符号化方法から使用する並列符号化方法を選択する。
この2つの方式とは、全並列符号化(full parallel encoding)と、漸進並列符号化(incremental parallel encoding)とである。
まず、全並列符号化について説明する。並列処理又は並列プログラミングでは、同時に多くのデータを処理する必要があるため、非常に処理が重い。
GPU(Graphics Processing Unit)に含まれるプロセッシングユニット(PU)の数、CPUに含まれるコアの数、又は、ソフトウェア実装におけるスレッドの数を用いて、並列処理可能なノードの数が決定される。
ここで、一般に8分木に含まれるノードの数は、利用可能なPUの数よりも多い。三次元データ符号化装置は、層に含まれる符号化済みのノードの数を示す情報を用いて、層に含まれるノードの数が、利用可能なPUの数に対応する最適数であるかを判定し、層に含まれるノードの数が、最適数に達したことをトリガに、全並列符号化を開始する。なお、並列処理において、幅優先又は深さ優先の処理を用いることができる。
三次元データ符号化装置は、並列符号化処理を開始したノード(層)を示す情報をビットストリームにヘッダに格納してもよい。これにより、三次元データ復号装置は、この情報を用いて、必要であれば並列復号処理を行うことができる。なお、並列符号化処理を開始したノードを示す情報の形式は任意でよいが、例えば、ロケーション符号が用いられてもよい。
また、三次元データ符号化装置は、並列符号化を行う各ノード(サブ三次元点群)に対して符号化テーブル(確率テーブル)を準備する。この符号化テーブルは、初期値又はノード毎に異なる値に初期化される。例えば、ノード毎に異なる値とは、親ノードのオキュパンシー符号に基づく値である。この全並列符号化では、GPUの初期化が一度でよいという利点がある。
図113は、全並列符号化を説明するための図であり、木構造の例を示す図である。図114は、並列処理されるサブ三次元点群を空間的に示す図である。三次元データ符号化装置は、PU又はスレッドの数に相関するノードの数が最適点に達したことをトリガに並列処理を開始する。
図113に示す例では、層3において、当該層に含まれる占有ノードの数が9となり、最適数を超える。よって、三次元データ符号化装置は、層3以下の三次元点(ノード)を、層3の各占有ノードをルートとする複数のサブ三次元点群に分割し、各サブ三次元点群を並列処理する。例えば、図113に示す例では、9個のサブ三次元点群が生成される。
三次元データ符号化装置は、並列処理を始めた層を示すレイヤ情報を符号化してもよい。また、三次元データ符号化装置は、並列処理を始めた際の占有ノードの数(図113の例では9)を示す情報を符号化してもよい。
また、三次元データ符号化装置は、例えば、複数のサブ三次元群を互いの参照を禁止しながら符号化する。また、三次元データ符号化装置は、例えば、各サブ三次元点群の符号前にエントロピー符号化に用いる符号化テーブル(確率テーブル等)を初期化する。
図115は、本実施の形態に係るビットストリームの構成例を示す図である。図115に示すように、ビットストリームは、ヘッダと、上層符号化データと、サブヘッダと、サブ三次元点群Aの符号化データと、サブ三次元点群Bの符号化データとを含む。
ヘッダは、空間最大サイズ情報と、並列開始レイヤ情報とを含む。空間サイズ情報は、三次元点群を8分木に分割する最初の三次元空間を示す。例えば、空間サイズ情報は、最初の三次元空間の最大座標(x,y,z)を示す。
並列開始レイヤ情報は、並列処理を開始可能な層である並列開始レイヤを示す。ここでは、並列開始レイヤ情報は、例えば層Nを示す。
上層符号化データは、並列処理を開始する前の層Nまでの符号化データであり、層Nまでのノード情報である。例えば、上層符号化データは、層Nまでのノードのオキュパンシー符号等を含む。
サブヘッダは、層N以降を復号するために必要な情報を含む。例えば、サブヘッダは、各サブ三次元点群の符号化データの先頭アドレス等を示す。図115に示す例では、サブヘッダは、先頭アドレス情報Aと、先頭アドレス情報Bとを含む。先頭アドレス情報Aは、サブ三次元点群Aの符号化データの先頭アドレスを示す。先頭アドレス情報Bは、サブ三次元点群Bの符号化データの先頭アドレスを示す。
なお、三次元データ符号化装置は、ヘッダに、先頭アドレス情報A及び先頭アドレス情報Bを格納してもよい。これにより、三次元データ復号装置は、上層符号化データよりも先に、サブ三次元点群の符号化データを並列に復号できる。この場合、サブヘッダは、各サブ三次元点群の空間を示す情報を含んでもよい。この情報は、各サブ三次元点群の空間の最大座標(x,y,z)を示す。
図116は、並列復号処理を説明するための図である。図116に示すように、三次元データ復号装置は、サブ三次元点群Aの符号化データとサブ三次元点群Bの符号化データとを並列に復号し、サブ三次元点Aの復号データとサブ三次元点群Bの復号データとを生成する。次に、三次元データ復号装置は、生成したサブ三次元点Aの復号データとサブ三次元点群Bの復号データと統合し、三次元点群の復号データを生成する。このように、三次元データ復号装置は、複数のサブ三次元点群の復号データに含まれる三次元位置情報及び属性情報(色情報及び反射率等)を統合する。また、三次元データ復号装置は、統合したデータを1個のファイルとして出力してもよい。
なお、三次元データ復号装置は、必ずしもサブ三次元点群の全てを復号する必要はなく、三次元データ復号装置が必要なサブ三次元点群を選択的に復号してもよい。例えば、三次元データ復号装置が車載等のモビリティの場合、三次元データ復号装置は、複数のサブ三次元点群のうち、GPS等で取得した現在の位置に近いエリアのサブ三次元点群を復号する。
また、三次元データ符号化装置は、サブヘッダに、各サブ三次元点群の優先順位を示す情報を格納してもよい。この場合、三次元データ復号装置は、サブヘッダに含まれる情報で示される優先順位に従い、優先順位が高いサブ三次元点群に対してCPU等の演算資源を優先的に与えながら並列復号を実行する。これにより、三次元データ復号装置は、三次元データ復号装置にとって重要なエリアを含むサブ三次元点群を効率的に復号できる。
図117は、全並列符号化処理の流れを模式的に示す図である。まず、三次元データ符号化装置は、利用可能なPUの数を決定する(S2601)。次に、三次元データ符号化装置は、8分木を処理し、ノードの位置を格納する(S2602)。次に、三次元データ符号化装置は、占有ノードの数がPUの数より多いか否かを判定する(S2603)。
占有ノード数がPUの数以下の場合(S2603でNo)、三次元データ符号化装置は、次のノードに対してステップS2602の処理を行う。占有ノードの数がPUの数より多い場合(S2603でYes)、三次元データ符号化装置は、現在の層を並列処理を開始する層である並列開始レイヤに設定する(S2604)。
次に、三次元データ符号化装置は、複数の符号化テーブルを初期化し、並列符号化を開始する(S2605)。並列符号化が完了した後、三次元データ符号化装置は、ステップS2602で格納した位置に基づき、8分木を再構成する(S2606)。
なお、三次元データ符号化装置は、並列符号化を開始した並列開始レイヤを示す並列開始レイヤ情報をビットストリームのヘッダに付加してもよい。これにより、三次元データ復号装置はヘッダを復号することで、どの層から並列復号が可能であるかを判定できる。
なお、どの層から並列処理を始めるかが、予め決められていてもよい。また、並列化を開始するレイヤを示す並列開始レイヤ情報がビットストリームに付加されず、並列化を開始するレイヤが規格等で規定されてもよい。例えば、三次元データ符号化装置は、並列化するか否かを示すフラグをビットストリームに付加する。三次元データ復号装置は、そのフラグがオンの場合は、最初のレイヤから並列処理を開始し、フラグがオフの場合は逐次処理を適用してもよい。
図118は、全並列復号処理の流れを模式的に示す図である。まず、三次元データ復号装置は、ヘッダを復号することで並列処理可能なレイヤNを示す並列開始レイヤ情報を取得する(S2611)。次に、三次元データ復号装置は、オキュパンシー符号を復号して現ノードを8分割し、占有状態のサブノードの処理へ移行する(S2612)。
次に、三次元データ復号装置は、処理対象の層が並列開始レイヤNに到達したか否かを判定する(S2613)。処理対象の層が並列開始レイヤNに到達してない場合(S2613でNo)、三次元データ復号装置は、次のノードに対してステップS2612の処理を行う。処理対象の層が並列開始レイヤNに到達した場合(S2613でYes)、三次元データ復号装置は、サブヘッダを復号し、複数のサブ三次元点群の開始アドレスを取得する(S2614)。
次に、三次元データ復号装置は、複数の符号化テーブルを初期化し、複数のサブ三次元点群の並列復号を開始する(S2615)。並列復号が完了した後、三次元データ復号装置は、復号した複数のサブ三次元点群の三次元位置情報と属性情報とを統合する(S2616)。
例えば、三次元データ復号装置は、並列開始レイヤ情報をビットストリームのヘッダから復号する。これにより三次元データ復号装置は、どの層から並列に復号可能か否かを判定できる。
なお、並列化を開始するレイヤを示す並列開始レイヤ情報はビットストリームに付加されず、並列化を開始するレイヤが規格等で規定されてもよい。例えば、三次元データ符号化装置は、並列化するか否かを示すフラグをビットストリームに付加する。三次元データ復号装置は、そのフラグがオンの場合、最初のレイヤから並列処理を開始し、フラグがオフの場合は逐次処理を適用してもよい。
次に、漸進並列符号化について説明する。図119及び図120は、この漸進並列符号化を説明するための図である。図119は、木構造における並列処理を示す図であり、図120は、並列処理における時系列の変化を示す図である。
漸進並列符号化では、親ノードが1以上の子ノードに分割された場合において、利用可能なPUが存在する場合には、並列数を順次増加させていく処理である。また、追加のPUを必要とする新たなノードが見つかるたびに符号化テーブルが予め定められたテーブルに設定される。
図119に示す例では、トップ(ルート)においてコア1による処理が開始する。層1において、右側のノードの処理にコア2が用いれ、コア1は左側のノードを処理する。層2においてコア1は左側のノードの処理を継続する。層3では、コア1はノードAを処理し、新たに見つかったノードBをコア4が処理する。また、層1の右側のノードに対しては、層2においてコア2は左のノードの処理を継続し、層3においてノードCを処理する。また、層2において、コア3が追加され、コア3は右のノードを処理し、層3においてノードDを処理する。
なお、三次元データ符号化装置は、各ノードにおいてエントロピー符号化の符号化テーブルの初期化が必要か否かを示すフラグを追加してもよい。これにより、三次元データ復号装置は、当該フラグにより初期化がオンとなったノードの次の子ノードを並列処理が可能と判定できる。
図121は、漸進並列符号化処理の流れを模式的に示す図である。まず、三次元データ符号化装置は、8分木を処理し、ノードの位置を格納する(S2621)。次に、三次元データ符号化装置は、対象ノードが占有状態の子ノードである占有子ノードを複数有するか否かを判定する(S2622)。対象ノードが複数の占有子ノードを有する場合(S2613でYes)、三次元データ符号化装置は、並列符号化に利用可能なPUが存在するか否かを判定する(S2623)。
対象ノードが複数の占有子ノードを有さない場合(S2613でNo)、又は、並列符号化に利用可能なPUが存在しない場合(S2623でNo)、三次元データ符号化装置は、現在使用中のPUを用いて8分木の処理を継続する(S2624)。例えば、初期状態では、三次元データ符号化装置は初期状態の一つのPUを用いて処理を継続する。また、対象ノードが複数の占有子ノードを有さない場合とは、対象ノードが占有子ノードを有さない場合、及び、対象ノードが1個の占有子ノードを有する場合を含む。
一方、並列符号化に利用可能なPUが存在する場合(S2623でYes)、三次元データ符号化装置は、使用するPUに新たなPUを追加し、複数の符号化テーブルを初期化し、並列符号化を開始する(S2625)。
全てのノードの処理が完了していない場合(S2626でNo)、三次元データ符号化装置は、次のノードに対してステップS2621の処理を行う。全てのノードの処理が完了した場合(S2626でYes)、三次元データ符号化装置は、ステップS2602で格納した位置に基づき、8分木を再構成する(S2627)。
このような漸進並列符号化では、対象ノードが複数の占有ノードを有し、空いているPUが存在する場合には、直ちに並列処理が開始される。これにより、PUの処理が短い時間で完了した場合には、次の処理にPUを割り当てることができるので、理想的な処理不可のパランスを実現できる。
一方で、並列処理が要求されるたびに初期化処理が必要となる。また、上下又は左右の処理順における次の処理までに、複数のPUにおける処理が終了するとは限らないため、データの書き戻しのために、各層のノード及び子ノードの全てを同期させるメカニズムが必要となる。言い換えると、上述した全並列符号化では、このような処理が必要でないため処理量を低減できるという効果を実現できる。
以上のように、本実施の形態では、元の三次元点は、並列処理可能な枝に分割される。8分木では、例えば、ノードに対して並列処理可能な8個の枝が生成される。また、8分木のどの層から並列処理可能な枝が開始するかを示す新たなパラメータが定義される。
次の並列処理可能な枝に処理が移行する際に、エントロピー符号化のための符号化テーブルがリセットされる。または、複数の並列処理可能な枝に対して異なる符号化テーブルが用いられる。
例えば、隣接ノードの情報等、異なる並列処理可能な枝に含まれるノードの参照が禁止される。
並列処理に関する複数のモードが定義される。例えば、モード0は、並列処理を行わないモードである。モード1は、位置情報(構造情報)を並列処理するモードである。このモードでは、属性情報については、他の並列処理可能な枝を参照することが許可される。第2モードは、位置情報及び属性情報を並列処理するモードである。つまり、位置情報及び属性情報の両方に対して、他の並列処理可能な枝を参照することが禁止される。
各並列処理可能な枝のデータの開始アドレスは、例えばスライスヘッダ等のヘッダ内に符号化される。
三次元データ復号装置は、全ての並列処理可能な枝を並列処理してもよし、複数の並列処理可能な枝の一部を並列処理してもよい。
以上のように、本実施の形態に係る三次元データ符号化装置は、図122に示す処理を行う。まず、三次元データ符号化装置は、三次元データに含まれる複数の三次元点のN(Nは2以上の整数)分木構造を第1枝(第1サブ三次元点群)と第2枝(第2サブ三次元点群)とに分離する(S2631)。次に、三次元データ符号化装置は、第1枝と第2枝との各々を独立して復号可能なように符号化する(S2632)。言い換えると、三次元データ符号化装置は、第1枝と第2枝とを依存関係がないように符号化する。例えば、三次元データ符号化装置は、第1枝と第2枝とを並列符号化する。
例えば、前記第1枝のルートは、前記N分木構造における第1層に含まれる第1ノードであり、前記第2枝のルートは、前記第1層に含まれる前記第1ノードとは異なる第2ノードである。つまり、第1枝のルートと第2枝のルートとは同じ層に属する。
例えば、三次元データ符号化装置は、前記第1層を示す情報(並列開始レイヤ情報)を符号化する。つまり、三次元データ符号化装置は、前記第1層を示す情報(並列開始レイヤ情報)を含むビットストリームを生成する。
例えば、三次元データ符号化装置は、前記第1枝と前記第2枝とを異なる符号化テーブルを用いてエントロピー符号化する。
例えば、三次元データ符号化装置は、前記第1枝をエントロピー符号化した後、前記第2枝をエントロピー符号化する前に符号化テーブルを初期化する。
例えば、三次元データ符号化装置は、前記第1枝の符号化において、前記第2枝の参照を禁止し、前記第2枝の符号化において、前記第1枝の参照を禁止する。
例えば、三次元データ符号化装置は、前記第1枝に含まれる複数の第1三次元点の位置情報と、前記第2枝に含まれる複数の第2三次元点の位置情報との各々を独立して復号可能なように符号化し、前記複数の第1三次元点の属性情報と、前記複数の第2三次元点の属性情報との各々を独立して復号可能なように符号化する。つまり、三次元データ符号化装置は、位置情報と属性情報との両方に対して依存関係がないように符号化を行う。
例えば、三次元データ符号化装置は、(1)前記第1枝に含まれる複数の第1三次元点の位置情報と、前記第2枝に含まれる複数の第2三次元点の位置情報との各々、及び、(2)前記複数の第1三次元点の属性情報と、前記複数の第2三次元点の属性情報との各々、の一方を独立して復号可能なように符号化し、(1)前記複数の第1三次元点の位置情報と、前記複数の第2三次元点の位置情報との各々、及び、(2)前記複数の第1三次元点の属性情報と、前記複数の第2三次元点の属性情報との各々、の他方を依存関係があるように符号化する。つまり、三次元データ符号化装置は、位置情報と属性情報との一方に対して依存関係がないように符号化を行い、位置情報と属性情報との他方に対して依存関係があるように符号化を行う。なお、依存関係があるとは、例えば、前記第1枝と前記第2枝とを同じ符号化テーブルを用いてエントロピー符号化する、又は、前記第1枝をエントロピー符号化した後、前記第2枝をエントロピー符号化する前に符号化テーブルを初期化しない、又は、前記第1枝の符号化において、前記第2枝の参照を許可する、又は、前記第2枝の符号化において、前記第1枝の参照を許可する、ことである。
例えば、三次元データ符号化装置は、前記第1枝と前記第2枝との各々を独立して復号可能なように符号化したか否かを示すフラグを符号化する。つまり、三次元データ符号化装置は、前記第1枝と前記第2枝との各々を独立して復号可能なように符号化したか否かを示すフラグを含むビットストリームを生成する。
例えば、三次元データ符号化装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態に係る三次元データ復号装置は、図123に示す処理を行う。まず、三次元データ復号装置は、三次元データに含まれる複数の三次元点のN(Nは2以上の整数)分木構造に含まれる第1枝と第2枝との各々が独立して復号可能なように符号化されることで生成された第1符号化データと第2符号化データとを取得する(S2641)。例えば、三次元データ復号装置は、第1符号化データと第2符号化データとをビットストリームから取得する。次に、三次元データ復号装置は、前記第1符号化データと前記第2符号化データとの各々を復号することで前記第1枝と前記第2枝とを復元する(S2642)。例えば、三次元データ復号装置は、第1符号化データと第2符号化データとを並列復号する。
例えば、前記第1枝のルートは、前記N分木構造における第1層に含まれる第1ノードであり、前記第2枝のルートは、前記第1層に含まれる前記第1ノードとは異なる第2ノードである。つまり、第1枝のルートと第2枝のルートとは同じ層に属する。
例えば、三次元データ復号装置は、前記第1層を示す情報(並列開始レイヤ情報)を復号する。つまり、三次元データ復号装置は、前記第1層を示す情報(並列開始レイヤ情報)をビットストリームから取得する。
例えば、三次元データ復号装置は、前記第1枝と前記第2枝とを異なる符号テーブルを用いてエントロピー復号する。
例えば、三次元データ復号装置は、前記第1枝をエントロピー復号した後、前記第2枝をエントロピー復号する前に符号化テーブルを初期化する。
例えば、三次元データ復号装置は、前記第1枝の復号において、前記第2枝を参照せず、前記第2枝の復号において、前記第1枝を参照しない。
例えば、前記第1符号化データは、前記第1枝に含まれる複数の第1三次元点の位置情報が符号化されることで生成された第1符号化位置データと、前記複数の第1三次元点の属性情報が符号化されることで生成された第1符号化属性データとを含む。前記第2符号化データは、前記第2枝に含まれる複数の第2三次元点の位置情報が符号化されることで生成された第2符号化位置データと、前記複数の第2三次元点の属性情報が符号化されることで生成された第2符号化属性データとを含む。前記前記第1符号化位置データと前記第2符号化位置データとは、独立して復号可能なように生成されており、前記前記第1符号化属性データと前記第2符号化属性データとは、独立して復号可能なように生成されている。つまり、三次元データ符号化装置は、位置情報と属性情報との両方に対して依存関係がないように符号化を行うことで、第1符号化データと第2符号化データとを生成する。
例えば、前記第1符号化データ及び前記第2符号化データは、前記第1枝に含まれる複数の第1三次元点及び前記第2枝に含まれる複数の第2三次元点の位置情報及び属性情報の一方の各々が独立して復号可能なように符号化されることで生成される。三次元データ復号装置は、前記第1符号化データと前記第2符号化データとの各々を復号することで前記複数の第1三次元点及び前記複数の第2三次元点の前記位置情報及び前記属性情報の前記一方の各々を復元する。三次元データ復号装置は、さらに、前記複数の第1三次元点及び前記複数の第2三次元点の前記位置情報及び前記属性情報の他方の各々が依存関係があるように符号化されることで生成された第3符号化データ及び第4符号化データを取得する。三次元データ復号装置は、前記第3符号化データと前記第4符号化データとの各々を復号することで前記複数の第1三次元点及び前記複数の第2三次元点の前記位置情報及び前記属性情報の前記他方の各々を復元する。つまり、三次元データ符号化装置は、位置情報と属性情報との一方に対して依存関係がないように符号化を行い、位置情報と属性情報との他方に対して依存関係があるように符号化を行う。例えば、三次元データ復号装置は、2つの符号化データに依存関係がある場合には、2つの符号化データを同じ符号化テーブルを用いてエントロピー復号する、又は、一方の符号化データをエントロピー復号した後、他方の符号化データをエントロピー復号する前に符号化テーブルを初期化しない、又は、一方の符号化データの復号において、他方の符号化データを参照する。
例えば、三次元データ復号装置は、前記第1枝と前記第2枝との各々が独立して復号可能なように符号化されているか否かを示すフラグを復号する。つまり、三次元データ復号装置は、前記第1枝と前記第2枝との各々が独立して復号可能なように符号化されているか否かを示すフラグをビットストリームから取得する。例えば、三次元データ復号装置は、前記フラグにより前記第1枝と前記第2枝との各々が独立して復号可能なように符号化されていることが示される場合、前記第1符号化データと前記第2符号化データとを並列復号し、前記フラグにより前記第1枝と前記第2枝との各々が独立して復号可能なように符号化されていることが示されない場合、前記第1符号化データと前記第2符号化データとを逐次復号する。
例えば、三次元データ復号装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
(実施の形態12)
符号化された三次元点(ポイントクラウド)のビットストリームは、データサイズが大きくなるため、大容量のストレージ又はキャッシュが必要となる。また、当該ビットストリームは複雑となり、高性能のハードウェアが必要となる。また、ビットストリームが分散されることで、複数のPCC(Point Cloud Compression)ビットストリームが必要となる。
一方でユーザは、三次元点のビットストリームの全ての情報が常に必要とは限らず、いくつかのPCCビットストリーム、又はビットストリームの複数の成分を含む結合ビットストリームが必要である場合もある。よって、三次元点の情報を、効果的に、また、並列に取得する手法が望まれる。
図124は、GPS座標を有する自動車が、上面視した地図情報を取得するために、三次元点のビットストリームにアクセスする場合の動作を模式的に示す図である。例えば、図124に示すように、ビットストリームAは、車両周辺の領域の三次元点のPCCビットストリームであり、ビットストリームB及びビットストリームCは、隣接領域の三次元点のPCCビットストリームである。また、各ビットストリームは、ブロック形式で上面視した状態を示す。
本実施の形態では、三次元点のビットストリームを小領域に分割する手法としてタイル分割を用いる。タイルは、三次元点のビットストリームを、ユーザ記述に基づき、異なるブロック領域に分割した分割領域である。
タイルは、ルートノードからの複数のレベルを有する。また、異なるレベルを有するタイルは、それぞれ可変の異なるサイズを有してもよい。また、複数のタイルは、互いに独立していてもよい。
三次元データ符号化装置は、1又は複数のタイルレベルを符号化し、三次元データ復号装置は、1又は複数のタイルレベルのうち、アプリケーションに必要な1以上のタイルレベルを復号してもよい。
図125は、単一のPCCビットストリームを小さいタイルに分割した状態を上面視で示す図である。図126は、単一のPCCビットストリームを大きいタイルに分割した状態を上面視で示す図である。図137は、単一のPCCビットストリームを複数サイズのタイルに分割した状態を上面視で示す図である。
このように、三次元データ符号化装置は、同一領域を小さいタイル分割(図125)を用いて符号化するとともに、大きいタイル分割(図126)を用いて符号化してもよい。例えば、三次元データ符号化装置は、三次元データ復号装置からの要望に応じて領域毎に、小さいタイル分割の結果を送信するか、大きいタイル分割の結果を送信するかを切替える。または、三次元データ符号化装置は、両方の結果を三次元データ復号装置に送信し、三次元データ復号装置は、小さいタイル分割の結果と、大きいタイル分割の結果とのどちらを使用するかを自動車の状態(例えば、速度又は場所等)等に応じて切替えてもよい。
以下、複数のタイルサイズを用いる複合タイル分割について説明する。三次元データ符号化装置は、複数種類のサイズのタイルをビットストリームに符号化してもよい。例えば、図127に示す例において、自動車が移動している場合、周辺状況は異なる速度で変化する。例えば、自動車から遠い領域、又は前方或いは後方の領域の変化は、自動車の側方の領域の変化より遅い。このように、変化が遅い領域に対して大きいタイルサイズを適用することで符号化効率を向上できる。
図128は、4分木におけるタイル分割の例を示す図である。図128に示す例では、一部のタイルは層2のレベルであり、他の一部のタイルは層3のレベルである。
なお、上記では、二次元(上面視)のタイル分割について説明したが、三次元のタイル分割にも同様の手法を適用できる。図129は、三次元のタイル分割の例を示す図である。なお、図129では、説明の簡略化のため一部のタイルのみを図示している。
自動車の進行方向である、自動車の前方遠方のタイルは、読み込みが必要となる可能性が高いため、大きいサイズに設定されている。自動車の側方のタイルは、自動車が当該方向に進む可能性が低いため小さいサイズに設定されている。
なお、図125及び図126に示した例と同様に、三次元の場合にも固定サイズのタイルが用いられてもよい。
また、地図上の同じ領域に対して、大きいサイズのタイルを用いて生成された符号化データと、小さいサイズのタイルを用いて生成された符号化データとが、サーバ又は外部記憶装置に格納されてもよい。自動車がその領域に移動した場合、いずれにしてもその領域のデータが必要となるため、大きいタイルのデータが自動車に送信される。また、自動車の進行方向ではない方向の領域では、自動車はその領域の一部のデータのみを必要とするので、小さいタイルのデータが自動車に送信される。
また、タイルを用いることで空間的なランダムアクセス性を向上できる。三次元データ復号装置(例えば自動車に搭載される)は、読み込んだ(ロードした)タイルを、その符号化方式に応じて並列に復号できる。また、三次元データ復号装置は、移動中に必要となるメモリのサイズ(例えば3×3タイル)を一定に制御できる。
図130は、自動車の移動時において読み込まれるタイルの例を示す図である。図130に示すように、自動車がx方向に移動している場合には、自動車は、進行方向(x方向)の3つのタイルのデータを新たにメモリに読み込み(ロードし)、進行方向とは逆の方向(−x方向)の3つのタイルのデータをメモリから削除する。
なお、三次元データ復号装置は、読み込んだタイルを並列に復号してもよい。また、三次元データ復号装置は、読み込んだタイルに優先順位を決め、優先順位の順番にタイルを復号してもよい。例えば、三次元データ復号装置は、自動車の進行方向に近い領域のタイル(例えば図130に示すタイルA)を優先して復号してもよい。
同様に、自動車が−y方向に移動している場合には、自動車は、進行方向(−y方向)の3つのタイルのデータを新たにメモリに読み込み(ロードし)、進行方向とは逆の方向(y方向)の3つのタイルのデータをメモリから削除する。
また、自動車が対角線方向(同図の右上方向)に移動している場合には、自動車は、進行方向の5つのタイルのデータを新たにメモリに読み込み(ロードし)、進行方向とは逆の方向の5つのタイルのデータをメモリから削除する。
このように、メモリには常に3×3のタイルのデータが保存されるので、メモリサイズを3×3のタイルのデータを制限できる。
図131は、本実施の形態に係るシステムの構成例を示す図である。当該システムは、サーバ又は外部記憶装置(三次元データ符号化装置)と、自動車等に搭載される車載コンピュータ(三次元データ復号装置)とを含む。
サーバ又は外部記憶装置は、全ての三次元マップを格納している。車載コンピュータからの要求により、所望のタイルが、車載コンピュータが備えるメモリに読み込まれ、復号される。例えば、車載コンピュータは、自動車の現在位置に応じた領域のタイルをサーバ又は外部記憶装置に要求する。
次に、タイルの使用例について説明する。図132及び図133は、自動車に取得されるタイルの領域の例を示す図である。例えば、自動車が高速道路を走行している場合、移動速度が速いので、前方の情報を素早く復号する必要がある。よって、より少ないデータ量で、必要な情報を取得することが望まれる。このため、例えば、自動車は、領域Aのタイルを取得する。
一方、自動車が市街地を走行している場合、運転手が周辺状況をより取得できるように、自動車は領域A及び領域Bの両方の情報を取得する。また、自動車がオフロード又は運転手が不慣れな道を走行している場合、自動車は、より多くのデータを取得するために、例えば8×8タイル等のより広い範囲のデータを取得してもよい。
また、別の例として、復号処理の処理負荷が多くなりすぎないように、自動車の移動速度に応じて復号するタイルが選択されてもよい。例えば、自動車が高速道路を高速で走行している場合、前方の情報を素早く更新する必要がある。一方で、自動車の側方の領域の重要性は低い。よって、自動車は、前方の矩形領域のタイルを選択し、復号する。一方、自動車が低速で走行している場合、前方の必要なタイルは少なくなる。よって、前方のタイルが取得される領域は高速走行時より狭くなる。また、自動車が交差点等で停止している場合、周辺の全ての方向のタイルが等しく重要である。よって、自動車は、全ての方向のタイルを取得する。
また、図129を用いて説明したように、領域A及び領域Bのタイルの大きさを、自動車の進行方向及び速度に応じて変更してもよい。
次に、スライスについて説明する。複数のタイルは、三次元空間内の意味情報として利用するためにスライスに分類される。スライスは、三次元空間内の意味情報(属性情報)に応じてタイルが分類されたグループである。つまり、各タイルは、複数のスライスのいずれかに属する。タイルが属するスライスの情報は、三次元点の符号化ビットストリームのヘッダ又はサブヘッダに符号化される。
例えば、走行中の自動車では、目的地までの経路はほぼ決まっているため、地図上のいくつかの道路は使用されない。よって、これらの道路を無視できる。また、木々の外観は日々変化する。よって、建造物及び道路と比べ、木々の重要性は低い。
図134は、三次元データ(三次元点)の一例を示す図である。図135〜図137は、図134に示す三次元データを分割した3つのスライスのデータの例を示す図である。図135に示すスライスは、高速道路の三次元データを含む。図136に示すスライスは、木々の三次元データを含む。図137に示すスライスは側道の三次元データを含む。
また、スライスの分割方法として、タイル又はタイル内に含まれる点群の特性(色、反射率、法線ベクトル、又は関連するオブジェクト)等を用いることが考えられる。また、車載の自己位置推定に使用する点群を含むタイルをスライスAに分類し、ナビゲージョン画面に表示する点群を含むタイルをスライスBに分類するなど、ターゲットとするアプリケーション毎にスライスを設定してもよい。また、三次元地図における用途でスライスを設定する場合は、点群又はタイルの属する地域情報(日本では都道府県又は市町村など)を元にスライスを設定してもよい。
次に、8分木におけるタイルの例について説明する。図138は、タイルの例を示す図である。図139は、8分木におけるタイルの例を示す図である。
例えば、各タイル及び各スライスは、独立して符号化され、独立して復号可能である。符号化及び復号において、各タイル及び各スライスは、全体の8分木に関連するサブ8分木を含む。例えば、三次元データ符号化装置及び三次元データ復号装置は、タイル毎に、符号化テーブルを初期化する。
また、復号されたタイル又はスライスは、他のタイル又はスライスの復号を待たずに直ちにアプリケーションに使用されてもよい。
また、タイル又はスライスのデータは、ビットストリーム内において、所定の順序で配置される。例えば、この順序により、アプリケーションにおけるデータの優先度が示される。
例えば、図139に示すように、タイルAとタイルBとがそれぞれエントロピー符号化され、生成されたタイルAのビットストリームとタイルBのビットストリームとが、全体のビットストリームに含まれる。
以下、本実施の形態に係るビットストリームの構成例を説明する。図140は、複数のタイルがエントロピー符号化されることで得られるビットストリームの例を示す図である。図140に示すように、ビットストリームは、複数のタイルの共通のヘッダ情報(第1ヘッダ)である共通ヘッダ2801と、タイルテーブル2802と、符号化データ2803とを含む。
共通ヘッダ2801は、全体ヘッダ2804と、固定サイズフラグ2805と、タイル数情報2806とを含む。全体ヘッダ2804は、木構造全体のヘッダであり、全体の木構造の位置を示す位置情報2807を含む。つまり、位置情報2807は、全体の木構造の位置、又は、当該木構造に対応する三次元空間(バウンディングボックス)の位置を特定する情報である。例えば、位置情報2807は、全体の木構造内の任意のノード、又は、当該木構造に対応する三次元空間に含まれる任意の点の位置(例えば座標)を示す。例えば、位置情報2807は、木構造のルートの位置を示す。例えば、位置情報2807は、世界座標(world coordinate)を基点とした木構造のルートの座標を示してもよい。また、全体ヘッダは、全体の木構造に含まれる三次元点の数を示す情報等を含んでもよい。
固定サイズフラグ2805は、タイルのサイズを固定するか否かを示すフラグである。つまり、固定サイズフラグ2805は、複数のタイルのサイズを同一にするか否かを示す。例えば、固定サイズフラグ=0は、タイルのサイズを固定しないことを示し、固定サイズフラグ=1は、タイルのサイズを固定することを示す。
タイル数情報2806は、タイルの数を示す情報であり、タイルテーブル2802を解析するために用いられる。なお、タイル数情報2806は、タイルテーブル2802に含まれてもよい。タイルテーブル2802は、複数のタイルの情報を含む。
符号化データ2803は、各タイルの符号化データを含む。各タイルの符号化データは、例えば、独立している。
図141は、固定サイズフラグ=0(固定しない)の場合の、タイルテーブル2802の構成例を示す図である。タイルテーブル2802は、タイル単位のヘッダ情報(第2ヘッダ)であるタイル情報2811を含む。つまり、複数のタイル情報2811は、複数のタイルに一対一に対応する。
タイル情報2811は、タイル位置情報2812と、タイルサイズ情報2813と、符号量情報2814とを含む。タイル位置情報2812は、タイルの位置を示す。例えば、タイル位置情報2812は、タイルのルートの位置を示す。例えば、タイル位置情報2812は、世界座標(world coordinate)を基点とした座標を示してもよい。なお、この場合、三次元データ復号装置は、復号した三次元点の座標をそのまま使用することができるので、処理量を低減できる。または、タイル位置情報2812は、位置情報2807で示される全体の木構造の位置(座標)と、タイルの位置(座標)との差分を示してもよい。
タイルサイズ情報2813は、タイルのサイズを示す。なお、タイルのサイズは、例えば、x、y、zのそれぞれの方向のサイズにより示されてもよいし、x、y、zのサイズは等しいという前提のもと、一辺のサイズが示されてもよい。また、タイルのサイズは上述したように木構造における階層(レベル)に対応する。よって、タイルのサイズは階層(レベル)で表されてもよい。
符号量情報2814は、対応するタイルの符号化データの符号量(ビットサイズ)を示す。
また、三次元データ復号装置は、ビットストリーム内の各タイルの符号化データの開始位置(start bit)を、タイルテーブル2802内に含まれる各タイルの符号量情報2814を参照することで算出してもよい。例えば、三次元データ復号装置は、図140に示すタイルCの開始位置を、タイルAの符号量とタイルBの符号量とを加算することで算出する。また、各タイルの符号化データのビットストリーム内における開始位置が、タイルテーブル2802に格納されてもよい。これにより、三次元データ復号装置は、タイルテーブル2802を参照することでビットストリーム内の各タイルの符号化データの開始位置を知ることができるので、必要なタイルの符号化データの取得し、復号を早く開始することができる。なお、符号量情報2814は、ビットストリーム内における当該符号化データの終了位置を示してもよい。
図142は、固定サイズフラグ=0(固定しない)の場合の、タイルテーブル2802の別の構成例を示す図である。図142に示すタイル情報2811は、図141に示すタイル情報2811に加え、スライス情報2815を含む。スライス情報2815は、当該タイルに関連するスライスの情報(意味情報)を示す。つまり、スライス情報2815は、当該タイルが属するスライスを示す。この情報は、使用するアプリケーションに依存するが、例えば、色、対象物の属性、車両までの距離、三次元点の密度等を示す。
図143は、固定サイズフラグ=1(固定する)の場合の、タイルテーブル2802の構成例を示す図である。この場合、タイルサイズ情報2813は、各タイルのタイル情報2811内ではなく、複数のタイルに共通の情報としてタイルテーブル2802に含まれる。つまり、タイルサイズ情報2813は、複数のタイルに共通の第1ヘッダに含まれる。
また、図144は、固定サイズフラグ=1(固定する)の場合の、タイルテーブル2802の別の構成例を示す図である。図142に示す例と同様に、タイル情報2811は、スライス情報2815を含んでもよい。
以下、三次元データ復号装置における動作を説明する。三次元データ復号装置を含む自動車が地図サーバと接続された際、以下の動作が行われる。三次元データ復号装置を含む自動車は、現在の自動車の大まかな位置及びアプリケーションの要求に応じて、地図サーバにタイルの送信要求を送信する。地図サーバは、タイルテーブルを参照して、要求に合ったタイルを選択し、選択したタイルの符号化データを含む新たなビットストリームを生成し、当該ビットストリームを自動車に送信する。自動車は、受信したビットストリームに含まれるタイルテーブルを参照し、各タイルの情報を取得する。自動車は、当該情報で示される各タイルのルートの三次元位置を用いて、複数のタイルのビットストリームを復号することで三次元点を復元する。
なお、自動車はオフラインであり、地図サーバの代わりに外部記憶装置が用いられてもよい。この場合、以下の動作が行われる。自動車は、現在の自動車の大まかな位置及びアプリケーションの要求に応じて、ローカルのタイルテーブルから最適なタイルを判定する。自動車は、ビットストリームに含まれるタイルテーブルを参照し、各タイルの情報を取得する。自動車は、当該情報で示される各タイルのルートの三次元位置を用いて、複数のタイルのビットストリームを復号することで三次元点を復元する。
なお、三次元データ符号化装置は、スライス情報2815に、スライスの識別番号(slice_id)を格納してもよい。これにより、三次元データ復号装置は、必要なslice_idを持つタイルの情報をタイルテーブル2802から取得できるので、必要なslice_idを持つタイルを復号する等の処理を行うことができる。
三次元データ符号化装置は、共通ヘッダ2801(又は全体ヘッダ2804)と、タイルテーブル2802と、各タイルの符号化データ2803とを、別々のNAL(Network Abstraction Layer) Unitとして符号化してもよい。つまり、三次元データ符号化装置は、複数のタイルの複数の第2ヘッダを含むストリームを、複数のタイルの符号化データとは独立したストリームとして生成してもよい。これにより、例えば、サーバ(三次元データ符号化装置)は、先にタイルテーブル2802のNAL unitをクライアント(三次元データ復号装置)に送信する。クライアントはタイルテーブル2802を復号して必要なタイルを決定し、サーバに必要なタイルの送信要求を行う。サーバは、クライアントの要求に応じて、要求されたタイルのNAL unitをクライアントに送信する。
タイル位置情報2812は、ある世界座標(world coordinate)を基点とした座標を示してもよい。これにより、三次元データ符号化装置は、各タイルに含まれる点群が世界座標を基点とした、どの位置の三次元情報であるかを早く知ることができる。また、タイル位置情報2812は、全体ヘッダ2804に含まれる位置情報2807で示される座標からの相対座標を示してもよい。この場合、三次元データ復号装置は、各タイルの世界座標を基点とした座標を、位置情報2807で示される座標に、タイル位置情報2812で示される相対座標を加算することで算出してもよい。これにより、タイル位置情報2812の値の大きさを抑制できるので、タイルテーブル2802のサイズを削減できる。
以下、三次元データ符号化装置の動作及び三次元データ復号装置の動作を説明する。図145は、本実施の形態に係る三次元データ符号化装置による三次元データ符号化処理のフローチャートである。
まず、三次元データ符号化装置は、入力された三次元点を含むバウンディングボックスを設定する(S2801)。次に、三次元データ符号化装置は、当該バウンディングボックスを8個の子ノードに分割する(S2802)。
次に、三次元データ符号化装置は、8個の子ノードのうち三次元点が含まれる子ノードの各々のオキュパンシー符号を生成する(S2803)。次に、三次元データ符号化装置は、処理対象のノードのレベル(木構造の階層)が、対象タイルレベルに到達したか否かを判定する(S2804)。ここで対象タイルレベルとは、タイル分割を行うレベル(木構造の階層)である。
処理対象のノードのレベルが対象タイルレベルに到達していない場合(S2804でNo)、三次元データ符号化装置は、各子ノードを8個の孫ノードに分割し(S2805)、孫ノードの各々に対してステップS2803以降の処理を行う。
処理対象のノードのレベルが対象タイルレベルに到達した場合(S2804でYes)、三次元データ符号化装置は、タイルテーブルに現在のノード位置及びタイルレベル(タイルサイズ)を保存する(S2806)。
次に、三次元データ符号化装置は、各子ノードを8個の孫ノードに分割する(S2807)。次に、三次元データ符号化装置は、オキュパンシー符号を生成する処理を、ノードが分割できなくなるまで繰り返す(S2808)。次に、三次元データ符号化装置は、各タイルのオキュパンシー符号を符号化する(S2809)。
最後に、三次元データ符号化装置は、生成した複数のタイルの符号化ビットストリーム(符号化データ)を結合する(S2810)。また、三次元データ符号化装置は、タイルテーブル等をビットストリームのヘッダ情報に付加する。
ここで、タイルテーブル2802に、タイルサイズ(タイルレベル)が格納される。よって、三次元データ復号装置は、このタイルサイズを用いて、各タイルのサブツリーのバウンディングボックスのサイズを取得できる。また、三次元データ復号装置は、サブツリーのバウンディングボックスのサイズを用いて、全体の木構造のバウンディングボックスのサイズを算出できる。
なお、三次元データ符号化装置は、各タイルのバウンディングボックスのサイズをタイルテーブル2802に格納してもよい。これにより、三次元データ復号装置は、タイルテーブル2802を参照することで各タイルのバウンディングボックスのサイズを取得できる。
図146は、本実施の形態に係る三次元データ復号装置による三次元データ復号処理のフローチャートである。
まず、三次元データ復号装置は、ビットストリームに含まれるヘッダ情報を用いて、出力する三次元点を含むバウンディングボックスを設定する(S2821)。次に、三次元データ復号装置は、ビットストリームに含まれるヘッダ情報を用いて各タイル(サブツリー)のルート位置を設定する(S2822)。
次に、三次元データ復号装置は、当該バウンディングボックスを8個の子ノードに分割する(S2823)。次に、三次元データ復号装置は、各ノードのオキュパンシー符号を復号し、復号したオキュパンシー符号に基づきノードを8個の子ノードに分割する。また、三次元データ復号装置は、この処理を、各タイル(サブツリー)のノードが分割できなくなるまで繰り返す(S2824)。
最後に、三次元データ復号装置は、復号した複数のタイルの三次元点を結合する(S2825)。
図147は、本実施の形態に係る三次元データ符号化装置2820の構成を示すブロック図である。三次元データ符号化装置2820は、8分木生成部2821と、タイル分割部2822と、複数のエントロピー符号化部2823と、ビットストリーム生成部2824とを備える。
対象タイルレベルが三次元データ符号化装置2820に入力される。三次元データ符号化装置2820は、当該対象タイルレベルに処理が到達した後、各タイルのオキュパンシー符号化を格納し、複数のタイルのオキュパンシー符号を個別に符号化することで各タイルの符号データを生成する。
8分木生成部2821は、バウンディングボックスを設定し、バウンディングボックスを8個の子ノードに分割する。また、8分木生成部2821は、この分割処理を、処理が対象タイルレベルに到達するまで繰り返す。
タイル分割部2822は、タイルを設定する。具体的には、上記処理が対象タイルレベルに到達した場合に、当該レベルをルートとする複数のタイルを設定する。
複数のエントロピー符号化部2823は、複数のタイルを個別に符号化する。ビットストリーム生成部2824は、複数のタイルが符号化された符号化データを結合することでビットストリームを生成する。
図148は、本実施の形態に係る三次元データ復号装置2830の構成を示すブロック図である。三次元データ復号装置2830は、8分木生成部2831と、ビットストリーム分割部2832と、複数のエントロピー復号部2833と、三次元点結合部2834とを備える。
8分木生成部2831は、バウンディングボックスを設定し、バウンディングボックスを8個の子ノードに分割する。また、8分木生成部2831は、この分割処理を、処理が対象タイルレベルに到達するまで繰り返す。
ビットストリーム分割部2832は、ビットストリームに含まれるヘッダ情報を用いて、ビットストリームを各タイルの符号化データに分割する。
複数のエントロピー復号部2833は、複数のタイルを個別に復号する。三次元点結合部2834は、復号された複数のタイルの三次元点を結合する。なお、復号された三次元点がアプリケーションにおいて直接使用される場合もある。このような場合には、この結合処理はスキップされる。
以上のように、本実施の形態に係る三次元データ符号化装置は、図149に示す処理を行う。三次元データ符号化装置は、複数の三次元点が含まれる対象空間(例えばバウンディングボックス)に含まれる複数のサブ空間(例えばタイル)を符号化することでビットストリームを生成する。前記ビットストリームの生成では、三次元データ符号化装置は、ビットストリームに含まれる、複数のサブ空間に共通の第1ヘッダ(例えば、共通ヘッダ2801又は全体ヘッダ2804)に、対象空間の座標である第1座標を示す第1情報(例えば位置情報2807)を格納し(S2831)、ビットストリームに含まれる、サブ空間単位の第2ヘッダ(例えばタイル情報2811)に、対応するサブ空間の座標である第2座標と第1座標との差分を示す第2情報(例えばタイル位置情報2812)を格納する(S2832)。
これによれば、第2情報として第1座標と第2座標との差分を示す情報を格納されるので、ビットストリームの符号量を低減できる。
なお、第1ヘッダの少なくとも一部と複数の第2ヘッダとが単一のヘッダ(シンタックス)に含まれてもよい。例えば、図143に示すように、タイルテーブル2802に、複数のサブ空間に共通の情報であるタイルサイズ情報2913(第1ヘッダ)と、サブ空間単位の情報であるタイル情報2811(第2ヘッダ)とが含まれてもよい。また、第1ヘッダは、共通ヘッダ2801の少なくとも一部と、タイルテーブル2802の一部とを含んでもよい。
例えば、複数のサブ空間に含まれる第1サブ空間と第2サブ空間との一部は重複する。例えば、図125、図126及び図127に示すように、同一の領域が異なるタイル分割が用いられてもよい。
例えば、三次元データ符号化装置は、前記ビットストリームの生成では、第2ヘッダ(例えば図141のタイル情報2811)に、対応するサブ空間の大きさを示す第3情報(例えば図141のタイルサイズ情報2813)を格納する。
例えば、三次元データ符号化装置は、前記ビットストリームの生成では、第1ヘッダに、複数のサブ空間の大きさを示す第3情報(図143のタイルサイズ情報2813)を格納する。
例えば、三次元データ符号化装置は、前記ビットストリームの生成では、前記第1ヘッダ(例えば共通ヘッダ2801又はタイルテーブル2802)に、複数のサブ空間の数を示す第4情報(タイル数情報2806)を格納する。
例えば、三次元データ符号化装置は、前記ビットストリームの生成では、複数のサブ空間の複数の第2ヘッダを含むストリームを、複数のサブ空間の符号化データとは独立したストリームとして生成する。例えば、複数のサブ空間の複数の第2ヘッダと、複数のサブ空間の符号化データとは別々のNAL Unitとして符号化される。
これによれば、例えば、三次元データ復号装置は、第2ヘッダを含むストリームを参照することで、必要なサブ空間を判定し、必要なサブ空間の符号化データを選択的に取得することができる。
例えば、三次元データ符号化装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態に係る三次元データ復号装置は、図150に示す処理を行う。三次元データ復号装置は、複数の三次元点が含まれる対象空間に含まれる複数のサブ空間が符号化されることで得らえたビットストリームを復号する。三次元データ復号装置は、前記ビットストリームの復号では、ビットストリームに含まれる、複数のサブ空間に共通の第1ヘッダ(例えば、共通ヘッダ2801又は全体ヘッダ2804)から、前記対象空間の座標である第1座標を示す第1情報(例えば位置情報2807)を復号し(S2841)、ビットストリームに含まれる、サブ空間単位の第2ヘッダ(例えばタイル情報2811)から、対応するサブ空間の座標である第2座標と第1座標との差分を示す第2情報(例えばタイル位置情報2812)を復号する(S2842)。例えば、三次元データ復号装置は、第1情報で示される第1座標に、第2情報で示される差分を加算することで第2座標を算出する。
これによれば、第2情報として第1座標と第2座標との差分を示す情報を格納されるので、ビットストリームの符号量を低減できる。
例えば、複数のサブ空間に含まれる第1サブ空間と第2サブ空間との一部は重複する。例えば、図125、図126及び図127に示すように、同一の領域が異なるタイル分割が用いられてもよい。
例えば、三次元データ復号装置は、前記ビットストリームの復号では、第2ヘッダ(例えば図141のタイル情報2811)から、対応するサブ空間の大きさを示す第3情報(例えば図141のタイルサイズ情報2813)を復号する。
例えば、三次元データ復号装置は、前記ビットストリームの復号では、第1ヘッダから、複数のサブ空間の大きさを示す第3情報(図143のタイルサイズ情報2813)を復号する。
例えば、三次元データ復号装置は、前記ビットストリームの復号では、第1ヘッダ(例えば共通ヘッダ2801)から、複数のサブ空間の数を示す第4情報(タイル数情報2806)を復号する。
例えば、複数のサブ空間の複数の第2ヘッダを含むストリームは、複数のサブ空間の復号データとは独立したストリームとして生成されている。例えば、複数のサブ空間の複数の第2ヘッダと、複数のサブ空間の符号化データとは別々のNAL Unitとして符号化される。例えば、三次元データ復号装置は、第2ヘッダを含むストリームを参照することで、必要なサブ空間を判定し、必要なサブ空間の符号化データを選択的に取得する。
例えば、三次元データ復号装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
以上、本開示の実施の形態に係る三次元データ符号化装置及び三次元データ復号装置等について説明したが、本開示は、この実施の形態に限定されるものではない。
また、上記実施の形態に係る三次元データ符号化装置及び三次元データ復号装置等に含まれる各処理部は典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されてもよいし、一部又は全てを含むように1チップ化されてもよい。
また、集積回路化はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)、又はLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
また、上記各実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。
また、本開示は、三次元データ符号化装置及び三次元データ復号装置等により実行される三次元データ符号化方法又は三次元データ復号方法等として実現されてもよい。
また、ブロック図における機能ブロックの分割は一例であり、複数の機能ブロックを一つの機能ブロックとして実現したり、一つの機能ブロックを複数に分割したり、一部の機能を他の機能ブロックに移してもよい。また、類似する機能を有する複数の機能ブロックの機能を単一のハードウェア又はソフトウェアが並列又は時分割に処理してもよい。
また、フローチャートにおける各ステップが実行される順序は、本開示を具体的に説明するために例示するためのものであり、上記以外の順序であってもよい。また、上記ステップの一部が、他のステップと同時(並列)に実行されてもよい。
以上、一つまたは複数の態様に係る三次元データ符号化装置及び三次元データ復号装置等について、実施の形態に基づいて説明したが、本開示は、この実施の形態に限定されるものではない。本開示の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、一つまたは複数の態様の範囲内に含まれてもよい。