本開示の一態様に係る三次元データ符号化方法は、点群データに含まれる複数の三次元点の複数の属性情報から複数の係数値を算出し、前記複数の係数値の各々を量子化することで複数の量子化値を生成し、前記複数の量子化値を含むビットストリームを生成し、前記複数の係数値は、複数の階層のいずれかに属し、前記量子化では、前記複数の係数値の各々を、当該係数値が属する階層用の量子化パラメータを用いて量子化し、前記ビットストリームは、基準量子化パラメータを示す第1情報と、前記基準量子化パラメータから前記複数の階層用の複数の量子化パラメータを算出するための複数の第2情報とを含む。
これによれば、当該三次元データ符号化方法は、階層毎に量子化パラメータを切り替えることができるので、適切に符号化を行える。また、当該三次元データ符号化方法は、基準量子化パラメータを示す第1情報と、基準量子化パラメータから複数の量子化パラメータを算出するための複数の第2情報とを符号化することで符号化効率を向上できる。
例えば、前記複数の第2情報の各々は、前記基準量子化パラメータと当該階層用の量子化パラメータとの差分を示してもよい。
例えば、前記ビットストリームは、さらに、前記複数の第2情報が前記ビットストリームに含まれるか否かを示す第1フラグを含んでもよい。
例えば、前記ビットストリームは、さらに、前記ビットストリームに含まれる前記複数の第2情報の数を示す第3情報を含んでもよい。
例えば、前記複数の三次元点は、前記複数の三次元点の位置情報に基づき前記複数の階層のいずれかに分類されてもよい。
例えば、前記複数の係数値は、前記複数の属性情報の各々を高周波成分と低周波成分とに分けて前記複数の階層に階層化することにより生成されてもよい。
本開示の一態様に係る三次元データ復号方法は、ビットストリームに含まれる、(i)基準量子化パラメータを示す第1情報と、(ii)前記基準量子化パラメータから複数の階層用の複数の量子化パラメータを算出するための複数の第2情報と、を用いて前記複数の階層用の量子化パラメータを算出し、前記ビットストリームに含まれる複数の量子化値の各々を、算出された前記複数の階層用の量子化パラメータのうち当該量子化値が属する階層用の量子化パラメータを用いて逆量子化することで複数の係数値を生成し、前記複数の係数値から、点群データに含まれる複数の三次元点の複数の属性情報を算出する。
これによれば、当該三次元データ復号方法は、階層毎に量子化パラメータを切り替えることができるので、適切に復号を行える。また、当該三次元データ復号方法は、基準量子化パラメータを示す第1情報と、基準量子化パラメータから複数の量子化パラメータを算出するための複数の第2情報とを用いられることで符号化効率が向上されたビットストリームを適切に復号できる。
例えば、前記複数の第2情報の各々は、前記基準量子化パラメータと当該階層用の量子化パラメータとの差分を示してもよい。
例えば、前記ビットストリームは、さらに、前記複数の第2情報が前記ビットストリームに含まれるか否かを示す第1フラグを含んでもよい。
例えば、前記ビットストリームは、さらに、前記ビットストリームに含まれる前記複数の第2情報の数を示す第3情報を含んでもよい。
例えば、前記複数の三次元点は、前記複数の三次元点の位置情報に基づき前記複数の階層のいずれかに分類されてもよい。
例えば、前記複数の係数値は、前記複数の属性情報の各々を高周波成分と低周波成分とに分けて前記複数の階層に階層化することにより生成されてもよい。
また、本開示の一態様に係る三次元データ符号化装置は、プロセッサと、メモリとを備え、前記プロセッサは、前記メモリを用いて、点群データに含まれる複数の三次元点の複数の属性情報から複数の係数値を算出し、前記複数の係数値の各々を量子化することで複数の量子化値を生成し、前記複数の量子化値を含むビットストリームを生成し、前記複数の係数値は、複数の階層のいずれかに属し、前記量子化では、前記複数の係数値の各々を、当該係数値が属する階層用の量子化パラメータを用いて量子化し、前記ビットストリームは、基準量子化パラメータを示す第1情報と、前記基準量子化パラメータから前記複数の階層用の複数の量子化パラメータを算出するための複数の第2情報とを含む。
これによれば、当該三次元データ符号化装置は、階層毎に量子化パラメータを切り替えることができるので、適切に符号化を行える。また、当該三次元データ符号化装置は、基準量子化パラメータを示す第1情報と、基準量子化パラメータから複数の量子化パラメータを算出するための複数の第2情報とを符号化することで符号化効率を向上できる。
また、本開示の一態様に係る三次元データ復号装置は、プロセッサと、メモリとを備え、前記プロセッサは、前記メモリを用いて、ビットストリームに含まれる、(i)基準量子化パラメータを示す第1情報と、(ii)前記基準量子化パラメータから複数の階層用の複数の量子化パラメータを算出するための複数の第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)
三次元点群の情報は、位置情報(geometry)と属性情報(attribute)とを含む。位置情報は、ある点を基準とした座標(x座標、y座標、z座標)を含む。位置情報を符号化する場合は、各三次元点の座標を直接符号化する代わりに、各三次元点の位置を8分木表現で表現し、8分木の情報を符号化することで符号量を削減する方法が用いられる。
一方、属性情報は、各三次元点の色情報(RGB、YUVなど)、反射率、及び法線ベクトルなどを示す情報を含む。例えば、三次元データ符号化装置は、属性情報を、位置情報とは別の符号化方法を用いて符号化することができる。
本実施の形態では属性情報の符号化方法について説明する。なお、本実施の形態では属性情報の値として整数値を用いて説明する。例えば色情報RGB又はYUVの各色成分が8bit精度である場合、各色成分は0~255の整数値をとる。反射率の値が10bit精度である場合、反射率の値は0~1023の整数値をとる。なお、三次元データ符号化装置は、属性情報のビット精度が小数精度である場合、属性情報の値が整数値になるように、当該値にスケール値を乗じてから整数値に丸めてもよい。なお、三次元データ符号化装置は、このスケール値をビットストリームのヘッダ等に付加してもよい。
三次元点の属性情報の符号化方法として、三次元点の属性情報の予測値を算出し、元の属性情報の値と予測値との差分(予測残差)を符号化することが考えられる。例えば、三次元点pの属性情報の値がApであり、予測値がPpである場合、三次元データ符号化装置は、その差分絶対値Diffp=|Ap-Pp|を符号化する。この場合、予測値Ppを高精度に生成することができれば、差分絶対値Diffpの値が小さくなる。よって、例えば、値が小さい程発生ビット数が小さくなる符号化テーブルを用いて差分絶対値Diffpをエントロピー符号化することで符号量を削減することができる。
属性情報の予測値を生成する方法として、符号化対象の対象三次元点の周囲にある別の三次元点である参照三次元点の属性情報を用いることが考えられる。ここで参照三次元点とは、対象三次元点から予め定められた距離範囲内にある三次元点である。例えば、対象三次元点p=(x1,y1,z1)と三次元点q=(x2,y2,z2)とが存在する場合、三次元データ符号化装置は、(式A1)に示す三次元点pと三次元点qとのユークリッド距離d(p、q)を算出する。
三次元データ符号化装置は、ユークリッド距離d(p、q)が予め定められた閾値THdより小さい場合、三次元点qの位置が対象三次元点pの位置に近いと判定し、対象三次元点pの属性情報の予測値の生成に三次元点qの属性情報の値を利用すると判定する。なお、距離算出方法は別の方法でもよく、例えばマハラノビス距離等が用いられてもよい。また、三次元データ符号化装置は、対象三次元点から予め定められた距離範囲外の三次元点を予測処理に用いないと判定してもよい。例えば、三次元点rが存在し、対象三次元pと三次元点rとの距離d(p、r)が閾値THd以上である場合、三次元データ符号化装置は、三次元点rを予測に用いないと判定してもよい。なお、三次元データ符号化装置は、閾値THdを示す情報を、ビットストリームのヘッダ等に付加してもよい。
図51は、三次元点の例を示す図である。この例では、対象三次元点pと三次元点qとの距離d(p、q)が閾値THdより小さい。よって、三次元データ符号化装置は、三次元点qを対象三次元点pの参照三次元点と判定し、対象三次元pの属性情報Apの予測値Ppの生成に三次元点qの属性情報Aqの値を利用すると判定する。
一方、対象三次元点pと三次元点rとの距離d(p、r)は、閾値THd以上である。よって、三次元データ符号化装置は、三次元点rを対象三次元点pの参照三次元点でないと判定し、対象三次元点pの属性情報Apの予測値Ppの生成に三次元点rの属性情報Arの値を利用しないと判定する。
また、三次元データ符号化装置は、対象三次元点の属性情報を予測値を用いて符号化する場合、既に属性情報を符号化及び復号済みの三次元点を参照三次元点として利用する。同様に、三次元データ復号装置は、復号対象の対象三次元点の属性情報を予測値を用いて復号する場合、既に属性情報を復号済みの三次元点を参照三次元点として利用する。これにより、符号化時と復号時とで同一の予測値を生成することができるので、符号化で生成した三次元点のビットストリームを復号側で正しく復号することができる。
また、三次元点の属性情報を符号化する場合に、三次元点の位置情報を用いて各三次元点を複数階層に分類してから符号化することが考えられる。ここで、分類した各階層をLoD(Level of Detail)と呼ぶ。LoDの生成方法について図52を用いて説明する。
まず、三次元データ符号化装置は、初期点a0を選択し、LoD0に割当てる。次に、三次元データ符号化装置は、点a0からの距離がLoD0の閾値Thres_LoD[0]より大きい点a1を抽出しLoD0に割当てる。次に、三次元データ符号化装置は、点a1からの距離がLoD0の閾値Thres_LoD[0]より大きい点a2を抽出しLoD0に割当てる。このように、三次元データ符号化装置は、LoD0内の各点の間の距離が閾値Thres_LoD[0]より大きくなるようにLoD0を構成する。
次に、三次元データ符号化装置は、まだLoDが未割当ての点b0を選択し、LoD1に割当てる。次に、三次元データ符号化装置は、点b0からの距離がLoD1の閾値Thres_LoD[1]より大きく、LoDが未割当ての点b1を抽出しLoD1に割当てる。次に、三次元データ符号化装置は、点b1からの距離がLoD1の閾値Thres_LoD[1]より大きく、LoDが未割当ての点b2を抽出しLoD1に割当てる。このように、三次元データ符号化装置は、LoD1内の各点の間の距離が閾値Thres_LoD[1]より大きくなるようにLoD1を構成する。
次に、三次元データ符号化装置は、まだLoDが未割当ての点c0を選択し、LoD2に割当てる。次に、三次元データ符号化装置は、点c0からの距離がLoD2の閾値Thres_LoD[2]より大きく、LoDが未割当ての点c1を抽出しLoD2に割当てる。次に、三次元データ符号化装置は、点c1からの距離がLoD2の閾値Thres_LoD[2]より大きく、LoDが未割当ての点c2を抽出しLoD2に割当てる。このように、三次元データ符号化装置は、LoD2内の各点の間の距離が閾値Thres_LoD[2]より大きくなるようにLoD2を構成する。例えば、図53に示すように、各LoDの閾値Thres_LoD[0]、Thres_LoD[1]、及びThres_LoD[2]が設定される。
また、三次元データ符号化装置は、各LoDの閾値を示す情報を、ビットストリームのヘッダ等に付加してもよい。例えば、図53に示す例の場合、三次元データ符号化装置は、閾値Thres_LoD[0]、Thres_LoD[1]、及びThres_LoD[2]をヘッダに付加してもよい。
また、三次元データ符号化装置は、LoDの最下層にLoDが未割当ての三次元点全てを割当ててもよい。この場合、三次元データ符号化装置は、LoDの最下層の閾値をヘッダに付加しないことでヘッダの符号量を削減できる。例えば、図53に示す例の場合、三次元データ符号化装置は、閾値Thres_LoD[0]とThres_LoD[1]をヘッダに付加し、Thres_LoD[2]をヘッダに付加しない。この場合、三次元データ復号装置は、Thres_LoD[2]の値0と推定してもよい。また、三次元データ符号化装置は、LoDの階層数をヘッダに付加してもよい。これにより、三次元データ復号装置は、LoDの階層数を用いて最下層のLoDを判定できる。
また、LoDの各層の閾値の値を図53に示すように上位層ほど大きく設定することで、上位層(LoD0に近い層)ほど三次元点間の距離が離れた疎点群(sparse)となり、下位層ほど三次元点間の距離が近い密点群(dense)となる。なお、図53に示す例では、LoD0が最上位層である。
また、各LoDを設定する際の初期三次元点の選択方法は、位置情報符号化時の符号化順に依存してもよい。例えば、三次元データ符号化装置は、LoD0の初期点a0として、位置情報符号化時に最初に符号化された三次元点を選択し、初期点a0を基点に、点a1、点a2を選択してLoD0を構成する。そして、三次元データ符号化装置は、LoD1の初期点b0として、LoD0に属していない三次元点の中で、最も早く位置情報が符号化された三次元点を選択してもよい。つまり、三次元データ符号化装置は、LoDnの初期点n0として、LoDnの上層(LoD0~LoDn-1)に属していない三次元点の中で、最も早く位置情報が符号化された三次元点を選択してもよい。これにより、三次元データ復号装置は、復号時に同様の初期点選択方法を用いることで、符号化時と同一のLoDを構成できるので、ビットストリームを適切に復号できる。具体的には、三次元データ復号装置は、LoDnの初期点n0として、LoDnの上層に属していない三次元点の中で、最も早く位置情報が復号された三次元点を選択する。
以下、三次元点の属性情報の予測値を、LoDの情報を用いて生成する手法について説明する。例えば、三次元データ符号化装置は、LoD0に含まれる三次元点から順に符号化する場合、LoD1に含まれる対象三次元点を、LoD0及びLoD1に含まれる符号化かつ復号済み(以下、単に「符号化済み」とも記す)の属性情報を用いて生成する。このように、三次元データ符号化装置は、LoDnに含まれる三次元点の属性情報の予測値を、LoDn’(n’<=n)に含まれる符号化済みの属性情報を用いて生成する。つまり、三次元データ符号化装置は、LoDnに含まれる三次元点の属性情報の予測値の算出に、LoDnの下層に含まれる三次元点の属性情報を用いない。
例えば、三次元データ符号化装置は、三次元点の属性情報の予測値を、符号化対象の対象三次元点の周辺の符号化済みの三次元点のうち、N個以下の三次元点の属性値の平均を算出することで生成する。また、三次元データ符号化装置は、Nの値を、ビットストリームのヘッダ等に付加してもよい。なお、三次元データ符号化装置は、Nの値を三次元点毎に変更し、三次元点毎にNの値を付加してもよい。これにより、三次元点毎に適切なNを選択することができるので、予測値の精度を向上できる。よって、予測残差を小さくできる。また、三次元データ符号化装置は、Nの値をビットストリームのヘッダに付加し、ビットストリーム内でNの値を固定してもよい。これにより、三次元点毎にNの値を符号化、又は復号する必要がなくなるので、処理量を削減できる。また、三次元データ符号化装置は、LoD毎にNの値を別々に符号化してもよい。これによりLoD毎に適切なNを選択することで符号化効率を向上できる。
または、三次元データ符号化装置は、三次元点の属性情報の予測値を、周囲の符号化済みのN個の三次元点の属性情報の重み付け平均値により算出してもよい。例えば、三次元データ符号化装置は、対象三次元点と周囲のN個の三次元点とのそれぞれの距離情報を用いて重みを算出する。
三次元データ符号化装置は、LoD毎にNの値を別々に符号化する場合、例えばLoDの上位層ほどNの値を大きく設定し、下位層ほどNの値を小さく設定する。LoDの上位層では属する三次元点間の距離が離れるため、Nの値を大きく設定して複数の周囲の三次元点を選択して平均化することで予測精度を向上できる可能性がある。また、LoDの下位層では属する三次元点間の距離が近いため、Nの値を小さく設定して平均化の処理量を抑えつつ、効率的な予測を行うことが可能となる。
図54は、予測値に用いる属性情報の例を示す図である。上述したように、LoDNに含まれる点Pの予測値は、LoDN’(N’<=N)に含まれる符号化済みの周囲点P’を用いて生成される。ここで、周囲点P’は、点Pとの距離に基づき選択される。例えば、図54に示す点b2の属性情報の予測値は、点a0、a1、a2、b0、b1の属性情報を用いて生成される。
上述したNの値に応じて、選択される周囲点は変化する。例えばN=5の場合は点b2の周囲点としてa0、a1、a2、b0、b1が選択される。N=4の場合は距離情報を元に点a0、a1、a2、b1を選択される。
予測値は、距離依存の重み付け平均により算出される。例えば、図54に示す例では、点a2の予測値a2pは、(式A2)及び(式A3)に示すように、点a0及び点a1の属性情報の重み付け平均により算出される。なお、Aiは点aiの属性情報の値である。
また、点b2の予測値b2pは、(式A4)~(式A6)に示すように、点a0、a1、a2、b0、b1の属性情報の重み付け平均により算出される。なお、Biは点biの属性情報の値である。
また、三次元データ符号化装置は、三次元点の属性情報の値と、周囲点から生成した予測値との差分値(予測残差)を算出し、算出した予測残差を量子化してもよい。例えば、三次元データ符号化装置は、予測残差を量子化スケール(量子化ステップとも呼ぶ)で除算することで量子化を行う。この場合、量子化スケールが小さいほど量子化によって発生しうる誤差(量子化誤差)が小さくなる。逆に量子化スケールが大きいほど量子化誤差は大きくなる。
なお、三次元データ符号化装置は、使用する量子化スケールをLoD毎に変えてもよい。例えば、三次元データ符号化装置は、上位層ほど量子化スケールを小さくし、下位層ほど量子化スケールを大きくする。上位層に属する三次元点の属性情報の値は、下位層に属する三次元点の属性情報の予測値として使用される可能性があるため、上位層の量子化スケールを小さくして上位層で発生しうる量子化誤差を抑え、予測値の精度を高めることで符号化効率を向上できる。なお、三次元データ符号化装置は、LoD毎に使用する量子化スケールをヘッダ等に付加してもよい。これにより、三次元データ復号装置は、正しく量子化スケールを復号できるので、ビットストリームを適切に復号できる。
また、三次元データ符号化装置は、量子化後の予測残差である符号付整数値(符号付量子化値)を符号なし整数値(符号なし量子化値)に変換してもよい。これにより予測残差をエントロピー符号化する場合に、負の整数の発生を考慮する必要がなくなる。なお、三次元データ符号化装置は、必ずしも符号付整数値を符号なし整数値に変換する必要はなく、例えば符号ビットを別途エントロピー符号化してもよい。
予測残差は、元の値から予測値を減算することにより算出される。例えば、点a2の予測残差a2rは、(式A7)に示すように、点a2の属性情報の値A2から、点a2の予測値a2pを減算することで算出される。点b2の予測残差b2rは、(式A8)に示すように、点b2の属性情報の値B2から、点b2の予測値b2pを減算することで算出される。
a2r=A2-a2p ・・・(式A7)
b2r=B2-b2p ・・・(式A8)
また、予測残差は、QS(量子化ステップ(Quantization Step))で除算されることで量子化される。例えば、点a2の量子化値a2qは、(式A9)により算出される。点b2の量子化値b2qは、(式A10)により算出される。ここで、QS_LoD0は、LoD0用のQSであり、QS_LoD1は、LoD1用のQSである。つまり、LoDに応じてQSが変更されてもよい。
a2q=a2r/QS_LoD0 ・・・(式A9)
b2q=b2r/QS_LoD1 ・・・(式A10)
また、三次元データ符号化装置は、以下のように、上記量子化値である符号付整数値を符号なし整数値に変換する。三次元データ符号化装置は、符号付整数値a2qが0より小さい場合、符号なし整数値a2uを-1-(2×a2q)に設定する。三次元データ符号化装置は、符号付整数値a2qが0以上の場合、符号なし整数値a2uを2×a2qに設定する。
同様に、三次元データ符号化装置は、符号付整数値b2qが0より小さい場合、符号なし整数値b2uを-1-(2×b2q)に設定する。三次元データ符号化装置は、符号付整数値b2qが0以上の場合、符号なし整数値b2uを2×b2qに設定する。
また、三次元データ符号化装置は、量子化後の予測残差(符号なし整数値)を、エントロピー符号化によって符号化してもよい。例えば符号なし整数値を二値化したうえで、二値の算術符号化を適用してもよい。
なお、この場合、三次元データ符号化装置は、予測残差の値に応じて二値化方法を切替えてもよい。例えば、三次元データ符号化装置は、予測残差puが閾値R_THより小さい場合は、閾値R_THを表現するために必要な固定ビット数で予測残差puを二値化する。また、三次元データ符号化装置は、予測残差puが閾値R_TH以上の場合は、閾値R_THの二値化データと(pu-R_TH)の値を指数ゴロム(Exponential-Golomb)等を用いて二値化する。
例えば、三次元データ符号化装置は、閾値R_THが63であり、予測残差puが63より小さい場合は、予測残差puを6bitで二値化する。また、三次元データ符号化装置は、予測残差puが63以上である場合は、閾値R_THの二値データ(111111)と(pu-63)とを指数ゴロムを用いて二値化することで算術符号化を行う。
より具体的な例では、三次元データ符号化装置は、予測残差puが32である場合、6bitの二値データ(100000)を生成し、このビット列を算術符号化する。また、三次元データ符号化装置は、予測残差puが66の場合、閾値R_THの二値データ(111111)と値3(66-63)を指数ゴロムで表したビット列(00100)とを生成し、このビット列(111111+00100)を算術符号化する。
このように、三次元データ符号化装置は、予測残差の大きさに応じて二値化の方法を切替えることで、予測残差が大きくなった場合の二値化ビット数の急激な増加を抑えながら符号化することが可能となる。なお、三次元データ符号化装置は、閾値R_THをビットストリームのヘッダ等に付加してもよい。
例えば、高ビットレートで符号化が行われる場合、つまり、量子化スケールが小さい場合、量子化誤差が小さく予測精度が高くなり、結果として予測残差が大きくならない可能性がある。よって、この場合には、三次元データ符号化装置は、閾値R_THを大きく設定する。これにより、閾値R_THの二値化データを符号化する可能性が低くなり、符号化効率が向上する。逆に、低ビットレートで符号化が行われる場合、つまり、量子化スケールが大きい場合、量子化誤差が大きく予測精度が悪くなり、結果として予測残差が大きくなる可能性がある。よって、この場合には、三次元データ符号化装置は、閾値R_THを小さく設定する。これにより、二値化データの急激なビット長増加を防ぐことができる。
また、三次元データ符号化装置は、LoD毎に閾値R_THを切り替え、LoD毎の閾値R_THをヘッダ等に付加してもよい。つまり、三次元データ符号化装置は、LoD毎に二値化の方法を切替えてもよい。例えば、上位層では三次元点間の距離が遠いため、予測精度が悪く結果として予測残差が大きくなる可能性がある。よって、三次元データ符号化装置は、上位層に対しては閾値R_THを小さく設定することで二値化データの急激なビット長増加を防ぐ。また、下位層では三次元点間の距離が近いため、予測精度が高く結果として予測残差が小さくなる可能性がある。よって、三次元データ符号化装置は、階層に対しては閾値R_THを大きく設定することで符号化効率を向上する。
図55は、指数ゴロム符号の一例を示す図であって、二値化前の値(多値)と、二値化後のビット(符号)との関係を示す図である。なお、図55に示す0と1とを反転させてもよい。
また、三次元データ符号化装置は、予測残差の二値化データに算術符号化を適用する。これにより、符号化効率を向上できる。なお、算術符号化の適用時に、二値化データのうち、nビットで二値化した部分であるnビット符号(n-bit code)と、指数ゴロムを用いて二値化した部分である残り符号(remaining code)とで、各ビットの0と1の出現確率の傾向は異なる可能性がある。よって、三次元データ符号化装置は、nビット符号と残り符号とで、算術符号化の適用方法を切替えてもよい。
例えば、三次元データ符号化装置は、nビット符号に対しては、ビット毎に異なる符号化テーブル(確率テーブル)を用いて算術符号化を行う。この際、三次元データ符号化装置は、ビット毎に使用する符号化テーブルの数を変えてもよい。例えば、三次元データ符号化装置は、nビット符号の先頭ビットb0には1個の符号化テーブルを用いて算術符号化を行う。また、三次元データ符号化装置は、次のビットb1に対しては2個の符号化テーブルを用いる。また、三次元データ符号化装置は、b0の値(0又は1)に応じてビットb1の算術符号化に用いる符号化テーブルを切替える。同様に、三次元データ符号化装置は、更に次のビットb2に対しては4個の符号化テーブルを用いる。また、三次元データ符号化装置は、b0及びb1の値(0~3)に応じて、ビットb2の算術符号化に用いる符号化テーブルを切替える。
このように、三次元データ符号化装置は、nビット符号の各ビットbn-1を算術符号化する際に、2n-1個の符号化テーブルを用いる。また、三次元データ符号化装置は、bn-1より前のビットの値(発生パターン)に応じて、使用する符号化テーブルを切替える。これにより、三次元データ符号化装置は、ビット毎に適切な符号化テーブルを使用できるので、符号化効率を向上できる。
なお、三次元データ符号化装置は、各ビットで使用する符号化テーブルの数を削減してもよい。例えば、三次元データ符号化装置は、各ビットbn-1を算術符号化する際に、bn-1より前のmビット(m<n-1)の値(発生パターン)に応じて2m個の符号化テーブルを切替えてもよい。これにより各ビットで使用する符号化テーブルの数を抑えつつ、符号化効率を向上できる。なお、三次元データ符号化装置は、各符号化テーブルにおける0と1の発生確率を、実際に発生した二値化データの値に応じて更新してもよい。また、三次元データ符号化装置は、一部のビットの符号化テーブルにおける0と1の発生確率を固定化してもよい。これにより、発生確率の更新回数を抑制できるので処理量を削減できる。
例えば、nビット符号がb0b1b2…bn-1である場合、b0用の符号化テーブルは1個(CTb0)である。b1用の符号化テーブルは2個(CTb10、CTb11)である。また、b0の値(0~1)に応じて使用する符号化テーブルが切替えられる。b2用の符号化テーブルは、4個(CTb20、CTb21、CTb22、CTb23)である。また、b0及びb1の値(0~3)に応じて使用する符号化テーブルが切替えられる。bn-1用の符号化テーブルは2n-1個(CTbn0、CTbn1、…、CTbn(2n-1-1))である。また、b0b1…bn-2の値(0~2n-1-1)に応じて使用する符号化テーブルを切替えられる。
なお、三次元データ符号化装置は、nビット符号に対しては、二値化せずに0~2n-1の値を設定するm-aryによる算術符号化(m=2n)を適用してもよい。また、三次元データ符号化装置が、nビット符号をm-aryで算術符号化する場合は、三次元データ復号装置もm-aryの算術復号によりnビット符号を復元してもよい。
図56は、例えば、残り符号が指数ゴロム符号の場合の処理を説明するための図である。指数ゴロムを用いて二値化した部分である残り符号は、図56に示すようにprefix部とsuffix部とを含む。例えば、三次元データ符号化装置は、prefix部とsuffix部とで符号化テーブルを切替える。つまり、三次元データ符号化装置は、prefix部に含まれる各ビットを、prefix用の符号化テーブルを用いて算術符号化し、suffix部に含まれる各ビットを、suffix用の符号化テーブルを用いて算術符号化する。
なお、三次元データ符号化装置は、各符号化テーブルにおける0と1の発生確率を、実際に発生した二値化データの値に応じて更新してもよい。または、三次元データ符号化装置は、どちらかの符号化テーブルにおける0と1の発生確率を固定化してもよい。これにより、発生確率の更新回数を抑制できるので処理量を削減できる。例えば、三次元データ符号化装置は、prefix部に対して発生確率を更新し、suffix部に対して発生確率を固定化してもよい。
また、三次元データ符号化装置は、量子化後の予測残差を、逆量子化及び再構成するこで復号し、復号した予測残差である復号値を符号化対象の三次元点以降の予測に利用する。具体的には、三次元データ符号化装置は、量子化後の予測残差(量子化値)に量子化スケールを乗算することで逆量子化値を算出し、逆量子化値と予測値とを加算して復号値(再構成値)を得る。
例えば、点a2の逆量子化値a2iqは、点a2の量子化値a2qを用いて(式A11)により算出される。点b2の逆量子化値b2iqは、点b2の量子化値b2qを用いて(式A12)により算出される。ここで、QS_LoD0は、LoD0用のQSであり、QS_LoD1は、LoD1用のQSである。つまり、LoDに応じてQSが変更されてもよい。
a2iq=a2q×QS_LoD0 ・・・(式A11)
b2iq=b2q×QS_LoD1 ・・・(式A12)
例えば、点a2の復号値a2recは、(式A13)に示すように、点a2の逆量子化値a2iqに、点a2の予測値a2pを加算することで算出される。点b2の復号値b2recは、(式A14)に示すように、点b2の逆量子化値b2iqに、点b2の予測値b2pを加算することで算出される。
a2rec=a2iq+a2p ・・・(式A13)
b2rec=b2iq+b2p ・・・(式A14)
以下、本実施の形態に係るビットストリームのシンタックス例を説明する。図57は、本実施の形態に係る属性ヘッダ(attribute_header)のシンタックス例を示す図である。属性ヘッダは、属性情報のヘッダ情報である。図57に示すように、属性ヘッダは、階層数情報(NumLoD)と、三次元点数情報(NumOfPoint[i])と、階層閾値(Thres_Lod[i])と、周囲点数情報(NumNeighorPoint[i])と、予測閾値(THd[i])と、量子化スケール(QS[i])と、二値化閾値(R_TH[i])とを含む。
階層数情報(NumLoD)は、用いられるLoDの階層数を示す。
三次元点数情報(NumOfPoint[i])は、階層iに属する三次元点の数を示す。なお、三次元データ符号化装置は、三次元点の総数を示す三次元点総数情報(AllNumOfPoint)を別のヘッダに付加してもよい。この場合、三次元データ符号化装置は、最下層に属する三次元点の数を示すNumOfPoint[NumLoD-1]をヘッダに付加しなくてもよい。この場合、三次元データ復号装置は、(式A15)によりNumOfPoint[NumLoD-1]を算出できる。これにより、ヘッダの符号量を削減できる。
階層閾値(Thres_Lod[i])は、階層iの設定に用いられる閾値である。三次元データ符号化装置及び三次元データ復号装置は、LoDi内の各点の間の距離が閾値Thres_LoD[i]より大きくなるようにLoDiを構成する。また、三次元データ符号化装置は、Thres_Lod[NumLoD-1](最下層)の値をヘッダに付加しなくてもよい。この場合、三次元データ復号装置は、Thres_Lod[NumLoD-1]の値を0と推定する。これによりヘッダの符号量を削減できる。
周囲点数情報(NumNeighorPoint[i])は、階層iに属する三次元点の予測値の生成に用いる周囲の点数の上限値を示す。三次元データ符号化装置は、周囲の点数MがNumNeighorPoint[i]に満たない場合(M<NumNeighorPoint[i])は、M個の周囲の点数を用いて予測値を算出してもよい。また、三次元データ符号化装置は、各LoDでNumNeighorPoint[i]の値を分ける必要がない場合は、全てのLoDで使用される1個の周囲点数情報(NumNeighorPoint)をヘッダに付加してもよい。
予測閾値(THd[i])は、階層iにて符号化又は復号対象の対象三次元点の予測に用いる周囲の三次元点と対象三次元点との距離の上限値を示す。三次元データ符号化装置及び三次元データ復号装置は、対象三次元点からの距離がTHd[i]より離れている三次元点を予測に用いない。なお、三次元データ符号化装置は、各LoDでTHd[i]の値を分ける必要がない場合は、全てのLoDで使用される1個の予測閾値(THd)をヘッダに付加してもよい。
量子化スケール(QS[i])は、階層iの量子化及び逆量子化で用いられる量子化スケールを示す。
二値化閾値(R_TH[i])は、階層iに属する三次元点の予測残差の二値化方法を切替えるための閾値である。例えば、三次元データ符号化装置は、予測残差が閾値R_THより小さい場合は、固定ビット数で予測残差puを二値化し、予測残差が閾値R_TH以上の場合は、閾値R_THの二値化データと(pu-R_TH)の値を指数ゴロムを用いて二値化する。なお、各LoDでR_TH[i]の値を切替える必要がない場合は、三次元データ符号化装置は、全てのLoDで使用される1個の二値化閾値(R_TH)をヘッダに付加してもよい。
なお、R_TH[i]はnbitで表せる最大値であってもよい。例えば6bitではR_THは63であり、8bitではR_THは255である。また、三次元データ符号化装置は、二値化閾値としてnbitで表せる最大値を符号化する代わりに、ビット数を符号化してもよい。例えば、三次元データ符号化装置は、R_TH[i]=63の場合は値6を、R_TH[i]=255の場合は値8をヘッダに付加してもよい。また、三次元データ符号化装置は、R_TH[i]を表すビット数の最小値(最小ビット数)を定義し、最小値からの相対ビット数をヘッダに付加してもよい。例えば、三次元データ符号化装置は、R_TH[i]=63で最小ビット数が6の場合は値0をヘッダに付加し、R_TH[i]=255で最小ビット数が6の場合は値2をヘッダに付加してもよい。
また、三次元データ符号化装置は、NumLoD、Thres_Lod[i]、NumNeighborPoint[i]、THd[i]、QS[i]及びR_TH[i]の少なくとも一つをエントロピー符号化してヘッダに付加してもよい。例えば、三次元データ符号化装置は、各値を二値化して算術符号化してもよい。また、三次元データ符号化装置は、処理量を抑えるために各値を固定長で符号化してもよい。
また、三次元データ符号化装置は、NumLoD、Thres_Lod[i]、NumNeighborPoint[i]、THd[i]、QS[i]、及びR_TH[i]の少なくとも一つをヘッダに付加しなくてもよい。例えば、これらのうちの少なくとも一つの値が、規格等のprofile又はlevel等で規定されてもよい。これによりヘッダのビット量を削減することができる。
図58は、本実施の形態に係る属性データ(attribute_data)のシンタックス例を示す図である。この属性データは、複数の三次元点の属性情報の符号化データを含む。図58に示すように属性データは、nビット符号(n-bit code)と、残り符号(remaining code)とを含む。
nビット符号は(n-bit code)は、属性情報の値の予測残差の符号化データ又はその一部である。nビット符号のビット長はR_TH[i]の値に依存する。例えばR_TH[i]の示す値が63の場合、nビット符号は6bitであり、R_TH[i]の示す値が255の場合、nビット符号は8bitである。
残り符号(remaining code)は、属性情報の値の予測残差の符号化データのうち、指数ゴロムで符号化された符号化データである。この残り符号は、nビット符号がR_TH[i]と同じ場合に符号化又は復号される。また、三次元データ復号装置は、nビット符号の値と残り符号の値を加算して予測残差を復号する。なお、nビット符号がR_TH[i]と同じ値でない場合は、残り符号は符号化又は復号されなくてもよい。
以下、三次元データ符号化装置における処理の流れを説明する。図59は、三次元データ符号化装置による三次元データ符号化処理のフローチャートである。
まず、三次元データ符号化装置は、位置情報(geometry)を符号化する(S3001)。例えば、三次元データ符号化は、8分木表現を用いて符号化を行う。
三次元データ符号化装置は、位置情報の符号化後に、量子化等によって三次元点の位置が変化した場合に、変化後の三次元点に元の三次元点の属性情報を再割り当てする(S3002)。例えば、三次元データ符号化装置は、位置の変化量に応じて属性情報の値を補間することで再割り当てを行う。例えば、三次元データ符号化装置は、変化後の三次元位置に近い変化前の三次元点をN個検出し、N個の三次元点の属性情報の値を重み付け平均する。例えば、三次元データ符号化装置は、重み付け平均において、変化後の三次元位置から各N個の三次元までの距離に基づいて重みを決定する。そして、三次元データ符号化装置は、重み付け平均により得られた値を変化後の三次元点の属性情報の値に決定する。また、三次元データ符号化装置は、量子化等によって2個以上の三次元点が同一の三次元位置に変化した場合は、その変化後の三次元点の属性情報の値として、変化前の2個以上の三次元点の属性情報の平均値を割当ててもよい。
次に、三次元データ符号化装置は、再割り当て後の属性情報(Attribute)を符号化する(S3003)。例えば、三次元データ符号化装置は、複数種類の属性情報を符号化する場合は、複数種類の属性情報を順に符号化してもよい。例えば、三次元データ符号化装置は、属性情報として、色と反射率とを符号化する場合は、色の符号化結果の後に反射率の符号化結果を付加したビットストリームを生成してもよい。なお、ビットストリームに付加される属性情報の複数の符号化結果の順番は、この順に限らず、どのような順番でもよい。
また、三次元データ符号化装置は、ビットストリーム内の各属性情報の符号化データ開始場所を示す情報をヘッダ等に付加してもよい。これにより、三次元データ復号装置は、復号が必要な属性情報を選択的に復号できるので、復号が不必要な属性情報の復号処理を省略できる。よって、三次元データ復号装置の処理量を削減できる。また、三次元データ符号化装置は、複数種類の属性情報を並列に符号化し、符号化結果を1つのビットストリームに統合してもよい。これにより、三次元データ符号化装置は、高速に複数種類の属性情報を符号化できる。
図60は、属性情報符号化処理(S3003)のフローチャートである。まず、三次元データ符号化装置は、LoDを設定する(S3011)。つまり、三次元データ符号化装置は、各三次元点を複数のLoDのいずれかに割り当てる。
次に、三次元データ符号化装置は、LoD単位のループを開始する(S3012)。つまり、三次元データ符号化装置は、LoD毎にステップS3013~S3021の処理を繰り返し行う。
次に、三次元データ符号化装置は、三次元点単位のループを開始する(S3013)。つまり、三次元データ符号化装置は、三次元点毎にステップS3014~S3020の処理を繰り返し行う。
まず、三次元データ符号化装置は、処理対象の対象三次元点の予測値の算出に用いる、対象三次元点の周囲に存在する三次元点である複数の周囲点を探索する(S3014)。次に、三次元データ符号化装置は、複数の周囲点の属性情報の値の重み付け平均を算出し、得られた値を予測値Pに設定する(S3015)。次に、三次元データ符号化装置は、対象三次元点の属性情報と予測値との差分である予測残差を算出する(S3016)。次に、三次元データ符号化装置は、予測残差を量子化することで量子化値を算出する(S3017)。次に、三次元データ符号化装置は、量子化値を算術符号化する(S3018)。
また、三次元データ符号化装置は、量子化値を逆量子化することで逆量子化値を算出する(S3019)。次に、三次元データ符号化装置は、逆量子化値に予測値を加算することで復号値を生成する(S3020)。次に、三次元データ符号化装置は、三次元点単位のループを終了する(S3021)。また、三次元データ符号化装置は、LoD単位のループを終了する(S3022)。
以下、上記の三次元データ符号化装置により生成されたビットストリームを復号する三次元データ復号装置における三次元データ復号処理について説明する。
三次元データ復号装置は、三次元データ符号化装置によって生成されたビットストリーム内の属性情報の二値化データを、三次元データ符号化装置と同様の方法で算術復号することで、復号された二値化データを生成する。なお、三次元データ符号化装置において、nビットで二値化した部分(nビット符号)と、指数ゴロムを用いて二値化した部分(残り符号)とで算術符号化の適用方法を切替えた場合は、三次元データ復号装置は、算術復号適用時に、それに合わせて復号を行う。
例えば、三次元データ復号装置は、nビット符号の算術復号方法において、ビット毎に異なる符号化テーブル(復号テーブル)を用いて算術復号を行う。この際、三次元データ復号装置は、ビット毎に使用する符号化テーブルの数を変えてもよい。例えば、nビット符号の先頭ビットb0には1個の符号化テーブルを用いて算術復号を行う。また、三次元データ復号装置は、次のビットb1に対しては2個の符号化テーブルを用いる。また、三次元データ復号装置は、b0の値(0又は1)に応じてビットb1の算術復号に用いる符号化テーブルを切替える。同様に、三次元データ復号装置は、更に次のビットb2に対しては4個の符号化テーブルを用いる。また、三次元データ復号装置は、b0及びb1の値(0~3)に応じて、ビットb2の算術復号に用いる符号化テーブルを切替える。
このように、三次元データ復号装置は、nビット符号の各ビットbn-1を算術復号する際に、2n-1個の符号化テーブルを用いる。また、三次元データ復号装置は、bn-1より前のビットの値(発生パターン)に応じて、使用する符号化テーブルを切替える。これにより、三次元データ復号装置は、ビット毎に適切な符号化テーブルを使用して符号化効率を向上したビットストリームを適切に復号できる。
なお、三次元データ復号装置は、各ビットで使用する符号化テーブルの数を削減してもよい。例えば、三次元データ復号装置は、各ビットbn-1を算術復号する際に、bn-1より前のmビット(m<n-1)の値(発生パターン)に応じて2m個の符号化テーブルを切替えてもよい。これにより、三次元データ復号装置は、各ビットで使用する符号化テーブルの数を抑えつつ、符号化効率を向上したビットストリームを適切に復号できる。なお、三次元データ復号装置は、各符号化テーブルにおける0と1の発生確率を、実際に発生した二値化データの値に応じて更新してもよい。また、三次元データ復号装置は、一部のビットの符号化テーブルにおける0と1の発生確率を固定化してもよい。これにより、発生確率の更新回数を抑制できるので処理量を削減できる。
例えば、nビット符号がb0b1b2…bn-1である場合、b0用の符号化テーブルは1個(CTb0)である。b1用の符号化テーブルは2個(CTb10、CTb11)である。また、b0の値(0~1)に応じて符号化テーブルが切替えられる。b2用の符号化テーブルは4個(CTb20、CTb21、CTb22、CTb23)である。また、b0及びb1の値(0~3)に応じて符号化テーブルが切替えられる。bn-1用の符号化テーブルは、2n-1個(CTbn0、CTbn1、…、CTbn(2n-1-1))である。また、b0b1…bn-2の値(0~2n-1-1)に応じて符号化テーブルが切替えられる。
図61は、例えば、残り符号が指数ゴロム符号である場合の処理を説明するための図である。三次元データ符号化装置が指数ゴロムを用いて二値化して符号化した部分(残り符号)は、図61に示すようにprefix部とsuffix部とを含む。例えば、三次元データ復号装置は、prefix部とsuffix部とで符号化テーブルを切替える。つまり、三次元データ復号装置は、prefix部に含まれる各ビットを、prefix用の符号化テーブルを用いて算術復号し、suffix部に含まれる各ビットを、suffix用の符号化テーブルを用いて算術復号する。
なお、三次元データ復号装置は、各符号化テーブルにおける0と1の発生確率を、復号時に発生した二値化データの値に応じて更新してもよい。または、三次元データ復号装置は、どちらかの符号化テーブルにおける0と1の発生確率を固定化してもよい。これにより、発生確率の更新回数を抑制できるので処理量を削減できる。例えば、三次元データ復号装置は、prefix部に対して発生確率を更新し、suffix部に対して発生確率を固定化してもよい。
また、三次元データ復号装置は、算術復号した予測残差の二値化データを、三次元データ符号化装置で用いられた符号化方法に合わせて多値化することで量子化後の予測残差(符号なし整数値)を復号する。三次元データ復号装置は、まずnビット符号の二値化データを算術復号することで復号したnビット符号の値を算出する。次に、三次元データ復号装置は、nビット符号の値とR_THの値とを比較する。
三次元データ復号装置は、nビット符号の値とR_THの値とが一致した場合、指数ゴロムで符号化されたビットが次に存在すると判定し、指数ゴロムで符号化された二値化データである残り符号を算術復号する。そして、三次元データ復号装置は、復号した残り符号から、残り符号とその値との関係を示す逆引きテーブルを用いて残り符号の値を算出する。図62は、残り符号とその値との関係を示す逆引きテーブルの例を示す図である。次に、三次元データ復号装置は、得られた残り符号の値をR_THに加算することで多値化された量子化後の予測残差を得る。
一方、三次元データ復号装置は、nビット符号の値とR_THの値とが一致しない(R_THより値が小さい)場合、nビット符号の値をそのまま、多値化された量子化後の予測残差に決定する。これにより、三次元データ復号装置は、三次元データ符号化装置で予測残差の値に応じて二値化方法を切替えて生成したビットストリームを適切に復号できる。
なお、三次元データ復号装置は、閾値R_THがビットストリームのヘッダ等に付加されている場合は、閾値R_THの値をヘッダから復号し、復号した閾値R_THの値を用いて復号方法を切替えてもよい。また、三次元データ復号装置は、LoD毎に閾値R_THがヘッダ等に付加されている場合、LoD毎に復号した閾値R_THを用いて復号方法を切替える。
例えば、閾値R_THが63であり、復号したnビット符号の値が63である場合、三次元データ復号装置は、残り符号を指数ゴロムにより復号することで残り符号の値を得る。例えば、図62に示す例では、残り符号が00100であり、残り符号の値として3が得られる。次に、三次元データ復号装置は、閾値R_THの値63と、残り符号の値3とを加算することで予測残差の値66を得る。
また、復号したnビット符号の値が32である場合、三次元データ復号装置は、nビット符号の値32を予測残差の値に設定する。
また、三次元データ復号装置は、復号した量子化後の予測残差を、例えば、三次元データ符号化装置における処理と逆の処理により、符号なし整数値から符号付整数値に変換する。これにより、三次元データ復号装置は、予測残差をエントロピー符号化する場合に、負の整数の発生を考慮せずに生成したビットストリームを適切に復号できる。なお、三次元データ復号装置は、必ずしも符号なし整数値を符号付整数値に変換する必要はなく、例えば符号ビットを別途エントロピー符号化して生成されたビットストリームを復号する場合は、符号ビットを復号してもよい。
三次元データ復号装置は、符号付整数値に変換した量子化後の予測残差を、逆量子化及び再構成によって復号することで復号値を生成する。また、三次元データ復号装置は、生成した復号値を、復号対象の三次元点以降の予測に利用する。具体的には、三次元データ復号装置は、量子化後の予測残差に、復号した量子化スケールを乗算することで逆量子化値を算出し、逆量子化値と予測値とを加算して復号値を得る。
復号された符号なし整数値(符号なし量子化値)は、以下の処理により符号付整数値に変換される。三次元データ復号装置は、復号された符号なし整数値a2uのLSB(least significant bit)が1である場合、符号付整数値a2qを-((a2u+1)>>1)に設定する。三次元データ復号装置は、符号なし整数値a2uのLSBが1でない場合、符号付整数値a2qを(a2u>>1)に設定する。
同様に、三次元データ復号装置は、復号された符号なし整数値b2uのLSBが1である場合、符号付整数値b2qを-((b2u+1)>>1)に設定する。三次元データ復号装置は、符号なし整数値n2uのLSBが1でない場合、符号付整数値b2qを(b2u>>1)に設定する。
また、三次元データ復号装置による逆量子化及び再構成処理の詳細は、三次元データ符号化装置における逆量子化及び再構成処理と同様である。
以下、三次元データ復号装置における処理の流れを説明する。図63は、三次元データ復号装置による三次元データ復号処理のフローチャートである。まず、三次元データ復号装置は、ビットストリームから位置情報(geometry)を復号する(S3031)。例えば、三次元データ復号装置は、8分木表現を用いて復号を行う。
次に、三次元データ復号装置は、ビットストリームから属性情報(Attribute)を復号する(S3032)。例えば、三次元データ復号装置は、複数種類の属性情報を復号する場合は、複数種類の属性情報を順に復号してもよい。例えば、三次元データ復号装置は、属性情報として色と反射率とを復号する場合は、ビットストリームに付加されている順に従い、色の符号化結果と反射率の符号化結果とを復号する。例えば、ビットストリームにおいて、色の符号化結果の後に反射率の符号化結果が付加されている場合、三次元データ復号装置は、色の符号化結果を復号し、その後に反射率の符号化結果を復号する。なお、三次元データ復号装置は、ビットストリームに付加される属性情報の符号化結果をどのような順番で復号してもよい。
また、三次元データ復号装置は、ビットストリーム内の各属性情報の符号化データ開始場所を示す情報を、ヘッダ等を復号することで取得してもよい。これにより、三次元データ復号装置は、復号が必要な属性情報を選択的に復号できるので、復号が不必要な属性情報の復号処理を省略できる。よって、三次元データ復号装置の処理量を削減できる。また、三次元データ復号装置は、複数種類の属性情報を並列に復号し、復号結果を1つの三次元点群に統合してもよい。これにより、三次元データ復号装置は、高速に複数種類の属性情報を復号できる。
図64は、属性情報復号処理(S3032)のフローチャートである。まず、三次元データ復号装置は、LoDを設定する(S3041)。つまり、三次元データ復号装置は、復号された位置情報を有する複数の三次元点の各々を複数のLoDのいずれかに割り当てる。例えば、この割り当て方法は、三次元データ符号化装置で用いられた割り当て方法と同じ方法である。
次に、三次元データ復号装置は、LoD単位のループを開始する(S3042)。つまり、三次元データ復号装置は、LoD毎にステップS3043~S3049の処理を繰り返し行う。
次に、三次元データ復号装置は、三次元点単位のループを開始する(S3043)。つまり、三次元データ復号装置は、三次元点毎にステップS3044~S3048の処理を繰り返し行う。
まず、三次元データ復号装置は、処理対象の対象三次元点の予測値の算出に用いる、対象三次元点の周囲に存在する三次元点である複数の周囲点を探索する(S3044)。次に、三次元データ復号装置は、複数の周囲点の属性情報の値の重み付け平均を算出し、得られた値を予測値Pに設定する(S3045)。なお、これらの処理は三次元データ符号化装置における処理と同様である。
次に、三次元データ復号装置は、ビットストリームから量子化値を算術復号する(S3046)。また、三次元データ復号装置は、復号した量子化値を逆量子化することで逆量子化値を算出する(S3047)。次に、三次元データ復号装置は、逆量子化値に予測値を加算することで復号値を生成する(S3048)。次に、三次元データ復号装置は、三次元点単位のループを終了する(S3049)。また、三次元データ復号装置は、LoD単位のループを終了する(S3050)。
次に、本実施の形態に係る三次元データ符号化装置及び三次元データ復号装置の構成を説明する。図65は、本実施の形態に係る三次元データ符号化装置3000の構成を示すブロック図である。この三次元データ符号化装置3000は、位置情報符号化部3001と、属性情報再割り当て部3002と、属性情報符号化部3003とを備える。
属性情報符号化部3003は、入力点群に含まれる複数の三次元点の位置情報(geometry)を符号化する。属性情報再割り当て部3002は、入力点群に含まれる複数の三次元点の属性情報の値を、位置情報の符号化及び復号結果を用いて再割り当てする。属性情報符号化部3003は、再割り当てされた属性情報(attribute)を符号化する。また、三次元データ符号化装置3000は、符号化された位置情報及び符号化された属性情報を含むビットストリームを生成する。
図66は、本実施の形態に係る三次元データ復号装置3010の構成を示すブロック図である。この三次元データ復号装置3010は、位置情報復号部3011と、属性情報復号部3012とを含む。
位置情報復号部3011は、ビットストリームから複数の三次元点の位置情報(geometry)を復号する。属性情報復号部3012は、ビットストリームから複数の三次元点の属性情報(attribute)を復号する。また、三次元データ復号装置3010は、復号した位置情報と復号した属性情報とを結合することで出力点群を生成する。
以上のように、本実施の形態に係る三次元データ符号化装置は、図67に示す処理を行う。三次元データ符号化装置は、属性情報を有する三次元点を符号化する。まず、三次元データ符号化装置は、三次元点の属性情報の予測値を算出する(S3061)。次に、三次元データ符号化装置は、三次元点の属性情報と、予測値との差分である予測残差を算出する(S3062)。次に、三次元データ符号化装置は、予測残差を二値化することで二値データを生成する(S3063)。次に、三次元データ符号化装置は、二値データを算術符号化する(S3064)。
これによれば、三次元データ符号化装置は、属性情報の予測残差を算出し、さらに、当該予測残差を二値化及び算術符号化することで、属性情報の符号化データの符号量を削減できる。
例えば、算術符号化(S3064)では、三次元データ符号化装置は、二値データのビット毎に異なる符号化テーブルを用いる。これによれば、三次元データ符号化装置は、符号化効率を向上できる。
例えば、算術符号化(S3064)では、二値データの下位ビットほど、使用する符号化テーブルの数が多い。
例えば、算術符号化(S3064)では、三次元データ符号化装置は、二値データに含まれる対象ビットの上位ビットの値に応じて、対象ビットの算術符号化に使用する符号化テーブルを選択する。これによれば、三次元データ符号化装置は、上位ビットの値に応じて符号化テーブルを選択できるので符号化効率を向上できる。
例えば、三次元データ符号化装置は、二値化(S3063)では、予測残差が閾値(R_TH)より小さい場合、固定ビット数で予測残差を二値化することで二値データを生成し、予測残差が閾値(R_TH)以上である場合、閾値(R_TH)を示す固定ビット数の第1符号(nビット符号)と、予測残差から閾値(R_TH)を減算した値を指数ゴロムで二値化した第2符号(残り符号)とを含む二値データを生成する。三次元データ符号化装置は、算術符号化(S3064)では、第1符号と第2符号とに異なる算術符号化方法を用いる。
これによれば、三次元データ符号化装置は、例えば、第1符号と第2符号との各々に適した算術符号化方法により第1符号と第2符号を算術符号化できるので符号化効率を向上できる。
例えば、三次元データ符号化装置は、予測残差を量子化し、二値化(S3063)では、量子化された予測残差を二値化する。閾値(R_TH)は、量子化における量子化スケールに応じて変更される。これによれば、三次元データ符号化装置は、量子化スケールに応じた適切な閾値を用いることができるので符号化効率を向上できる。
例えば、第2符号は、prefix部と、suffix部とを含む。三次元データ符号化装置は、算術符号化(S3064)では、prefix部とsuffix部とに異なる符号化テーブルを用いる。これによれば、三次元データ符号化装置は、符号化効率を向上できる。
例えば、三次元データ符号化装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態に係る三次元データ復号装置は、図68に示す処理を行う。三次元データ復号装置は、属性情報を有する三次元点を復号する。まず、三次元データ復号装置は、三次元点の属性情報の予測値を算出する(S3071)。次に、三次元データ復号装置は、ビットストリームに含まれる符号化データを算術復号することで二値データを生成する(S3072)。次に、三次元データ復号装置は、二値データを多値化することで予測残差を生成する(S3073)。次に、三次元データ復号装置は、予測値と予測残差とを加算することで、三次元点の属性情報の復号値を算出する(S3074)。
これによれば、三次元データ復号装置は、属性情報の予測残差を算出し、さらに、当該予測残差を二値化及び算術符号化することで生成された属性情報のビットストリームを適切に復号できる。
例えば、算術復号(S3072)では、三次元データ復号装置は、二値データのビット毎に異なる符号化テーブルを用いる。これによれば、三次元データ復号装置は、符号化効率が向上されたビットストリームを適切に復号できる。
例えば、算術復号(S3072)では、二値データの下位ビットほど、使用する符号化テーブルの数が多い。
例えば、算術復号(S3072)では、三次元データ復号装置は、二値データに含まれる対象ビットの上位ビットの値に応じて、対象ビットの算術復号に使用する符号化テーブルを選択する。これによれば、三次元データ復号装置は、符号化効率が向上されたビットストリームを適切に復号できる。
例えば、三次元データ復号装置は、多値化(S3073)では、二値データに含まれる固定ビット数の第1符号(nビット符号)を多値化することで第1の値を生成する。三次元データ復号装置は、第1の値が閾値(R_TH)より小さい場合、第1の値を予測残差に決定し、第1の値が閾値(R_TH)以上の場合、二値データに含まれる指数ゴロム符号である第2符号(残り符号)を多値化することで第2の値を生成し、第1の値と第2の値とを加算することで予測残差を生成する。三次元データ復号装置は、算術復号(S3072)では、第1符号と第2符号とに異なる算術復号方法を用いる。
これによれば、三次元データ復号装置は、符号化効率が向上されたビットストリームを適切に復号できる。
例えば、三次元データ復号装置は、予測残差を逆量子化し、加算(S3074)では、予測値と、逆量子化された予測残差とを加算する。閾値(R_TH)は、逆量子化における量子化スケールに応じて変更される。これによれば、三次元データ復号装置は、符号化効率が向上されたビットストリームを適切に復号できる。
例えば、第2符号は、prefix部と、suffix部とを含む。三次元データ復号装置は、算術復号(S3072)では、prefix部とsuffix部とに異なる符号化テーブルを用いる。これによれば、三次元データ復号装置は、符号化効率が向上されたビットストリームを適切に復号できる。
例えば、三次元データ復号装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
(実施の形態9)
実施の形態8とは別の手法で予測値を生成してもよい。以下では、符号化対象の三次元点を第1三次元点と称し、その周囲の三次元点を第2三次元点と称する場合がある。
例えば、三次元点の属性情報の予測値の生成において、符号化対象の三次元点の符号化済みかつ復号済みの周囲の三次元点のうち、最も距離が近い三次元点の属性値をそのまま予測値として生成しても構わない。また、予測値の生成では、予測モード情報(PredMode)を三次元点毎に付加し、複数の予測値から1つの予測値を選択することで予測値を生成できるようにしても構わない。つまり、例えば、総数Mの予測モードにおいて、予測モード0に平均値、予測モード1に三次元点Aの属性値、・・・、予測モードM-1に三次元点Zの属性値を割り当て、予測に使用した予測モードを三次元点毎にビットストリームに付加することが考えられる。このように、周囲の三次元点の属性情報の平均が予測値として算出される第1予測モードを示す第1予測モード値は、周囲の三次元点の属性情報そのものが予測値として算出される第2予測モードを示す第2予測モード値よりも小さくてもよい。ここで、予測モード0において算出される予測値である「平均値」は、符号化対象の三次元点の周囲の三次元点の属性値の平均値である。
図69は、実施の形態9に係る各予測モードにおいて算出される予測値を示すテーブルの第1の例を示す図である。図70は、実施の形態9に係る予測値に用いる属性情報の例を示す図である。図71は、実施の形態9に係る各予測モードにおいて算出される予測値を示すテーブルの第2の例を示す図である。
予測モード数Mは、ビットストリームに付加されても構わない。また、予測モード数Mは、ビットストリームに付加されずに規格のprofile、level等で値が規定されても構わない。また、予測モード数Mは、予測に用いる三次元点数Nから算出された値が用いられても構わない。例えば予測モード数Mは、M=N+1により算出されても構わない。
なお、図69に示されるテーブルは、予測に用いる三次元点数N=4、かつ、予測モード数M=5の場合の例である。点b2の属性情報の予測値は、点a0、a1、a2、b1の属性情報を用いて生成され得る。複数の予測モードから1つの予測モードを選択する場合、点b2からの各点a0、a1、a2、b1までの距離情報を元に、各点a0、a1、a2、b1の属性値を予測値として生成する予測モードを選択してもよい。予測モードは、符号化対象の三次元点毎に付加される。予測値は、付加された予測モードに応じた値に応じて算出される。
図71に示されるテーブルは、図69と同様に、予測に用いる三次元点数N=4、かつ、予測モード数M=5の場合の例である。点a2の属性情報の予測値は、点a0、a1の属性情報を用いて生成され得る。複数の予測モードから1つの予測モードを選択する場合、点a2のからの各店a0、a1までの距離情報を元に、各点a0、a1の属性値を予測値として生成する予測モードを選択してもよい。予測モードは、符号化対象の三次元点毎に付加される。予測値は、付加された予測モードに応じた値に応じて算出される。
なお、上記の点a2のように隣接点数、つまり、周囲の三次元点数Nが4個に満たない場合、テーブルにおいて予測値が未割当てである予測モードをnot availableとしてもよい。
なお、予測モードの値の割当ては、符号化対象の三次元点からの距離順で決定しても構わない。例えば、複数の予測モードを示す予測モード値は、予測値として用いる属性情報を有する周囲の三次元点までの符号化対象の三次元点からの距離が近いほど小さい。図69の例では、点b1、a2、a1、a0の順に符号化対象の三次元点である点b2への距離が近いことが示される。例えば、予測値の算出では、2以上の予測モードのうちの予測モード値が「1」で示される予測モードにおいて点b1の属性情報を予測値として算出し、予測モード値が「2」で示される予測モードにおいて点a2の属性情報を予測値として算出する。このように、点b1の属性情報を予測値として算出する予測モードを示す予測モード値は、点b2からの距離が点b1よりも遠い位置にある点a2の属性情報を予測値として算出する予測モードを示す予測モード値よりも小さい。
これにより、距離が近いため予測が当たりやすく選ばれやすい可能性のある点に小さい予測モード値を割り振ることができ、予測モード値を符号化するためのビット数を削減することができる。また、符号化対象の三次元点と同一のLoDに属する三次元点に優先的に小さい予測モード値を割当ててもよい。
図72は、実施の形態9に係る各予測モードにおいて算出される予測値を示すテーブルの第3の例を示す図である。具体的には、第3の例は、予測値に用いられる属性情報が周囲の三次元点の色情報(YUV)による値である場合の例である。このように、予測値に用いられる属性情報は、三次元点の色を示す色情報であってもよい。
図72に示されるように、予測モード値が「0」で示される予測モードにおいて算出される予測値は、YUV色空間を定義するYUVそれぞれの成分の平均である。具体的には、当該予測値は、点b1、a2、a1、a0にそれぞれ対応するY成分の値であるYb1、Ya2、Ya1、Ya0の重み付き平均Yaveと、点b1、a2、a1、a0にそれぞれ対応するU成分の値であるUb1、Ua2、Ua1、Ua0の重み付き平均Uaveと、点b1、a2、a1、a0にそれぞれ対応するV成分の値であるVb1、Va2、Va1、Va0の重み付き平均Vaveと、を含む。また、予測モード値が「1」~「4」で示される予測モードにおいて算出される予測値は、それぞれ、周囲の三次元点b1、a2、a1、a0の色情報を含む。色情報は、Y成分、U成分およびV成分の値の組み合わせで示される。
なお、図72では、色情報は、YUV色空間で定義される値で示されているが、YUV色空間に限らずに、RGB色空間で定義される値で示されてもよいし、他の色空間で定義される値で示されてもよい。
このように、予測値の算出では、予測モードの予測値として、2以上の平均または属性情報を算出してもよい。また、2以上の平均または属性情報は、それぞれ、色空間を定義する2以上の成分の値を示していてもよい。
なお、例えば、図72のテーブルにおいて予測モード値が「2」で示される予測モードが選択された場合、符号化対象の三次元点の属性値のY成分、U成分およびV成分をそれぞれ予測値Ya2,Ua2,Va2として用いて符号化してもよい。この場合、予測モード値としての「2」がビットストリームに付加される。
図73は、実施の形態9に係る各予測モードにおいて算出される予測値を示すテーブルの第4の例を示す図である。具体的には、第4の例は、予測値に用いられる属性情報が周囲の三次元点の反射率情報による値である場合の例である。反射率情報は、例えば、反射率Rを示す情報である。
図73に示されるように、予測モード値が「0」で示される予測モードにおいて算出される予測値は、点b1、a2、a1、a0にそれぞれ対応する反射率Rb1、Ra2、Ra1、Ra0の重み付き平均Raveである。また、予測モード値が「1」~「4」で示される予測モードにおいて算出される予測値は、それぞれ、周囲の三次元点b1、a2、a1、a0の反射率Rb1、Ra2、Ra1、Ra0である。
なお、例えば、図73のテーブルにおいて予測モード値が「3」で示される予測モードが選択された場合、符号化対象の三次元点の属性値の反射率を予測値Ra1として用いて符号化してもよい。この場合、予測モード値としての「3」がビットストリームに付加される。
図72および図73で示されるように、属性情報は、第1属性情報と、第1属性情報とは異なる種類の第2属性情報とを含んでいてもよい。第1属性情報は、例えば、色情報である。第2属性情報は、例えば、反射率情報である。予測値の算出では、第1属性情報を用いて第1予測値を算出し、かつ、第2属性情報を用いて第2予測値を算出してもよい。
(実施の形態10)
以下、三次元点の属性情報を符号化する別の方法として、RAHT(Region Adaptive Hierarchical Transform)を用いた方法を説明する。図74は、RAHTを用いた属性情報の符号化を説明するための図である。
まず、三次元データ符号化装置は、三次元点の位置情報に基づきモートン符号(Morton code)を生成し、モートン符号順に三次元点の属性情報をソートする。例えば、三次元データ符号化装置は、モートン符号の昇順にソートを行ってもよい。なお、ソート順はモートン符号順に限らず、他の順序が用いられてもよい。
次に、三次元データ符号化装置は、モートン符号順で隣り合う2つの三次元点の属性情報に対し、Haar変換を適用することで、階層Lの高周波成分と低周波成分を生成する。例えば、三次元データ符号化装置は、2×2行列のHaar変換を用いてもよい。生成された高周波成分は階層Lの高周波成分として符号化係数に含められ、生成された低周波成分は階層Lの上位階層L+1の入力値として用いられる。
三次元データ符号化装置は、階層Lの属性情報を用いて階層Lの高周波成分を生成後、引き続き階層L+1の処理を行う。階層L+1の処理では、三次元データ符号化装置は、階層Lの属性情報のHaar変換によって得られた2つの低周波成分にHaar変換を適用することで階層L+1の高周波成分と低周波成分を生成する。生成された高周波成分は階層L+1の高周波成分として符号化係数に含められ、生成された低周波成分は階層L+1の上位階層L+2の入力値として用いられる。
三次元データ符号化装置は、このような階層処理を繰返し、階層に入力される低周波成分が1個になった時点で、最上位階層Lmaxに到達したと判定する。三次元データ符号化装置は、階層Lmaxに入力された階層Lmax-1の低周波成分を符号化係数に含める。そして、符号化係数に含まれる低周波成分又は高周波成分の値を量子化し、エントロピー符号化等を用いて符号化する。
なお、三次元データ符号化装置は、Haar変換適用時に隣り合う2つの三次元点として1つの三次元点のみが存在する場合は、存在する1つの三次元点の属性情報の値を上位階層の入力値として用いてもよい。
このように、三次元データ符号化装置は、入力された属性情報に対して階層的にHaar変換を適用し、属性情報の高周波成分と低周波成分を生成し、後述する量子化等を適用して符号化を行う。これにより、符号化効率を向上できる。
属性情報がN次元である場合、三次元データ符号化装置は、次元毎に独立にHaar変換を適用し、それぞれの符号化係数を算出してもよい。例えば、属性情報が色情報(RGB又はYUV等)である場合、三次元データ符号化装置は、成分毎にHaar変換を適用し、それぞれの符号化係数を算出する。
三次元データ符号化装置は、階層L、L+1、…、階層Lmaxの順にHaar変換を適用してもよい。階層Lmaxに近づくほど入力された属性情報の低周波成分を多く含む符号化係数が生成される。
図74に示すw0及びw1は、各三次元点に割当てられる重みである。例えば、三次元データ符号化装置は、Haar変換を適用する隣り合う2つの三次元点間の距離情報等に基づき重みを算出してもよい。例えば、三次元データ符号化装置は、距離が近いほど重みを大きくすることで符号化効率を向上してもよい。なお、三次元データ符号化装置は、この重みを別の手法により算出してもよいし、重みを用いなくてもよい。
図74に示す例では、入力属性情報は、a0、a1、a2、a3、a4及びa5である。また、Haar変換後の符号化係数のうち、Ta1、Ta5、Tb1、Tb3、Tc1、d0が符号化される。他の符号化係数(b0、b2、c0等)は中間値であり、符号化されない。
具体的には、図74に示す例では、a0とa1とにHaar変換が行われることで、高周波成分Ta1と、低周波成分b0とが生成される。ここで、重みw0とw1とが等しい場合には、低周波成分b0は、a0とa1との平均値であり、高周波成分Ta1は、a0とa1との差分である。
a2には対となる属性情報が存在しないため、a2がそのままb1として用いられる。同様に、a3には対となる属性情報が存在しないため、a3がそのままb2として用いられる。また、a4とa5とにHaar変換が行われることで、高周波成分Ta5と、低周波成分b3とが生成される。
階層L+1では、b0とb1とにHaar変換が行われることで、高周波成分Tb1と、低周波成分c0とが生成される。同様に、b2とb3とにHaar変換が行われることで、高周波成分Tb3と、低周波成分c1とが生成される。
階層Lmax-1では、c0とc1とにHaar変換が行われることで、高周波成分Tc1と、低周波成分d0とが生成される。
三次元データ符号化装置は、Haar変換適用後の符号化係数を量子化したうえで符号化してもよい。例えば、三次元データ符号化装置は、符号化係数を量子化スケール(量子化ステップ(QS(Quantization Step))とも呼ぶ)で除算することで量子化を行う。この場合、量子化スケールが小さいほど量子化によって発生しうる誤差(量子化誤差)が小さくなる。逆に量子化スケールが大きいほど量子化誤差は大きくなる。
なお、三次元データ符号化装置は、量子化スケールの値を階層毎に変えてもよい。図75は、階層毎に量子化スケールを設定する例を示す図である。例えば、三次元データ符号化装置は、上位層ほど量子化スケールを小さくし、下位層ほど量子化スケールを大きくする。上位層に属する三次元点の符号化係数は、下位層よりも低周波成分を多く含むため、人間の視覚特性等で重要な成分である可能性が高い。そのため、上位層の量子化スケールを小さくして上位層で発生しうる量子化誤差を抑えることで視覚的な劣化を抑え、符号化効率を向上できる。
なお、三次元データ符号化装置は、階層毎の量子化スケールをヘッダ等に付加してもよい。これにより、三次元データ復号装置は、正しく量子化スケールを復号でき、ビットストリームを適切に復号できる。
また、三次元データ符号化装置は、量子化スケールの値を、符号化対象の対象三次元点の重要度に応じて適応的に切替えてもよい。例えば、三次元データ符号化装置は、重要度が高い三次元点には小さい量子化スケールを用い、重要度が低い三次元点には大きい量子化スケールを用いる。例えば、三次元データ符号化装置は、Haar変換時の重み等から重要度を算出してもよい。例えば、三次元データ符号化装置は、w0とw1の加算値を用いて量子化スケールを算出してもよい。このように重要度が高い三次元点の量子化スケールを小さくすることで量子化誤差が小さくなり、符号化効率を改善できる。
また、上位層ほどQSの値を小さくしてもよい。これにより、上位層ほどQWの値が大きくなり、その三次元点の量子化誤差を抑えることで予測効率を改善できる。
ここで、属性情報a1の符号化係数Ta1の量子化後の符号化係数Ta1qは、Ta1/QS_Lで表される。なお、QSは全ての階層、又は一部の階層で同じ値であってもよい。
QW(Quantization Weight)は、符号化対象の三次元点の重要度を表す値である。例えば、QWとして、上述したw0とw1の加算値が用いられてもよい。これにより、上位層ほどQWの値が大きくなり、その三次元点の量子化誤差を抑えることで予測効率を改善できる。
例えば、三次元データ符号化装置は、最初に全ての三次元点のQWの値を1で初期化し、Haar変換時のw0及びw1の値を用いて各三次元点のQWを更新してもよい。または、三次元データ符号化装置は、全ての三次元点のQWを値1で初期化せずに、階層に応じて初期値を変更してもよい。例えば、上位層ほどQWの初期値を大きく設定することで上位層の量子化スケールが小さくなる。これにより、上位層の予測誤差を抑えることができるので、下位層の予測精度を高め、符号化効率を改善できる。なお、三次元データ符号化装置は、QWを必ずしも用いなくてもよい。
QWを用いる場合、Ta1の量子化値Ta1qは、(式K1)及び(式K2)により算出される。
また、三次元データ符号化装置は、量子化後の符号化係数(符号なし整数値)を、ある順番でスキャンし、符号化する。例えば、三次元データ符号化装置は、上位層に含まれる三次元点から順に下位層に向かって複数の三次元点を符号化する。
例えば、図74に示す例の場合、三次元データ符号化装置は、上位層Lmaxに含まれるd0qからTc1q、Tb1q、Tb3q、Ta1q、Ta5qの順で複数の三次元点を符号化する。ここで、下位層Lになるほど、量子化後の符号化係数が0になりやすい傾向がある。この要因として、以下のことなどが上げられる。
下位層Lの符号化係数は、上位層より高い周波数成分を示すため、対象三次元点によっては0になりやすい傾向がある。また、上述した重要度等に応じた量子化スケールの切り替えにより、下位層ほど量子化スケールが大きくなり、量子化後の符号化係数が0になりやすい。
このように、下位層になるほど、量子化後の符号化係数が0になりやすく、値0が連続して第1符号列に発生しやすい。図76は、第1符号列及び第2符号列の例を示す図である。
三次元データ符号化装置は、第1符号列で値0が発生した回数をカウントし、連続した値0の代わりに、値0が連続して発生した回数を符号化する。つまり、三次元データ符号化装置は、第1符号列において連続する値0の符号化係数を0の連続回数(ZeroCnt)に置き換えることで第2符号列を生成する。これにより、量子化後の符号化係数の値0が連続した場合に、多数の0を符号化するよりも0の連続回数を符号化することで符号化効率を向上できる。
また、三次元データ符号化装置は、ZeroCntの値をエントロピー符号化してもよい。例えば、三次元データ符号化装置は、符号化三次元点の総数Tのトランケットユーナリ符号(truncated unary code)でZeroCntの値を二値化し、二値化後の各ビットを算術符号化する。図77は、符号化三次元点の総数がTの場合のトランケットユーナリ符号の例を示す図である。この際、三次元データ符号化装置は、ビット毎に異なる符号化テーブルを用いることで符号化効率を向上してもよい。例えば、三次元データ符号化装置は、1ビット目には符号化テーブル1を用い、2ビット目には符号化テーブル2を用い、それ以降のビットには符号化テーブル3を用いる。このように、三次元データ符号化装置は、ビット毎に符号化テーブルを切り替えることで符号化効率を向上できる。
また、三次元データ符号化装置は、ZeroCntを指数ゴロム(Exponential-Golomb)で二値化したうえで算術符号化してもよい。これにより、ZeroCntの値が大きくなりやすい場合に、トランケットユーナリ符号による二値化算術符号化よりも効率を向上できる。なお、三次元データ符号化装置は、トランケットユーナリ符号を用いるか指数ゴロムを用いるかを切り替えるためのフラグをヘッダに付加してもよい。これにより、三次元データ符号化装置は、最適な二値化方法を選択することで符号化効率を向上できる。また、三次元データ復号装置はヘッダに含まれるフラグを参照して二値化方法を切り替えて、ビットストリームを正しく復号できる。
三次元データ復号装置は、復号した量子化後の符号化係数を、三次元データ符号化装置で行われた方法と逆の方法で符号なし整数値から符号付き整数値に変換してもよい。これにより符号化係数がエントロピー符号化される場合に、三次元データ復号装置は、負の整数の発生を考慮せずに生成されたビットストリームを適切に復号できる。なお、三次元データ復号装置は、符号化係数を必ずしも符号なし整数値から符号付き整数値に変換する必要はない。例えば、三次元データ復号装置は、別途エントロピー符号化された符号化ビットを含むビットストリームを復号する場合は、当該符号ビットを復号してもよい。
三次元データ復号装置は、符号付き整数値に変換した量子化後の符号化係数を、逆量子化、及び逆Haar変換によって復号する。また、三次元データ復号装置は、復号後の符号化係数を、復号対象の三次元点以降の予測に利用する。具体的には、三次元データ復号装置は、量子化後の符号化係数に復号した量子化スケールを乗算することで逆量子化値を算出する。次に三次元データ復号装置は、逆量子化値に後述する逆Haar変換を適用することで復号値を得る。
例えば、三次元データ復号装置は、復号された符号なし整数値を以下の方法で符号付き整数値に変換する。復号された符号なし整数値a2uのLSB(least significant bit)が1である場合、符号付き整数値Ta1qは、-((a2u+1)>>1)に設定される。復号された符号なし整数値a2uのLSBが1でない場合(0である場合)、符号付き整数値Ta1qは、(a2u>>1)に設定される。
また、Ta1の逆量子化値は、Ta1q×QS_Lで表される。ここで、Ta1qは、Ta1の量子化値である。また、QS_Lは階層Lの量子化ステップである。
また、QSは全ての階層、又は一部の階層で同じ値であってもよい。また、三次元データ符号化装置は、QSを示す情報をヘッダ等に付加してもよい。これにより、三次元データ復号装置は、三次元データ符号化装置で用いられたQSと同じQSを用いて、正しく逆量子化を行える。
次に、逆Haar変換について説明する。図78は、逆Haar変換を説明するための図である。三次元データ復号装置は、逆量子化後の符号化係数に、逆Haar変換を適用することで三次元点の属性値を復号する。
まず、三次元データ復号装置は、三次元点の位置情報に基づきモートン符号を生成し、モートン符号順に三次元点をソートする。例えば、三次元データ復号装置は、モートン符号の昇順にソートを行ってよい。なお、ソート順はモートン符号順に限らず、他の順序が用いられてもよい。
次に、三次元データ復号装置は、階層L+1の低周波成分を含む符号化係数と階層Lの高周波成分を含む符号化係数に逆Haar変換を適用することで、階層Lにおいてモートン符号順で隣り合う三次元点の属性情報を復元する。例えば、三次元データ復号装置は、2×2行列の逆Haar変換を用いてもよい。復元された階層Lの属性情報は下位階層L-1の入力値として用いられる。
三次元データ復号装置は、このような階層処理を繰返し、最下層の属性情報が全て復号されたら処理を終了する。なお、逆Haar変換適用時に階層L-1にて隣り合う2つの三次元点として1つの三次元点のみが存在する場合は、三次元データ復号装置は、存在する1つの三次元点の属性値に階層Lの符号化成分の値を代入してもよい。これにより、三次元データ復号装置は、入力された属性情報の全ての値にHaar変換を適用し、符号化効率を向上したビットストリームを正しく復号できる。
属性情報がN次元である場合、三次元データ復号装置は、次元毎に独立に逆Haar変換を適用し、それぞれの符号化係数を復号してもよい。例えば、属性情報が色情報(RGB又はYUV等)である場合、三次元データ復号装置は、成分毎の符号化係数に逆Haar変換を適用し、それぞれの属性値を復号する。
三次元データ復号装置は、階層Lmax、L+1、…、階層Lの順に逆Haar変換を適用してもよい。また、図78に示すw0及びw1は、各三次元点に割当てられる重みである。例えば、三次元データ復号装置は、逆Haar変換を適用する隣り合う2つの三次元点間の距離情報等に基づき重みを算出してもよい。例えば、三次元データ符号化装置は、距離が近いほど重みを大きくすることで符号化効率を向上したビットストリームを復号してもよい。
図78に示す例では、逆量子化後の符号化係数は、Ta1、Ta5、Tb1、Tb3、Tc1及びd0であり、復号値としてa0、a1、a2、a3、a4及びa5が得られる。
図79は、属性情報(attribute_data)のシンタックス例を示す図である。属性情報(attribute_data)は、ゼロ連続数(ZeroCnt)と、属性次元数(attribute_dimension)と、符号化係数(value[j][i])とを含む。
ゼロ連続数(ZeroCnt)は、量子化後の符号化係数において値0が連続する回数を示す。なお、三次元データ符号化装置は、ZeroCntを二値化したうえで算術符号化してもよい。
また、図79に示すように、三次元データ符号化装置は、符号化係数が属する階層L(layerL)が、予め定められた閾値TH_layer以上かどうかを判定し、判定結果によってビットストリームに付加する情報を切り替えてもよい。例えば、三次元データ符号化装置は、判定結果が真であれば属性情報の全ての符号化係数をビットストリームに付加する。また、三次元データ符号化装置は、判定結果が偽であれば一部の符号化係数をビットストリームに付加してもよい。
具体的には、三次元データ符号化装置は、判定結果が真であれば、色情報のRGB又はYUVの三次元情報の符号化結果をビットストリームに付加する。判定結果が偽であれば、三次元データ符号化装置は、色情報のうち、G又はYなどの一部の情報をビットストリームに付加し、それ以外の成分をビットストリームに付加しなくてもよい。このように、三次元データ符号化装置は、視覚的に劣化が目立ちにくい高周波成分を示す符号化係数を含む階層(TH_layerより小さい階層)の符号化係数の一部をビットストリームに付加しないことで、符号化効率を向上できる。
属性次元数(attribute_dimension)は、属性情報の次元数を示す。例えば、属性情報が三次元点の色情報(RGB又はYUVなど)である場合、色情報は三次元であるため属性次元数は値3に設定される。属性情報が反射率である場合、反射率は一次元であるため属性次元数は値1に設定される。なお、属性次元数はビットストリームの属性情報のヘッダ等に付加されてもよい。
符号化係数(value[j][i])は、i番目の三次元点のj次元番目の属性情報の量子化後の符号化係数を示す。例えば属性情報が色情報の場合、value[99][1]は100番目の三次元点の二次元番目(例えばG値)の符号化係数を示す。また、属性情報が反射率情報の場合、value[119][0]は120番目の三次元点の1次元番目(例えば反射率)の符号化係数を示す。
なお、以下の条件を満たす場合、三次元データ符号化装置は、value[j][i]から値1を減算し、得られた値をエントロピー符号化してもよい。この場合、三次元データ復号装置は、エントロピー復号後のvalue[j][i]に値1を加算することで符号化係数を復元する。
上記の条件は、(1)attribute_dimension=1の場合、又は、(2)attribute_dimensionが1以上で、かつ全ての次元の値が等しい場合である。例えば、属性情報が反射率の場合はattribute_dimension=1であるため、三次元データ符号化装置は符号化係数から値1を減算してvalueを算出し、算出したvalueを符号かする。三次元データ復号装置は復号後のvalueに値1を加算して符号化係数を算出する。
より具体的には、例えば、反射率の符号化係数が10の場合、三次元データ符号化装置は、符号化係数の値10から値1を減算した値9を符号化する。三次元データ復号装置は、復号した値9に値1を加算して符号化係数の値10を算出する。
また、属性情報が色の場合はattribute_dimension=3であるため、三次元データ符号化装置は、例えば、R、G、Bの各成分の量子化後の符号化係数が同じ場合は、各符号化係数から値1を減算し、得られた値を符号化する。三次元データ復号装置は、復号後の値に値1を加算する。より具体的には、例えば、R、G、Bの符号化係数=(1、1、1)の場合は、三次元データ符号化装置は、(0、0、0)を符号化する。三次元データ復号装置は、(0、0、0)の各成分に1を加算して(1、1、1)を算出する。また、R、G、Bの符号化係数=(2、1、2)の場合は、三次元データ符号化装置は、(2、1、2)をそのまま符号化する。三次元データ復号装置は、復号した(2、1、2)をそのまま符号化係数として用いる。
このように、ZeroCntを設けることで、valueとして全ての次元が0であるパターンは生成されないので、valueの値から1を減じた値を符号化できる。よって、符号化効率を向上できる。
また、図79に示すvalue[0][i]は、i番目の三次元点の一次元番目の属性情報の量子化後の符号化係数を示す。図79に示すように符号化係数の属する階層L(layerL)が閾値TH_layerより小さければ、一次元番目の属性情報をビットストリームに付加する(二次元番目以降の属性情報をビットストリーム付加しない)ことで符号量を削減してもよい。
三次元データ符号化装置は、attribute_dimensionの値によってZeroCntの値の算出方法を切替えてもよい。例えば、三次元データ符号化装置は、attribute_dimension=3の場合は、全ての成分(次元)の符号化係数の値が0となる回数をカウントしてもよい。図80は、この場合の符号化係数とZeroCntの例を示す図である。例えば、図80に示す色情報の場合、三次元データ符号化装置は、R、G、B成分が全て0である符号化係数が連続する数をカウントし、カウントした数をZeroCntとしてビットストリームに付加する。これにより、成分毎にZeroCntを符号化する必要がなくなり、オーバヘッドを削減できる。よって、符号化効率を改善できる。なお、三次元データ符号化装置は、attribute_dimensionが2以上の場合でも次元毎にZeroCntを算出し、算出したZeroCntをビットストリームに付加してもよい。
図81は、本実施の形態に係る三次元データ符号化処理のフローチャートである。まず、三次元データ符号化装置は、位置情報(geometry)を符号化する(S6601)。例えば、三次元データ符号化装置は、8分木表現を用いて符号化を行う。
次に、三次元データ符号化装置は、属性情報を変換する(S6602)。例えば、三次元データ符号化装置は、位置情報の符号化後に、量子化等によって三次元点の位置が変化した場合に、変化後の三次元点に元の三次元点の属性情報を再割当てする。なお、三次元データ符号化装置は、位置の変化量に応じて属性情報の値を補間して再割当てを行ってもよい。例えば、三次元データ符号化装置は、変化後の三次元位置に近い変化前の三次元点をN個検出し、N個の三次元点の属性情報の値を、変化後の三次元位置から各N個の三次元までの距離に基づいて重み付け平均し、得られた値を変化後の三次元点の属性情報の値に設定する。また、三次元データ符号化装置は、量子化等によって2個以上の三次元点が同一の三次元位置に変化した場合は、その変化後の属性情報の値として、変化前の2個以上の三次元点における属性情報の平均値を割当ててもよい。
次に。三次元データ符号化装置は、属性情報を符号化する(S6603)。例えば、三次元データ符号化装置は、複数の属性情報を符号化する場合は、複数の属性情報を順に符号化してもよい。例えば、三次元データ符号化装置は、属性情報として、色と反射率を符号化する場合は、色の符号化結果の後に反射率の符号化結果を付加したビットストリームを生成する。なお、ビットストリームに付加される属性情報の複数の符号化結果はどのような順番でもよい。
また、三次元データ符号化装置は、ビットストリーム内の各属性情報の符号化データの開始場所を示す情報をヘッダ等に付加してもよい。これにより、三次元データ復号装置は、復号が必要な属性情報を選択的に復号できるので、復号が不必要な属性情報の復号処理を省略できる。よって、三次元データ復号装置の処理量を削減できる。また、三次元データ符号化装置は、複数の属性情報を並列に符号化し、符号化結果を1つのビットストリームに統合してもよい。これにより、三次元データ符号化装置は、高速に複数の属性情報を符号化できる。
図82は、属性情報符号化処理(S6603)のフローチャートである。まず、三次元データ符号化装置は、Haar変換により属性情報から符号化係数を生成する(S6611)。次に、三次元データ符号化装置は、符号化係数に量子化を適用する(S6612)。次に、三次元データ符号化装置は、量子化後の符号化係数を符号化することで符号化属性情報(ビットストリーム)を生成する(S6613)。
また、三次元データ符号化装置は、量子化後の符号化係数に逆量子化を適用する(S6614)。次に、三次元データ復号装置は、逆量子化後の符号化係数に逆Haar変換を適用することで属性情報を復号する(S6615)。例えば、復号された属性情報は、後続の符号化において参照される。
図83は、符号化係数符号化処理(S6613)のフローチャートである。まず、三次元データ符号化装置は、符号化係数を符号付き整数値から符号なし整数値に変換する(S6621)。例えば、三次元データ符号化装置は、符号付き整数値を下記のように符号なし整数値に変換する。符号付き整数値Ta1qが0より小さい場合、符号なし整数値は、-1-(2×Ta1q)に設定される。符号付き整数値Ta1qが0以上である場合、符号なし整数値は、2×Ta1qに設定される。なお、符号化係数が負の値にならない場合には、三次元データ符号化装置は、符号化係数をそのまま符号なし整数値として符号化してもよい。
全ての符号化係数を処理済みでない場合(S6622でNo)、三次元データ符号化装置は、処理対象の符号化係数の値がゼロであるかを判定する(S6623)。処理対象の符号化係数の値がゼロである場合(S6623でYes)、三次元データ符号化装置は、ZeroCntを1インクリメントし(S6624)、ステップS6622に戻る。
処理対象の符号化係数の値がゼロでない場合(S6623でNo)、三次元データ符号化装置は、ZeroCntを符号化し、ZeroCntを0にリセットする(S6625)。また、三次元データ符号化装置は、処理対象の符号化係数を算術符号化し(S6626)、ステップS6622に戻る。例えば、三次元データ符号化装置は、二値算術符号化を行う。また、三次元データ符号化装置は、符号化係数から値1を減算し、得られた値を符号化してもよい。
また、ステップS6623~S6626の処理が符号化係数毎に繰り返し行われる。また、全ての符号化係数を処理済みである場合(S6622でYes)、三次元データ符号化装置は、処理を終了する。
図84は、本実施の形態に係る三次元データ復号処理のフローチャートである。まず、三次元データ復号装置は、ビットストリームから位置情報(geometry)を復号する(S6631)。例えば、三次元データ復号装置は、8分木表現を用いて復号を行う。
次に、三次元データ復号装置は、ビットストリームから属性情報を復号する(S6632)。例えば、三次元データ復号装置は、複数の属性情報を復号する場合は、複数の属性情報を順に復号してもよい。例えば、三次元データ復号装置は、属性情報として、色と反射率を復号する場合は、ビットストリームに付加されている順に従い、色の符号化結果、及び反射率の符号化結果を復号する。例えば、ビットストリームにおいて、色の符号化結果の後に、反射率の符号化結果が付加されている場合、三次元データ復号装置は、色の符号化結果を復号し、その後に反射率の符号化結果を復号する。なお、三次元データ復号装置は、ビットストリームに付加される属性情報の符号化結果をどのような順番で復号してもよい。
また、三次元データ復号装置は、ビットストリーム内の各属性情報の符号化データの開始場所を示す情報をヘッダ等を復号することで取得してもよい。これにより、三次元データ復号装置は、復号が必要な属性情報を選択的に復号できるので、復号が不必要な属性情報の復号処理を省略できる。よって、三次元データ復号装置の処理量を削減できる。また、三次元データ復号装置は、複数の属性情報を並列に復号し、復号結果を1つの三次元点群に統合してもよい。これにより、三次元データ復号装置は、高速に複数の属性情報を復号できる。
図85は、属性情報復号処理(S6632)のフローチャートである。まず、三次元データ復号装置は、ビットストリームから符号化係数を復号する(S6641)。次に、三次元データ復号装置は、符号化係数に逆量子化を適用する(S6642)。次に、三次元データ復号装置は、逆量子化後の符号化係数に逆Haar変換を適用することで属性情報を復号する(S6643)。
図86は、符号化係数復号処理(S6641)のフローチャートである。まず、三次元データ復号装置は、ビットストリームからZeroCntを復号する(S6651)。全ての符号化係数を処理済みでない場合(S6652でNo)、三次元データ復号装置は、ZeroCntが0より大きいかを判定する(S6653)。
ZeroCntがゼロより大きい場合(S6653でYes)、三次元データ復号装置は、処理対象の符号化係数を0に設定する(S6654)。次に、三次元データ復号装置は、ZeroCntを1減算し(S6655)、ステップS6652に戻る。
ZeroCntがゼロである場合(S6653でNo)、三次元データ復号装置は、処理対象の符号化係数を復号する(S6656)。例えば、三次元データ復号装置は、二値算術復号を用いる。また、三次元データ復号装置は、復号した符号化係数に値1を加算してもよい。
次に、三次元データ復号装置は、ZeroCntを復号し、得られた値をZeroCntに設定し(S6657)、ステップS6652に戻る。
また、ステップS6653~S6657の処理が符号化係数毎に繰り返し行われる。また、全ての符号化係数を処理済みである場合(S6652でYes)、三次元データ符号化装置は、復号した複数の符号化係数を符号なし整数値から符号付き整数値に変換する(S6658)。例えば、三次元データ復号装置は、復号した符号化係数は下記のように符号なし整数値から符号付き整数値に変換してもよい。復号された符号なし整数値Ta1uのLSB(least significant bit)が1である場合、符号付き整数値Ta1qは、-((Ta1u+1)>>1)に設定される。復号された符号なし整数値Ta1uのLSBが1でない場合(0である場合)、符号付き整数値Ta1qは、(Ta1u>>1)に設定される。なお、符号化係数が負の値にならない場合には、三次元データ復号装置は、復号した符号化係数をそのまま符号付き整数値として用いてもよい。
図87は、三次元データ符号化装置に含まれる属性情報符号化部6600のブロック図である。属性情報符号化部6600は、ソート部6601と、Haar変換部6602と、量子化部6603と、逆量子化部6604と、逆Haar変換部6605と、メモリ6606と、算術符号化部6607とを備える。
ソート部6601は、三次元点の位置情報を用いてモートン符号を生成し、複数の三次元点をモートン符号順にソートする。Haar変換部6602は、属性情報にHaar変換を適用することで符号化係数を生成する。量子化部6603は、属性情報の符号化係数を量子化する。
逆量子化部6604は、量子化後の符号化係数を逆量子化する。逆Haar変換部6605は、符号化係数に逆Haar変換を適用する。メモリ6606は、復号済みの複数の三次元点の属性情報の値を記憶する。例えば、メモリ6606に記憶される復号済みの三次元点の属性情報は、符号化されていない三次元点の予測等に利用されてもよい。
算術符号化部6607は、量子化後の符号化係数からZeroCntを算出し、ZeroCntを算術符号化する。また、算術符号化部6607は、量子化後の非ゼロの符号化係数を算術符号化する。算術符号化部6607は、符号化係数を算術符号化前に二値化してもよい。また、算術符号化部6607は、各種ヘッダ情報を生成及び符号化してもよい。
図88は、三次元データ復号装置に含まれる属性情報復号部6610のブロック図である。属性情報復号部6610は、算術復号部6611と、逆量子化部6612と、逆Haar変換部6613と、メモリ6614とを備える。
算術復号部6611は、ビットストリームに含まれるZeroCntと符号化係数を算術復号する。なお、算術復号部6611は、各種ヘッダ情報を復号してもよい。
逆量子化部6612は、算術復号した符号化係数を逆量子化する。逆Haar変換部6613は、逆量子化後の符号化係数に逆Haar変換を適用する。メモリ6614は、復号済みの複数の三次元点の属性情報の値を記憶する。例えば、メモリ6614に記憶される復号済みの三次元点の属性情報は、復号されていない三次元点の予測に利用されてもよい。
なお、上記実施の形態では、符号化順として下位層から上位層の順に三次元点を符号化する例を示したが、必ずしもこれに限らない。例えば、Haar変換後の符号化係数を上位層から下位層の順にスキャンする方法が用いられてもよい。なお、この場合も、三次元データ符号化装置は、値0の連続回数をZeroCntとして符号化してもよい。
また、三次元データ符号化装置は、本実施の形態で述べたZeroCntを用いた符号化方法を用いるか否かを、WLD、SPC又はボリューム単位で切替えてもよい。この場合、三次元データ符号化装置は、ZeroCntを用いた符号化方法を適用したか否かを示す情報をヘッダ情報に付加してもよい。これにより、三次元データ復号装置は、適切に復号を行える。切替え方法の例として、例えば、三次元データ符号化装置は、1個のボリュームに対して値0の符号化係数の発生回数をカウントする。三次元データ符号化装置は、カウント値が予め定められた閾値を越えた場合は、次のボリュームにZeroCntを用いた方法を適用し、カウント値が閾値以下の場合、次のボリュームにZeroCntを用いた方法を適用しない。これにより、三次元データ符号化装置は、符号化対象の三次元点の特徴に応じて適切にZeroCntを用いた符号化方法を適用するか否かを切り替えることができるので、符号化効率を向上できる。
(実施の形態11)
以下、量子化パラメータについて説明する。
点群データの特性および位置に基づき点群データを分割するために、スライスおよびタイルが用いられる。ここで、ハードウェアの制限、および、リアルタイム処理の要件により、それぞれの分割された点群データに求められる品質が異なる場合がある。例えば、オブジェクト毎にスライスに分割して符号化する場合、植物を含むスライスデータは、それほど重要でないため、量子化することにより解像度(品質)を落とすことができる。一方、重要なスライスデータは量子化の値を低い値に設定することで高い解像度(品質)とすることができる。このような量子化値のコントロールを可能とするために量子化パラメータが用いられる。
ここで、量子化の対象となるデータと、量子化に用いられるスケールと、量子化によって算出される結果である量子化データとは、以下の(式G1)と(式G2)で表される。
量子化データ=データ/スケール (式G1)
データ=量子化データ*スケール (式G2)
図89は、データを量子化する量子化部5323、および、量子化データを逆量子化する逆量子化部5333の処理について説明するための図である。
量子化部5323は、スケールを用いてデータを量子化する、つまり、式G1を用いる処理を行うことで、データが量子化された量子化データを算出する。
逆量子化部5333は、スケールを用いて量子化データを逆量子化する、つまり、式G2を用いる処理を行うことで、量子化データが逆量子化されたデータを算出する。
また、スケールと、量子化値(QP(Quantization Parameter)値)とは、以下の(式G3)で表される。
量子化値(QP値)=log(スケール) (式G3)
量子化値(QP値)=デフォルト値(基準値)+量子化デルタ(差分情報) (式G4)
また、これらのパラメータを総称して量子化パラメータ(Quantization Parameter)と呼ぶ。
例えば、図90に示されるように、量子化値は、デフォルト値を基準とした値であり、デフォルト値に量子化デルタを加算することで算出される。量子化値がデフォルト値よりも小さい値である場合には、量子化デルタは負の値となる。量子化値がデフォルト値よりも大きい値である場合には、量子化デルタは正の値となる。量子化値がデフォルト値と等しい場合には、量子化デルタは0となる。量子化デルタが0である場合、量子化デルタは、なくてもよい。
符号化処理について説明する。図91は、本実施の形態に係る三次元データ符号化装置に含まれる第1の符号化部5300の構成を示すブロック図である。図92は、本実施の形態に係る分割部5301の構成を示すブロック図である。図93は、本実施の形態に係る位置情報符号化部5302および属性情報符号化部5303の構成を示すブロック図である。
第1の符号化部5300は、点群データを第1の符号化方法(GPCC(Geometry based PCC))で符号化することで符号化データ(符号化ストリーム)を生成する。この第1の符号化部5300は、分割部5301と、複数の位置情報符号化部5302と、複数の属性情報符号化部5303と、付加情報符号化部5304と、多重化部5305とを含む。
分割部5301は、点群データを分割することで複数の分割データを生成する。具体的には、分割部5301は、点群データの空間を複数のサブ空間に分割することで複数の分割データを生成する。ここでサブ空間とは、タイル及びスライスの一方、又はタイル及びスライスの組み合わせである。より具体的には、点群データは、位置情報、属性情報、及び付加情報を含む。分割部5301は、位置情報を複数の分割位置情報に分割し、属性情報を複数の分割属性情報に分割する。また、分割部5301は、分割に関する付加情報を生成する。
分割部5301は、図92に示すように、タイル分割部5311と、スライス分割部5312とを含む。例えば、タイル分割部5311は、点群をタイルに分割する。タイル分割部5311は、分割した各タイルに用いる量子化値をタイル付加情報として決定してもよい。
スライス分割部5312は、タイル分割部5311により得られたタイルを、さらにスライスに分割する。スライス分割部5312は、分割した各スライスに用いる量子化値をスライス付加情報として決定してもよい。
複数の位置情報符号化部5302は、複数の分割位置情報を符号化することで複数の符号化位置情報を生成する。例えば、複数の位置情報符号化部5302は、複数の分割位置情報を並列処理する。
位置情報符号化部5302は、図93に示すように、量子化値算出部5321と、エントロピ符号化部5322とを含む。量子化値算出部5321は、符号化される分割位置情報の量子化値(量子化パラメータ)を取得する。エントロピ符号化部5322は、量子化値算出部5321により取得された量子化値(量子化パラメータ)を用いて、分割位置情報を量子化することで、量子化位置情報を算出する。
複数の属性情報符号化部5303は、複数の分割属性情報を符号化することで複数の符号化属性情報を生成する。例えば、複数の属性情報符号化部5303は、複数の分割属性情報を並列処理する。
属性情報符号化部5303は、図93に示すように、量子化値算出部5331と、エントロピ符号化部5332とを含む。量子化値算出部5331は、符号化される分割属性情報の量子化値(量子化パラメータ)を取得する。エントロピ符号化部5332は、量子化値算出部5331により取得された量子化値(量子化パラメータ)を用いて、分割属性情報を量子化することで、量子化属性情報を算出する。
付加情報符号化部5304は、点群データに含まれる付加情報と、分割部5301で分割時に生成された、データ分割に関する付加情報とを符号化することで符号化付加情報を生成する。
多重化部5305は、複数の符号化位置情報、複数の符号化属性情報及び符号化付加情報を多重化することで符号化データ(符号化ストリーム)を生成し、生成した符号化データを送出する。また、符号化付加情報は復号時に使用される。
なお、図91では、位置情報符号化部5302及び属性情報符号化部5303の数がそれぞれ2つの例を示しているが、位置情報符号化部5302及び属性情報符号化部5303の数は、それぞれ1つであってもよいし、3つ以上であってもよい。また、複数の分割データは、CPU内の複数コアのように同一チップ内で並列処理されてもよいし、複数のチップのコアで並列処理されてもよいし、複数チップの複数コアで並列処理されてもよい。
次に、復号処理について説明する。図94は、第1の復号部5340の構成を示すブロック図である。図95は、位置情報復号部5342および属性情報復号部5343の構成を示すブロック図である。
第1の復号部5340は、点群データが第1の符号化方法(GPCC)で符号化されることで生成された符号化データ(符号化ストリーム)を復号することで点群データを復元する。この第1の復号部5340は、逆多重化部5341と、複数の位置情報復号部5342と、複数の属性情報復号部5343と、付加情報復号部5344と、結合部5345とを含む。
逆多重化部5341は、符号化データ(符号化ストリーム)を逆多重化することで複数の符号化位置情報、複数の符号化属性情報及び符号化付加情報を生成する。
複数の位置情報復号部5342は、複数の符号化位置情報を復号することで複数の量子化位置情報を生成する。例えば、複数の位置情報復号部5342は、複数の符号化位置情報を並列処理する。
位置情報復号部5342は、図95に示すように、量子化値算出部5351と、エントロピ復号部5352とを含む。量子化値算出部5351は、量子化位置情報の量子化値を取得する。エントロピ復号部5352は、量子化値算出部5351により取得された量子化値を用いて、量子化位置情報を逆量子化することで、位置情報を算出する。
複数の属性情報復号部5343は、複数の符号化属性情報を復号することで複数の分割属性情報を生成する。例えば、複数の属性情報復号部5343は、複数の符号化属性情報を並列処理する。
属性情報復号部5343は、図95に示すように、量子化値算出部5361と、エントロピ復号部5362とを含む。量子化値算出部5361は、量子化属性情報の量子化値を取得する。エントロピ復号部5362は、量子化値算出部5361により取得された量子化値を用いて、量子化属性情報を逆量子化することで、属性情報を算出する。
複数の付加情報復号部5344は、符号化付加情報を復号することで付加情報を生成する。
結合部5345は、付加情報を用いて複数の分割位置情報を結合することで位置情報を生成する。結合部5345は、付加情報を用いて複数の分割属性情報を結合することで属性情報を生成する。例えば、結合部5345は、まず、スライス付加情報を用いて、スライスに対する復号された点群データを結合することでタイルに対応する点群データを生成する。次に、結合部5345は、タイル付加情報を用いて、タイルに対応する点群データを結合することで元の点群データを復元する。
なお、図94では、位置情報復号部5342及び属性情報復号部5343の数がそれぞれ2つの例を示しているが、位置情報復号部5342及び属性情報復号部5343の数は、それぞれ1つであってもよし、3つ以上であってもよい。また、複数の分割データは、CPU内の複数コアのように同一チップ内で並列処理されてもよいし、複数のチップのコアで並列処理されてもよい、複数チップの複数コアで並列処理されてもよい。
[量子化パラメータの決定方法]
図96は、位置情報(Geometry)の符号化あるいは属性情報(Attribute)の符号化における量子化値(Quantization Parameter値:QP値)の決定に関する処理の一例を示すフローチャートである。
QP値は、例えばPCCフレームを構成する位置情報のデータ単位毎、あるいは属性情報のデータ単位毎に符号化効率を考慮して決定される。データ単位が分割されたタイル単位、あるいは、分割されたスライス単位である場合には、QP値は、分割のデータ単位の符号化効率を考慮し、分割のデータ単位で決定される。また、QP値は、分割前のデータ単位で決定されてもよい。
図96に示すように、三次元データ符号化装置は、位置情報の符号化に使用するQP値を決定する(S5301)。三次元データ符号化装置は、QP値の決定を、分割された複数のスライス毎に、所定の方法に基づいて行ってもよい。具体的には、三次元データ符号化装置は、位置情報のデータの特徴または品質に基づいて、QP値を決定する。三次元データ符号化装置は、例えば、データ単位毎に、点群データの密度、つまり、スライスに属する単位領域あたりの点の数を判定し、点群データの密度に対応する値をQP値として決定してもよい。あるいは、三次元データ符号化装置は、点群データの点の数、点の分布、点の偏り、または、点の情報から得られる特徴量、特徴点の数、あるいは認識されるオブジェクトに基づき、対応する値をQP値として決定してもよい。また、三次元データ符号化装置は、地図の位置情報におけるオブジェクトを判定し、位置情報に基づくオブジェクトに基づきQP値を決定してもよいし、三次元点群を二次元に投影した情報あるいは特徴量に基づきQP値を決定してもよい。対応するQP値は、あらかじめ、点群データの密度、点の数、点の分布、または点の偏りと対応付けられているテーブルとしてメモリに保持されていてもよい。また、対応するQP値は、予め、点の情報から得られる特徴量もしくは特徴点の数、または、点の情報に基づいて認識されるオブジェクトと対応付けられているテーブルとしてメモリに保持されていてもよい。また、対応するQP値は、点群データの位置情報を符号化する際に、様々なQP値で符号化率などをシミュレーションした結果に基づき決定されてもよい。
次に、三次元データ符号化装置は、位置情報のQP値の基準値(デフォルト値)および差分情報(量子化デルタ)を決定する(S5302)。三次元データ符号化装置は、具体的には、決定したQP値および所定の方法を用いて、伝送する基準値および差分情報を決定し、決定した基準値および差分情報を、付加情報およびデータのヘッダの少なくとも一方に設定(追加)する。
次に、三次元データ符号化装置は、属性情報の符号化に使用するQP値を決定する(S5303)。三次元データ符号化装置は、QP値の決定を、分割された複数のスライス毎に、所定の方法に基づいて行ってもよい。具体的には、三次元データ符号化装置は、属性情報のデータの特徴または品質に基づいて、QP値を決定する。三次元データ符号化装置は、例えば、データ単位毎に、属性情報の特性に基づいて、QP値を決定してもよい。色の特性とは、例えば、輝度、色度、彩度、これらのヒストグラム、色の連続性などである。属性情報が反射率の場合は、反射率に基づく情報に応じて判定してもよい。三次元データ符号化装置は、例えば、点群データからオブジェクトとして顔を検出した場合、顔を検出したオブジェクトを構成する点群データに対して、品質のよいQP値を決定してもよい。このように、三次元データ符号化装置は、オブジェクトの種類に応じて、オブジェクトを構成する点群データに対するQP値を決定してもよい。
また、三次元データ符号化装置は、三次元点に複数の属性情報がある場合、属性情報毎に独立に、それぞれの属性情報に基づくQP値を決定してもよいし、あるいは、いずれか一方の属性情報に基づき、複数の属性情報のQP値を決定してもよいし、複数の属性情報を用いて当該複数の属性情報のQP値を決定してもよい。
次に、三次元データ符号化装置は、属性情報のQP値の基準値(デフォルト値)および差分情報(量子化デルタ)を決定する(S5304)。三次元データ符号化装置は、具体的には、決定したQP値および所定の方法を用いて、伝送する基準値および差分情報を決定し、決定した基準値および差分情報を、付加情報およびデータのヘッダの少なくとも一方に設定(追加)する。
そして、三次元データ符号化装置は、それぞれ、決定された位置情報および属性情報のQP値に基づき、位置情報および属性情報を量子化し、符号化する(S5305)。
なお、位置情報のQP値は、位置情報に基づいて決定され、属性情報のQP値は、属性情報に基づいて決定される例を説明したが、これに限らない。例えば、位置情報および属性情報のQP値は、位置情報に基づいて決定されてもよいし、属性情報に基づいて決定されてもよいし、位置情報および属性情報に基づいて決定されてもよい。
なお、位置情報および属性情報のQP値は、点群データにおける、位置情報の品質と属性情報の品質とのバランスを考慮して調整されてもよい。例えば、位置情報および属性情報のQP値は、位置情報の品質が高く設定され、かつ、属性情報の品質が位置情報の品質より低く設定されるように決定されてもよい。例えば、属性情報のQP値は、位置情報のQP値以上という制約された条件を満たすように決定されてもよい。
また、QP値は、符号化データがあらかじめ定められた所定のレートの範囲内に収まるように符号化されるように調整されてもよい。QP値は、例えば、ひとつ前のデータ単位の符号化で符号量が所定のレートを超えそうな場合、つまり、所定のレートまでの差が第一の差分未満である場合、データ単位の符号量が第一の差分未満となるよう符号化品質が低下するように調整されてもよい。一方で、QP値は、所定のレートまでの差が、第一の差分よりも大きい第二の差分より大きく、十分に大きな差がある場合、データ単位の符号化品質が向上するように調整されてもよい。データ単位の間の調整は、例えばPCCフレーム間であってもよいし、タイルの間やスライスの間であってもよい。属性情報のQP値の調整は、位置情報の符号化のレートに基づいて調整されてもよい。
なお、図96におけるフローチャートにおいて、位置情報に係る処理と属性情報に係る処理の処理順は、反対でも良いし、並列でもよい。
なお、図96におけるフローチャートでは、スライス単位の処理を例にしているが、タイル単位や、その他のデータ単位での処理の場合もスライス単位と同様に処理することができる。つまり、図96のフローチャートのスライスは、タイルまたは他のデータ単位と読み替えることができる。
図97は、位置情報および属性情報の復号処理の一例を示すフローチャートである。
図97に示すように、三次元データ復号装置は、位置情報のQP値を示す基準値および差分情報と、属性情報のQP値を示す基準値および差分情報とを取得する(S5311)。具体的には、三次元データ復号装置は、伝送されるメタデータ、符号化データのヘッダのいずれか一方または両方を解析し、QP値を導出するための基準値および差分情報を取得する。
次に、三次元データ復号装置は、取得した基準値および差分情報を用いて、所定の方法に基づいて、QP値を導出する(S5312)。
そして、三次元データ復号装置は、量子化位置情報を取得し、導出されたQP値を用いて量子化位置情報を逆量子化することで、位置情報を復号する(S5313)。
次に、三次元データ復号装置は、量子化属性情報を取得し、導出されたQP値を用いて量子化属性情報を逆量子化することで、属性情報を復号する(S5314)。
次に、量子化パラメータの伝送方法について説明する。
図98は、量子化パラメータの伝送方法の第1の例について説明するための図である。図98の(a)は、QP値の関係の一例を示す図である。
図98において、QGおよびQAは、それぞれ、位置情報の符号化に用いるQP値の絶対値、および、属性情報の符号化に用いるQP値の絶対値を示す。QGは、複数の三次元点のそれぞれの位置情報を量子化するために用いられる第1量子化パラメータの一例である。また、Δ(QA,QG)は、QAの導出に用いるQGとの差分を示す差分情報を示す。つまり、QAは、QGとΔ(QA,QG)とを用いて導出される。このように、QP値は、基準値(絶対値)と差分情報(相対値)とに分けて伝送される。また、復号では、伝送された基準値および差分情報から所望のQP値を導出する。
例えば、図98の(a)では、絶対値QGと差分情報Δ(QA,QG)とが伝送され、復号では、下記の(式G5)で示すように、QAは、QGにΔ(QA,QG)を加算することで導出される。
QA=QG+Δ(QA,QG) (式G5)
図98の(b)および(c)を用いて位置情報および属性情報からなる点群データをスライス分割する場合のQP値の伝送方法を説明する。図98の(b)は、各QP値の基準値と差分情報との関係の第1の例を示す図である。図98の(c)は、QP値、位置情報、および、属性情報の伝送順の第1の例を示す図である。
QP値は、位置情報毎、および、属性情報毎に、大きく、PCCのフレーム単位のQP値(フレームQP)と、データ単位のQP値(データQP)に分かれている。データ単位のQP値は、図96のステップS5301で決定した、符号化に用いるQP値である。
ここでは、PCCフレーム単位の位置情報の符号化に用いるQP値であるQGを基準値とし、データ単位のQP値をQGからの差分を示す差分情報として生成し、送出する。
QG:PCCフレームにおける位置情報の符号化のQP値・・・GPSを用いて基準値「1.」として送出される
QA:PCCフレームにおける属性情報の符号化のQP値・・・APSを用いてQGからの差分を示す差分情報「2.」として送出される
QGs1,QGs2:スライスデータにおける位置情報の符号化のQP値…位置情報の符号化データのヘッダを用いて、QGからの差分を示す差分情報「3.」および「5.」として送出される
QAs1,QAs2:スライスデータにおける属性情報の符号化のQP値…属性情報の符号化データのヘッダを用いて、QAからの差分を示す差分情報「4.」および「6.」として送出される
なお、フレームQPの導出に用いる情報は、フレームに係るメタデータ(GPS,APS)に記載され、データQPの導出に用いる情報は、データに係るメタデータ(符号化データのヘッダ)に記載される。
このように、データQPは、フレームQPからの差分を示す差分情報として生成され、送出される。よって、データQPのデータ量を削減することができる。
第1の復号部5340は、それぞれの符号化データにおいて、図98の(c)の矢印で示したメタデータを参照し、当該符号化データに対応する基準値および差分情報を取得する。そして、第1の復号部5340は、取得した基準値および差分情報に基づいて、復号対象の符号化データに対応するQP値を導出する。
第1の復号部5340は、例えば、図98の(c)において矢印で示した基準情報「1.」および差分情報「2.」、「6.」をメタデータあるいはヘッダから取得し、下記の(式G6)で示すように、基準情報「1.」に差分情報「2.」および「6.」を加算することで、As2のQP値を導出する。
QAS2=QG+Δ(QA,QG)+Δ(QAs2,QA) (式G6)
点群データは、位置情報と0以上の属性情報とを含む。すなわち、点群データは、属性情報を持たない場合もあれば、複数の属性情報を持つ場合もある。
例えば、1つの三次元点に対して、属性情報として、色情報を持つ場合、色情報と反射情報とを持つ場合、1以上の視点情報にそれぞれ紐づく1以上の色情報を持つ場合などがある。
ここで、2つの色情報、および反射情報を持つ場合の例について、図99を用いて説明する。図99は、量子化パラメータの伝送方法の第2の例について説明するための図である。図99の(a)は、各QP値の基準値と差分情報との関係の第2の例を示す図である。図99の(b)は、QP値、位置情報、および、属性情報の伝送順の第2の例を示す図である。
QGは、図98と同様に、第1量子化パラメータの一例である。
2つの色情報のそれぞれは、輝度(ルマ)Yと色差(クロマ)Cb、Crとで示される。第1の色の輝度Y1の符号化に用いるQP値であるQY1は、基準値であるQGと、その差分を示すΔ(QY1、QG)とを用いて導出される。輝度Y1は、第1輝度の一例であり、QY1は、第1輝度としての輝度Y1を量子化するために用いられる第2量子化パラメータの一例である。Δ(QY1、QG)は、差分情報「2.」である。
また、第1の色の色差Cb1、Cr1の符号化に用いるQP値であるQCb1、QCr1は、それぞれ、QY1と、その差分を示すΔ(QCb1,QY1)、Δ(QCr1,QY1)とを用いて導出される。色差Cb1、Cr1は、第1色差の一例であり、QCb1、QCr1は、第1色差としての色差Cb1、Cr1を量子化するために用いられる第3量子化パラメータの一例である。Δ(QCb1,QY1)は、差分情報「3.」であり、Δ(QCr1,QY1)は、差分情報「4.」である。Δ(QCb1,QY1)およびΔ(QCr1,QY1)は、それぞれ、第1差分の一例である。
なお、QCb1およびQCr1は、互いに同じ値が用いられてもよく、共通する値が用いられてもよい。共通する値が用いられる場合、QCb1およびQCr1の一方が用いられればよいため、他方はなくてもよい。
また、スライスデータにおける第1の色の輝度Y1Dの符号化に用いるQP値であるQY1Dは、QY1と、その差分を示すΔ(QY1D,QY1)とを用いて導出される。スライスデータにおける第1の色の輝度Y1Dは、サブ空間に含まれる1以上の三次元点の第1輝度の一例であり、QY1Dは、輝度Y1Dを量子化するために用いられる第5量子化パラメータの一例である。Δ(QY1D,QY1)は、差分情報「10.」であり、第2差分の一例である。
同様に、スライスデータにおける第1の色の色差Cb1D、Cr1Dの符号化に用いるQP値であるQCb1D、QCr1Dは、それぞれ、QCb1、QCr1と、その差分を示すΔ(QCb1D,QCb1)、Δ(QCr1D,QCr1)とを用いて導出される。スライスデータにおける第1の色の色差Cb1D、Cr1Dは、サブ空間に含まれる1以上の三次元点の第1色差の一例であり、QCb1D、QCr1Dは、色差Cb1D、Cr1Dを量子化するために用いられる第6量子化パラメータの一例である。Δ(QCb1D,QCb1)は、差分情報「11.」であり、Δ(QCr1D,QCr1)は、差分情報「12.」である。Δ(QCb1D,QCb1)およびΔ(QCr1D,QCr1)は、第3差分の一例である。
第1の色におけるQP値の関係は、第2の色にも同様のことが言えるため、説明を省略する。
反射率Rの符号化に用いるQP値であるQRは、基準値であるQGと、その差分を示すΔ(QR,QG)とを用いて導出される。QRは、反射率Rを量子化するために用いられる第4量子化パラメータの一例である。Δ(QR,QG)は、差分情報「8.」である。
また、スライスデータにおける反射率RDの符号化に用いるQP値であるQRDは、QRと、その差分を示すΔ(QRD,QR)とを用いて導出される。Δ(QRD,QR)は、差分情報「16.」である。
このように、差分情報「9.」~「16.」は、データQPとフレームQPとの差分情報を示す。
なお、例えば、データQPとフレームQPとの値が同一の値であるような場合は、差分情報を0としてもよいし、差分情報を送出しないことにより0とみなすとしてもよい。
第1の復号部5340は、例えば、第2の色の色差Cr2を復号する際、図99の(b)の矢印で示した基準情報「1.」および差分情報「5.」、「7.」および「15.」をメタデータあるいはヘッダから取得し、下記の(式G7)で示すように、基準情報「1.」に差分情報「5.」、「7.」および「15.」を加算することで、色差Cr2のQP値を導出する。
QCr2D=QG+Δ(QY2,QG)+Δ(QCr2,QY2)+Δ(QCr2D,QCr2) (式G7)
次に、位置情報および属性情報をタイルに2分割した後に、スライスに2分割する場合の例について図100を用いて説明する。図100は、量子化パラメータの伝送方法の第3の例について説明するための図である。図100の(a)は、各QP値の基準値と差分情報との関係の第3の例を示す図である。図100の(b)は、QP値、位置情報、および、属性情報の伝送順の第3の例を示す図である。図100の(c)は、第3の例における、差分情報の中間生成値について説明するための図である。
複数のタイルに分割した後に、さらに複数のスライスに分割する場合、図100の(c)に示すように、タイルに分割した後にタイル毎のQP値(QAt1)および差分情報Δ(QAt1,QA)が中間生成値として生成される。そして、スライスに分割した後にスライス毎のQP値(QAt1s1,QAt1s2)および差分情報(Δ(QAt1s1,QAt1),Δ(QAt1s2,QAt1))が生成される。
この場合、例えば、図100の(a)における、差分情報「4.」は、以下の(式G8)で導出される。
Δ(QAt1s1,QA)=Δ(QAt1,QA)+Δ(QAt1s1,QAt1) (式G8)
第1の復号部5340は、例えば、タイル2におけるスライス1の属性情報At2s1を復号する際、図100の(b)の矢印で示した基準情報「1.」および差分情報「2.」、「8.」をメタデータあるいはヘッダから取得し、下記の(式G9)で示すように、基準情報「1.」に差分情報「2.」、「8.」を加算することで、属性情報At2s1のQP値を導出する。
QAt2s1=QG+Δ(QAt2s1,QA)+Δ(QA,QG) (式G9)
次に、本実施の形態に係る点群データの符号化処理及び復号処理の流れについて説明する。図101は、本実施の形態に係る点群データの符号化処理のフローチャートである。
まず、三次元データ符号化装置は、使用する分割方法を決定する(S5321)。この分割方法は、タイル分割を行うか否か、スライス分割を行うか否かを含む。また、分割方法は、タイル分割又はスライス分割を行う場合の分割数、及び、分割の種別等を含んでもよい。分割の種別とは、上述したようなオブジェクト形状に基づく手法、地図情報或いは位置情報に基づく手法、又は、データ量或いは処理量に基づく手法等である。なお、分割方法は、予め定められていてもよい。
タイル分割が行われる場合(S5322でYes)、三次元データ符号化装置は、位置情報と属性情報とをタイル単位で分割することで複数のタイル位置情報及び複数のタイル属性情報を生成する(S5323)。また、三次元データ符号化装置は、タイル分割に係るタイル付加情報を生成する。
スライス分割が行われる場合(S5324でYes)、三次元データ符号化装置は、複数のタイル位置情報及び複数のタイル属性情報(又は位置情報及び属性情報)を分割することで複数の分割位置情報及び複数の分割属性情報を生成する(S5325)。また、三次元データ符号化装置は、スライス分割に係る位置スライス付加情報及び属性スライス付加情報を生成する。
次に、三次元データ符号化装置は、複数の分割位置情報及び複数の分割属性情報の各々を符号化することで、複数の符号化位置情報及び複数の符号化属性情報を生成する(S5326)。また、三次元データ符号化装置は、依存関係情報を生成する。
次に、三次元データ符号化装置は、複数の符号化位置情報、複数の符号化属性情報及び付加情報をNALユニット化(多重化)することで符号化データ(符号化ストリーム)を生成する(S5327)。また、三次元データ符号化装置は、生成した符号化データを送出する。
図102は、タイルの分割(S5323)またはスライスの分割(S5325)において、QP値を決定し、付加情報を更新する処理の一例を示すフローチャートである。
ステップS5323、S5325では、タイルおよび/またはスライスの位置情報および属性情報は、それぞれの方法で独立して個別に分割してもよいし、共通して一括で分割してもよい。これにより、タイル毎および/またはスライス毎に分割された付加情報が生成される。
このとき、三次元データ符号化装置は、分割されたタイル毎および/またはスライス毎に、QP値の基準値および差分情報を決定する(S5331)。具体的には、三次元データ符号化装置は、図98~図100で例示したような、基準値および差分情報を決定する。
そして、三次元データ符号化装置は、決定した基準値および差分情報が含まれるように付加情報を更新する(S5332)。
図103は、符号化(S5326)の処理において、決定されたQP値を符号化する処理の一例を示すフローチャートである。
三次元データ符号化装置は、ステップS5331で決定されたQP値を符号化する(S5341)。具体的には、三次元データ符号化装置は、更新された付加情報に含まれるQP値の基準値および差分情報を符号化する。
そして、三次元データ符号化装置は、符号化処理の停止条件が満たされるまで、例えば、符号化対象のデータがなくなるまで、符号化処理を継続する(S5342)。
図104は、本実施の形態に係る点群データの復号処理のフローチャートである。まず、三次元データ復号装置は、符号化データ(符号化ストリーム)に含まれる、分割方法に係る付加情報(タイル付加情報、位置スライス付加情報及び属性スライス付加情報)を解析することで、分割方法を判定する(S5351)。この分割方法は、タイル分割を行うか否か、スライス分割を行うか否かを含む。また、分割方法は、タイル分割又はスライス分割を行う場合の分割数、及び、分割の種別等を含んでもよい。
次に、三次元データ復号装置は、符号化データに含まれる複数の符号化位置情報及び複数の符号化属性情報を、符号化データに含まれる依存関係情報を用いて復号することで分割位置情報及び分割属性情報を生成する(S5352)。
付加情報によりスライス分割が行われていることが示される場合(S5353でYes)、三次元データ復号装置は、位置スライス付加情報及び属性スライス付加情報に基づき、複数の分割位置情報と、複数の分割属性情報とを結合することで、複数のタイル位置情報及び複数のタイル属性情報を生成する(S5354)。
付加情報によりタイル分割が行われていることが示される場合(S5355でYes)、三次元データ復号装置は、タイル付加情報に基づき、複数のタイル位置情報及び複数のタイル属性情報(複数の分割位置情報及び複数の分割属性情報)を結合することで位置情報及び属性情報を生成する(S5356)。
図105は、スライス毎に分割された情報の結合(S5354)またはタイル毎に分割された情報の結合(S5356)において、QP値を取得して、スライスまたはタイルのQP値を復号する処理の一例を示すフローチャートである。
スライスまたはタイルの位置情報および属性情報は、それぞれの方法を用いて結合してもよいし、同一の方法で結合してもよい。
三次元データ復号装置は、符号化ストリームの付加情報から、基準値および差分情報を復号する(S5361)。
次に、三次元データ復号装置は、復号された基準値および差分情報を用いて量子化値を算出し、逆量子化に用いるQP値を、算出されたQP値に更新する(S5362)。これにより、タイル毎またはスライス毎の量子化属性情報を逆量子化するためのQP値を導出することができる。
そして、三次元データ復号装置は、復号処理の停止条件が満たされるまで、例えば、復号対象のデータがなくなるまで、復号処理を継続する(S5363)。
図106は、GPSのシンタックス例を示す図である。図107は、APSのシンタックス例を示す図である。図108は、位置情報のヘッダのシンタックス例を示す図である。図109は、属性情報のヘッダのシンタックス例を示す図である。
図106に示すように、例えば、位置情報の付加情報であるGPSは、QP値の導出の基準となる絶対値を示すQP_valueを含む。QP valueは、例えば、図98~図100で例示したQGに相当する。
また、図107に示すように、例えば、属性情報の付加情報であるAPSは、三次元点に複数視点の複数の色情報がある場合、デフォルトの視点を定義し、0番目は必ずデフォルト視点の情報を記載するとしてもよい。例えば、三次元データ符号化装置は、単一の色情報を復号または表示する場合、0番目の属性情報を復号または表示すればよい。
APSは、QP_delta_Attribute_to_Geometryを含む。QP_delta_Attribute_to_Geometryは、GPSに記載の基準値(QP_value)との差分情報を示す。この差分情報は、例えば、属性情報が色情報である場合、輝度との差分情報である。
また、GPSは、Geometry_header(位置情報のヘッダ)にQP値を算出するための差分情報があるか否かを示すフラグを含んでいてもよい。また、APSは、Attribute_header(属性情報のヘッダ)にQP値を算出するための差分情報があるか否かを示すフラグを含んでいてもよい。フラグは、属性情報において、データQPを算出するための、データQPの、フレームQPからの差分情報があるか否かを示していてもよい。
このように、符号化ストリームには、属性情報のうちの第1の色が第1輝度および第1色差で示される場合、第1輝度を量子化するための第2量子化パラメータを用いた量子化、および、第1色差を量子化するための第3量子化パラメータを用いた量子化において、第5量子化パラメータおよび第6量子化パラメータを用いて量子化した場合、第5量子化パラメータおよび第6量子化パラメータを用いて量子化したことを示す識別情報(フラグ)が含まれていてもよい。
また、図108に示すように、位置情報のヘッダは、GPSに記載の基準値(QP_value)との差分情報を示す、QP_delta_data_to_frameを含んでいてもよい。また、位置情報のヘッダは、タイル毎および/またはスライス毎の情報に分け、タイル毎および/またはスライス毎に、対応するQP値がそれぞれ示されても良い。
また、図109に示すように、属性情報のヘッダは、APSに記載のQP値との差分情報を示す、QP_delta_data_to_frameを含んでいてもよい。
図98~図100では、QP値の基準値をPCCフレームにおける位置情報のQP値であるとして説明したが、これに限らずに、その他の値を基準値として用いても良い。
図110は、量子化パラメータの伝送方法の他の例について説明するための図である。
図110の(a)および(b)は、PCCフレームにおける位置情報および属性情報のQP値で共通の基準値Qを設定する第4の例を示す。第4の例では、基準値QをGPSに格納し、基準値Qからの、位置情報のQP値(QG)の差分情報をGPSに格納し、属性情報のQP値(QYおよびQR)の差分情報をAPSに格納する。なお、基準値Qは、SPSに格納されてもよい。
図110の(c)および(d)は、位置情報および属性情報毎に独立に基準値を設定する第5の例を示す。第5の例では、GPSおよびAPSに、位置情報および属性情報の基準のQP値(絶対値)をそれぞれ格納する。つまり、位置情報には、基準値QGが設定され、属性情報の色情報には、基準値QYが設定され、属性情報の反射率には、基準値QRがそれぞれ設定される。このように、位置情報および複数種類の属性情報のそれぞれについて、QP値の基準値が設定されてもよい。なお、第5の例は、他の例と組み合わせられてもよい。つまり、第1の例におけるQA、第2の例におけるQY1、QY2、QRは、QP値の基準値であってもよい。
図110の(e)および(f)は、PCCフレームが複数ある場合、複数のPCCフレームで共通の基準値Qを設定する第6の例を示す。第6の例では、基準値QをSPSあるいはGSPSに格納し、それぞれのPCCフレームの位置情報のQP値と基準値との差分情報をGPSに格納する。なお、例えば、GOFのように、ランダムアクセス単位の範囲内では、例えば、ランダムアクセス単位の先頭フレームを基準値として、PCCフレーム間の差分情報(例えば、Δ(QG(1),QG(0)))を送出してもよい。
なお、タイルまたはスライスがさらに分割される場合であっても、同様の方法でデータヘッダに分割単位のQP値との差分情報を格納して送出する。
図111は、量子化パラメータの伝送方法の他の例について説明するための図である。
図111(a)および(b)は、PCCフレームにおける位置情報および属性情報で共通の基準値QGを設定する第7の例を示す。第7の例では、基準値QGをGPSに格納し、位置情報あるいは属性情報との差分情報をそれぞれのデータヘッダに格納する。基準値QGはSPSに格納されてもよい。
また、図111の(c)および(d)は、属性情報のQP値を、同一のスライスおよびタイルに属する位置情報のQP値との差分情報で示す第8の例を示す。第8の例では、基準値QGは、SPSに格納されてもよい。
図112は、量子化パラメータの伝送方法の第9の例について説明するための図である。
図112の(a)および(b)は、属性情報で共通のQP値を解して、位置情報のQP値との差分情報、属性情報で共通のQP値との差分情報をそれぞれ示す第9の例である。
図113は、QP値の制御例を説明するための図である。
量子化パラメータの値が低いほど品質が向上するが、より多くのビットが必要になるため、符号化効率が低下する。
例えば、三次元点群データをタイルに分割して符号化する際、タイルに含まれる点群データが主要道路である場合は、予め定義された属性情報のQP値を用いて符号化される。一方、周囲のタイルは重要な情報でないため、QP値の差分情報を正の値に設定することによりデータの品質を低下させ、符号化効率を向上できる可能性がある。
さらに、タイルに分割された三次元点群データをスライスに分割して符号化する際、歩道、木および建物は、自動運転において位置推定(ローカライズおよびマッピング)するにために重要であるためQP値を負の値に設定し、移動体およびその他は、重要性が低いためQP値を正の値に設定する。
図113(b)は、タイルやスライスに含まれるオブジェクトに基づき、予め量子化デルタ値が設定されている場合の差分情報の導出する例を示している。例えば、分割データが「主要道路」であるタイルに含まれる「建物」のスライスデータである場合、「主要道路」であるタイルの量子化デルタ値0と「建物」であるスライスデータの量子化デルタ値-5を加算し、差分情報は-5と導出される。
図114は、オブジェクトの品質に基づくQP値の決定方法の一例を示すフローチャートである。
三次元データ符号化装置は、地図情報に基づいて、点群データを1以上のタイルに分割し、1以上のタイル毎に含まれるオブジェクトを判定する(S5371)。具体的には、三次元データ符号化装置は、例えば、機械学習で得られた学習モデルを用いて、オブジェクトが何であるかを認識する物体認識処理を行う。
次に、三次元データ符号化装置は、処理対象のタイルを高い品質で符号化するか否かを判定する(S5372)。高い品質での符号化とは、例えば、所定のレートよりも大きいビットレートで符号化することである。
次に、三次元データ符号化装置は、処理対象のタイルを高い品質で符号化する場合(S5372でYes)、符号化品質が高くなるようにタイルのQP値を設定する(S5373)。
一方で、三次元データ符号化装置は、処理対象のタイルを高い品質で符号化しない場合(S5372でNo)、符号化品質が低くなるようにタイルのQP値を設定する(S5374)。
ステップS5373またはステップS5374の後で、三次元データ符号化装置は、タイル内のオブジェクトを判定し、1以上のスライスに分割する(S5375)。
次に、三次元データ符号化装置は、処理対象のスライスを高い品質で符号化するか否かを判定する(S5376)。
次に、三次元データ符号化装置は、処理対象のスライスを高い品質で符号化する場合(S5376でYes)、符号化品質が高くなるようにスライスのQP値を設定する(S5377)。
一方で、三次元データ符号化装置は、処理対象のスライスを高い品質で符号化しない場合(S5376でNo)、符号化品質が低くなるようにスライスのQP値を設定する(S5378)。
次に、三次元データ符号化装置は、設定されたQP値に基づいて、所定の方法で伝送する基準値および差分情報を決定し、決定した基準値および差分情報を付加情報およびデータのヘッダの少なくとも一方に格納する(S5379)。
次に、三次元データ符号化装置は、決定したQP値に基づき、位置情報および属性情報を量子化し、符号化する(S5380)。
図115は、レート制御に基づくQP値の決定方法の一例を示すフローチャートである。
三次元データ符号化装置は、点群データを順番に符号化する(S5381)。
次に、三次元データ符号化装置は、符号化データの符号量および符号化バッファの占有量から、符号化処理に係るレート制御状況を判定し、次回の符号化の品質を決定する(S5382)。
次に、三次元データ符号化装置は、符号化品質を上げるか否かを判定する(S5383)。
次に、三次元データ符号化装置は、符号化品質を上げる場合(S5383でYes)、符号化品質が高くなるようにタイルのQP値を設定する(S5384)。
一方で、三次元データ符号化装置は、符号化品質を上げない場合(S5383でNo)、符号化品質が低くなるようにタイルのQP値を設定する(S5385)。
次に、三次元データ符号化装置は、設定されたQP値に基づいて、所定の方法で伝送する基準値および差分情報を決定し、決定した基準値および差分情報を付加情報およびデータのヘッダの少なくとも一方に格納する(S5386)。
次に、三次元データ符号化装置は、決定したQP値に基づき、位置情報および属性情報を量子化し、符号化する(S5387)。
以上のように、本実施の形態に係る三次元データ符号化装置は、図116に示す処理を行う。まず、三次元データ符号化装置は、第1量子化パラメータを用いて複数の三次元点それぞれの位置情報を量子化する(S5391)。三次元データ符号化装置は、前記複数の三次元点それぞれの属性情報のうちの第1の色を示す第1輝度および第1色差について、第2量子化パラメータを用いて前記第1輝度を量子化し、かつ、第3量子化パラメータを用いて前記第1色差を量子化する(S5392)。三次元データ符号化装置は、量子化された前記位置情報、量子化された前記第1輝度、量子化された前記第1色差、前記第1量子化パラメータ、前記第2量子化パラメータ、および、前記第2量子化パラメータと前記第3量子化パラメータとの第1差分を含むビットストリームを生成する(S5393)。
これによれば、ビットストリームにおいて、第3量子化パラメータを第2量子化パラメータからの第1差分で示すため、符号化効率を向上できる。
例えば、三次元データ符号化装置は、さらに、第4量子化パラメータを用いて前記複数の三次元点それぞれの前記属性情報のうちの反射率を量子化する。また、前記生成では、量子化された前記反射率、および、前記第4量子化パラメータをさらに含むビットストリームを生成する。
例えば、前記第2量子化パラメータを用いた量子化では、前記複数の三次元点が含まれる対象空間を分割した複数のサブ空間毎に当該サブ空間に含まれる1以上の三次元点の前記第1輝度を量子化する場合、第5量子化パラメータをさらに用いて前記サブ空間に含まれる1以上の三次元点の前記第1輝度を量子化する。前記第3量子化パラメータを用いた量子化では、前記1以上の三次元点の前記第1色差を量子化する場合、第6量子化パラメータをさらに用いて前記1以上の三次元点の前記第1色差を量子化する。前記生成では、前記第2量子化パラメータと前記第5量子化パラメータとの第2差分、および、前記第3量子化パラメータと前記第6量子化パラメータとの第3差分をさらに含むビットストリームを生成する。
これによれば、ビットストリームにおいて、第5量子化パラメータを第2量子化パラメータからの第2差分で示し、かつ、第6量子化パラメータを第3量子化パラメータからの第3差分で示すため、符号化効率を向上できる。
例えば、前記生成では、前記第2量子化パラメータを用いた量子化、および、前記第3量子化パラメータを用いた量子化において、前記第5量子化パラメータおよび前記第6量子化パラメータを用いて量子化した場合、前記第5量子化パラメータおよび前記第6量子化パラメータを用いて量子化したことを示す識別情報をさらに含むビットストリームを生成する。
これによれば、ビットストリームを取得した三次元データ復号装置は、識別情報を用いて第5量子化パラメータおよび第6量子化パラメータを用いて量子化したこと判定できるため、復号処理の処理負荷を低減することができる。
例えば、三次元データ符号化装置は、さらに、前記複数の三次元点それぞれの属性情報のうちの第2の色を示す第2輝度および第2色差について、第7量子化パラメータを用いて前記第2輝度を量子化し、かつ、第8量子化パラメータを用いて前記第2色差を量子化する。前記生成では、さらに、量子化された前記第2輝度、量子化された前記第2色差、前記第7量子化パラメータ、および、前記第7量子化パラメータと前記第8量子化パラメータとの第4差分をさらに含むビットストリームを生成する。
これによれば、ビットストリームにおいて、第8量子化パラメータを第7量子化パラメータからの第4差分で示すため、符号化効率を向上できる。また、三次元点の属性情報に2種類の色情報を含めることができる。
例えば、三次元データ符号化装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態に係る三次元データ復号装置は、図117に示す処理を行う。まず三次元データ復号装置は、ビットストリームを取得することで量子化された位置情報、量子化された第1輝度、量子化された第1色差、第1量子化パラメータ、第2量子化パラメータ、および、前記第2量子化パラメータと第3量子化パラメータとの第1差分を取得する(S5394)。三次元データ復号装置は、前記第1量子化パラメータを用いて前記量子化された位置情報を逆量子化することで、複数の三次元点の位置情報を算出する(S5395)。三次元データ復号装置は、前記第2量子化パラメータを用いて前記量子化された第1輝度を逆量子化することで、前記複数の三次元点の第1色を示す第1輝度および第1色差のうちの前記第1輝度を算出する(S5396)。三次元データ復号装置は、前記第2量子化パラメータおよび前記第1差分から得られる前記第3量子化パラメータを用いて前記量子化された第1色差を逆量子化することで、前記第1色差を算出する(S5397)。
このため、三次元データ復号装置は、三次元点の位置情報および属性情報を正しく復号できる。
例えば、前記取得では、前記ビットストリームを取得することでさらに量子化された反射率、および、第4量子化パラメータを取得する。三次元データ復号装置は、さらに、前記第4量子化パラメータを用いて前記量子化された反射率を逆量子化することで、前記複数の三次元点の反射率を算出する。
このため、三次元データ復号装置は、三次元点の反射率を正しく復号できる。
例えば、前記取得では、前記ビットストリームを取得することでさらに、前記第2量子化パラメータと第5量子化パラメータとの第2差分、および、前記第3量子化パラメータと第6量子化パラメータとの第3差分を取得する。前記第1輝度の算出では、前記量子化された第1輝度が、前記複数の三次元点が含まれる対象空間を分割した複数のサブ空間毎に当該サブ空間に含まれる1以上の三次元点の第1輝度が量子化された輝度である場合、前記第2量子化パラメータおよび前記第2差分から得られる前記第5量子化パラメータを用いて前記量子化された第1輝度を逆量子化することで、前記1以上の三次元点の前記第1輝度を算出する。前記第1色差の算出では、前記量子化された第1色差が、前記1以上の三次元点の第1色差が量子化された色差である場合、前記第3量子化パラメータおよび前記第3差分から得られる前記第6量子化パラメータを用いて前記量子化された第1色差を逆量子化することで、前記1以上の三次元点の前記第1色差を算出する。
例えば、前記取得では、前記ビットストリームを取得することでさらに、前記第5量子化パラメータおよび前記第6量子化パラメータを用いて量子化したことを示す識別情報を取得する。前記第1輝度の算出では、前記識別情報が前記第5量子化パラメータおよび前記第6量子化パラメータを用いて量子化したことを示す場合、前記量子化された第1輝度が、前記1以上の三次元点の前記第1輝度が量子化された輝度であると判定する。前記第1色差の算出では、前記識別情報が前記第5量子化パラメータおよび前記第6量子化パラメータを用いて量子化したことを示す場合、前記量子化された第1色差が、前記1以上の三次元点の前記第1色差が量子化された色差であると判定する。
これによれば、三次元データ復号装置は、識別情報を用いて第5量子化パラメータおよび第6量子化パラメータを用いて量子化したこと判定できるため、復号処理の処理負荷を低減することができる。
例えば、前記取得では、前記ビットストリームを取得することでさらに、量子化された第2輝度、量子化された第2色差、第7量子化パラメータ、および、前記第7量子化パラメータと第8量子化パラメータとの第4差分を取得する。三次元データ復号装置は、さらに、前記第7量子化パラメータを用いて前記量子化された第2輝度を逆量子化することで、前記複数の三次元点の第2色を示す第2輝度および第2色差のうちの前記第2輝度を算出する。また、三次元データ復号装置は、さらに、前記第7量子化パラメータおよび前記第4差分から得られる前記第8量子化パラメータを用いて前記量子化された第2色差を逆量子化することで、前記第2色差を算出する。
このため、三次元データ復号装置は、三次元点の第2の色を正しく復号できる。
例えば、三次元データ復号装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
(実施の形態12)
上記実施の形態8において説明した三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、および、三次元データ復号装置において、本実施の形態で説明する処理を行ってもよい。
図118は、実施の形態12に係る量子化パラメータの伝送方法の一例について説明するための図である。図118の(a)は、位置情報および属性情報のそれぞれにおいてQP値の基準値が設定されている例を示す。図118は、実施の形態8における図105と比較して、位置情報と同様に、属性情報にもQP値の基準値が設定されている点が主に異なる。つまり、第1の色、第2の色、および反射率を含む複数の属性情報のうちのいずれか1つの属性情報のQP値を基準値とし、その他の属性情報のQP値を共通の基準値からの差分情報として示す。
図118では、第1の色の輝度Y1の符号化に用いるQP値であるQY1は、第1の色、第2の色および反射率を含む複数の属性情報で共通の基準値として設定されている。また、第2の色の基準値であるQY2は、共通の基準値であるQY1と、QY1からの差分情報「5.」であるΔ(QY2,QY1)とを用いて導出される。反射率の基準値であるQRは、共通の基準値であるQY1と、QY1からの差分情報「8.」であるΔ(QR,QY1)とを用いて導出される。この場合、共通の基準値であるQY1は、第1の色に対応するAPSであるAPS1に含まれる。
また、第4の属性は、共通の基準値であるQY1とは、独立した基準値が設定されていてもよい。また、第5の属性は、QP値を有していなくてもよい。このように、複数の属性情報の量子化に用いる複数のQP値を導出するための共通の基準値が量子化に用いられる属性情報と、共通の基準値とは独立した基準値が量子化に用いられる属性情報とが混在してもよい。また、さらに、QP値が符号化に用いられない属性情報が混在してもよい。
なお、図118の例では第1の色の属性情報の量子化に用いるQP値が、複数の属性情報の量子化に用いるQP値を導出するための共通の基準値である例を説明したが、共通の基準値は、以下の規則に従って決定されてもよい。例えば、SPSなどの制御情報に全ての属性情報が記載される場合、全ての属性情報のうちSPSにおいて最初に示される属性情報に含まれるQP値を、共通の基準値として設定してもよい。あるいは、SPSなどの制御情報において、共通の基準値として設定されるQP値が量子化に用いられる属性情報が示されていてもよい。反対に、SPSなどの制御情報において、共通の基準値として設定されるQP値が量子化に用いられる属性情報が複数の属性情報の最初に示されていてもよい。いずれの方法を用いても、複数の属性情報のそれぞれの量子化に用いられる各QP値を、基準値と差分情報との組み合わせの情報で示すことで、符号化データの削減が期待できる。
なお、属性情報ごとの基準値QY1,QY2,QRをそれぞれ独立にAPSで示し、第1の色に属するQP値はQY1を基準値とし、第2の色に属するQP値はQY2を基準値とし、反射率に属するQP値はQRを基準値としてもよい。つまり、この場合、QY2およびQRは、QY1と同様に絶対値で示される。
第1の例は、複数の属性情報のメターデータをまとめて1つのAPSに記載する場合の属性情報のQP値を示す方法である。
図119は、APSのシンタックス、および、属性情報のヘッダのシンタックスの第1の例を示す図である。
まず、APSのシンタックス例について説明する。
aps_idxは、APSのインデックス番号を示す。aps_idxは、APSと属性情報のヘッダとの間の対応関係を示す。
sps_idxは、APSが対応するSPSのインデックス番号を示す。
num_of_attributeは、属性情報の数を示す。なお、属性情報ごとにAPSが設定される場合、num_of_attributeのフィールドまたはループはAPSに含まれていなくてもよい。
attribute_typeは、属性情報のタイプ、つまり、属性情報の種類を示す。なお、属性情報のタイプが対応するSPSに記載されている場合、attribute_typeの代わりに、SPSに記載されている属性情報のタイプを参照するための情報がAPSに含まれていてもよい。
図119において破線6701で囲まれているif文では、attribute_typeに応じたQP値が示される。例えば、属性情報のタイプが色である場合、絶対値で示される輝度(ルマ)のQP値が基準値として示され、色差(クロマ:Cb,Cr)のQP値が輝度のQP値との差分情報として示される。
一方、属性情報のタイプが反射率である場合、絶対値で示される反射率のQP値が示される。また、属性情報のタイプがその他の例としてQP値を有していない場合、QP値が示さない。
また、属性情報が2以上ある場合、属性情報の基準値(ここではQP_value_LumaあるいはQP_value)は、他の属性情報の基準値からの差分で示されてもよい。例えば、num_of_attributeのループにおいてi=0の場合に共通の属性情報の基準値が示され、i=>1の場合に共通の属性情報からの差分値が示されてもよい。
data_QP_delata_present_flagは、Data(スライス)ごとのQP値が属性情報のヘッダに存在するか否かを示すフラグである。当該フラグが1の場合、属性情報のヘッダにData(スライス)ごとのQP値が示される。
次に、属性情報のヘッダのシンタックス例について説明する。
属性情報のヘッダにもaps_idxが含まれている。これにより、APS、および、属性情報のヘッダに含まれる、aps_idxでAPSと属性情報のヘッダとの間の対応関係が示される。つまり、共通するaps_idxを有していることが、APSおよび属性情報のヘッダが互いに対応関係にあることを示す。
attribute_typeは、属性情報のタイプ(属性情報の種類)を示す。なお、属性情報のタイプが対応するAPSあるいはSPSに記載されている場合、attribute_typeの代わりに、APSあるいはSPSに記載されている属性情報のタイプを参照するための情報が属性情報のヘッダに含まれていてもよい。
破線6702で囲まれているif文における各フィールド、つまり、QP_delata_data_to_frame、QP_delta1_to_frameおよびQP_delta2_to_frameのそれぞれのQP値は、attribute_typeに対応するデータのQP値を示す。各QP値は、APSに記載の値からの差分情報を示す。
第2の例は、1つの属性情報のメターデータを独立に1つのAPSに記載する場合の属性情報のQP値を示す方法である。第2の例では、様々なタイプ(種類)の属性情報で共通のヘッダ構造とすることで、属性情報に応じたシンタックス構造の変化を回避する効果がある。
図120は、APSのシンタックスの第2の例を示す図である。図121は、属性情報のヘッダのシンタックスの第2の例を示す図である。
APSには、フレームのQP値の基準値および差分値が含まれる。また、APSのdata_QP_delta_present_flagが1の場合、属性情報のヘッダには、APSの基準値からの差分情報が含まれる。
ここで、QP値にかかわるフィールドは、属性情報のタイプが色、反射率、フレーム番号などのいずれであっても常に存在するものとする。APSは、属性情報のタイプに関わらず、N個(Nは2以上)のQP値が格納される第1の数のフィールドを有する。ここで、Nは、例えば、3である。
例えば、属性情報のタイプが色である場合、APSにおけるQP_valueには、ルマのQP値を示す情報が格納され、QP_delta1およびQP_delta2にはクロマのQP値を示す情報が格納される。例えば、QP_valueは、基準値であり、QP_delta1およびQP_delta2は、QP_valueを基準とする差分情報である。つまり、ルマのQP値は、QP_valueで示され、クロマのQP値は、QP_valueにQP_delta1を加算した値、および、QP_valueにQP_delta2を加算した値で示される。このように、APSには、対応する属性情報を量子化するための量子化パラメータの基準値が含まれる。
また、同様に、属性情報のヘッダにおけるQP_delata_data_to_frameにはルマのQP値の、対応するAPSのQP_valueからの差分情報が格納される。また、QP_delta1_to_frameおよびQP_delta2_to_frameにはクロマのQP値の、対応するAPSのQP_delta1およびQP_delta2からの差分情報が格納されてもよい。
また、例えば、属性情報のタイプが反射率である場合は、APSにおけるQP_valueには反射率のQP値を示す情報が格納され、QP_delta1およびQP_delta2には常に0または無効であることを示す情報が格納されてもよい。また、、同様に、属性情報のヘッダにおけるQP_delata_data_to_frameには反射率のQP値を示す情報が格納され、QP_delta1_to_frameおよびQP_delta2_to_frameには常に0または無効であることを示す情報が格納されてもよい。この場合、三次元データ復号装置は、0または無効であることを示す情報が格納されている、QP_delta1およびQP_delta2、並びに、QP_delta1_to_frameおよびQP_delta2_to_frameに格納されている情報を、当該情報に関わらずに、復号に用いず無視してもよい。
また、例えば、属性情報のタイプがその他の例としてQP値を有していない場合、APSにおけるすべてのフィールドには、0または無効であることを示す情報が格納されてもよい。この場合、さらにdata_AP_delta_present_flagは、0とされてもよい。この場合、三次元データ復号装置は、0または無効であることを示す情報が格納されている、QP_delta1およびQP_delta2、並びに、QP_delta1_to_frameおよびQP_delta2_to_frameに格納されている情報を、当該情報に関わらずに、復号に用いず無視してもよい。このように、三次元データ復号装置は、複数の属性情報のヘッダのうちの特定の種類の属性に対応する特定の属性情報のヘッダにおける複数のフィールドのうちの特定のフィールドに格納されるパラメータを無視してもよい。
このような構成の場合、属性情報のタイプが異なる場合でも、共通するシンタックス構造で、QP値を基準値と差分情報との組み合わせで示すことができるため、符号化率の向上が期待できる。
なお、1つの位置情報に対応する属性情報が2以上の色情報を有する場合、共通のQP基準値とその差分情報で示し、反射率のQP基準値は独立にAPSで示すなど、属性情報のタイプに応じて示し方を変えてもよい。
実施の形態8および本実施の形態で説明した方法に限らず、さらに基準値を、基準値と差分情報とに分けてシグナリングしてもよいし、差分情報を独立に基準値としてシグナリングしてもよい。例えば、独立した復号を必要とする単位の場合には、少なくとも1つの基準値を送出し、独立した復号を必要としない単位の場合には差分情報を送出するなど、データの特性に応じて適応的に基準値および差分情報の組み合わせを変化させてもよい。これにより機能向上と符号量削減の両方の効果を期待できる。
あるいは、基準値と差分情報との組み合わせの情報量を計算し、計算結果に基づき、例えば計算結果が最小となるような基準値と差分情報との組み合わせを生成し、送出してもよい。適応的に切り替える場合には、基準値を示すフィールドと差分情報を示すフィールドとの意味(セマンティクス)を適応的に変化させてもよい。例えば上記のようなルールに従い各フィールドを無効にするか否かなどのように各フィールドの意味を変えてもよいし、各フィールドの意味を切り替えることを示すフラグを追加してもよい。また、基準値の参照先を適応的に変えてもよい。その場合は、参照先が変わったことを示すフラグや参照先を特定するためのIdなどが示されてもよい。
次に、SPSに記載される属性情報と、APS、および、Attribute_header(属性情報のヘッダ)の関係を、attribute_component_idを用いて示す方法について図122を用いて説明する。図122は、SPS、APSおよび属性情報のヘッダの関係を示す図である。なお、図122において矢印の先は、参照先を示す。
SPSには、複数の属性情報のタイプに関する情報が含まれる。このように、SPSは、複数の属性情報に対応し、それぞれが互いに異なる属性情報の種類を示す複数のattribute_typeを含んでいてもよい。また、SPSは、属性情報のタイプ毎に、属性情報のタイプを識別するための番号を示すattribute_component_idを含む。なお、SPSは、制御情報の一例である。attribute_typeは、種類情報の一例である。SPSに含まれるattribute_component_idは、複数の種類情報のいずれかに対応付けられていることを示す第1識別情報の一例である。
APSまたはAttribute_headerは、SPSに含まれるattribute_component_idに対応するattribute_component_idを含む。なお、APSは、第2属性制御情報の一例である。Attribute_headerは、第1属性制御情報の一例である。APSに含まれるattribute_component_idは、複数の種類情報のいずれかに対応付けられていることを示す第2識別情報の一例である。
三次元データ復号装置は、APSまたはAttribute_headerに含まれるsps_idxで示されるSPSを参照する。そして、三次元データ復号装置は、参照したSPSにおいて、当該APSまたは当該Attribute_headerに含まれるattribute_component_idに対応する属性情報のタイプを、当該APSまたは当該Attribute_headerに含まれる情報が対応する属性情報のタイプとして取得する。なお、1つのAPSは、属性情報のタイプの1つに対応する。また、1つの属性情報のヘッダは、属性情報のタイプの1つに対応する。複数のAPSのそれぞれは、1以上の属性情報のヘッダが対応している。つまり、1つのAPSには、他のAPSに対応している1以上の属性情報のヘッダとは異なる1以上の属性情報のヘッダが対応している。
例えば、attribute_component_id=0の場合、三次元データ復号装置は、SPSの中から同一の、つまり、値が0のattribute_component_idに対応する属性情報(attribute_typeなど)を取得することができる。
なお、SPSには、attribute_component_idの代わりに、SPSに記載される属性情報の順序が用いられてもよい。つまり、複数の属性情報の種類を示す種類情報は、SPSにおいて、所定の順序で格納(記述)されていてもよい。この場合、APSまたはAttribute_headerに含まれるattribute_component_idは、attribute_component_idを含むAPSまたはAttribute_headerが所定の順序のうちの一つの順番の種類情報に対応付けられていることを示す。
あるいは、APSまたは属性情報の送出順をSPSに記載される属性情報の順序と一致させることで、三次元データ復号装置は、APSまたは属性情報の到着順を導出し、到着順に対応する属性情報を参照するとしてもよい。また、点群データが、APSまたはAttribute_headerがフレーム毎にあったりなかったりする属性情報と、APSまたはAttribute_headerがフレーム毎に常に存在する属性情報とを含む場合、フレーム毎に常に存在する属性情報の順番を先にし、時々存在しない可能性のある属性情報の順番を後に送出してもよい。
なお、図118および図122では、1つのフレームにおいて、複数の属性情報にそれぞれが対応する複数のAPSが示されているが、複数のAPSの代わりに1つのAPSが用いられてもよい。つまり、この場合の1つのAPSは、複数の属性情報に対応する属性情報に関する情報を含む。
また、aps_idxは、フレーム番号に相当するシーケンス番号を含んでいてもよい。これにより、APSとAttribute_headerとの対応関係が示されてもよい。なお、aps_idxは、attirubte_component_idの機能を有してもよい。この方法により、1以上の種類のAPSまたは属性情報に関わる、シーケンス全体の情報をSPSに格納し、各APSまたは各Attribute_headerから参照することが可能となる。
なお、APSまたはAttribute_headerの属性情報の種類(attribute_type)を判定する方法として、APSまたはAttribute_headerに直接attribute_typeが含まれてよいし、NALユニットの種類としてNALユニットヘッダにattribute_typeが含まれてもよい。
いずれの方法を用いてもAPSまたはAttribute_hedaerの属性情報の取得や属性の種類を判定することが可能となる。
以上のように、本実施の形態に係る三次元データ符号化装置は、図123に示す処理を行う。まず、三次元データ符号化装置は、パラメータを用いて複数の三次元点のそれぞれが有する複数の属性情報を符号化する(S6701)。三次元データ符号化装置は、符号化された前記複数の属性情報、制御情報、および、複数の第1属性制御情報を含むビットストリームを生成する(S6702)。前記制御情報は、前記複数の属性情報に対応し、それぞれが互いに異なる属性情報の種類を示す複数の種類情報を含む。また、前記複数の第1属性制御情報は、前記複数の属性情報にそれぞれ対応する。前記複数の第1属性制御情報のそれぞれは、前記複数の種類情報のいずれかに対応付けられていることを示す第1識別情報を含む。
これによれば、第1属性制御情報が対応している属性情報の種類を特定するための第1識別情報を含むビットストリームを生成するため、当該ビットストリームを受信した三次元データ復号装置は、三次元点の属性情報を正しくかつ効率よく復号することができる。
例えば、前記複数の種類情報は、前記制御情報において、所定の順序で格納されている。前記第1識別情報は、当該第1識別情報を含む第1属性制御情報が前記所定の順序のうちの一つの順番の種類情報に対応付けられていることを示す。
これによれば、種類情報を示す情報を付加しなくても種類情報が所定の順序で示されるため、ビットストリームのデータ量を削減することができ、ビットストリームの伝送量を削減することができる。
例えば、前記ビットストリームは、さらに、前記複数の属性情報に対応する複数の第2属性制御情報を含む。前記複数の第2属性制御情報のそれぞれは、対応する第1属性情報の符号化に用いられるパラメータの基準値を含む。
これによれば、複数の第2属性制御情報のそれぞれは、パラメータの基準値を含むため、基準値を用いて、当該第2属性制御情報が対応する属性情報を符号化することができる。また、ビットストリームを受信した三次元データ復号装置は、第2識別情報を用いて、第2属性情報の種類を特定することができるため、三次元点の属性情報を正しくかつ効率よく復号することができる。
例えば、前記第1属性制御情報は、前記パラメータの前記基準値からの差分である差分情報を含む。このため、符号化効率を向上できる。
例えば、前記ビットストリームは、さらに、前記複数の属性情報に対応する複数の第2属性制御情報を含む。前記複数の第2属性制御情報のそれぞれは、前記複数の種類情報のいずれかに対応付けられていることを示す第2識別情報を有する。
これによれば、第2属性制御情報が対応している属性情報の種類を特定するための第2識別情報を含むビットストリームを生成するため、三次元点の属性情報を正しくかつ効率よく復号することができるビットストリームを生成することができる。
例えば、前記複数の第1属性制御情報のそれぞれは、N個(Nは2以上)のパラメータが格納される前記N個のフィールドを有する。前記複数の第1属性制御情報のうちの特定の種類の属性に対応する特定の第1属性制御情報では、前記第1の数のフィールドの一つのフィールドは、無効であることを示す値を含む。
このため、ビットストリームを受信した三次元データ復号装置は、第1識別情報を用いて、第1属性情報の種類を特定し、特定の第1属性制御情報の場合に復号処理を省くことができるため、三次元点の属性情報を正しくかつ効率よく復号することができる。
例えば、前記符号化では、前記パラメータとしての量子化パラメータを用いて前記複数の属性情報を量子化する。
これによれば、パラメータを基準値からの差分を用いて表すため、量子化にかかる符号化効率を向上できる。
例えば、三次元データ符号化装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態に係る三次元データ復号装置は、図124に示す処理を行う。まず、三次元データ復号装置は、ビットストリームを取得することで符号化された複数の属性情報、および、パラメータを取得する(S6711)。三次元データ復号装置は、前記パラメータを用いて前記符号化された複数の属性情報を復号することで、複数の三次元点のそれぞれが有する複数の属性情報を復号する(S6712)。前記ビットストリームは、制御情報および複数の第1属性制御情報を含む。前記制御情報は、前記複数の属性情報に対応し、それぞれが互いに異なる属性情報の種類を示す複数の種類情報を含む。前記複数の第1属性制御情報は、前記複数の属性情報にそれぞれ対応する。前記複数の第1属性制御情報のそれぞれは、前記複数の種類情報のいずれかに対応付けられていることを示す第1識別情報を含む。
これによれば、三次元データ復号装置は、第1識別情報を用いて、第1属性制御情報が対応している属性情報の種類を特定することができるため、三次元点の属性情報を正しくかつ効率よく復号することができる。
例えば、前記複数の種類情報は、前記制御情報において、所定の順序で格納されている。前記第1識別情報は、当該第1識別情報を含む第1属性制御情報が前記所定の順序のうちの一つの順番の種類情報に対応付けられていることを示す。
これによれば、種類情報を示す情報を付加しなくても種類情報が所定の順序で示されるため、ビットストリームのデータ量を削減することができ、ビットストリームの伝送量を削減することができる。
例えば、前記ビットストリームは、さらに、前記複数の属性情報に対応する複数の第2属性制御情報を含む。前記複数の第2属性制御情報のそれぞれは、対応する属性情報の符号化に用いられるパラメータの基準値を含む。
これによれば、三次元データ復号装置は、第基準値を用いて第2属性制御情報が対応する属性情報を復号することができるため、三次元点の属性情報を正しくかつ効率よく復号することができる。
例えば、前記第1属性制御情報は、前記パラメータの前記基準値からの差分である差分情報を含む。これによれば、基準値および差分情報を用いて属性情報を復号できるため、三次元点の属性情報を正しくかつ効率よく復号することができる。
例えば、前記ビットストリームは、さらに、前記複数の属性情報に対応する複数の第2属性制御情報を含む。前記複数の第2属性制御情報のそれぞれは、前記複数の種類情報のいずれかに対応付けられていることを示す第2識別情報を有する。これによれば、第2識別情報を用いて、第2属性制御情報が対応している属性情報の種類を特定することができるため、三次元点の属性情報を正しくかつ効率よく復号することができる。
例えば、前記複数の第1属性制御情報のそれぞれは、複数のパラメータが格納される複数のフィールドを有する。前記復号では、前記複数の第1属性制御情報のうちの特定の種類の属性に対応する特定の第1属性制御情報の前記複数のフィールドのうちの特定のフィールドに格納されるパラメータを無視する。
これによれば、三次元データ復号装置は、第1識別情報を用いて、第1属性情報の種類を特定し、特定の第1属性制御情報の場合に復号処理を省くことができるため、三次元点の属性情報を正しくかつ効率よく復号することができる。
例えば、前記復号では、前記パラメータとしての量子化パラメータを用いて前記符号化された複数の属性情報を逆量子化する。
これによれば、三次元点の属性情報を正しく復号することができる。
例えば、三次元データ復号装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
(実施の形態13)
高圧縮を実現するために、PCC(Point Cloud Compression)データに含まれる属性情報は、Lifting、RAHT(Region Adaptive Hierarchical Transform)又はその他の変換手法等の複数の手法を用いて変換される。ここで、Liftingとは、LoD(Level of Detail)を用いた変換方法の一つである。
重要な信号情報は低周波成分に含まれる傾向があるため、高周波成分を量子化することで符号量が削減される。つまり、変換処理は強いエネルギー圧縮特性を有する。また、量子化パラメータの大きさに応じて、量子化により精度が失われる。
図125は、本実施の形態に係る三次元データ符号化装置の構成を示すブロック図である。この三次元データ符号化装置は、減算部7001と、変換部7002と、変換行列保持部7003と、量子化部7004と、量子化制御部7005と、エントロピー符号化部7006とを備える。
減算部7001は、入力データと参照データとの差分である係数値を算出する。例えば、入力データとは点群データに含まれる属性情報であり、参照データとの属性情報の予測値である。
変換部7002は係数値に変換処理を行う。例えば、この変換処理は、複数の属性情報をLoDに分類する処理である。なお、この変換処理はHaar変換等であってもよい。変換行列保持部7003は、変換部7002による変換処理に用いられる変換行列を保持する。例えば、この変換行列はHaar変換行列である。なお、ここでは、三次元データ符号化装置は、LoDを用いた変換処理と、Haar変換等の変換処理との両方を行う機能を有する例を示すが、いずれか一方の機能を有してもよい。また、三次元データ符号化装置は、これらの2種類の変換処理を選択的に用いてもよい。また、三次元データ符号化装置は、所定の処理単位毎に、使用する変換処理を切り替えてもよい。
量子化部7004は、係数値を量子化することで量子化値を生成する。量子化制御部7005は、量子化部7004が量子化に用いる量子化パラメータを制御する。例えば、量子化制御部7005は、符号化の階層構造に合わせて量子化パラメータ(または、量子化ステップ)を切替えてもよい。これにより、階層構造毎に適切な量子化パラメータを選択することで階層毎に発生符号量を制御できる。また、量子化制御部7005は、例えば主観画質に影響が少ない周波数成分を含むある階層以下の量子化パラメータを最大値に設定し、その階層以下の量子化係数を0にする。これにより、主観画質の劣化を抑制しつつ、発生符号量削減できる。また、量子化制御部7005は、主観画質と発生符号量をより細かく制御できる。ここで、階層とは、LoD又はRAHT(Haar変換)における階層(木構造における深さ)である。
エントロピー符号化部7006は、量子化係数をエントロピー符号化(例えば算術符号化)することでビットストリームを生成する。また、エントロピー符号化部7006は、量子化制御部7005で設定された階層毎の量子化パラメータを符号化する。
図126は、本実施の形態に係る三次元データ復号装置の構成を示すブロック図である。この三次元データ復号装置は、エントロピー復号部7011と、逆量子化部7012と、量子化制御部7013と、逆変換部7014と、変換行列保持部7015と、加算部7016とを備える。
エントロピー復号部7011は、ビットストリームから量子化係数と、階層毎の量子化パラメータとを復号する。逆量子化部7012は、量子化係数を逆量子化することで係数値を生成する。量子化制御部7013は、エントロピー復号部7011で得られた階層号の量子化パラメータに基づき、逆量子化部7012が逆量子化に用いる量子化パラメータを制御する。
逆変換部7014は、係数値を逆変換する。例えば、逆変換部7014は、係数値を逆Haar変換する。変換行列保持部7015は、逆変換部7014による逆変換処理に用いられる変換行列を保持する。例えば、この変換行列は逆Haar変換行列である。
加算部7016は、係数値に参照データを加算することで出力データを生成する。例えば、出力データとは点群データに含まれる属性情報であり、参照データとの属性情報の予測値である。
次に、階層毎の量子化パラメータの設定の例を説明する。Predicting/Lifting等の属性情報の符号化において、LoDの階層に基づいて異なる量子化パラメータを適用する。例えば、低層の量子化パラメータを小さくし、低層の精度を上げる。これにより、高層の予測精度を向上できる。また、高層に対しては量子化パラメータを大きくすることでデータ量を削減できる。このように、ユーザの使用方針に応じて、LoD毎に個別に量子化ツリー値(Qt)を設定できる。ここで、量子化ツリー値とは、例えば、量子化パラメータである。
図127は、LoDの設定例を示す図である。例えば、図127に示すようにLoD0~LoD2に対して独立したQt0~Qt2が設定される。
また、RAHTを用いた属性情報の符号化では、木構造の深さに基づいて異なる量子化パラメータを適用する。例えば、低層の量子化パラメータを小さくし、低層の精度を上げる。これにより、高層の予測精度を向上できる。また、高層に対しては量子化パラメータを大きくすることでデータ量を削減できる。このように、ユーザの使用方針に応じて、木構造の深さ毎に個別に量子化ツリー値(Qt)を設定できる。
図128は、RAHTの階層構造(木構造)の例を示す図である。例えば、図128に示すように木構造の深さ毎に独立したQt0~Qt2が設定される。
以下、本実施の形態に係る三次元データ符号化装置の構成を説明する。図129は、本実施の形態に係る三次元データ符号化装置7020の構成を示すブロック図である。三次元データ符号化装置7020は、点群データ(ポイントクラウド)を符号化することで符号化データ(符号化ストリーム)を生成する。この三次元データ符号化装置7020は、分割部7021と、複数の位置情報符号化部7022と、複数の属性情報符号化部7023と、付加情報符号化部7024と、多重化部7025とを含む。
分割部7021は、点群データを分割することで複数の分割データを生成する。具体的には、分割部7021は、点群データの空間を複数のサブ空間に分割することで複数の分割データを生成する。ここでサブ空間とは、タイル及びスライスの一方、又はタイル及びスライスの組み合わせである。より具体的には、点群データは、位置情報、属性情報(色又は反射率等)、及び付加情報を含む。分割部7021は、位置情報を分割することで複数の分割位置情報を生成し、属性情報を分割することで複数の分割属性情報を生成する。また、分割部7021は、分割に関する付加情報を生成する。
例えば、分割部7021は、まず、点群をタイルに分割する。次に、分割部7021は、得られたタイルを、さらにスライスに分割する。
複数の位置情報符号化部7022は、複数の分割位置情報を符号化することで複数の符号化位置情報を生成する。例えば、位置情報符号化部7022は、8分木等のN分木構造を用いて分割位置情報を符号化する。具体的には、8分木では、対象空間が8個のノード(サブ空間)に分割され、各ノードに点群が含まれるか否かを示す8ビットの情報(オキュパンシー符号)が生成される。また、点群が含まれるノードは、さらに、8個のノードに分割され、当該8個のノードの各々に点群が含まれるか否かを示す8ビットの情報が生成される。この処理が、予め定められた階層又はノードに含まれる点群の数の閾値以下になるまで繰り返される。例えば、複数の位置情報符号化部7022は、複数の分割位置情報を並列処理する。
属性情報符号化部7023は、位置情報符号化部7022で生成された構成情報を用いて属性情報を符号化することで符号化データである符号化属性情報を生成する。例えば、属性情報符号化部7023は、位置情報符号化部7022で生成された8分木構造に基づき、処理対象の対象点(対象ノード)の符号化において参照する参照点(参照ノード)を決定する。例えば、属性情報符号化部7023は、周辺ノード又は隣接ノードのうち、8分木における親ノードが対象ノードと同一のノードを参照する。なお、参照関係の決定方法はこれに限らない。
また、位置情報又は属性情報の符号化処理は、量子化処理、予測処理、及び算術符号化処理のうち少なくとも一つを含んでもよい。この場合、参照とは、属性情報の予測値の算出に参照ノードを用いること、又は、符号化のパラメータの決定に参照ノードの状態(例えば、参照ノードに点群が含まれる否かを示す占有情報)を用いること、である。例えば、符号化のパラメータとは、量子化処理における量子化パラメータ、又は算術符号化におけるコンテキスト等である。
付加情報符号化部7024は、点群データに含まれる付加情報と、分割部7021で分割時に生成された、データ分割に関する付加情報とを符号化することで符号化付加情報を生成する。
多重化部7025は、複数の符号化位置情報、複数の符号化属性情報及び符号化付加情報を多重化することで符号化データ(符号化ストリーム)を生成し、生成した符号化データを送出する。また、符号化付加情報は復号時に使用される。
図130は、分割部7021のブロック図である。分割部7021は、タイル分割部7031と、スライス分割部7032とを含む。
タイル分割部7031は、位置情報(Position(Geometry))をタイルに分割することで複数のタイル位置情報を生成する。また、タイル分割部7031は、属性情報(Attribute)をタイルに分割することで複数のタイル属性情報を生成する。また、タイル分割部7031は、タイル分割に係る情報、及びタイル分割において生成された情報を含むタイル付加情報(Tile MetaData)を出力する。
スライス分割部7032は、複数のタイル位置情報をスライスに分割することで複数の分割位置情報(複数のスライス位置情報)を生成する。また、スライス分割部7032は、複数のタイル属性情報をスライスに分割することで複数の分割属性情報(複数のスライス属性情報)を生成する。また、スライス分割部7032は、スライス分割に係る情報、及びスライス分割において生成された情報を含むスライス付加情報(Slice MetaData)を出力する。
また、タイル分割部7031及びスライス分割部7032は、生成した付加情報に基づき量子化ツリー値(量子化パラメータ)を決定する。
図131は、属性情報符号化部7023のブロック図である。属性情報符号化部7023は、変換部7035と、量子化部7036と、エントロピー符号化部7037とを含む。
変換部7035は、分割属性情報をLoD等の階層に分類し、分割属性情報と予測値との差分を算出することで係数値(差分値)を生成する。なお、変換部7035は、分割属性情報にHaar変換を行うことで係数値を生成してもよい。
量子化部7036は、係数値を量子化することで量子化値を生成する。具体的には、量子化部7036は、量子化パラメータに基づく量子化ステップで係数を除算する。エントロピー符号化部7037は、量子化値をエントロピー符号化することで符号化属性情報を生成する。
以下、本実施の形態に係る三次元データ復号装置の構成を説明する。図132は、三次元データ復号装置7040の構成を示すブロック図である。三次元データ復号装置7040は、点群データが符号化されることで生成された符号化データ(符号化ストリーム)を復号することで点群データを復元する。この三次元データ復号装置7040は、逆多重化部7041と、複数の位置情報復号部7042と、複数の属性情報復号部7043と、付加情報復号部7044と、結合部7045とを含む。
逆多重化部7041は、符号化データ(符号化ストリーム)を逆多重化することで複数の符号化位置情報、複数の符号化属性情報及び符号化付加情報を生成する。
複数の位置情報復号部7042は、複数の符号化位置情報を復号することで複数の分割位置情報を生成する。例えば、複数の位置情報復号部7042は、複数の符号化位置情報を並列処理する。
複数の属性情報復号部7043は、複数の符号化属性情報を復号することで複数の分割属性情報を生成する。例えば、複数の属性情報復号部7043は、複数の符号化属性情報を並列処理する。
複数の付加情報復号部7044は、符号化付加情報を復号することで付加情報を生成する。
結合部7045は、付加情報を用いて複数の分割位置情報を結合することで位置情報を生成する。結合部7045は、付加情報を用いて複数の分割属性情報を結合することで属性情報を生成する。
図133は、属性情報復号部7043のブロック図である。属性情報復号部7043は、エントロピー復号部7051と、逆量子化部7052と、逆変換部7053とを含む。エントロピー復号部7051は、符号化属性情報をエントロピー復号することで量子化値を生成する。逆量子化部7052は、量子化値を逆量子化することで係数値を生成する。具体的には、ビットストリームから取得された量子化ツリー値(量子化パラメータ)に基づく量子化ステップを係数値に乗算する。逆変換部7053は、係数値を逆変換することで分割属性情報を生成する。ここで、逆変換とは、例えば、係数値に予測値を加算する処理である。または、逆変換とは、逆Haar変換である。
以下、量子化パラメータの決定方法の例を説明する。図134は、タイル及びスライス分割における量子化パラメータの設定例を示す図である。
量子化パラメータの値が小さいと、元の情報が維持されやすい。例えば、量子化パラメータの既定値は1である。例えば、PCCデータのタイルを用いた符号化処理では、主要道路のタイルの量子化パラメータは、データ品質を維持するために小さい値に設定される。一方、周囲領域のタイルの量子化パラメータは、大きい値に設定される。これにより、周辺領域のデータ品質は低下するが、符号化効率を向上できる。
同様に、PCCデータのスライスを用いた符号化処理では、歩道、木、及び建物は、自己位置推定及びマッピングにおいて重要であり、歩道、木、及び建物のスライスの量子化パラメータは、小さい値に設定される。一方、移動体及びその他のデータの重要性が低いので、移動体及びその他のデータのスライスの量子化パラメータは高く設定される。
また、後述するΔQP(DeltaQP)を用いる場合には、三次元データ符号化装置は、主要道路など、重要なエリアに属する三次元点の符号化において、量子化パラメータを小さくするためにΔQPの値に負の値を設定して量子化誤差が小さくなるように符号化を行ってもよい。これにより、重要なエリアに属する三次元点の復号後の属性値を符号化前の値に近づけることができる。また、三次元データ符号化装置は、周辺領域など、重要でないエリアに属する三次元点の符号化時には、量子化パラメータを大きくするためにΔQPの値に正の値を設定して情報量を削減してもよい。これにより、重要なエリアの情報量をキープしつつ、全体の符号量を削減できる。
以下、階層毎の量子化パラメータを示す情報の例を説明する。三次元点の属性情報を量子化して符号化する場合に、フレーム、スライス又はタイル等に対する量子化パラメータQPbaseに加え、より細かい単位で量子化パラメータを制御する仕組みを導入する。例えば、三次元データ符号化装置は、属性情報をLoDを用いて符号化する場合、LoD毎にDelta_Layerを設け、LoD毎にQPbaseの値にDelta_Layerを加算することで量子化パラメータの値を変えながら符号化を行う。また、三次元データ符号化装置は、符号化に用いたDelta_Layerをビットストリームのヘッダ等に付加する。これにより、三次元データ符号化装置は、例えば目標符号量と発生符号量とに応じてLoD毎の量子化パラメータを変えながら三次元点の属性情報を符号化できるので、最終的に目標符号量に近い符号量のビットストリームを生成できる。また、三次元データ復号装置は、ヘッダに含まれるQPbase及びDelta_Layerを復号して三次元データ符号化装置が使用した量子化パラメータを生成することで、ビットストリームを適切に復号できる。
図135は、全ての三次元点の属性情報を量子化パラメータQPbaseを用いて符号化する場合の例を示す図である。図136は、LoDの階層毎に量子化パラメータを切替えて符号化を行う場合の例を示す図である。図136に示す例では、先頭のLoDの量子化パラメータは、QPbaseに、先頭のLoDのDelta_Layerを加算することで算出される。2番目以降のLoDでは、処理対象のLoDの量子化パラメータは、直前のLoDの量子化パラメータに処理対象のLoDのDelta_Layerを加算することで算出される。例えば、LoD3の先頭の量子化パラメータQP3は、QP3=QP2+Delta_Layer[3]で算出される。
なお、各LoDのDelta_Layer[i]はQPbaseからの差分値を示してもよい。つまり、i番目のLoDiの量子化パラメータQPiは、QPi=QPbase+Delta_Layer[i]で表される。例えば、QP1=QPbase+Delta_Layer[1]で表され、QP2=QPbase+Delta_Layer[2]で表される。
図137は、属性情報ヘッダ(Attribute header information)のシンタックス例を示す図である。ここで属性情報ヘッダとは、例えば、フレーム、スライス又はタイル単位のヘッダであり、属性情報のヘッダである。図137に示すように、属性情報ヘッダは、QPbase(基準量子化パラメータ)と、NumLayer(階層数)と、Delta_Layer[i](差分量子化パラメータ)とを含む。
QPbaseは、フレーム、スライス又はタイル等において基準となる量子化パラメータの値を示す。NumLayerは、LoD又はRAHTの階層数を示す。言い換えると、NumLayerは、属性情報ヘッダに含まれるDelta_Layer[i]の数を示す。
Delta_Layer[i]は、階層iのΔQPの値を示す。ここでΔQPは、階層i-1の量子化パラメータから階層iの量子化パラメータを減算した値である。なお、ΔQPは、QPbaseから階層iの量子化パラメータを減算した値であってもよい。また、ΔQPは、正又は負の値をとり得る。なお、Delta_Layer[0]をヘッダに付加しなくてもよい。この場合、階層0の量子化パラメータはQPbaseに等しい。これによりヘッダ符号量を削減できる。
図138は、属性情報ヘッダ(Attribute header information)の別のシンタックス例を示す図である。図138に示す属性情報ヘッダは、図137に示す属性情報ヘッダに対して、さらに、delta_Layer_present_flagを含む。
delta_Layer_present_flagは、Delta_Layerがビットストリームに含まれるか否かを示すフラグである。例えば、値1は、Delta_Layerがビットストリームに含まれることを示し、値0は、Delta_Layerがビットストリームに含まれないことを示す。delta_Layer_present_flagが0の場合、三次元データ復号装置は、例えば、Delta_Layerを0として以降の復号処理を行う。
なお、ここでは、QPbase及びDelta_Layerにより量子化パラメータが示される例を述べたが、QPbase及びDelta_Layerにより量子化ステップが示されてもよい。量子化ステップは、量子化パラメータから、予め定められた式又はテーブル等を用いて算出される。三次元データ符号化装置は、量子化処理において係数値を量子化ステップで除算する。三次元データ復号装置は、逆量子化処理において量子化値に量子化ステップを乗算することで係数値を復元する。
次に、更に細かい単位で量子化パラメータを制御する例を説明する。図139は、LoDよりも細かい単位で量子化パラメータを制御する例を示す図である。
例えば、三次元データ符号化装置は、属性情報をLoDを用いて符号化する場合、LoD階層毎のDelta_Layerに加え、ADelta_QPと、ADelta_QPを加算する三次元点の位置情報を表すNumPointADeltaとを定義する。三次元データ符号化装置は、Delta_Layer、ADelta_QP及びNumPointADeltaに基づき量子化パラメータの値を変更しながら符号化を行う。
また、三次元データ符号化装置は、符号化に用いたADelta及びNumPointADeltaをビットストリームのヘッダ等に付加してもよい。これにより、三次元データ符号化装置は、例えば、目標符号量と発生符号量とに応じて三次元点毎の量子化パラメータを変更しながら複数の三次元点の属性情報を符号化できる。これにより、三次元データ符号化装置は、最終的に目標符号量に近い符号量のビットストリームを生成できる。また、三次元データ復号装置は、ヘッダに含まれるQPbase、Delta_Layer、及びADeltaを復号して三次元データ符号化装置が使用した量子化パラメータを生成することで、ビットストリームを適切に復号できる。
例えば、図139に示すように、N0番目の属性情報の量子化値QP4は、QP4=QP3+ADelta_QP[0]で算出される。
また、図139に示す符号化/復号順とは逆の符号化/復号順が用いられてもよい。例えばLoD3、LoD2、LoD1、LoD0の順に符号化/復号が行われてもよい。
図140は、図139に示す例を用いる場合の属性情報ヘッダ(Attribute header information)のシンタックス例を示す図である。図140に示す属性情報ヘッダは、図137に示す属性情報ヘッダに対して、さらに、NumADeltaと、NumPointADelta[i]と、ADelta_QP[i]とを含む。
NumADeltaは、ビットストリームに含まれるADelta_QPの数を示す。NumPointADelta[i]は、ADelta_QP[i]を適用する三次元点Aの識別番号を示す。例えば、NumPointADelta[i]は、符号化/復号順で先頭の三次元点から三次元点Aまでの三次元点の個数を示す。また、NumPointADelta[i]は、三次元点Aが属するLoD内の最初の三次元点から三次元点Aまでの三次元点の個数を示してもよい。
または、NumPointADelta[i]は、NumPointADelta[i-1]で示される三次元点の識別番号と、三次元点Aの識別番号との差分値を示してもよい。これにより、NumPointADelta[i]の値を小さくできるので、符号量を削減できる。
ADelta_QP[i]は、NumPointADelta[i]で示される三次元点のΔQPの値を示す。つまり、ADelta_QP[i]は、NumPointADelta[i]で示される三次元点の量子化パラメータと、当該三次元点の直前の三次元点の量子化パラメータとの差分を示す。
図141は、図139に示す例を用いる場合の属性情報ヘッダ(Attribute header information)の別のシンタックス例を示す図である。図141に示す属性情報ヘッダは、図140に示す属性情報ヘッダに対して、さらに、delta_Layer_present_flagと、additional_delta_QP_present_flagとを含み、NumADeltaの代わりにNumADelta_minus1を含む。
delta_Layer_present_flagは、図138を用いて既に説明したものと同様である。
additional_delta_QP_present_flagは、ADelta_QPがビットストリームに含まれるか否かを示すフラグである。例えば、値1は、ADelta_QPがビットストリームに含まれることを示し、値0は、ADelta_QPがビットストリームに含まれないことを示す。additional_delta_QP_present_flagが0の場合、三次元データ復号装置は、例えば、ADelta_QPを0として以降の復号処理を行う。
NumADelta_minus1は、ビットストリームに含まれるADelta_QPの数-1を示す。このように、ADelta_QPの数から1を減算した値をヘッダに付加することでヘッダの符号量を削減できる。例えば、三次元データ復号装置は、NumADelta=NumADelta_minus1+1を算出する。ADelta_QP[i]は、i番目のADelta_QPの値を示す。なお、ADelta_QP[i]は、正の値だけでなく、負の値も設定可能であってもよい。
図142は、本実施の形態に係る三次元データ符号化処理のフローチャートである。まず、三次元データ符号化装置は、位置情報(geometry)を符号化する(S7001)。例えば、三次元データ符号化装置は、8分木表現を用いて符号化を行う。
次に、三次元データ符号化装置は、属性情報を変換する(S7002)。例えば、三次元データ符号化装置は、位置情報の符号化後に、量子化等によって三次元点の位置が変化した場合に、変化後の三次元点に元の三次元点の属性情報を再割当てする。なお、三次元データ符号化装置は、位置の変化量に応じて属性情報の値を補間して再割当てを行ってもよい。例えば、三次元データ符号化装置は、変化後の三次元位置に近い変化前の三次元点をN個検出し、N個の三次元点の属性情報の値を、変化後の三次元位置から各N個の三次元までの距離に基づいて重み付け平均し、得られた値を変化後の三次元点の属性情報の値に決定する。また、三次元データ符号化装置は、量子化等によって2個以上の三次元点が同一の三次元位置に変化した場合は、その変化後の属性情報の値として、変化前の2個以上の三次元点における属性情報の平均値を割当ててもよい。
次に、三次元データ符号化装置は、属性情報を符号化する(S7003)。例えば、三次元データ符号化装置は、複数の属性情報を符号化する場合は、複数の属性情報を順に符号化してもよい。例えば、三次元データ符号化装置は、属性情報として、色と反射率を符号化する場合は、色の符号化結果の後に反射率の符号化結果を付加したビットストリームを生成する。なお、ビットストリームに付加される属性情報の複数の符号化結果はどのような順番でもよい。
また、三次元データ符号化装置は、ビットストリーム内の各属性情報の符号化データの開始場所を示す情報をヘッダ等に付加してもよい。これにより、三次元データ復号装置は、復号が必要な属性情報を選択的に復号できるので、復号が不必要な属性情報の復号処理を省略できる。よって、三次元データ復号装置の処理量を削減できる。また、三次元データ符号化装置は、複数の属性情報を並列に符号化し、符号化結果を1つのビットストリームに統合してもよい。これにより、三次元データ符号化装置は、高速に複数の属性情報を符号化できる。
図143は、属性情報符号化処理(S7003)のフローチャートである。まず、三次元データ符号化装置は、LoDを設定する(S7011)。つまり、三次元データ符号化装置は、各三次元点を複数のLoDのいずれかに割り当てる。
次に、三次元データ符号化装置は、LoD単位のループを開始する(S7012)。つまり、三次元データ符号化装置は、LoD毎にステップS7013~S7021の処理を繰り返し行う。
次に、三次元データ符号化装置は、三次元点単位のループを開始する(S7013)。つまり、三次元データ符号化装置は、三次元点毎にステップS7014~S7020の処理を繰り返し行う。
まず、三次元データ符号化装置は、処理対象の対象三次元点の予測値の算出に用いる、対象三次元点の周囲に存在する三次元点である複数の周囲点を探索する(S7014)。次に、三次元データ符号化装置は、複数の周囲点の属性情報の値の重み付け平均を算出し、得られた値を予測値Pに設定する(S7015)。次に、三次元データ符号化装置は、対象三次元点の属性情報と予測値との差分である予測残差を算出する(S7016)。次に、三次元データ符号化装置は、予測残差を量子化することで量子化値を算出する(S7017)。次に、三次元データ符号化装置は、量子化値を算術符号化する(S7018)。次に、三次元データ符号化装置は、ΔQPを決定する(S7019)。ここで決定されたΔQPは、後続の予測残差の量子化に用いられる量子化パラメータの決定に用いられる。
また、三次元データ符号化装置は、量子化値を逆量子化することで逆量子化値を算出する(S7020)。次に、三次元データ符号化装置は、逆量子化値に予測値を加算することで復号値を生成する(S7021)。次に、三次元データ符号化装置は、三次元点単位のループを終了する(S7022)。また、三次元データ符号化装置は、LoD単位のループを終了する(S7023)。
図144は、ΔQP決定処理(S7019)のフローチャートである。まず、三次元データ符号化装置は、次の符号化対象の対象三次元点Aが属する階層iと符号化順Nとを算出する(S7031)。階層iは、例えばLoD階層、又はRAHTの階層を表す。
次に、三次元データ符号化装置は、累計符号量に発生符号量を加算する(S7032)。ここで、累計符号量とは、対象三次元点の1フレーム分、1スライス分、又は1タイル分の累積符号量である。なお、累計符号量は、複数フレーム、複数スライス、又は複数タイルの符号量を加算した累積符号量であってもよい。また、属性情報の累積符号量が用いられてもよいし、位置情報と属性情報の両方を加算した累積符号量が用いられてもよい。
次に、三次元データ符号化装置は、累計符号量が目標符号量×TH1より多いか否かを判定する(S7033)。ここで、目標符号量とは、対象三次元点の1フレーム分、1スライス分、又は1タイル分の目標符号量である。なお、目標符号量は、複数フレーム、複数スライス、又は複数タイルを加算した目標符号量であってもよい。また、属性情報の目標符号量が用いられてもよいし、位置情報と属性情報の両方を加算した目標符号量が用いられてもよい。
累計符号量が目標符号量×TH1以下の場合(S7033でNo)、三次元データ符号化装置は、累計符号量が目標符号量×TH2より多いか否かを判定する(S7036)。
ここで、閾値TH1及びTH2として、例えば0.0から1.0までの値が設定される。また、TH1>TH2である。例えば、三次元データ符号化装置は、累積符号量が目標符号量×TH1の値を超えた場合(S7033でYes)、早急に符号量を抑制する必要があると判断し、次の三次元点Nの量子化パラメータを大きくするためにADelta_QPを値αに設定する。また、三次元データ符号化装置は、NumPointADeltaを値Nに設定し、jを1インクリメントする(S7034)。次に、三次元データ符号化装置は、ADelta_QP=αとNumPointADelta=Nとをヘッダに付加する(S7035)。なお、値αは固定値であってもよいし、可変値であってもよい。例えば、三次元データ符号化装置は、累積符号量と目標符号量×TH1の差分の大きさによってαの値を決定してもよい。例えば、三次元データ符号化装置は、累積符号量と目標符号量×TH1の差分が大きいほどαの値を大きく設定する。これにより、三次元データ符号化装置は、累積符号量が目標符号量を超えないように量子化パラメータを制御できる。
また、累積符号量が目標符号量×TH2の値を超えた場合(S7036でYes)、三次元データ符号化装置は、対象三次元点Aが属する階層i又は次の階層i+1の量子化パラメータを大きくするためにDelta_Layerを値βに設定する(S7037)。例えば、三次元データ符号化装置は、対象三次元点Aが階層iの先頭であれば、階層iのDelta_Layer[i]を値βに設定し、対象三次元点Aが階層iの先頭以外であれば、階層i+1のDelta_Layer[i+1]を値βに設定する。
また、三次元データ符号化装置は、階層i又は階層i+1のDelta_Layer=βをヘッダに付加する(S7038)。なお、値βは固定値であってもよいし、可変値であってもよい。例えば、三次元データ符号化装置は、累積符号量と目標符号量×TH2の差分の大きさによってβの値を決定してもよい。例えば、三次元データ符号化装置は、累積符号量と目標符号量×TH2の差分が大きいほどβの値を大きく設定する。これにより、三次元データ符号化装置は、累積符号量が目標符号量を超えないように量子化パラメータを制御できる。
また、三次元データ符号化装置は、累積符号量が目標符号量を超えた場合、又は、超えそうな場合、量子化パラメータが、規格等でサポートされている値の最大値になるようにADelta_QP又はDelta_Layerの値を設定してもよい。これにより、三次元データ符号化装置は、三次元点A以降、又は階層i以降の量子化係数を0にすることで発生符号量の増加を抑制し、累積符号量が目標符号量を超えないように制御できる。
また、三次元データ符号化装置は、累積符号量が目標符号量×TH3より小さければ、発生符号量が増加するように量子化パラメータを下げてもよい。例えば、三次元データ符号化装置は、Delta_Layer又はAdelta_QPの値に累積符号量と目標符号量の差分に応じて負の値を設定することで量子化パラメータを下げてもよい。これにより、三次元データ符号化装置は、目標符号量に近いビットストリームを生成できる。
図145は、本実施の形態に係る三次元データ復号処理のフローチャートである。まず、三次元データ復号装置は、ビットストリームから位置情報(geometry)を復号する(S7005)。例えば、三次元データ復号装置は、8分木表現を用いて復号を行う。
次に、三次元データ復号装置は、ビットストリームから属性情報を復号する(S7006)。例えば、三次元データ復号装置は、複数の属性情報を復号する場合は、複数の属性情報を順に復号してもよい。例えば、三次元データ復号装置は、属性情報として、色と反射率を復号する場合は、ビットストリームに付加されている順に従い、色の符号化結果、及び反射率の符号化結果を復号する。例えば、ビットストリームにおいて、色の符号化結果の後に、反射率の符号化結果が付加されている場合、三次元データ復号装置は、色の符号化結果を復号し、その後に反射率の符号化結果を復号する。なお、三次元データ復号装置は、ビットストリームに付加される属性情報の符号化結果をどのような順番で復号してもよい。
また、三次元データ復号装置は、ビットストリーム内の各属性情報の符号化データの開始場所を示す情報をヘッダ等を復号することで取得してもよい。これにより、三次元データ復号装置は、復号が必要な属性情報を選択的に復号できるので、復号が不必要な属性情報の復号処理を省略できる。よって、三次元データ復号装置の処理量を削減できる。また、三次元データ復号装置は、複数の属性情報を並列に復号し、復号結果を1つの三次元点群に統合してもよい。これにより、三次元データ復号装置は、高速に複数の属性情報を復号できる。
図146は、属性情報復号処理(S7006)のフローチャートである。まず、三次元データ復号装置は、LoDを設定する(S7041)。つまり、三次元データ復号装置は、復号された位置情報を有する複数の三次元点の各々を複数のLoDのいずれかに割り当てる。例えば、この割り当て方法は、三次元データ符号化装置で用いられた割り当て方法と同じ方法である。
次に、三次元データ復号装置は、ビットストリームからΔQPを復号する(S7042)。具体的には、三次元データ符号化装置は、ビットストリームのヘッダから、Delta_Layer、ADelta_QP及びNumPointADeltaを復号する。
次に、三次元データ復号装置は、LoD単位のループを開始する(S7043)。つまり、三次元データ復号装置は、LoD毎にステップS7044~S7050の処理を繰り返し行う。
次に、三次元データ復号装置は、三次元点単位のループを開始する(S7044)。つまり、三次元データ復号装置は、三次元点毎にステップS7045~S7049の処理を繰り返し行う。
まず、三次元データ復号装置は、処理対象の対象三次元点の予測値の算出に用いる、対象三次元点の周囲に存在する三次元点である複数の周囲点を探索する(S7045)。次に、三次元データ復号装置は、複数の周囲点の属性情報の値の重み付け平均を算出し、得られた値を予測値Pに設定する(S7046)。なお、これらの処理は三次元データ符号化装置における処理と同様である。
次に、三次元データ復号装置は、ビットストリームから量子化値を算術復号する(S7047)。また、三次元データ復号装置は、復号した量子化値を逆量子化することで逆量子化値を算出する(S7048)。この逆量子化では、ステップS7042で得られたΔQPを用いて算出された量子化パラメータが用いられる。
次に、三次元データ復号装置は、逆量子化値に予測値を加算することで復号値を生成する(S7049)。次に、三次元データ復号装置は、三次元点単位のループを終了する(S7050)。また、三次元データ復号装置は、LoD単位のループを終了する(S7051)。
図147は、属性情報符号化部7023のブロック図である。属性情報符号化部7023は、LoD設定部7061と、探索部7062と、予測部7063と、減算部7064と、量子化部7065と、逆量子化部7066と、再構成部7067と、メモリ7068と、ΔQP算出部7070とを備える。
LoD設定部7061は、三次元点の位置情報を用いてLoDを生成する。探索部7062は、LoD生成結果と三次元点間の距離情報とを用いて各三次元点の近隣三次元点を探索する。予測部7063は、対象三次元点の属性情報の予測値を生成する。また、予測部7063は、0~M-1の複数の予測モードに予測値を割り当て、複数の予測モードから使用する予測モードを選択する。
減算部7064は、属性情報から予測値を減算することで予測残差を生成する。量子化部7065は、属性情報の予測残差を量子化する。逆量子化部7066は、量子化後の予測残差を逆量子化する。再構成部7067は、予測値と逆量子化後の予測残差とを加算することで復号値を生成する。メモリ7068は、復号済みの各三次元点の属性情報の値(復号値)を記憶する。メモリ7068に記憶される復号済みの三次元点の属性情報は、予測部7063による、符号化されていない三次元点の予測に利用される。
算術符号化部7069は、量子化後の予測残差からZeroCntを算出し、ZeroCntを算術符号化する。また、算術符号化部7069は、量子化後の非ゼロの予測残差を算術符号化する。算術符号化部7069は、予測残差を算術符号化前に二値化してもよい。また、算術符号化部7069は、各種ヘッダ情報を生成及び符号化してもよい。また、算術符号化部7069は、予測部7063が符号化に使用した予測モードを示す予測モード情報(PredMode)を算術符号化してビットストリームに付加してもよい。
ΔQP算出部7070は、算術符号化部7069で得られた発生符号量と、予め定められた目標符号量とからDelta_Layer、ADelta_QP及びNumPointADeltaの値を決定する。決定されたDelta_Layer、ADelta_QP及びNumPointADeltaに基づく量子化パラメータを用いて、量子化部7065による量子化が行われる。また、算術符号化部7069は、Delta_Layer、ADelta_QP及びNumPointADeltaを算術符号化してビットストリームに付加する。
図148は、属性情報復号部7043のブロック図である。属性情報復号部7043は、算術復号部7071と、LoD設定部7072と、探索部7073と、予測部7074と、逆量子化部7075と、再構成部7076と、メモリ7077とを備える。
算術復号部7071は、ビットストリームに含まれるZeroCntと予測残差とを算術復号する。また、算術復号部7071は、各種ヘッダ情報を復号する。また、算術復号部7071は、ビットストリームから予測モード情報(PredMode)を算術復号し、得られた予測モード情報を予測部7074に出力する。また、算術復号部7071は、ビットストリームのヘッダからDelta_Layer、ADelta_QP及びNumPointADeltaを復号する。
LoD設定部7072は、復号された三次元点の位置情報を用いてLoDを生成する。探索部7073は、LoD生成結果と三次元点間の距離情報を用いて各三次元点の近隣三次元点を探索する。
予測部7074は、復号対象の対象三次元点の属性情報の予測値を生成する。逆量子化部7075は、算術復号された予測残差を逆量子化する。具体的には、逆量子化部7075は、復号されたDelta_Layer、ADelta_QP及びNumPointADeltaに基づく量子化パラメータを用いて逆量子化を行う。
再構成部7076は、予測値と逆量子化後の予測残差とを加算することで復号値を生成する。メモリ7077は、復号済みの各三次元点の属性情報の値(復号値)を記憶する。メモリ7077に記憶される復号済みの三次元点の属性情報は、予測部7074による、復号されていない三次元点の予測に利用される。
以下、LoD階層の代わりにRAHTの階層を用いる場合の例を説明する。図149は、RAHTを用いた属性情報の符号化時に、更に細かい単位で量子化パラメータを制御する例を示す図である。例えば、三次元データ符号化装置は、属性情報をRAHTを用いて符号化する場合、RAHTの階層毎のDelta_Layerに加え、ADelta_QPと、ADelta_QPを加算する三次元点の位置情報を表すNumPointADeltaとを定義する。三次元データ符号化装置は、Delta_Layer、ADelta_QP及びNumPointADeltaに基づき量子化パラメータの値を変更しながら符号化を行う。
また、三次元データ符号化装置は、符号化に用いたADelta及びNumPointADeltaをビットストリームのヘッダ等に付加してもよい。これにより、三次元データ符号化装置は、例えば、目標符号量と発生符号量とに応じて三次元点毎の量子化パラメータを変更しながら三次元点の属性情報を符号化できる。これにより、三次元データ符号化装置は、最終的に目標符号量に近い符号量のビットストリームを生成できる。また、三次元データ復号装置は、ヘッダに含まれるQPbase、Delta_Layer及びADeltaを復号して三次元データ符号化装置が使用した量子化パラメータを生成することで、ビットストリームを適切に復号できる。
例えばN0番目の属性情報の量子化値QP4は、QP4=QP3+ADelta_QP[0]で算出される。また、QP4=QPbase+ADelta_QP[0]のように各ADelta_QP[i]はQPbaseからの差分値であってもよい。
図150は、図149に示す例を用いる場合の属性情報ヘッダ(Attribute header information)のシンタックス例を示す図である。なお、図150に示す属性情報ヘッダには、図140に示す属性情報ヘッダと基本的には同様であり、LoD階層がRAHTの階層に変更されている点が異なる。
NumADeltaは、ビットストリームに含まれるADelta_QPの数を示す。NumPointADelta[i]は、 ADelta_QP[i]を適用する三次元点Aの識別番号を示す。例えば、例えば、NumPointADelta[i]は、符号化/復号順で先頭の三次元点から三次元点Aまでの三次元点の個数を示す。また、NumPointADelta[i]は、三次元点Aが属する階層内の最初の三次元点から三次元点Aまでの三次元点の個数を示してもよい。
または、NumPointADelta[i]は、NumPointADelta[i-1]で示される三次元点の識別番号と、三次元点Aの識別番号との差分値を示してもよい。これにより、NumPointADelta[i]の値を小さく設定できるので、符号量を削減できる。
図151は、図149に示す例を用いる場合の属性情報ヘッダ(Attribute header information)の別のシンタックス例を示す図である。なお、図151に示す属性情報ヘッダには、図141に示す属性情報ヘッダと基本的には同様であり、LoD階層がRAHTの階層に変更されている点が異なる。
additional_delta_QP_present_flagは、ADelta_QPがビットストリームに含まれるか否かを示すフラグである。例えば、値1は、ADelta_QPがビットストリームに含まれることを示し、値0は、ADelta_QPがビットストリームに含まれないことを示す。additional_delta_QP_present_flagが0の場合、三次元データ復号装置は、例えば、ADelta_QPを0として以降の復号処理を行う。
NumADelta_minus1は、ビットストリームに含まれるADelta_QPの数-1を示す。このように、ADelta_QPの数から1を減算した値をヘッダに付加することでヘッダの符号量を削減できる。例えば、三次元データ復号装置は、NumADelta=NumADelta_minus1+1を算出する。ADelta_QP[i]は、i番目のADelta_QPの値を示す。なお、ADelta_QP[i]は、正の値だけでなく、負の値も設定可能であってもよい。
図152は、RAHTを用いる場合の三次元データ符号化処理のフローチャートである。まず、三次元データ符号化装置は、位置情報(geometry)を符号化する(S7061)。例えば、三次元データ符号化装置は、8分木表現を用いて符号化を行う。
次に、三次元データ符号化装置は、属性情報を変換する(S7062)。例えば、三次元データ符号化装置は、位置情報の符号化後に、量子化等によって三次元点の位置が変化した場合に、変化後の三次元点に元の三次元点の属性情報を再割当てする。なお、三次元データ符号化装置は、位置の変化量に応じて属性情報の値を補間して再割当てを行ってもよい。例えば、三次元データ符号化装置は、変化後の三次元位置に近い変化前の三次元点をN個検出し、N個の三次元点の属性情報の値を、変化後の三次元位置から各N個の三次元までの距離に基づいて重み付け平均し、得られた値を変化後の三次元点の属性情報の値に設定する。また、三次元データ符号化装置は、量子化等によって2個以上の三次元点が同一の三次元位置に変化した場合は、その変化後の属性情報の値として、変化前の2個以上の三次元点における属性情報の平均値を割当ててもよい。
次に。三次元データ符号化装置は、属性情報を符号化する(S7063)。例えば、三次元データ符号化装置は、複数の属性情報を符号化する場合は、複数の属性情報を順に符号化してもよい。例えば、三次元データ符号化装置は、属性情報として、色と反射率を符号化する場合は、色の符号化結果の後に反射率の符号化結果を付加したビットストリームを生成する。なお、ビットストリームに付加される属性情報の複数の符号化結果はどのような順番でもよい。
また、三次元データ符号化装置は、ビットストリーム内の各属性情報の符号化データの開始場所を示す情報をヘッダ等に付加してもよい。これにより、三次元データ復号装置は、復号が必要な属性情報を選択的に復号できるので、復号が不必要な属性情報の復号処理を省略できる。よって、三次元データ復号装置の処理量を削減できる。また、三次元データ符号化装置は、複数の属性情報を並列に符号化し、符号化結果を1つのビットストリームに統合してもよい。これにより、三次元データ符号化装置は、高速に複数の属性情報を符号化できる。
図153は、属性情報符号化処理(S7063)のフローチャートである。まず、三次元データ符号化装置は、Haar変換により属性情報から符号化係数を生成する(S7071)。
次に、三次元データ符号化装置は、符号化係数に量子化を適用する(S7072)。次に、三次元データ符号化装置は、量子化後の符号化係数を符号化することで符号化属性情報(ビットストリーム)を生成する(S7073)。
次に、三次元データ復号装置は、ΔQPを決定する(S7074)。なお、ΔQPの決定方法は、LoD階層を用いる場合のステップS7019と同様である。また、決定されたΔQPは、後続の符号化係数の量子化に用いられる量子化パラメータの決定に用いられる。
また、三次元データ符号化装置は、量子化後の符号化係数に逆量子化を適用する(S7075)。次に、三次元データ復号装置は、逆量子化後の符号化係数に逆Haar変換を適用することで属性情報を復号する(S7076)。例えば、復号された属性情報は、後続の符号化において参照される。
図154は、RAHTを用いる場合の三次元データ復号処理のフローチャートである。まず、三次元データ復号装置は、ビットストリームから位置情報(geometry)を復号する(S7065)。例えば、三次元データ復号装置は、8分木表現を用いて復号を行う。
次に、三次元データ復号装置は、ビットストリームから属性情報を復号する(S7066)。例えば、三次元データ復号装置は、複数の属性情報を復号する場合は、複数の属性情報を順に復号してもよい。例えば、三次元データ復号装置は、属性情報として、色と反射率を復号する場合は、ビットストリームに付加されている順に従い、色の符号化結果、及び反射率の符号化結果を復号する。例えば、ビットストリームにおいて、色の符号化結果の後に、反射率の符号化結果が付加されている場合、三次元データ復号装置は、色の符号化結果を復号し、その後に反射率の符号化結果を復号する。なお、三次元データ復号装置は、ビットストリームに付加される属性情報の符号化結果をどのような順番で復号してもよい。
また、三次元データ復号装置は、ビットストリーム内の各属性情報の符号化データの開始場所を示す情報をヘッダ等を復号することで取得してもよい。これにより、三次元データ復号装置は、復号が必要な属性情報を選択的に復号できるので、復号が不必要な属性情報の復号処理を省略できる。よって、三次元データ復号装置の処理量を削減できる。また、三次元データ復号装置は、複数の属性情報を並列に復号し、復号結果を1つの三次元点群に統合してもよい。これにより、三次元データ復号装置は、高速に複数の属性情報を復号できる。
図155は、属性情報復号処理(S7066)のフローチャートである。まず、三次元データ復号装置は、ビットストリームから符号化係数を復号する(S7081)。次に、三次元データ復号装置は、ビットストリームからΔQPを復号する(S7082)。具体的には、三次元データ符号化装置は、ビットストリームのヘッダから、Delta_Layer、ADelta_QP及びNumPointADeltaを復号する。
次に、三次元データ復号装置は、符号化係数に逆量子化を適用する(S7083)。この逆量子化では、ステップS7082で得られたΔQPを用いて算出された量子化パラメータが用いられる。次に、三次元データ復号装置は、逆量子化後の符号化係数に逆Haar変換を適用することで属性情報を復号する(S7084)。
図156は、RAHTを用いる場合の属性情報符号化部7023のブロック図である。属性情報符号化部7023は、ソート部7081と、Haar変換部7082と、量子化部7083と、逆量子化部7084と、逆Haar変換部7085と、メモリ7086と、算術符号化部7087と、ΔQP算出部7088とを備える。
ソート部7081は、三次元点の位置情報を用いてモートン符号を生成し、複数の三次元点をモートン符号順にソートする。Haar変換部7082は、属性情報にHaar変換を適用することで符号化係数を生成する。量子化部7083は、属性情報の符号化係数を量子化する。
逆量子化部7084は、量子化後の符号化係数を逆量子化する。逆Haar変換部7085は、符号化係数に逆Haar変換を適用する。メモリ7086は、復号済みの複数の三次元点の属性情報の値を記憶する。例えば、メモリ7086に記憶される復号済みの三次元点の属性情報は、符号化されていない三次元点の予測等に利用されてもよい。
算術符号化部7087は、量子化後の符号化係数からZeroCntを算出し、ZeroCntを算術符号化する。また、算術符号化部7087は、量子化後の非ゼロの符号化係数を算術符号化する。算術符号化部7087は、符号化係数を算術符号化前に二値化してもよい。また、算術符号化部7087は、各種ヘッダ情報を生成及び符号化してもよい。
ΔQP算出部7088は、算術符号化部7087で得られた発生符号量と、予め定められた目標符号量とからDelta_Layer、ADelta_QP及びNumPointADeltaの値を決定する。決定されたDelta_Layer、ADelta_QP及びNumPointADeltaに基づく量子化パラメータを用いて、量子化部7083による量子化が行われる。また、算術符号化部7087は、Delta_Layer、ADelta_QP及びNumPointADeltaを算術符号化してビットストリームに付加する。
図157は、RAHTを用いる場合の属性情報復号部7043のブロック図である。属性情報復号部7043は、算術復号部7091と、逆量子化部7092と、逆Haar変換部7093と、メモリ7094とを備える。
算術復号部7091は、ビットストリームに含まれるZeroCntと符号化係数を算術復号する。なお、算術復号部7091は、各種ヘッダ情報を復号してもよい。また、算術復号部7091は、ビットストリームのヘッダからDelta_Layer、ADelta_QP及びNumPointADeltaを復号する。
逆量子化部7092は、算術復号した符号化係数を逆量子化する。具体的には、逆量子化部7092は、復号されたDelta_Layer、ADelta_QP及びNumPointADeltaに基づく量子化パラメータを用いて逆量子化を行う。
逆Haar変換部7093は、逆量子化後の符号化係数に逆Haar変換を適用する。メモリ7094は、復号済みの複数の三次元点の属性情報の値を記憶する。例えば、メモリ7094に記憶される復号済みの三次元点の属性情報は、復号されていない三次元点の予測に利用されてもよい。
以下、本実施の形態の変形例について説明する。三次元データ符号化装置は、三次元点の属性情報の量子化パラメータを、新たな属性情報として三次元点毎に符号化してもよい。
以下、この場合の三次元データ符号化装置のよる処理の例を説明する。三次元データ符号化装置は、図143に示すフローに従って、属性情報A(例えば色)を量子化パラメータを算出しながら符号化する。この際に、三次元データ符号化装置は、各三次元点の新たな属性値として、使用した量子化パラメータを符号化する。この場合、三次元データ符号化装置は、三次元点毎に量子化パラメータの値を変更しながら符号化を行ってもよい。例えば、三次元データ符号化装置は、累積符号量が目標符号量×TH1の値を超えた場合、発生符号量を抑制するために、量子化パラメータの値を大きく設定してもよい。また、三次元データ符号化装置は、累積符号量が目標符号量×TH3の値より小さい場合、発生符号量を増やすために、量子化パラメータの値を小さく設定してもよい。
三次元データ符号化装置は、属性情報Aを符号化後、各三次元点に割当てた量子化パラメータを新たな属性情報A’として符号化する。この際、三次元データ符号化装置は、量子化パラメータの情報量の欠落を防ぐためにロスレス(lossless)符号化を適用してもよい。また、三次元データ符号化装置は、ヘッダ等に符号化した属性情報が量子化パラメータであることを示す情報を付加してもよい。これにより、三次元データ復号装置は、三次元データ符号化装置が使用した量子化パラメータを適切に復号できる。
また、三次元データ符号化装置は、対象三次元の周囲のN個の三次元点を用いて属性情報の予測符号化を行う場合に、N=1として量子化パラメータを符号化してもよい。これにより計算量を削減できる。
次に、三次元データ復号装置による処理の例を説明する。まず、三次元データ復号装置は、ビットストリーム内の属性情報のうち、属性情報A’を復号し、属性情報Aの復号に用いる量子化パラメータを取得する。次に、三次元データ復号装置は、復号した量子化パラメータを用いて属性情報Aを復号する。
なお、三次元データ符号化装置は、上記量子化パラメータの代わりに、各三次元点の量子化パラメータの変化量であるΔQPを、新たな属性情報A’として符号化してもよい。また、三次元データ符号化装置は、ΔQPが正及び負の値をとる場合、下記のように符号付ΔQPを正の値に変換してから符号化してもよい。符号付ΔQP(deltaQP_s)が0未満の場合、符号無しΔQP(deltaQP_u)は、-1-(2×deltaQP_s)に設定される。符号付ΔQP(deltaQP_s)が0以上の場合、符号無しΔQP(deltaQP_u)は、2×deltaQP_sに設定される。
また、三次元データ符号化装置は、属性情報毎に符号化に用いた量子化パラメータを属性情報として符号化してもよい。例えば、三次元データ符号化装置は、色の属性情報Aの量子化パラメータを属性情報A’として符号化し、反射率の属性情報Bの量子化パラメータを属性情報B’として符号化してもよい。これにより、属性情報毎に量子化パラメータを切替えることができる。例えば優先度が高い属性情報の量子化パラメータを小さく設定し、優先度が低い属性情報の量子化パラメータを大きく設定することで、優先度が高い属性情報を保護しつつ、全体の符号量を削減できる。
また、三次元データ符号化装置は、三次元点の属性情報の予測残差を量子化して符号化する際に、delta_Layer_present_flag及びadditional_delta_QP_present_flagなどによって、Delta_Layer及びADelta_QPがヘッダに設定された場合は、三次元点の重要度を示すQW(Quantization weight)の値を適用しないようにしてもよい。例えば、QWが適用される場合には、QWが大きい(重要度が高い)ほど、量子化パラメータは小さく設定される。これにより、予測等の内部処理によって決定される重要度によって量子化を行うか、ユーザがヘッダで設定した値に応じて量子化を行うかを切替えることができるので、ユーザの用途に応じて両者を使い分けることができる。
また、三次元データ符号化装置は、QW(Quantization weight)の値を適用するか否かを示すフラグをヘッダに付加してもよい。これにより、Delta_Layer及びADelta_QPの値とQWとを組合わせて量子化を行うか否かを切替えることができるので、ユーザの用途に応じて両者を使い分けることができる。
また、三次元データ符号化装置は、RAHT等を用いて、三次元点の属性情報の変換係数を量子化して符号化する際に、delta_Layer_present_flag及びadditional_delta_QP_present_flagなどによって、Delta_Layer及びADelta_QPがヘッダに設定された場合は、QW(Quantization weight)の値を適用しないようにしてもよい。これにより、予測等の内部処理によって決定される重要度によって量子化を行うか、ユーザがヘッダで設定した値に応じて量子化を行うかを切替えることができるので、ユーザの用途に応じて両者を使い分けることができる。また、三次元データ符号化装置は、QW(Quantization weight)の値を適用するか否かを示すフラグをヘッダに付加してもよい。これにより、Delta_Layer及びADelta_QPの値とQWとを組合わせて量子化を行うか否かを切替えることができるので、ユーザの用途に応じて両者を使い分けることができる。
図158は、この場合の属性情報ヘッダ(Attribute header information)のシンタックス例を示す図である。図158に示す属性情報ヘッダは、図141に示す属性情報ヘッダに対して、さらに、default_delta_Layer_present_flagと、default_delta_Layer_indexと、default_additional_delta_QP_present_flagと、default_additional_delta_QP_indexとを含む。
default_delta_Layer_present_flagは、規格等で定義した初期設定のDelta_Layerの値を使用するか否かを示すフラグである。例えば、値1は、初期設定のDelta_Layerを使用すること示す。値0は、初期設定のDelta_Layerを使用しないことを示す。値0の場合、三次元データ復号装置は、例えば、Delta_Layerを0として以降の復号処理を行う。
default_delta_Layer_indexは、規格等で定義した1個以上の初期設定のDelta_Layerのうち、使用するDelta_Layerを識別するための情報である。例えば、default_delta_Layer_indexは、下記のように定義される。
default_delta_Layer_index=0の場合、全ての階層のDelta_Layerが1に設定される。つまり、階層が増える毎に量子化パラメータの値が1増加する。default_delta_Layer_index=1の場合、全ての階層のDelta_Layerが2に設定される。つまり、階層が増える毎に量子化パラメータの値が2増加する。
このように規格等で初期設定のDelta_Layerを定義することで、Delta_Layerの値をヘッダに付加せずに量子化パラメータを変更できるので、ヘッダの符号量を削減できる。
default_additional_delta_QP_present_flagは、規格等で定義した初期設定のADelta_QOの値を使用するか否かを示すフラグである。例えば、値1は、初期設定のADelta_QPを使用することを示す。値0は、初期設定のADelta_QPを使用しないことを示す。値0の場合、三次元データ復号装置は、例えば、ADelta_QPを0として以降の復号処理を行う。
default_additional_delta_QP_indexは、規格等で定義した1個以上の初期設定のADelta_QPのうち、使用するADelta_QPを識別するための情報である。例えば、default_additional_delta_QP_indexは、下記のように定義される。
default_additional_delta_QP_index=0の場合、三次元点数N個毎にADelta_QPが1に設定される。つまりN個の三次元点を符号化又は復号する毎に量子化パラメータの値が1増加する。なお、三次元データ符号化装置は、N個を示す情報を別途ヘッダに付加してもよい。
default_additional_delta_QP_index=1の場合、三次元点数N個毎にADelta_QPが2に設定される。つまりN個の三次元点を符号化又は復号する毎に量子化パラメータの値が2増加する。なお、三次元データ符号化装置は、N個を示す情報を別途ヘッダに付加してもよい。
このように規格等で初期設定のADelta_QPを定義することで、ADelta_QPの値をヘッダに付加せずに量子化パラメータを変更できるので、ヘッダの符号量を削減できる。
以上のように、本実施の形態に係る三次元データ符号化装置は、図159に示す処理を行う。三次元データ符号化装置は、点群データに含まれる複数の三次元点の複数の属性情報から複数の係数値(例えば予測残差又は符号化係数)を算出する(S7091)。次に、三次元データ符号化装置は、複数の係数値の各々を量子化することで複数の量子化値を生成する(S7092)。次に、三次元データ符号化装置は、複数の量子化値を含むビットストリームを生成する(S7093)。複数の係数値は、複数の階層(例えばLoD階層又はRAHTの階層)のいずれかに属する。三次元データ符号化装置は、量子化(S7092では、複数の係数値の各々を、当該係数値が属する階層用の量子化パラメータを用いて量子化する。ビットストリームは、基準量子化パラメータを示す第1情報(例えばQPbase)と、基準量子化パラメータから複数の階層用の複数の量子化パラメータを算出するための複数の第2情報(例えばDelta_layer[i])とを含む。
これによれば、三次元データ符号化装置は、階層毎に量子化パラメータを切り替えることができるので、適切に符号化を行える。また、三次元データ符号化装置は、基準量子化パラメータを示す第1情報と、基準量子化パラメータから複数の量子化パラメータを算出するための複数の第2情報とを符号化することで符号化効率を向上できる。
例えば、複数の第2情報の各々は、基準量子化パラメータと当該階層用の量子化パラメータとの差分を示す。
例えば、ビットストリームは、さらに、複数の第2情報がビットストリームに含まれるか否かを示す第1フラグ(delta_layer_present_flag)を含む。
例えば、ビットストリームは、さらに、ビットストリームに含まれる複数の第2情報の数を示す第3情報(例えばNumLayer)を含む。
例えば、複数の三次元点は、複数の三次元点の位置情報に基づき複数の階層(例えばLoD)のいずれかに分類される。
例えば、複数の係数値は、複数の属性情報の各々を高周波成分と低周波成分とに分けて複数の階層(例えばRAHTの階層)に階層化することにより生成される。
例えば、三次元データ符号化装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態に係る三次元データ復号装置は、図160に示す処理を行う。三次元データ復号装置は、ビットストリームに含まれる、(i)基準量子化パラメータを示す第1情報(例えばQPbase)と、(ii)基準量子化パラメータから複数の階層用の複数の量子化パラメータを算出するための複数の第2情報(例えばDelta_layer[i])と、を用いて複数の階層用の量子化パラメータを算出する(S7095)。
次に、三次元データ復号装置は、ビットストリームに含まれる複数の量子化値の各々を、算出された複数の階層用の量子化パラメータのうち当該量子化値が属する階層用の量子化パラメータを用いて逆量子化することで複数の係数値(例えば予測残差又は符号化係数)を生成する(S7096)。次に、三次元データ復号装置は、複数の係数値から、点群データに含まれる複数の三次元点の複数の属性情報を算出する(S7097)。
これによれば、三次元データ復号装置は、階層毎に量子化パラメータを切り替えることができるので、適切に復号を行える。また、三次元データ復号装置は、基準量子化パラメータを示す第1情報と、基準量子化パラメータから複数の量子化パラメータを算出するための複数の第2情報とを用いられることで符号化効率が向上されたビットストリームを適切に復号できる。
例えば、複数の第2情報の各々は、基準量子化パラメータと当該階層用の量子化パラメータとの差分を示す。
例えば、ビットストリームは、さらに、複数の第2情報がビットストリームに含まれるか否かを示す第1フラグ(delta_layer_present_flag)を含む。
例えば、ビットストリームは、さらに、ビットストリームに含まれる複数の第2情報の数を示す第3情報(例えばNumLayer)を含む。
例えば、複数の三次元点は、複数の三次元点の位置情報に基づき複数の階層(例えばLoD)のいずれかに分類される。
例えば、複数の係数値は、複数の属性情報の各々を高周波成分と低周波成分とに分けて複数の階層(例えばRAHTの階層)に階層化することにより生成される。
例えば、三次元データ復号装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
(実施の形態14)
本実施の形態では、LoD階層の生成方法について説明する。図161は、LoD階層の生成例を示す図である。図161は、三次元点数N=16の場合の2分木構造を用いたLoD生成方法を示す。
まず、三次元データ符号化装置は、node[0]内の複数の三次元点を軸αの値(位置座標)を用いて分割する。ここで、軸αとは、例えばx軸、y軸又はz軸である。具体的には、三次元データ符号化装置は、三次元点の軸αにおける値の中間値(median[0])を算出し、median[0]を用いて分割を行ってもよい。例えば、三次元データ符号化装置は、node[0]内の複数の三次元点を、各三次元点の軸αの値がmedian[0]以下の集合Aとmedian[0]より値が大きい集合Bに分割し、集合Aをnode[1]に割当て、集合Bをnode[2]に割当てる。これにより、node[0]内の複数の三次元点をほぼ均等に分割できる。
また、三次元データ符号化装置は、node[0]内の三次元点の軸αの値の平均値(mean[0])を算出し、mean[0]の値に最も近い軸αの値を持つ三次元点iをLoD0に割当ててもよい。これにより、node[0]内の複数の三次元からの距離が比較的近い三次元点をLoD0に割当てることができるので、各三次元点の属性値の予測精度を向上できる。
node[0]と同様に、node[1]とnode[2]の各々に含まれる複数の三次元点を軸βの値を用いて分割する。ここで軸αと軸βとは同じでもよいし、異なってもよい。また、三次元データ符号化装置は、node[1]内の三次元点の軸βにおける値の中間値(median[1])と、node[2]内の三次元点の軸βにおける値の中間値(median[2])とを算出する。三次元データ符号化装置は、median[1]を用いてnode[1]を分割することでnode[3]とnode[4]を生成する。三次元データ符号化装置は、median[2]を用いてnode[2]を分割することでnode[5]とnode[6]を生成する。
また、三次元データ符号化装置は、node[1]とnode[2]の軸βにおける値の平均値(mean[1]及びmean[2])を算出し、それぞれの平均値に最も近い軸βの値を持つ三次元点e及びmをLoD1に割当てる。
三次元データ符号化装置は、node[0]、node[1]及びnode[2]と同様にnode[3]からnode[6]のmeanを算出し、各meanの値に最も近い三次元点c、f、j及びnをLoD2に割当てる。また、三次元データ符号化装置は、LoD0からLoD2のいずれにも割当てられなかった三次元点をLoD3に割当てる。これにより、三次元データ符号化装置は、全ての三次元点をLoDに割当てることができる。
三次元データ符号化装置は、node内の各三次元点が位置情報(x,y,z)を持つ場合、x、y、zのどの軸でnode内の三次元点の分割を行うかを決定する。例えば、三次元データ符号化装置は、node内の三次元点の各軸の分散値を算出し、分散値が最も大きい軸を用いて分割する。これにより、三次元データ符号化装置は、node内の三次元点を、その特徴に応じて適切に分割できる。なお、三次元データ符号化装置は、node毎に分割する軸を切替えてもよい。これにより、三次元データ符号化装置は、各node内の三次元点の特徴に応じて適切に分割を行うことができる。
上記方法により、各三次元点からの距離が平均的に近い三次元点を上位のLoDに割当てることができるので、LoDを用いた属性情報の予測精度を高め、符号化効率を向上できる。
ここで、三次元点の属性値を2分木を用いて符号化する場合、三次元データ符号化装置は、ルートノード(root node)であるnode[0]からどの階層まで分割を行うか否かを表す値btDepthを下記(式L1)又は(式L2)を用いて算出してもよい。
ここで、Nは三次元点数であり、upは制御パラメータである。例えば、up=1であってもよい。upの値を変えることで、三次元点を2分木のどの階層まで分割するかを制御できる。なお、三次元データ符号化装置は、upの値をビットストリームに付加してもよい。これにより、三次元データ復号装置は、符号化時と同一の階層まで階層を分割することができるので、ビットストリームを正しく復号できる。
なお、(式L1)におけるround(x)は値xを四捨五入した値を返す関数である。また、max(x,y)は値xとyのうち、大きい方の値を返す関数である。つまり、bitDepthは、log2(round(N/2))-upの値が負の場合、値0になる(値0にクリップされる)。
図162~図166は、階層の分割例を示す図である。図162に示すように、N=8、up=1の場合、btDepth=1まで分割が行われる。図163に示すように、N=8、up=0の場合、btDepth=2まで分割が行われる。
また、三次元データ符号化装置は、btDepthの最小値を0にクリップすることで、Nが2以下の場合でも適切にLoDを生成できる。図164に示すように、N=2、up=1の場合、btDepth=0まで分割が行われる。図164に示す例では、node[0]は2点を含む。三次元データ符号化装置は、この2点のうち、平均値に近い点をLoD0に割当て、そうでない点をLoD1に割当ててもよい。
図165に示すように、N=1、up=0の場合、btDepth=0まで分割が行われる。図165に示す例では、node[0]は1点を含む。三次元データ符号化装置は、この1点をLoD0に割当てる。
なお、本実施の形態では、btDepthの最小値を0にクリップすることで、Nが2以下の場合でも適切にLoDに三次元点を割当てる例を示したが、必ずしもこれに限らない。例えば、Nが2以下の場合は、三次元データ符号化装置は、2分木を用いたLoD生成を適用しなくてもよい。また、三次元データ符号化装置は、Nが2以下の場合は、2点をLoD0に割当ててもよい。また、Nが2以下の場合は、三次元データ符号化装置は、一方の三次元点をLoD0に、もう一方の三次元点をLoD1に割当ててLoDを生成してもよい。また、Nが2以下の場合は、三次元データ符号化装置は、up=0に設定することでbtDepthの値を0に設定してもよい。
また、本実施の形態では、各btDepthの階層毎にLoDに三次元点を割り振る例を示したが、必ずしもこれに限らず、例えば、三次元データ符号化装置は、特定のbtDepth毎にLoDに三次元点を割当ててもよい。例えば、三次元データ符号化装置は、btDepthの値が偶数の場合は三次元点をLoDに割り当て、奇数の場合はLoD割り当てをスキップしてもよい。または、三次元データ符号化装置は、btDepthの値が奇数の場合は三次元点をLoDに割り当て、偶数の場合はLoD割り当てをスキップしてもよい。これにより、三次元データ符号化装置は、階層毎に平均値及び平均値に近い三次元点を探す必要がないので、処理量を削減できる。
例えば、図166に示すように、N=16、up=1の場合、btDepth=2まで分割が行われる。btDepth=0に対しては、btDepthが偶数であり、三次元データ符号化装置は、LoD0にnode[0]の平均値に近い三次元点を割当てる。btDepth=1に対しては、btDepthが奇数であり、三次元データ符号化装置は、割り当てをスキップする。btDepth=2に対しては、btDepthが偶数であり、三次元データ符号化装置は、LoD1に各nodeの平均値に近い三次元点を割当てる。三次元データ符号化装置は、LoD0及びLoD1のいずれにも割当てられなかった三次元点をLoD2に割当てる。
図167は、本実施の形態に係る三次元データ符号化処理のフローチャートである。まず、三次元データ符号化装置は、位置情報(geometry)を符号化する(S7101)。例えば、三次元データ符号化装置は、8分木表現を用いて符号化を行う。
次に、三次元データ符号化装置は、属性情報を変換する(S7102)。例えば、三次元データ符号化装置は、位置情報の符号化後に、量子化等によって三次元点の位置が変化した場合に、変化後の三次元点に元の三次元点の属性情報を再割当てする。なお、三次元データ符号化装置は、位置の変化量に応じて属性情報の値を補間して再割当てを行ってもよい。例えば、三次元データ符号化装置は、変化後の三次元位置に近い変化前の三次元点をN個検出し、N個の三次元点の属性情報の値を、変化後の三次元位置から各N個の三次元までの距離に基づいて重み付け平均し、得られた値を変化後の三次元点の属性情報の値に決定する。また、三次元データ符号化装置は、量子化等によって2個以上の三次元点が同一の三次元位置に変化した場合は、その変化後の属性情報の値として、変化前の2個以上の三次元点における属性情報の平均値を割当ててもよい。
次に、三次元データ符号化装置は、属性情報を符号化する(S7103)。例えば、三次元データ符号化装置は、複数の属性情報を符号化する場合は、複数の属性情報を順に符号化してもよい。例えば、三次元データ符号化装置は、属性情報として、色と反射率を符号化する場合は、色の符号化結果の後に反射率の符号化結果を付加したビットストリームを生成する。なお、ビットストリームに付加される属性情報の複数の符号化結果はどのような順番でもよい。
また、三次元データ符号化装置は、ビットストリーム内の各属性情報の符号化データの開始場所を示す情報をヘッダ等に付加してもよい。これにより、三次元データ復号装置は、復号が必要な属性情報を選択的に復号できるので、復号が不必要な属性情報の復号処理を省略できる。よって、三次元データ復号装置の処理量を削減できる。また、三次元データ符号化装置は、複数の属性情報を並列に符号化し、符号化結果を1つのビットストリームに統合してもよい。これにより、三次元データ符号化装置は、高速に複数の属性情報を符号化できる。
図168は、属性情報符号化処理(S7103)のフローチャートである。まず、三次元データ符号化装置は、LoDを設定する(S7111)。つまり、三次元データ符号化装置は、各三次元点を複数のLoDのいずれかに割り当てる。
次に、三次元データ符号化装置は、LoD単位のループを開始する(S7112)。つまり、三次元データ符号化装置は、LoD毎にステップS7113~S7121の処理を繰り返し行う。
次に、三次元データ符号化装置は、三次元点単位のループを開始する(S7113)。つまり、三次元データ符号化装置は、三次元点毎にステップS7114~S7120の処理を繰り返し行う。
まず、三次元データ符号化装置は、処理対象の対象三次元点の予測値の算出に用いる、対象三次元点の周囲に存在する三次元点である複数の周囲点を探索する(S7114)。次に、三次元データ符号化装置は、複数の周囲点の属性情報の値の重み付け平均を算出し、得られた値を予測値Pに設定する(S7115)。次に、三次元データ符号化装置は、対象三次元点の属性情報と予測値との差分である予測残差を算出する(S7116)。次に、三次元データ符号化装置は、予測残差を量子化することで量子化値を算出する(S7117)。次に、三次元データ符号化装置は、量子化値を算術符号化する(S7118)。
また、三次元データ符号化装置は、量子化値を逆量子化することで逆量子化値を算出する(S7119)。次に、三次元データ符号化装置は、逆量子化値に予測値を加算することで復号値を生成する(S7120)。次に、三次元データ符号化装置は、三次元点単位のループを終了する(S7121)。また、三次元データ符号化装置は、LoD単位のループを終了する(S7122)。
図169は、LoD設定処理(S7111)のフローチャートである。まず、三次元データ符号化装置は、三次元点数NからbtDepthを算出する(S7131)。例えば、三次元データ符号化装置は、上記(式L1)又は(式L2)を用いてbtDepthを算出する。なお、三次元データ符号化装置は、三次元点数Nがある一定数以下の場合は、2分木によるLoD生成を行わなくてもよい。例えば、三次元データ符号化装置は、Nが2以下の場合は、N個の三次元点をLoD0に割当ててもよい。これにより、Nが一定数以下の場合のLoD生成処理を高速化できる。
次に、三次元データ符号化装置は、depth=0を設定する(S7132)。次に、三次元データ符号化装置は、num_node=1<<depthを設定する(S7133)。次に、三次元データ符号化装置は、n=0を設定する(S7134)。次に、三次元データ符号化装置は、depth番目の階層のn番目のnodeAを処理対象のノードに決定する(S7135)。
次に、三次元データ符号化装置は、nodeAに含まれる三次元点の分割軸αを決定する(S7136)。例えば、三次元点が(x,y,z)の3軸を持つ場合、三次元データ符号化装置は、三次元点の各軸の分散値を算出し、分散値が大きい軸を分割軸αに決定する。これにより、三次元点を効率よく分割できる。
次に、三次元データ符号化装置は、nodeAに含まれる三次元点の軸αの値の平均値を算出する(S7137)。次に、三次元データ符号化装置は、nodeA内の三次元点からnodeAの平均値に最も近い軸αの値を持つ三次元点を抽出し、抽出した三次元点をdepth番目に対応するLoDに追加する(S7138)。
次に、三次元データ符号化装置は、nodeAに含まれる三次元点の軸αの値の中間値を算出し、中間値を用いてnodeA内の三次元点を分割し、分割した三次元点をdepth+1番目の階層の2つのnodeに割当てる(S7139)。次に、三次元データ符号化装置は、n=n+1を設定する(S7140)。
n<num_nodeである場合(S7141でYes)、三次元データ符号化装置は、再度ステップS7135以降の処理を行う。
n<num_nodeでない場合(S7141でNo)、三次元データ符号化装置は、depth=depth+1を設定する(S7142)。depth==btDepthでない場合(S7143でNo)、三次元データ符号化装置は、再度ステップS7133以降の処理を行う。
depth==btDepthである場合(S7143でYes)、三次元データ符号化装置は、各depthのLoDに割当たっていない三次元点を最下層のLoDに割当てる(S7144)。
図170は、本実施の形態に係る三次元データ復号処理のフローチャートである。まず、三次元データ復号装置は、ビットストリームから位置情報(geometry)を復号する(S7151)。例えば、三次元データ復号装置は、8分木表現を用いて復号を行う。
次に、三次元データ復号装置は、ビットストリームから属性情報を復号する(S7152)。例えば、三次元データ復号装置は、複数の属性情報を復号する場合は、複数の属性情報を順に復号してもよい。例えば、三次元データ復号装置は、属性情報として、色と反射率を復号する場合は、ビットストリームに付加されている順に従い、色の符号化結果、及び反射率の符号化結果を復号する。例えば、ビットストリームにおいて、色の符号化結果の後に、反射率の符号化結果が付加されている場合、三次元データ復号装置は、色の符号化結果を復号し、その後に反射率の符号化結果を復号する。なお、三次元データ復号装置は、ビットストリームに付加される属性情報の符号化結果をどのような順番で復号してもよい。
また、三次元データ復号装置は、ビットストリーム内の各属性情報の符号化データの開始場所を示す情報をヘッダ等を復号することで取得してもよい。これにより、三次元データ復号装置は、復号が必要な属性情報を選択的に復号できるので、復号が不必要な属性情報の復号処理を省略できる。よって、三次元データ復号装置の処理量を削減できる。また、三次元データ復号装置は、複数の属性情報を並列に復号し、復号結果を1つの三次元点群に統合してもよい。これにより、三次元データ復号装置は、高速に複数の属性情報を復号できる。
図171は、属性情報復号処理(S7152)のフローチャートである。まず、三次元データ復号装置は、LoDを設定する(S7161)。つまり、三次元データ復号装置は、復号された位置情報を有する複数の三次元点の各々を複数のLoDのいずれかに割り当てる。例えば、この割り当て方法は、図169に示す、三次元データ符号化装置で用いられた割り当て方法と同じ方法である。
次に、三次元データ復号装置は、LoD単位のループを開始する(S7162)。つまり、三次元データ復号装置は、LoD毎にステップS7163~S7169の処理を繰り返し行う。
次に、三次元データ復号装置は、三次元点単位のループを開始する(S7163)。つまり、三次元データ復号装置は、三次元点毎にステップS7164~S7168の処理を繰り返し行う。
まず、三次元データ復号装置は、処理対象の対象三次元点の予測値の算出に用いる、対象三次元点の周囲に存在する三次元点である複数の周囲点を探索する(S7164)。次に、三次元データ復号装置は、複数の周囲点の属性情報の値の重み付け平均を算出し、得られた値を予測値Pに設定する(S7165)。なお、これらの処理は三次元データ符号化装置における処理と同様である。
次に、三次元データ復号装置は、ビットストリームから量子化値を算術復号する(S7166)。また、三次元データ復号装置は、復号した量子化値を逆量子化することで逆量子化値を算出する(S7167)。次に、三次元データ復号装置は、逆量子化値に予測値を加算することで復号値を生成する(S7168)。次に、三次元データ復号装置は、三次元点単位のループを終了する(S7169)。また、三次元データ復号装置は、LoD単位のループを終了する(S7170)。
図172は、三次元データ符号化装置に含まれる属性情報符号化部7100のブロック図である。属性情報符号化部7100は、LoD設定部7101と、探索部7102と、予測部7103と、減算部7104と、量子化部7105と、逆量子化部7106と、再構成部7107と、メモリ7108とを備える。
LoD設定部7101は、三次元点の位置情報を用いてLoDを生成する。例えば、LoD設定部7101は、三次元点の距離情報を用いたLoD生成方法と、本実施の形態で説明した2分木を利用したLoD生成方法とをフラグ等(切替フラグ)を用いて切替えてもよい。ここで、三次元点の距離情報を用いたLoD生成方法とは、階層毎に距離の閾値を設定し、各階層に含まれる複数の三次元点の距離が当該階層の閾値以上になるように、階層構造を生成する方法である。具体的には、下層ほど閾値が小さく設定されることで、下層ほど三次元点が密に配置される。
なお、三次元データ符号化装置は、切替フラグをヘッダに付加してもよい。これにより三次元データ復号装置は、ヘッダに付加された切替フラグを復号することで、LoD生成方法を切替えることができるので、正しくビットストリームを復号できる。なお、三次元データ符号化装置は、切替フラグをヘッダに付加せず、規格のプロファイル(profile)又はレベル(level)等でどの方式を用いるかが規定されてもよい。これによりヘッダの符号量を削減できる。
探索部7102は、LoD生成結果と三次元点間の距離情報とを用いて各三次元点の近隣三次元点を探索する。予測部7103は、対象三次元点の属性情報の予測値を生成する。また、予測部7103は、0~M-1の複数の予測モードに予測値を割り当て、複数の予測モードから使用する予測モードを選択する。
減算部7104は、属性情報から予測値を減算することで予測残差を生成する。量子化部7105は、属性情報の予測残差を量子化する。逆量子化部7106は、量子化後の予測残差を逆量子化する。再構成部7107は、予測値と逆量子化後の予測残差とを加算することで復号値を生成する。メモリ7108は、復号済みの各三次元点の属性情報の値(復号値)を記憶する。メモリ7108に記憶される復号済みの三次元点の属性情報は、予測部7103による、符号化されていない三次元点の予測に利用される。
算術符号化部7109は、量子化後の予測残差からZeroCntを算出し、ZeroCntを算術符号化する。また、算術符号化部7109は、量子化後の非ゼロの予測残差を算術符号化する。算術符号化部7109は、予測残差を算術符号化前に二値化してもよい。また、算術符号化部7109は、各種ヘッダ情報を生成及び符号化してもよい。また、算術符号化部7109は、予測部7103が符号化に使用した予測モードを示す予測モード情報(PredMode)を算術符号化してビットストリームに付加してもよい。
図173は、三次元データ復号装置に含まれる属性情報復号部7110のブロック図である。属性情報復号部7110は、算術復号部7111と、LoD設定部7112と、探索部7113と、予測部7114と、逆量子化部7115と、再構成部7116と、メモリ7117とを備える。
算術復号部7111は、ビットストリームに含まれるZeroCntと予測残差とを算術復号する。また、算術復号部7111は、各種ヘッダ情報を復号する。また、算術復号部7111は、ビットストリームから予測モード情報(PredMode)を算術復号し、得られた予測モード情報を予測部7114に出力する。
LoD設定部7112は、復号された三次元点の位置情報を用いてLoDを生成する。例えば、LoD設定部7112は、三次元点の距離情報を用いたLoD生成方法と、本実施の形態で説明した2分木を利用したLoD生成方法のどちらを使用したかを示すフラグ等(切替フラグ)をビットストリームから復号し、切替部フラグで示される方法でLoDを生成してもよい。なお、三次元データ復号装置は、規格のプロファイル又はレベル等で規定されたLoD生成方式を用いてもよい。
探索部7113は、LoD生成結果と三次元点間の距離情報を用いて各三次元点の近隣三次元点を探索する。予測部7114は、復号対象の対象三次元点の属性情報の予測値を生成する。逆量子化部7115は、算術復号された予測残差を逆量子化する。再構成部7116は、予測値と逆量子化後の予測残差とを加算することで復号値を生成する。メモリ7117は、復号済みの各三次元点の属性情報の値(復号値)を記憶する。メモリ7117に記憶される復号済みの三次元点の属性情報は、予測部7114による、復号されていない三次元点の予測に利用される。
以上、本開示の実施の形態に係る三次元データ符号化装置及び三次元データ復号装置等について説明したが、本開示は、この実施の形態に限定されるものではない。
また、上記実施の形態に係る三次元データ符号化装置及び三次元データ復号装置等に含まれる各処理部は典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されてもよいし、一部又は全てを含むように1チップ化されてもよい。
また、集積回路化はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)、又はLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
また、上記各実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。
また、本開示は、三次元データ符号化装置及び三次元データ復号装置等により実行される三次元データ符号化方法又は三次元データ復号方法等として実現されてもよい。
また、ブロック図における機能ブロックの分割は一例であり、複数の機能ブロックを一つの機能ブロックとして実現したり、一つの機能ブロックを複数に分割したり、一部の機能を他の機能ブロックに移してもよい。また、類似する機能を有する複数の機能ブロックの機能を単一のハードウェア又はソフトウェアが並列又は時分割に処理してもよい。
また、フローチャートにおける各ステップが実行される順序は、本開示を具体的に説明するために例示するためのものであり、上記以外の順序であってもよい。また、上記ステップの一部が、他のステップと同時(並列)に実行されてもよい。
以上、一つまたは複数の態様に係る三次元データ符号化装置及び三次元データ復号装置等について、実施の形態に基づいて説明したが、本開示は、この実施の形態に限定されるものではない。本開示の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、一つまたは複数の態様の範囲内に含まれてもよい。