本開示の一態様に係る三次元データ符号化方法は、三次元空間における複数の三次元位置を示す点群データを符号化する三次元データ符号化方法であって、前記三次元空間を複数のサブ空間に分割することで、前記点群データを複数のサブ点群データに分割し、前記複数のサブ点群データの各々を、所定の移動量に応じて移動させ、移動後の前記複数のサブ点群データを符号化することでビットストリームを生成し、前記ビットストリームは、前記複数のサブ点群データに共通であって、前記複数のサブ点群データの移動量に関する第1情報を含む第1制御情報と、サブ点群データ毎の複数の第2制御情報とを含む。
これによれば、当該三次元データ符号化方法は、第1情報により移動量を三次元データ復号装置に伝えることができる。また、第1情報を複数のサブ点群データで共通化することで符号量を削減できる。
例えば、前記移動量は、前記サブ点群データと前記サブ点群データが含まれるサブ空間とのいずれかに基づく移動量であってもよい。
例えば、前記移動量は、上位ビットと下位ビットとを含み、前記第1情報は、前記複数のサブ点群データに共通の情報であって、前記下位ビットのビット数を示し、前記複数の第2制御情報の各々は、当該第2制御情報に対応するサブ点群データに対する前記移動量に含まれる前記上位ビットの値を示す第2情報を含んでもよい。
これによれば、当該三次元データ符号化方法は、第1情報及び第2情報により移動量を三次元データ復号装置に伝えることができる。また、第1情報を複数のサブ点群データで共通化することで符号量を削減できる。
例えば、前記第1制御情報は、前記下位ビットのビット数を示す情報が前記第1制御情報に含まれるか、前記複数の第2制御情報の各々に含まれるかを示すフラグを含み、前記フラグにより前記下位ビットのビット数を示す情報が前記第1制御情報に含まれることが示される場合、前記第1制御情報は前記第1情報を含み、前記複数の第2制御情報の各々は前記下位ビットのビット数を示す情報を含まず、前記フラグにより前記下位ビットのビット数を示す情報が前記複数の第2制御情報の各々に含まれることが示される場合、前記複数の第2制御情報の各々は、当該第2制御情報に対応するサブ点群データに対する前記移動量に含まれる前記下位ビットのビット数を示す第3情報を含み、前記第1制御情報は前記第1情報を含まなくてもよい。
これによれば、当該三次元データ符号化方法は、第1情報を複数のサブ点群データで共通化するか否かを切り替えることができるので適切な符号化を行える。
例えば、前記下位ビットに含まれる全てのビットは値ゼロであり、前記ビットストリームは、前記下位ビットの値を示す情報を含まなくてもよい。
本開示の一態様に係る三次元データ復号方法は、三次元空間を複数のサブ空間に分割することで複数の三次元位置を示す点群データが分割された複数のサブ点群データが、所定の移動量に応じて移動された移動後の複数のサブ点群データをビットストリームから復号し、前記ビットストリームに含まれる、前記複数のサブ点群データに共通の第1制御情報から、前記複数のサブ点群データの移動量に関する第1情報を取得し、前記第1情報を用いて前記複数のサブ点群データの複数の前記移動量を算出し、復号された前記移動後の複数のサブ点群データの各々を、当該サブ点群データに対応する前記移動量に応じて移動させることで、前記複数のサブ点群データを復元する。
これによれば、当該三次元データ復号方法は、第1情報により移動量を算出できる。また、第1情報が複数のサブ点群データで共通化されていることで符号量が削減される。
例えば、前記移動量は、前記サブ点群データと前記サブ点群データが含まれるサブ空間とのいずれかに基づく移動量であってもよい。
例えば、前記移動量は、上位ビットと下位ビットとを含み、前記第1情報は、前記複数のサブ点群データに共通の情報であって、前記下位ビットのビット数を示し、前記三次元データ復号方法は、さらに、前記ビットストリームに含まれるサブ点群データ毎の複数の第2制御情報から、前記複数のサブ点群データの各々の前記移動量の上位ビットの値を示す複数の第2情報を取得し、前記移動量の算出では、前記第1情報及び前記複数の第2情報を用いて前記複数のサブ点群データの複数の前記移動量を算出してもよい。
これによれば、当該三次元データ復号方法は、第1情報及び第2情報により移動量を算出できる。また、第1情報が複数のサブ点群データで共通化されていることで符号量が削減される。
例えば、前記第1制御情報は、前記下位ビットのビット数を示す情報が前記第1制御情報に含まれるか、前記複数の第2制御情報の各々に含まれるかを示すフラグを含み、前記フラグにより前記下位ビットのビット数を示す情報が前記第1制御情報に含まれることが示される場合、前記第1制御情報から前記第1情報を取得し、前記第1情報及び前記複数の第2情報を用いて前記複数のサブ点群データの複数の前記移動量を算出し、前記フラグにより前記下位ビットのビット数を示す情報が前記複数の第2制御情報の各々に含まれることが示される場合、前記複数の第2制御情報の各々から、前記複数のサブ点群データの各々の前記移動量の下位ビットのビット数を示す複数の第3情報を取得し、前記複数の第3情報及び前記複数の第2情報を用いて前記複数のサブ点群データの複数の前記移動量を算出してもよい。
これによれば、当該三次元データ復号方法は、第1情報に基づき、複数のサブ点群データで共通化するか否かを切り替えることができるので適切な復号を行える。
例えば、前記移動量の算出では、前記下位ビットに含まれる全てのビットを値ゼロに設定してもよい。
また、本開示の一態様に係る三次元データ符号化装置は、三次元空間における複数の三次元位置を示す点群データを符号化する三次元データ符号化装置であって、プロセッサと、メモリとを備え、前記プロセッサは、前記メモリを用いて、前記三次元空間を複数のサブ空間に分割することで、前記点群データを複数のサブ点群データに分割し、前記複数のサブ点群データの各々を、所定の移動量に応じて移動させ、移動後の前記複数のサブ点群データを符号化することでビットストリームを生成し、前記ビットストリームは、前記複数のサブ点群データに共通であって、前記複数のサブ点群データの移動量に関する第1情報を含む第1制御情報と、サブ点群データ毎の複数の第2制御情報とを含む。
これによれば、当該三次元データ符号化装置は、第1情報により移動量を三次元データ復号装置に伝えることができる。また、第1情報を複数のサブ点群データで共通化することで符号量を削減できる。
また、本開示の一態様に係る三次元データ復号装置は、プロセッサと、メモリとを備え、前記プロセッサは、前記メモリを用いて、三次元空間を複数のサブ空間に分割することで複数の三次元位置を示す点群データが分割された複数のサブ点群データが、所定の移動量に応じて移動された移動後の複数のサブ点群データをビットストリームから復号し、前記ビットストリームに含まれる、前記複数のサブ点群データに共通の第1制御情報から、前記複数のサブ点群データの移動量に関する第1情報を取得し、前記第1情報を用いて前記複数のサブ点群データの複数の前記移動量を算出し、復号された前記移動後の複数のサブ点群データの各々を、当該サブ点群データに対応する前記移動量に応じて移動させることで、前記複数のサブ点群データを復元する。
これによれば、当該三次元データ復号装置は、第1情報により移動量を算出できる。また、第1情報が複数のサブ点群データで共通化されていることで符号量が削減される。
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラム及び記録媒体の任意な組み合わせで実現されてもよい。
以下、実施の形態について、図面を参照しながら具体的に説明する。なお、以下で説明する実施の形態は、いずれも本開示の一具体例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本開示を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
(実施の形態1)
ポイントクラウドの符号化データを実際の装置又はサービスにおいて使用する際には、ネットワーク帯域を抑制するために用途に応じて必要な情報を送受信することが望ましい。しかしながら、これまで、三次元データの符号化構造にはそのような機能が存在せず、そのための符号化方法も存在しなかった。
本実施の形態では、三次元のポイントクラウドの符号化データにおいて用途に応じて必要な情報を送受信する機能を提供するための三次元データ符号化方法及び三次元データ符号化装置、並びに、当該符号化データを復号する三次元データ復号方法及び三次元データ復号装置、並びに、当該符号化データを多重化する三次元データ多重化方法、並びに、当該符号化データを伝送する三次元データ伝送方法について説明する。
特に、現在、点群データの符号化方法(符号化方式)として第1の符号化方法、及び第2の符号化方法が検討されているが、符号化データの構成、及び符号化データをシステムフォーマットへ格納する方法が定義されておらず、このままでは符号化部におけるMUX処理(多重化)、又は、伝送或いは蓄積ができないという課題がある。
また、PCC(Point Cloud Compression)のように、第1の符号化方法と第2の符号化方法の2つのコーデックが混在するフォーマットをサポートする方法はこれまで存在しない。
本実施の形態では、第1の符号化方法と第2の符号化方法の2つのコーデックが混在するPCC符号化データの構成、及び符号化データをシステムフォーマットへ格納する方法について説明する。
まず、本実施の形態に係る三次元データ(点群データ)符号化復号システムの構成を説明する。図1は、本実施の形態に係る三次元データ符号化復号システムの構成例を示す図である。図1に示すように、三次元データ符号化復号システムは、三次元データ符号化システム4601と、三次元データ復号システム4602と、センサ端末4603と、外部接続部4604とを含む。
三次元データ符号化システム4601は、三次元データである点群データを符号化することで符号化データ又は多重化データを生成する。なお、三次元データ符号化システム4601は、単一の装置により実現される三次元データ符号化装置であってもよいし、複数の装置により実現されるシステムであってもよい。また、三次元データ符号化装置は、三次元データ符号化システム4601に含まれる複数の処理部のうち一部を含んでもよい。
三次元データ符号化システム4601は、点群データ生成システム4611と、提示部4612と、符号化部4613と、多重化部4614と、入出力部4615と、制御部4616とを含む。点群データ生成システム4611は、センサ情報取得部4617と、点群データ生成部4618とを含む。
センサ情報取得部4617は、センサ端末4603からセンサ情報を取得し、センサ情報を点群データ生成部4618に出力する。点群データ生成部4618は、センサ情報から点群データを生成し、点群データを符号化部4613へ出力する。
提示部4612は、センサ情報又は点群データをユーザに提示する。例えば、提示部4612は、センサ情報又は点群データに基づく情報又は画像を表示する。
符号化部4613は、点群データを符号化(圧縮)し、得られた符号化データと、符号化過程において得られた制御情報と、その他の付加情報とを多重化部4614へ出力する。付加情報は、例えば、センサ情報を含む。
多重化部4614は、符号化部4613から入力された符号化データと、制御情報と、付加情報とを多重することで多重化データを生成する。多重化データのフォーマットは、例えば蓄積のためのファイルフォーマット、又は伝送のためのパケットフォーマットである。
入出力部4615(例えば、通信部又はインタフェース)は、多重化データを外部へ出力する。または、多重化データは、内部メモリ等の蓄積部に蓄積される。制御部4616(またはアプリ実行部)は、各処理部を制御する。つまり、制御部4616は、符号化及び多重化等の制御を行う。
なお、センサ情報が符号化部4613又は多重化部4614へ入力されてもよい。また、入出力部4615は、点群データ又は符号化データをそのまま外部へ出力してもよい。
三次元データ符号化システム4601から出力された伝送信号(多重化データ)は、外部接続部4604を介して、三次元データ復号システム4602に入力される。
三次元データ復号システム4602は、符号化データ又は多重化データを復号することで三次元データである点群データを生成する。なお、三次元データ復号システム4602は、単一の装置により実現される三次元データ復号装置であってもよいし、複数の装置により実現されるシステムであってもよい。また、三次元データ復号装置は、三次元データ復号システム4602に含まれる複数の処理部のうち一部を含んでもよい。
三次元データ復号システム4602は、センサ情報取得部4621と、入出力部4622と、逆多重化部4623と、復号部4624と、提示部4625と、ユーザインタフェース4626と、制御部4627とを含む。
センサ情報取得部4621は、センサ端末4603からセンサ情報を取得する。
入出力部4622は、伝送信号を取得し、伝送信号から多重化データ(ファイルフォーマット又はパケット)を復号し、多重化データを逆多重化部4623へ出力する。
逆多重化部4623は、多重化データから符号化データ、制御情報及び付加情報を取得し、符号化データ、制御情報及び付加情報を復号部4624へ出力する。
復号部4624は、符号化データを復号することで点群データを再構成する。
提示部4625は、点群データをユーザに提示する。例えば、提示部4625は、点群データに基づく情報又は画像を表示する。ユーザインタフェース4626は、ユーザの操作に基づく指示を取得する。制御部4627(またはアプリ実行部)は、各処理部を制御する。つまり、制御部4627は、逆多重化、復号及び提示等の制御を行う。
なお、入出力部4622は、点群データ又は符号化データをそのまま外部から取得してもよい。また、提示部4625は、センサ情報などの付加情報を取得し、付加情報に基づいた情報を提示してもよい。また、提示部4625は、ユーザインタフェース4626で取得されたユーザの指示に基づき、提示を行ってもよい。
センサ端末4603は、センサで得られた情報であるセンサ情報を生成する。センサ端末4603は、センサ又はカメラを搭載した端末であり、例えば、自動車などの移動体、飛行機などの飛行物体、携帯端末、又はカメラなどがある。
センサ端末4603で取得可能なセンサ情報は、例えば、(1)LIDAR、ミリ波レーダ、又は赤外線センサから得られる、センサ端末4603と対象物との距離、又は対象物の反射率、(2)複数の単眼カメラ画像又はステレオカメラ画像から得られるカメラと対象物との距離又は対象物の反射率等である。また、センサ情報は、センサの姿勢、向き、ジャイロ(角速度)、位置(GPS情報又は高度)、速度、又は加速度等を含んでもよい。また、センサ情報は、気温、気圧、湿度、又は磁気等を含んでもよい。
外部接続部4604は、集積回路(LSI又はIC)、外部蓄積部、インターネットを介したクラウドサーバとの通信、又は、放送等により実現される。
次に、点群データについて説明する。図2は、点群データの構成を示す図である。図3は、点群データの情報が記述されたデータファイルの構成例を示す図である。
点群データは、複数の点のデータを含む。各点のデータは、位置情報(三次元座標)、及びその位置情報に対する属性情報とを含む。この点が複数集まったものを点群と呼ぶ。例えば、点群は対象物(オブジェクト)の三次元形状を示す。
三次元座標等の位置情報(Position)をジオメトリ(geometry)と呼ぶこともある。また、各点のデータは、複数の属性種別の属性情報(attribute)を含んでもよい。属性種別は、例えば色又は反射率などである。
1つの位置情報に対して1つの属性情報が対応付けられてもよいし、1つの位置情報に対して複数の異なる属性種別を持つ属性情報が対応付けられてもよい。また、1つの位置情報に対して同じ属性種別の属性情報が複数対応付けられてもよい。
図3に示すデータファイルの構成例は、位置情報と属性情報とが1対1に対応する場合の例であり、点群データを構成するN個の点の位置情報と属性情報とを示している。
位置情報は、例えば、x、y、zの3軸の情報である。属性情報は、例えば、RGBの色情報である。代表的なデータファイルとしてplyファイルなどがある。
次に、点群データの種類について説明する。図4は、点群データの種類を示す図である。図4に示すように、点群データには、静的オブジェクトと、動的オブジェクトとがある。
静的オブジェクトは、任意の時間(ある時刻)の三次元点群データである。動的オブジェクトは、時間的に変化する三次元点群データである。以降、ある時刻の三次元点群データをPCCフレーム、又はフレームと呼ぶ。
オブジェクトは、通常の映像データのように、ある程度領域が制限されている点群であってもよいし、地図情報のように領域が制限されていない大規模点群であってもよい。
また、様々な密度の点群データがあり、疎な点群データと、密な点群データとが存在してもよい。
以下、各処理部の詳細について説明する。センサ情報は、LIDAR或いはレンジファインダなどの距離センサ、ステレオカメラ、又は、複数の単眼カメラの組合せなど様々な方法で取得される。点群データ生成部4618は、センサ情報取得部4617で得られたセンサ情報に基づき点群データを生成する。点群データ生成部4618は、点群データとして、位置情報を生成し、位置情報に、当該位置情報に対する属性情報を付加する。
点群データ生成部4618は、位置情報の生成又は属性情報の付加の際に、点群データを加工してもよい。例えば、点群データ生成部4618は、位置が重複する点群を削除することでデータ量を減らしてもよい。また、点群データ生成部4618は、位置情報を変換(位置シフト、回転又は正規化など)してもよいし、属性情報をレンダリングしてもよい。
なお、図1では、点群データ生成システム4611は、三次元データ符号化システム4601に含まれるが、三次元データ符号化システム4601の外部に独立して設けられてもよい。
符号化部4613は、点群データを予め規定された符号化方法に基づき符号化することで符号化データを生成する。符号化方法には大きく以下の2種類がある。一つ目は、位置情報を用いた符号化方法であり、この符号化方法を、以降、第1の符号化方法と記載する。二つ目は、ビデオコーデックを用いた符号化方法であり、この符号化方法を、以降、第2の符号化方法と記載する。
復号部4624は、符号化データを予め規定された符号化方法に基づき復号することで点群データを復号する。
多重化部4614は、符号化データを、既存の多重化方式を用いて多重化することで多重化データを生成する。生成された多重化データは、伝送又は蓄積される。多重化部4614は、PCC符号化データの他に、映像、音声、字幕、アプリケーション、ファイルなどの他のメディア、又は基準時刻情報を多重化する。また、多重化部4614は、さらに、センサ情報又は点群データに関連する属性情報を多重してもよい。
多重化方式又はファイルフォーマットとしては、ISOBMFF、ISOBMFFベースの伝送方式であるMPEG-DASH、MMT、MPEG-2 TS Systems、RMPなどがある。
逆多重化部4623は、多重化データからPCC符号化データ、その他のメディア、及び時刻情報などを抽出する。
入出力部4615は、多重化データを、放送又は通信など、伝送する媒体又は蓄積する媒体にあわせた方法を用いて伝送する。入出力部4615は、インターネット経由で他のデバイスと通信してもよいし、クラウドサーバなどの蓄積部と通信してもよい。
通信プロトコルとしては、http、ftp、TCP又はUDPなどが用いられる。PULL型の通信方式が用いられてもよいし、PUSH型の通信方式が用いられてもよい。
有線伝送及び無線伝送のいずれが用いられてもよい。有線伝送としては、Ethernet(登録商標)、USB、RS-232C、HDMI(登録商標)、又は同軸ケーブルなどが用いられる。無線伝送としては、無線LAN、Wi-Fi(登録商標)、Bluetooth(登録商標)又はミリ波などが用いられる。
また、放送方式としては、例えばDVB-T2、DVB-S2、DVB-C2、ATSC3.0、又はISDB-S3などが用いられる。
図5は、第1の符号化方法の符号化を行う符号化部4613の例である第1の符号化部4630の構成を示す図である。図6は、第1の符号化部4630のブロック図である。第1の符号化部4630は、点群データを第1の符号化方法で符号化することで符号化データ(符号化ストリーム)を生成する。この第1の符号化部4630は、位置情報符号化部4631と、属性情報符号化部4632と、付加情報符号化部4633と、多重化部4634とを含む。
第1の符号化部4630は、三次元構造を意識して符号化を行うという特徴を有する。また、第1の符号化部4630は、属性情報符号化部4632が、位置情報符号化部4631から得られる情報を用いて符号を行うという特徴を有する。第1の符号化方法は、GPCC(Geometry based PCC)とも呼ばれる。
点群データは、PLYファイルのようなPCC点群データ、又は、センサ情報から生成されたPCC点群データであり、位置情報(Position)、属性情報(Attribute)、及びその他の付加情報(MetaData)を含む。位置情報は位置情報符号化部4631に入力され、属性情報は属性情報符号化部4632に入力され、付加情報は付加情報符号化部4633に入力される。
位置情報符号化部4631は、位置情報を符号化することで符号化データである符号化位置情報(Compressed Geometry)を生成する。例えば、位置情報符号化部4631は、8分木等のN分木構造を用いて位置情報を符号化する。具体的には、8分木では、対象空間が8個のノード(サブ空間)に分割され、各ノードに点群が含まれるか否かを示す8ビットの情報(オキュパンシー符号)が生成される。また、点群が含まれるノードは、さらに、8個のノードに分割され、当該8個のノードの各々に点群が含まれるか否かを示す8ビットの情報が生成される。この処理が、予め定められた階層又はノードに含まれる点群の数の閾値以下になるまで繰り返される。
属性情報符号化部4632は、位置情報符号化部4631で生成された構成情報を用いて符号化することで符号化データである符号化属性情報(Compressed Attribute)を生成する。例えば、属性情報符号化部4632は、位置情報符号化部4631で生成された8分木構造に基づき、処理対象の対象点(対象ノード)の符号化において参照する参照点(参照ノード)を決定する。例えば、属性情報符号化部4632は、周辺ノード又は隣接ノードのうち、8分木における親ノードが対象ノードと同一のノードを参照する。なお、参照関係の決定方法はこれに限らない。
また、属性情報の符号化処理は、量子化処理、予測処理、及び算術符号化処理のうち少なくとも一つを含んでもよい。この場合、参照とは、属性情報の予測値の算出に参照ノードを用いること、又は、符号化のパラメータの決定に参照ノードの状態(例えば、参照ノードに点群が含まれる否かを示す占有情報)を用いること、である。例えば、符号化のパラメータとは、量子化処理における量子化パラメータ、又は算術符号化におけるコンテキスト等である。
付加情報符号化部4633は、付加情報のうち、圧縮可能なデータを符号化することで符号化データである符号化付加情報(Compressed MetaData)を生成する。
多重化部4634は、符号化位置情報、符号化属性情報、符号化付加情報及びその他の付加情報を多重化することで符号化データである符号化ストリーム(Compressed Stream)を生成する。生成された符号化ストリームは、図示しないシステムレイヤの処理部へ出力される。
次に、第1の符号化方法の復号を行う復号部4624の例である第1の復号部4640について説明する。図7は、第1の復号部4640の構成を示す図である。図8は、第1の復号部4640のブロック図である。第1の復号部4640は、第1の符号化方法で符号化された符号化データ(符号化ストリーム)を、第1の符号化方法で復号することで点群データを生成する。この第1の復号部4640は、逆多重化部4641と、位置情報復号部4642と、属性情報復号部4643と、付加情報復号部4644とを含む。
図示しないシステムレイヤの処理部から符号化データである符号化ストリーム(Compressed Stream)が第1の復号部4640に入力される。
逆多重化部4641は、符号化データから、符号化位置情報(Compressed Geometry)、符号化属性情報(Compressed Attribute)、符号化付加情報(Compressed MetaData)、及び、その他の付加情報を分離する。
位置情報復号部4642は、符号化位置情報を復号することで位置情報を生成する。例えば、位置情報復号部4642は、8分木等のN分木構造で表される符号化位置情報から三次元座標で表される点群の位置情報を復元する。
属性情報復号部4643は、位置情報復号部4642で生成された構成情報に基づき、符号化属性情報を復号する。例えば、属性情報復号部4643は、位置情報復号部4642で得られた8分木構造に基づき、処理対象の対象点(対象ノード)の復号において参照する参照点(参照ノード)を決定する。例えば、属性情報復号部4643は、周辺ノード又は隣接ノードのうち、8分木における親ノードが対象ノードと同一のノードを参照する。なお、参照関係の決定方法はこれに限らない。
また、属性情報の復号処理は、逆量子化処理、予測処理、及び算術復号処理のうち少なくとも一つを含んでもよい。この場合、参照とは、属性情報の予測値の算出に参照ノードを用いること、又は、復号のパラメータの決定に参照ノードの状態(例えば、参照ノードに点群が含まれる否かを示す占有情報)を用いること、である。例えば、復号のパラメータとは、逆量子化処理における量子化パラメータ、又は算術復号におけるコンテキスト等である。
付加情報復号部4644は、符号化付加情報を復号することで付加情報を生成する。また、第1の復号部4640は、位置情報及び属性情報の復号処理に必要な付加情報を復号時に使用し、アプリケーションに必要な付加情報を外部に出力する。
次に、第2の符号化方法の符号化を行う符号化部4613の例である第2の符号化部4650について説明する。図9は、第2の符号化部4650の構成を示す図である。図10は、第2の符号化部4650のブロック図である。
第2の符号化部4650は、点群データを第2の符号化方法で符号化することで符号化データ(符号化ストリーム)を生成する。この第2の符号化部4650は、付加情報生成部4651と、位置画像生成部4652と、属性画像生成部4653と、映像符号化部4654と、付加情報符号化部4655と、多重化部4656とを含む。
第2の符号化部4650は、三次元構造を二次元画像に投影することで位置画像及び属性画像を生成し、生成した位置画像及び属性画像を既存の映像符号化方式を用いて符号化するという特徴を有する。第2の符号化方法は、VPCC(Video based PCC)とも呼ばれる。
点群データは、PLYファイルのようなPCC点群データ、又は、センサ情報から生成されたPCC点群データであり、位置情報(Position)、属性情報(Attribute)、及びその他の付加情報MetaData)を含む。
付加情報生成部4651は、三次元構造を二次元画像に投影することで、複数の二次元画像のマップ情報を生成する。
位置画像生成部4652は、位置情報と、付加情報生成部4651で生成されたマップ情報とに基づき、位置画像(Geometry Image)を生成する。この位置画像は、例えば、画素値として距離(Depth)が示される距離画像である。なお、この距離画像は、一つの視点から複数の点群を見た画像(一つの二次元平面に複数の点群を投影した画像)であってもよいし、複数の視点から複数の点群を見た複数の画像であってもよいし、これらの複数の画像を統合した一つの画像であってもよい。
属性画像生成部4653は、属性情報と、付加情報生成部4651で生成されたマップ情報とに基づき、属性画像を生成する。この属性画像は、例えば、画素値として属性情報(例えば色(RGB))が示される画像である。なお、この画像は、一つの視点から複数の点群を見た画像(一つの二次元平面に複数の点群を投影した画像)であってもよいし、複数の視点から複数の点群を見た複数の画像であってもよいし、これらの複数の画像を統合した一つの画像であってもよい。
映像符号化部4654は、位置画像及び属性画像を、映像符号化方式を用いて符号化することで、符号化データである符号化位置画像(Compressed Geometry Image)及び符号化属性画像(Compressed Attribute Image)を生成する。なお、映像符号化方式として、公知の任意の符号化方法が用いられてよい。例えば、映像符号化方式は、AVC又はHEVC等である。
付加情報符号化部4655は、点群データに含まれる付加情報、及びマップ情報等を符号化することで符号化付加情報(Compressed MetaData)を生成する。
多重化部4656は、符号化位置画像、符号化属性画像、符号化付加情報、及び、その他の付加情報を多重化することで符号化データである符号化ストリーム(Compressed Stream)を生成する。生成された符号化ストリームは、図示しないシステムレイヤの処理部へ出力される。
次に、第2の符号化方法の復号を行う復号部4624の例である第2の復号部4660について説明する。図11は、第2の復号部4660の構成を示す図である。図12は、第2の復号部4660のブロック図である。第2の復号部4660は、第2の符号化方法で符号化された符号化データ(符号化ストリーム)を、第2の符号化方法で復号することで点群データを生成する。この第2の復号部4660は、逆多重化部4661と、映像復号部4662と、付加情報復号部4663と、位置情報生成部4664と、属性情報生成部4665とを含む。
図示しないシステムレイヤの処理部から符号化データである符号化ストリーム(Compressed Stream)が第2の復号部4660に入力される。
逆多重化部4661は、符号化データから、符号化位置画像(Compressed Geometry Image)、符号化属性画像(Compressed Attribute Image)、符号化付加情報(Compressed MetaData)、及び、その他の付加情報を分離する。
映像復号部4662は、符号化位置画像及び符号化属性画像を、映像符号化方式を用いて復号することで、位置画像及び属性画像を生成する。なお、映像符号化方式として、公知の任意の符号化方式が用いられてよい。例えば、映像符号化方式は、AVC又はHEVC等である。
付加情報復号部4663は、符号化付加情報を復号することで、マップ情報等を含む付加情報を生成する。
位置情報生成部4664は、位置画像とマップ情報とを用いて位置情報を生成する。属性情報生成部4665は、属性画像とマップ情報とを用いて属性情報を生成する。
第2の復号部4660は、復号に必要な付加情報を復号時に使用し、アプリケーションに必要な付加情報を外部に出力する。
以下、PCC符号化方式における課題を説明する。図13は、PCC符号化データに関わるプロトコルスタックを示す図である。図13には、PCC符号化データに、映像(例えばHEVC)又は音声などの他のメディアのデータを多重し、伝送又は蓄積する例を示す。
多重化方式及びファイルフォーマットは、様々な符号化データを多重し、伝送又は蓄積するための機能を有している。符号化データを伝送又は蓄積するためには、符号化データを多重化方式のフォーマットに変換しなければならない。例えば、HEVCでは、NALユニットと呼ばれるデータ構造に符号化データを格納し、NALユニットをISOBMFFに格納する技術が規定されている。
一方、現在、点群データの符号化方法として第1の符号化方法(Codec1)、及び第2の符号化方法(Codec2)が検討されているが、符号化データの構成、及び符号化データをシステムフォーマットへ格納する方法が定義されておらず、このままでは符号化部におけるMUX処理(多重化)、伝送及び蓄積ができないという課題がある。
なお、以降において、特定の符号化方法の記載がなければ、第1の符号化方法、及び第2の符号化方法のいずれかを示すものとする。
(実施の形態2)
本実施の形態では、NALユニットをISOBMFFのファイルに格納する方法について説明する。
ISOBMFF(ISO based media file format)は、ISO/IEC14496-12に規定されるファイルフォーマット規格である。ISOBMFFは、ビデオ、オーディオ、及びテキストなど様々なメディアを多重して格納できるフォーマットを規定しており、メディアに依存しない規格である。
ISOBMFFの基本構造(ファイル)について説明する。ISOBMFFにおける基本単位はボックスである。ボックスはtype、length、dataで構成され、様々なtypeのボックスを組み合わせた集合がファイルである。
図14は、ISOBMFFの基本構造(ファイル)を示す図である。ISOBMFFのファイルは、主に、ファイルのブランドを4CC(4文字コード)で示すftyp、制御情報などのメタデータを格納するmoov、及び、データを格納するmdatなどのボックスを含む。
ISOBMFFのファイルへのメディア毎の格納方法は別途規定されており、例えば、AVCビデオ及びHEVCビデオの格納方法は、ISO/IEC14496-15に規定される。ここで、PCC符号化データを蓄積又は伝送するために、ISOBMFFの機能を拡張して使用することが考えられるが、PCC符号化データをISOBMFFのファイルに格納する規定はまだない。そこで、本実施の形態では、PCC符号化データをISOBMFFのファイルに格納する方法について説明する。
図15は、PCCコーデック共通のNALユニットをISOBMFFのファイルに格納する場合のプロトコルスタックを示す図である。ここでは、PCCコーデック共通のNALユニットがISOBMFFのファイルに格納される。NALユニットはPCCコーデック共通であるが、NALユニットには複数のPCCコーデックが格納されるため、それぞれのコーデックに応じた格納方法(Carriage of Codec1、Carriage of Codec2)を規定することが望ましい。
次に、複数のPCCコーデックをサポートする共通のPCC NALユニットをISOBMFFのファイルへ格納する方法について説明する。図16は、共通のPCC NALユニットをコーデック1の格納方法(Carriage of Codec1)のISOBMFFのファイルに格納する例を示す図である。図17は、共通のPCC NALユニットをコーデック2の格納方法(Carriage of Codec2)のISOBMFFのファイルに格納する例を示す図である。
ここで、ftypは、ファイルフォーマットを識別するための重要な情報であり、ftyp用に、コーデック毎に異なる識別子が定義される。第1の符号化方法(符号化方式)で符号化されたPCC符号化データがファイルに格納される場合は、ftyp=pcc1に設定される。第2の符号化方法で符号化されたPCC符号化データがファイルに格納される場合は、ftyp=pcc2に設定される。
ここで、pcc1は、PCCのコーデック1(第1の符号化方法)が用いられることを示す。pcc2は、PCCのコーデック2(第2の符号化方法)が用いられることを示す。つまり、pcc1及びpcc2は、データがPCC(三次元データ(点群データ)の符号データ)であることを示し、かつ、PCCコーデック(第1の符号化方法及び第2の符号化方法)を示す。
以下、NALユニットをISOBMFFのファイルへ格納する方法について説明する。多重化部は、NALユニットヘッダを解析し、pcc_codec_type=Codec1である場合にはISOBMFFのftypにpcc1を記載する。
また、多重化部は、NALユニットヘッダを解析し、pcc_codec_type=Codec2である場合にはISOBMFFのftypにpcc2を記載する。
また、多重化部は、pcc_nal_unit_typeがメタデータである場合は、NALユニットを所定の方法で、例えばmoov又はmdatに格納する。多重化部は、pcc_nal_unit_typeがデータである場合は、NALユニットを所定の方法で、例えばmoov又はmdatに格納する。
例えば、多重化部は、HEVCと同様にNALユニットにNALユニットサイズを格納してもよい。
本格納方法により、逆多重化部(システムレイヤ)においてファイルに含まれるftypを解析することで、PCC符号化データが第1の符号化方法で符号化されたか、第2の符号化方法で符号化されたかを判定することが可能となる。さらに、上記の通り、PCC符号化データが第1の符号化方法で符号化されたか、第2の符号化方法で符号化されたかを判定することで、両方の符号化方法で符号化された符号化データが混在するデータからいずれか一方の符号化方法で符号化された符号化データを抽出することができる。これにより、符号化データを伝送する際に、伝送されるデータ量を抑制することができる。また、本格納方法により、第1の符号化方法と第2の符号化方法とで、異なるデータ(ファイル)フォーマットを設定することなく、共通のデータフォーマットを用いることができる。
なお、ISOBMFFにおけるftypなど、システムレイヤのメタデータにコーデックの識別情報が示される場合は、多重化部は、pcc_nal_unit_typeを削除したNALユニットをISOBMFFのファイルに格納してもよい。
次に、本実施の形態に係る三次元データ符号化システム(三次元データ符号化装置)が備える多重化部、及び、本実施の形態に係る三次元データ復号システム(三次元データ復号装置)が備える逆多重化部の構成及び動作について説明する。
図18は、第1の多重化部4710の構成を示す図である。第1の多重化部4710は、第1の符号化部4630で生成された符号化データ及び制御情報(NALユニット)をISOBMFFのファイルに格納することで多重化データ(ファイル)を生成するファイル変換部4711を備える。この第1の多重化部4710は、例えば、図1に示す多重化部4614に含まれる。
図19は、第1の逆多重化部4720の構成を示す図である。第1の逆多重化部4720は、多重化データ(ファイル)から符号化データ及び制御情報(NALユニット)を取得し、取得した符号化データ及び制御情報を第1の復号部4640に出力するファイル逆変換部4721を備える。この第1の逆多重化部4720は、例えば、図1に示す逆多重化部4623に含まれる。
図20は、第2の多重化部4730の構成を示す図である。第2の多重化部4730は、第2の符号化部4650で生成された符号化データ及び制御情報(NALユニット)をISOBMFFのファイルに格納することで多重化データ(ファイル)を生成するファイル変換部4731を備える。この第2の多重化部4730は、例えば、図1に示す多重化部4614に含まれる。
図21は、第2の逆多重化部4740の構成を示す図である。第2の逆多重化部4740は、多重化データ(ファイル)から符号化データ及び制御情報(NALユニット)を取得し、取得した符号化データ及び制御情報を第2の復号部4660に出力するファイル逆変換部4741を備える。この第2の逆多重化部4740は、例えば、図1に示す逆多重化部4623に含まれる。
図22は、第1の多重化部4710による多重化処理のフローチャートである。まず、第1の多重化部4710は、NALユニットヘッダに含まれるpcc_codec_typeを解析することで、使用されているコーデックが第1の符号化方法であるか、第2の符号化方法であるかを判定する(S4701)。
pcc_codec_typeが第2の符号化方法を示す場合(S4702で第2の符号化方法)、第1の多重化部4710は、当該NALユニットを処理しない(S4703)。
一方、pcc_codec_typeが第2の符号化方法を示す場合(S4702で第1の符号化方法)、第1の多重化部4710は、ftypにpcc1を記載する(S4704)。つまり、第1の多重化部4710は、第1の符号化方法で符号化されたデータがファイルに格納されていることを示す情報をftypに記載する。
次に、第1の多重化部4710は、NALユニットヘッダに含まれるpcc_nal_unit_typeを解析し、pcc_nal_unit_typeで示されるデータタイプに応じた所定の方法でデータをボックス(moov又はmdat等)に格納する(S4705)。そして、第1の多重化部4710は、上記ftyp及び上記ボックスを含むISOBMFFのファイルを作成する(S4706)。
図23は、第2の多重化部4730による多重化処理のフローチャートである。まず、第2の多重化部4730は、NALユニットヘッダに含まれるpcc_codec_typeを解析することで、使用されているコーデックが第1の符号化方法であるか、第2の符号化方法であるかを判定する(S4711)。
pcc_unit_typeが第2の符号化方法を示す場合(S4712で第2の符号化方法)、第2の多重化部4730は、ftypにpcc2を記載する(S4713)。つまり、第2の多重化部4730は、第2の符号化方法で符号化されたデータがファイルに格納されていることを示す情報をftypに記載する。
次に、第2の多重化部4730は、NALユニットヘッダに含まれるpcc_nal_unit_typeを解析し、pcc_nal_unit_typeで示されるデータタイプに応じた所定の方法でデータをボックス(moov又はmdat等)に格納する(S4714)。そして、第2の多重化部4730は、上記ftyp及び上記ボックスを含むISOBMFFのファイルを作成する(S4715)。
一方、pcc_unit_typeが第1の符号化方法を示す場合(S4712で第1の符号化方法)、第2の多重化部4730は、当該NALユニットを処理しない(S4716)。
なお、上記処理は、PCCデータを第1の符号化方法、及び第2の符号化方法のいずれか一方で符号化する例を示している。第1の多重化部4710及び第2の多重化部4730は、NALユニットのコーデックタイプを識別することにより、所望のNALユニットをファイルに格納する。なお、NALユニットヘッダ以外に、PCCコーデックの識別情報が含まれる場合には、第1の多重化部4710及び第2の多重化部4730は、ステップS4701及びS4711において、NALユニットヘッダ以外に含まれるPCCコーデックの識別情報を用いて、コーデックタイプ(第1の符号化方法又は第2の符号化方法)を識別してもよい。
また、第1の多重化部4710及び第2の多重化部4730は、ステップS4706及びS4714において、データをファイルに格納する際に、NALユニットヘッダからpcc_nal_unit_typeを削除したうえでファイルに格納してもよい。
図24は、第1の逆多重化部4720及び第1の復号部4640による処理を示すフローチャートである。まず、第1の逆多重化部4720は、ISOBMFFのファイルに含まれるftypを解析する(S4721)。ftypで示されるコーデックが第2の符号化方法(pcc2)である場合(S4722で第2の符号化方法)、第1の逆多重化部4720は、NALユニットのペイロードに含まれるデータが第2の符号化方法で符号化されたデータであると判断する(S4723)。また、第1の逆多重化部4720は、判断の結果を第1の復号部4640に伝達する。第1の復号部4640は、当該NALユニットを処理しない(S4724)。
一方、ftypで示されるコーデックが第1の符号化方法(pcc1)である場合(S4722で第1の符号化方法)、第1の逆多重化部4720は、NALユニットのペイロードに含まれるデータが第1の符号化方法で符号化されたデータであると判断する(S4725)。また、第1の逆多重化部4720は、判断の結果を第1の復号部4640に伝達する。
第1の復号部4640は、NALユニットヘッダに含まれるpcc_nal_unit_typeが、第1の符号化方法用のNALユニットの識別子であるとしてデータを識別する(S4726)。そして、第1の復号部4640は、第1の符号化方法の復号処理を用いてPCCデータを復号する(S4727)。
図25は、第2の逆多重化部4740及び第2の復号部4660による処理を示すフローチャートである。まず、第2の逆多重化部4740は、ISOBMFFのファイルに含まれるftypを解析する(S4731)。ftypで示されるコーデックが第2の符号化方法(pcc2)である場合(S4732で第2の符号化方法)、第2の逆多重化部4740は、NALユニットのペイロードに含まれるデータが第2の符号化方法で符号化されたデータであると判断する(S4733)。また、第2の逆多重化部4740は、判断の結果を第2の復号部4660に伝達する。
第2の復号部4660は、NALユニットヘッダに含まれるpcc_nal_unit_typeが、第2の符号化方法用のNALユニットの識別子であるとしてデータを識別する(S4734)。そして、第2の復号部4660は、第2の符号化方法の復号処理を用いてPCCデータを復号する(S4735)。
一方、ftypで示されるコーデックが第1の符号化方法(pcc1)である場合(S4732で第1の符号化方法)、第2の逆多重化部4740は、NALユニットのペイロードに含まれるデータが第1の符号化方法で符号化されたデータであると判断する(S4736)。また、第2の逆多重化部4740は、判断の結果を第2の復号部4660に伝達する。第2の復号部4660は、当該NALユニットを処理しない(S4737)。
このように、例えば、第1の逆多重化部4720又は第2の逆多重化部4740において、NALユニットのコーデックタイプを識別することにより、早い段階でコーデックタイプを識別できる。さらに、所望のNALユニットを第1の復号部4640又は第2の復号部4660に入力し、不要なNALユニットを取り除くことができる。この場合、第1の復号部4640又は第2の復号部4660において、コーデックの識別情報を解析する処理は不要になる可能性がある。なお、第1の復号部4640又は第2の復号部4660で再度NALユニットタイプを参照してコーデックの識別情報を解析する処理を実施してもよい。
また、第1の多重化部4710又は第2の多重化部4730においてNALユニットヘッダからpcc_nal_unit_typeを削除されている場合には、第1の逆多重化部4720又は第2の逆多重化部4740は、NALユニットにpcc_nal_unit_typeを付与したうえで第1の復号部4640又は第2の復号部4660へ出力してもよい。
(実施の形態3)
本実施の形態では、実施の形態1で説明した、複数のコーデックに対応した符号化部4670及び復号部4680に対応する、多重化部および逆多重化部について説明する。図26は、本実施の形態に係る符号化部4670及び第3の多重化部4750の構成を示す図である。
符号化部4670は、点群データを、第1の符号化方法、及び第2の符号化方法のいずれか一方又は両方の方式を用いて符号化する。符号化部4670は、点群データ単位、又はフレーム単位で符号化方法(第1の符号化方法及び第2の符号化方法)を切り替えてもよい。また、符号化部4670は、符号化可能な単位で符号化方法を切り替えてもよい。
符号化部4670は、PCCコーデックの識別情報を含む符号化データ(符号化ストリーム)を生成する。
第3の多重化部4750は、ファイル変換部4751を備える。ファイル変換部4751は、符号化部4670から出力されたNALユニットをPCCデータのファイルに変換する。ファイル変換部4751は、NALユニットヘッダに含まれるコーデック識別情報を解析し、PCC符号化データが、第1の符号化方法で符号化されたデータであるか、第2の符号化方法で符号化されたデータであるか、両方の方式で符号化されたデータであるかを判定する。ファイル変換部4751は、ftypにコーデックを識別可能なブランド名を記載する。例えば、両方の方式で符号化されたことを示す場合、ftypにpcc3が記載される。
なお、符号化部4670が、NALユニット以外にPCCコーデックの識別情報を記載している場合、ファイル変換部4751は、当該識別情報を用いて、PCCコーデック(符号化方法)を判定してもよい。
図27は、本実施の形態に係る第3の逆多重化部4760及び復号部4680の構成を示す図である。
第3の逆多重化部4760は、ファイル逆変換部4761を備える。ファイル逆変換部4761は、ファイルに含まれるftypを解析し、PCC符号化データが、第1の符号化方法で符号化されたデータであるか、第2の符号化方法で符号化されたデータであるか、両方の方式で符号化されたデータであるかを判定する。
PCC符号化データがいずれか一方の符号化方法で符号化されている場合、第1の復号部4640及び第2の復号部4660のうち、対応する復号部にデータが入力され、もう一方の復号部にはデータが入力されない。PCC符号化データが両方の符号化方法で符号化されている場合、両方式に対応する復号部4680にデータが入力される。
復号部4680は、PCC符号化データを、第1の符号化方法及び第2の符号化方法のいずれか一方又は両方の方式を用いて復号する。
図28は、本実施の形態に係る第3の多重化部4750による処理を示すフローチャートである。
まず、第3の多重化部4750は、NALユニットヘッダに含まれるpcc_codec_typeを解析することで、使用されているコーデックが第1の符号化方法であるか、第2の符号化方法であるか、第1の符号化方法及び第2の符号化方法の両方であるかを判定する(S4741)。
第2の符号化方法が使用されている場合(S4742でYes、かつ、S4743で第2の符号化方法)、第3の多重化部4750は、ftypにpcc2を記載する(S4744)。つまり、第3の多重化部4750は、第2の符号化方法で符号化されたデータがファイルに格納されていることを示す情報をftypに記載する。
次に、第3の多重化部4750は、NALユニットヘッダに含まれるpcc_nal_unit_typeを解析し、pcc_unit_typeで示されるデータタイプに応じた所定の方法でデータをボックス(moov又はmdat等)に格納する(S4745)。そして、第3の多重化部4750は、上記ftyp及び上記ボックスを含むISOBMFFのファイルを作成する(S4746)。
一方、第1の符号化方法が使用されている場合(S4742でYes、かつ、S4743で第1の符号化方法)、第3の多重化部4750は、ftypにpcc1を記載する(S4747)。つまり、第3の多重化部4750は、第1の符号化方法で符号化されたデータがファイルに格納されていることを示す情報をftypに記載する。
次に、第3の多重化部4750は、NALユニットヘッダに含まれるpcc_nal_unit_typeを解析し、pcc_unit_typeで示されるデータタイプに応じた所定の方法でデータをボックス(moov又はmdat等)に格納する(S4748)。そして、第3の多重化部4750は、上記ftyp及び上記ボックスを含むISOBMFFのファイルを作成する(S4746)。
一方、第1の符号化方法と第2の符号化方法との両方の符号化方法が使用されている場合(S4742でNo)、第3の多重化部4750は、ftypにpcc3を記載する(S4749)。つまり、第3の多重化部4750は、両方の符号化方法で符号化されたデータがファイルに格納されていることを示す情報をftypに記載する。
次に、第3の多重化部4750は、NALユニットヘッダに含まれるpcc_nal_unit_typeを解析し、pcc_unit_typeで示されるデータタイプに応じた所定の方法でデータをボックス(moov又はmdat等)に格納する(S4750)。そして、第3の多重化部4750は、上記ftyp及び上記ボックスを含むISOBMFFのファイルを作成する(S4746)。
図29は、第3の逆多重化部4760及び復号部4680による処理を示すフローチャートである。まず、第3の逆多重化部4760は、ISOBMFFのファイルに含まれるftypを解析する(S4761)。ftypで示されるコーデックが第2の符号化方法(pcc2)である場合(S4762でYes、かつS4763で第2の符号化方法)、第3の逆多重化部4760は、NALユニットのペイロードに含まれるデータが第2の符号化方法で符号化されたデータであると判断する(S4764)。また、第3の逆多重化部4760は、判断の結果を復号部4680に伝達する。
復号部4680は、NALユニットヘッダに含まれるpcc_nal_unit_typeが、第2の符号化方法用のNALユニットの識別子であるとしてデータを識別する(S4765)。そして、復号部4680は、第2の符号化方法の復号処理を用いてPCCデータを復号する(S4766)。
一方、ftypで示されるコーデックが第1の符号化方法(pcc1)である場合(S4762でYes、かつS4763で第1の符号化方法)、第3の逆多重化部4760は、NALユニットのペイロードに含まれるデータが第1の符号化方法で符号化されたデータであると判断する(S4767)。また、第3の逆多重化部4760は、判断の結果を復号部4680に伝達する。
復号部4680は、NALユニットヘッダに含まれるpcc_nal_unit_typeが、第1の符号化方法用のNALユニットの識別子であるとしてデータを識別する(S4768)。そして、復号部4680は、第1の符号化方法の復号処理を用いてPCCデータを復号する(S4769)。
一方、ftypで両方の符号化方法が用いられていること(pcc3)が示される場合(S4762でNo)、第3の逆多重化部4760は、NALユニットのペイロードに含まれるデータが、第1の符号化方法と第2符号化方法との両方の符号化方法で符号化されたデータであると判断する(S4770)。また、第3の逆多重化部4760は、判断の結果を復号部4680に伝達する。
復号部4680は、NALユニットヘッダに含まれるpcc_nal_unit_typeが、pcc_codec_typeに記載されるコーデック用のNALユニットの識別子であるとしてデータを識別する(S4771)。そして、復号部4680は、両方の符号化方法の復号処理を用いてPCCデータを復号する(S4772)。つまり、復号部4680は、第1の符号化方法で符号化されたデータを、第1の符号化方法の復号処理を用いて復号し、第2の符号化方法で符号化されたデータを、第2の符号化方法の復号処理を用いて復号する。
以下、本実施の形態の変形例を説明する。ftypに示されるブランドの種類として、以下の種類が識別情報で示されてもよい。また、以下に示す複数の種類の組み合わせが識別情報で示されてもよい。
識別情報は、PCC符号化前の元データのオブジェクトが、領域が制限されている点群であるか、地図情報のように領域が制限されていない大規模点群であるかを示してもよい。
識別情報は、PCC符号化前の元データが、静的オブジェクトであるか、動的オブジェクトであるかを示してもよい。
上述のように、識別情報は、PCC符号化データが、第1の符号化方法で符号化されたデータであるか、第2の符号化方法で符号化されたデータであるかを示してもよい。
識別情報は、PCC符号化において用いたアルゴリズムを示してもよい。ここで、アルゴリズムとは、例えば、第1の符号化方法又は第2の符号化方法において使用可能な符号化方法である。
識別情報は、PCC符号化データのISOBMFFのファイルへの格納方法の違いを示してもよい。例えば、識別情報は、使用された格納方法が、蓄積用の格納方法であるか、ダイナミックストリーミングのようなリアルタイム送出用の格納方法であるかを示してもよい。
また、実施の形態2及び実施の形態3では、ファイルフォーマットとしてISOBMFFが用いられる例に説明したが、その他の方式が用いられてもよい。例えば、MPEG-2 TS Systems、MPEG-DASH、MMT、又はRMPにPCC符号化データを格納する際にも本実施の形態と同様の方法を用いてもよい。
また、上記では、ftypに識別情報等のメタデータを格納する例を示したが、ftyp以外にこれらのメタデータが格納されてもよい。例えば、これらのメタデータがmoovに格納されてもよい。
以上のように、三次元データ格納装置(又は三次元データ多重化装置、又は三次元データ符号化装置)は、図30に示す処理を行う。
まず、三次元データ格納装置(例えば、第1の多重化部4710、第2の多重化部4730又は第3の多重化部4750を含む)は、点群データが符号化された符号化ストリームが格納された1以上のユニット(例えばNALユニット)を取得する(S4781)。次に、三次元データ格納装置は、1以上のユニットをファイル(例えばISOBMFFのファイル)に格納する(S4782)。また、三次元データ格納装置は、前記格納(S4782)では、ファイルに格納されているデータが、点群データが符号化されたデータであることを示す情報(例えばpcc1、pcc2又はpcc3)を、前記ファイルの制御情報(例えばftyp)に格納する。
これによれば、当該三次元データ格納装置で生成されたファイルを処理する装置では、ファイルの制御情報を参照して、当該ファイルに格納されているデータが点群データの符号化データであるか否かを早期に判定できる。よって、当該装置の処理量の低減又は処理の高速化を実現できる。
例えば、前記情報は、さらに、第1符号化方法と第2符号化方法のうち、前記点群データの符号化に用いられた符号化方法を示す。なお、ファイルに格納されているデータが、点群データが符号化されたデータであることと、第1符号化方法と第2符号化方法のうち、点群データの符号化に用いられた符号化方法とは、単一の情報で示されてもよいし、異なる情報で示されてもよい。
これによれば、当該三次元データ格納装置で生成されたファイルを処理する装置では、ファイルの制御情報を参照して、当該ファイルに格納されているデータに使用されたコーデックを早期に判定できる。よって、当該装置の処理量の低減又は処理の高速化を実現できる。
例えば、前記第1符号化方法は、点群データの位置をN(Nは2以上の整数)分木で表した位置情報を符号化し、前記位置情報を用いて属性情報を符号化する方式(GPCC)であり、前記第2符号化方法は、点群データから二次元画像を生成し、前記二次元画像を映像符号化方法を用いて符号化する方式(VPCC)である。
例えば、前記ファイルは、ISOBMFF(ISO based media file format)に準拠する。
例えば、三次元データ格納装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、以上のように、三次元データ取得装置(又は三次元データ逆多重化装置、又は三次元データ復号装置)は、図31に示す処理を行う。
三次元データ取得装置(例えば、第1の逆多重化部4720、第2の逆多重化部4740又は第3の逆多重化部4760を含む)は、点群データが符号化された符号化ストリームが格納された1以上のユニット(例えばNALユニット)が格納されたファイル(例えばISOBMFFのファイル)を取得する(S4791)。次に、三次元データ取得装置は、ファイルから、1以上のユニットを取得する(S4792)。また、ファイルの制御情報(例えばftyp)は、ファイルに格納されているデータが、点群データが符号化されたデータであることを示す情報(例えばpcc1、pcc2又はpcc3)を含む。
例えば、三次元データ取得装置は、前記情報を参照して、ファイルに格納されているデータが、点群データが符号化されたデータであるか否かを判定する。また、三次元データ取得装置は、ファイルに格納されているデータが、点群データが符号化されたデータであると判定した場合、1以上のユニットに含まれる点群データが符号化されたデータを復号することで点群データを生成する。または、三次元データ取得装置は、ファイルに格納されているデータが、点群データが符号化されたデータであると判定した場合、1以上のユニットに含まれるデータが、点群データが符号化されたデータであることを示す情報を、後段の処理部(例えば、第1の復号部4640、第2の復号部4660又は復号部4680)に出力(通知)する。
これによれば、当該三次元データ取得装置は、ファイルの制御情報を参照して、当該ファイルに格納されているデータが点群データの符号化データであるか否かを早期に判定できる。よって、当該三次元データ取得装置又は後段の装置の処理量の低減又は処理の高速化を実現できる。
例えば、前記情報は、さらに、第1符号化方法と第2符号化方法のうち、前記符号化に用いた符号化方法を示す。なお、ファイルに格納されているデータが、点群データが符号化されたデータであることと、第1符号化方法と第2符号化方法のうち、点群データの符号化に用いられた符号化方法とは、単一の情報で示されてもよいし、異なる情報で示されてもよい。
これによれば、当該三次元データ取得装置は、ファイルの制御情報を参照して、当該ファイルに格納されているデータに使用されたコーデックを早期に判定できる。よって、当該三次元データ取得装置又は後段の装置の処理量の低減又は処理の高速化を実現できる。
例えば、三次元データ取得装置は、前記情報に基づき、第1符号化方法で符号化されたデータと第2符号化方法で符号化されたデータとを含む符号化された点群データから、いずれか一方の符号化方法で符号化されたデータを取得する。
例えば、前記第1符号化方法は、点群データの位置をN(Nは2以上の整数)分木で表した位置情報を符号化し、前記位置情報を用いて属性情報を符号化する方式(GPCC)であり、前記第2符号化方法は、点群データから二次元画像を生成し、前記二次元画像を映像符号化方法を用いて符号化する方式(VPCC)である。
例えば、前記ファイルは、ISOBMFF(ISO based media file format)に準拠する。
例えば、三次元データ取得装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
(実施の形態4)
本実施の形態では、上述した第1の符号化部4630、又は第2の符号化部4650で生成される符号化データ(位置情報(Geometry)、属性情報(Attribute)、付加情報(Metadata))の種別、及び付加情報(メタデータ)の生成方法、及び多重化部における多重処理について説明する。なお、付加情報(メタデータ)は、パラメータセット、又は制御情報と表記することもある。
本実施の形態では、図4で説明した動的オブジェクト(時間的に変化する三次元点群データ)を例に説明するが、静的オブジェクト(任意の時刻の三次元点群データ)の場合でも同様の方法を用いてもよい。
図32は、本実施の形態に係る三次元データ符号化装置に含まれる符号化部4801及び多重化部4802の構成を示す図である。符号化部4801は、例えば、上述した第1の符号化部4630又は第2の符号化部4650に対応する。多重化部4802は、上述した多重化部4634又は4656に対応する。
符号化部4801は、複数のPCC(Point Cloud Compression)フレームの点群データを符号化し、複数の位置情報、属性情報及び付加情報の符号化データ(Multiple Compressed Data)を生成する。
多重化部4802は、複数のデータ種別(位置情報、属性情報及び付加情報)のデータをNALユニット化することで、データを復号装置におけるデータアクセスを考慮したデータ構成に変換する。
図33は、符号化部4801で生成される符号化データの構成例を示す図である。図中の矢印は符号化データの復号に係る依存関係を示しており、矢印の元は矢印の先のデータに依存している。つまり、復号装置は、矢印の先のデータを復号し、その復号したデータを用いて矢印の元のデータを復号する。言い換えると、依存するとは、依存元のデータの処理(符号化又は復号等)において依存先のデータが参照(使用)されることを意味する。
まず、位置情報の符号化データの生成処理について説明する。符号化部4801は、各フレームの位置情報を符号化することで、フレーム毎の符号化位置データ(Compressed Geometry Data)を生成する。また、符号化位置データをG(i)で表す。iはフレーム番号、又はフレームの時刻等を示す。
また、符号化部4801は、各フレームに対応する位置パラメータセット(GPS(i))を生成する。位置パラメータセットは、符号化位置データの復号に使用することが可能なパラメータを含む。また、フレーム毎の符号化位置データは、対応する位置パラメータセットに依存する。
また、複数フレームから成る符号化位置データを位置シーケンス(Geometry Sequence)と定義する。符号化部4801は、位置シーケンス内の複数のフレームに対する復号処理に共通に使用するパラメータを格納する位置シーケンスパラメータセット(Geometry Sequence PS:位置SPSとも記す)を生成する。位置シーケンスは、位置SPSに依存する。
次に、属性情報の符号化データの生成処理について説明する。符号化部4801は、各フレームの属性情報を符号化することで、フレーム毎の符号化属性データ(Compressed Attribute Data)を生成する。また、符号化属性データをA(i)で表す。また、図33では、属性Xと属性Yとが存在する例を示しており、属性Xの符号化属性データをAX(i)で表し、属性Yの符号化属性データをAY(i)で表す。
また、符号化部4801は、各フレームに対応する属性パラメータセット(APS(i))を生成する。また、属性Xの属性パラメータセットをAXPS(i)で表し、属性Yの属性パラメータセットをAYPS(i)で表す。属性パラメータセットは、符号化属性情報の復号に使用することが可能なパラメータを含む。符号化属性データは、対応する属性パラメータセットに依存する。
また、複数フレームから成る符号化属性データを属性シーケンス(Attribute Sequence)と定義する。符号化部4801は、属性シーケンス内の複数のフレームに対する復号処理に共通に使用するパラメータを格納する属性シーケンスパラメータセット(Attribute Sequence PS:属性SPSとも記す)を生成する。属性シーケンスは、属性SPSに依存する。
また、第1の符号化方法では、符号化属性データは符号化位置データに依存する。
また、図33では2種類の属性情報(属性Xと属性Y)が存在する場合の例を示している。2種類の属性情報がある場合は、例えば、2つの符号化部により、それぞれのデータ及びメタデータが生成される。また、例えば、属性情報の種類毎に属性シーケンスが定義され、属性情報の種類毎に属性SPSが生成される。
なお、図33では、位置情報が1種類、属性情報が2種類である例を示しているが、これに限らず、属性情報は1種類であってもよいし、3種類以上であってもよい。この場合も、同様の方法で符号化データを生成できる。また、属性情報を持たない点群データの場合は、属性情報はなくてもよい。その場合は、符号化部4801は、属性情報に関連するパラメータセットを生成しなくてもよい。
次に、付加情報(メタデータ)の生成処理について説明する。符号化部4801は、PCCストリーム全体のパラメータセットであるPCCストリームPS(PCC Stream PS:ストリームPSとも記す)を生成する。符号化部4801は、ストリームPSに、1又は複数の位置シーケンス及び1又は複数の属性シーケンスに対する復号処理に共通に使用することができるパラメータを格納する。例えば、ストリームPSには、点群データのコーデックを示す識別情報、及び符号化に使用されたアルゴリズムを示す情報等が含まれる。位置シーケンス及び属性シーケンスはストリームPSに依存する。
次に、アクセスユニット及びGOFについて説明する。本実施の形態では、新たにアクセスユニット(Access Unit:AU)、及びGOF(Group of Frame)の考え方を導入する。
アクセスユニットは、復号時にデータにアクセスするため基本単位であり、1つ以上のデータ及び1つ以上のメタデータで構成される。例えば、アクセスユニットは、同一時刻の位置情報と1又は複数の属性情報とで構成される。GOFは、ランダムアクセス単位であり、1つ以上のアクセスユニットで構成される。
符号化部4801は、アクセスユニットの先頭を示す識別情報として、アクセスユニットヘッダ(AU Header)を生成する。符号化部4801は、アクセスユニットヘッダに、アクセスユニットに係るパラメータを格納する。例えば、アクセスユニットヘッダは、アクセスユニットに含まれる符号化データの構成又は情報を含む。また、アクセスユニットヘッダは、アクセスユニットに含まれるデータに共通に用いられるパラメータ、例えば、符号化データの復号に係るパラメータなどを含む。
なお、符号化部4801は、アクセスユニットヘッダの代わりに、アクセスユニットに係るパラメータを含まないアクセスユニットデリミタを生成してもよい。このアクセスユニットデリミタは、アクセスユニットの先頭を示す識別情報として用いられる。復号装置は、アクセスユニットヘッダ又はアクセスユニットデリミタを検出することにより、アクセスユニットの先頭を識別する。
次に、GOF先頭の識別情報の生成について説明する。符号化部4801は、GOFの先頭を示す識別情報として、GOFヘッダ(GOF Header)を生成する。符号化部4801は、GOFヘッダに、GOFに係るパラメータを格納する。例えば、GOFヘッダは、GOFに含まれる符号化データの構成又は情報を含む。また、GOFヘッダは、GOFに含まれるデータに共通に用いられるパラメータ、例えば、符号化データの復号に係るパラメータなどを含む。
なお、符号化部4801は、GOFヘッダの代わりに、GOFに係るパラメータを含まないGOFデリミタを生成してもよい。このGOFデリミタは、GOFの先頭を示す識別情報として用いられる。復号装置は、GOFヘッダ又はGOFデリミタを検出することにより、GOFの先頭を識別する。
PCC符号化データにおいて、例えば、アクセスユニットはPCCフレーム単位であると定義される。復号装置は、アクセスユニット先頭の識別情報に基づき、PCCフレームにアクセスする。
また、例えば、GOFは1つのランダムアクセス単位であると定義される。復号装置は、GOF先頭の識別情報に基づき、ランダムアクセス単位にアクセスする。例えば、PCCフレームが互いに依存関係がなく、単独で復号可能であれば、PCCフレームをランダムアクセス単位と定義してもよい。
なお、1つのアクセスユニットに2つ以上のPCCフレームが割り当てられてもよいし、1つのGOFに複数のランダムアクセス単位が割り当てられてもよい。
また、符号化部4801は、上記以外のパラメータセット又はメタデータを定義し、生成してもよい。例えば、符号化部4801は、復号時に必ずしも用いない可能性のあるパラメータ(オプションのパラメータ)を格納するSEI(Supplemental Enhancement Information)を生成してもよい。
次に、符号化データの構成、及び符号化データのNALユニットへの格納方法を説明する。
例えば、符号化データの種類毎にデータフォーマットが規定される。図34は、符号化データ及びNALユニットの例を示す図である。
例えば、図34に示すように符号化データは、ヘッダとペイロードとを含む。なお、符号化データは、符号化データ、ヘッダ又はペイロードの長さ(データ量)を示す長さ情報を含んでもよい。また、符号化データは、ヘッダを含まなくてもよい。
ヘッダは、例えば、データを特定するための識別情報を含む。この識別情報は、例えば、データ種別又はフレーム番号を示す。
ヘッダは、例えば、参照関係を示す識別情報を含む。この識別情報は、例えば、データ間に依存関係がある場合にヘッダに格納され、参照元から参照先を参照するための情報である。例えば、参照先のヘッダには、当該データを特定するための識別情報が含まれる。参照元のヘッダには、参照先を示す識別情報が含まれる。
なお、他の情報から参照先又は参照元を識別可能又は導出可能である場合は、データを特定するための識別情報、又は参照関係を示す識別情報を省略してもよい。
多重化部4802は、符号化データを、NALユニットのペイロードに格納する。NALユニットヘッダには、符号化データの識別情報であるpcc_nal_unit_typeが含まれる。図35は、pcc_nal_unit_typeのセマンティクスの例を示す図である。
図35に示すように、pcc_codec_typeがコーデック1(Codec1:第1の符号化方法)である場合、pcc_nal_unit_typeの値0~10は、コーデック1における、符号化位置データ(Geometry)、符号化属性Xデータ(AttributeX)、符号化属性Yデータ(AttributeY)、位置PS(Geom.PS)、属性XPS(AttrX.PS)、属性YPS(AttrX.PS)、位置SPS(Geometry Sequence PS)、属性XSPS(AttributeX Sequence PS)、属性YSPS(AttributeY Sequence PS)、AUヘッダ(AU Header)、GOFヘッダ(GOF Header)に割り当てられる。また、値11以降は、コーデック1の予備に割り当てられる。
pcc_codec_typeがコーデック2(Codec2:第2の符号化方法)である場合、pcc_nal_unit_typeの値0~2は、コーデックのデータA(DataA)、メタデータA(MetaDataA)、メタデータB(MetaDataB)に割り当てられる。また、値3以降は、コーデック2の予備に割り当てられる。
次に、データの送出順序について説明する。以下、NALユニットの送出順序の制約について説明する。
多重化部4802は、NALユニットをGOF又はAU単位でまとめて送出する。多重化部4802は、GOFの先頭にGOFヘッダを配置し、AUの先頭にAUヘッダを配置する。
パケットロスなどでデータが失われた場合でも、復号装置が次のAUから復号できるように、多重化部4802は、シーケンスパラメータセット(SPS)を、AU毎に配置してもよい。
符号化データに復号に係る依存関係がある場合には、復号装置は、参照先のデータを復号した後に、参照元のデータを復号する。復号装置において、データを並び替ることなく、受信した順番に復号できるようにするために、多重化部4802は、参照先のデータを先に送出する。
図36は、NALユニットの送出順の例を示す図である。図36は、位置情報優先と、パラメータ優先と、データ統合との3つの例を示す。
位置情報優先の送出順序は、位置情報に関する情報と、属性情報に関する情報との各々をまとめて送出する例である。この送出順序の場合、位置情報に関する情報の送出が属性情報に関する情報の送出よりも早く完了する。
例えば、この送出順序を用いることで、属性情報を復号しない復号装置は、属性情報の復号を無視することで、処理しない時間を設けることができる可能性がある。また、例えば、位置情報を早く復号したい復号装置の場合、位置情報の符号化データを早く得ることにより、より早く位置情報を復号することができる可能性がある。
なお、図36では、属性XSPSと属性YSPSを統合し、属性SPSと記載しているが、属性XSPSと属性YSPSとを個別に配置してもよい。
パラメータセット優先の送出順序では、パラメータセットが先に送出され、データが後で送出される。
以上のようにNALユニット送出順序の制約に従えば、多重化部4802は、NALユニットをどのような順序で送出してもよい。例えば、順序識別情報が定義され、多重化部4802は、複数パターンの順序でNALユニットを送出する機能を有してもよい。例えばストリームPSにNALユニットの順序識別情報が格納される。
三次元データ復号装置は、順序識別情報に基づき復号を行ってもよい。三次元データ復号装置から三次元データ符号化装置に所望の送出順序が指示され、三次元データ符号化装置(多重化部4802)は、指示された送出順序に従って送出順序を制御してもよい。
なお、多重化部4802は、データ統合の送出順序のように、送出順序の制約に従う範囲であれば、複数の機能をマージした符号化データを生成してもよい。例えば、図36に示すように、GOFヘッダとAUヘッダとを統合してもよいし、AXPSとAYPSとを統合してもよい。この場合、pcc_nal_unit_typeには、複数の機能を有するデータであることを示す識別子が定義される。
以下、本実施の形態の変形例について説明する。フレームレベルのPS、シーケンスレベルのPS、PCCシーケンスレベルのPSのように、PSにはレベルがあり、PCCシーケンスレベルを上位のレベルとし、フレームレベルを下位のレベルとすると、パラメータの格納方法には下記の方法を用いてもよい。
デフォルトのPSの値をより上位のPSで示す。また、下位のPSの値が上位のPSの値と異なる場合には、下位のPSでPSの値が示される。または、上位ではPSの値を記載せず、下位のPSにPSの値を記載する。または、PSの値を、下位のPSで示すか、上位のPSで示すか、両方で示すかの情報を、下位のPSと上位のPSのいずれか一方又は両方に示す。または、下位のPSを上位のPSにマージしてもよい。または、下位のPSと上位のPSとが重複する場合には、多重化部4802は、いずれか一方の送出を省略してもよい。
なお、符号化部4801又は多重化部4802は、データをスライス又はタイルなどに分割し、分割したデータを送出してもよい。分割したデータには、分割したデータを識別するための情報が含まれ、分割データの復号に使用するパラメータがパラメータセットに含まれる。この場合、pcc_nal_unit_typeには、タイル又はスライスに係るデータ又はパラメータを格納するデータであることを示す識別子が定義される。
(実施の形態5)
以下、点群データの分割方法について説明する。図37は、スライス及びタイル分割の例を示す図である。
まず、スライス分割の方法について説明する。三次元データ符号化装置は、三次元点群データを、スライス単位で、任意の点群に分割する。三次元データ符号化装置は、スライス分割において、点を構成する位置情報と属性情報とを分割せず、位置情報と属性情報とを一括で分割する。すなわち、三次元データ符号化装置は、任意の点における位置情報と属性情報とが同じスライスに属するようにスライス分割を行う。なお、これらに従えば、分割数、及び分割方法はどのような方法でもよい。また、分割の最小単位は点である。例えば、位置情報と属性情報との分割数は同一である。例えば、スライス分割後の位置情報に対応する三次元点と、属性情報に対応する三次元点とは同一のスライスに含まれる。
また、三次元データ符号化装置は、スライス分割時に分割数及び分割方法に係る付加情報であるスライス付加情報を生成する。スライス付加情報は、位置情報と属性情報とで同一である。例えば、スライス付加情報は、分割後のバウンディングボックスの基準座標位置、大きさ、又は辺の長さを示す情報を含む。また、スライス付加情報は、分割数、及び分割タイプなどを示す情報を含む。
次に、タイル分割の方法について説明する。三次元データ符号化装置は、スライス分割されたデータを、スライス位置情報(Gスライス)とスライス属性情報(Aスライス)とに分割し、スライス位置情報とスライス属性情報をそれぞれタイル単位に分割する。
なお、図37では8分木構造で分割する例を示しているが、分割数及び分割方法はどのような方法でもよい。
また、三次元データ符号化装置は、位置情報と属性情報とを異なる分割方法で分割してもよいし、同一の分割方法で分割してもよい。また、三次元データ符号化装置は、複数のスライスを異なる分割方法でタイルに分割してもよいし、同一の分割方法でタイルに分割してもよい。
また、三次元データ符号化装置は、タイル分割時に分割数及び分割方法に係るタイル付加情報を生成する。タイル付加情報(位置タイル付加情報及び属性タイル付加情報)は、位置情報と属性情報とで独立している。例えば、タイル付加情報は、分割後のバウンディングボックスの基準座標位置、大きさ、又は辺の長さを示す情報を含む。また、タイル付加情報は、分割数、及び分割タイプなど示す情報を含む。
次に、点群データをスライス又はタイルに分割する方法の例を説明する。三次元データ符号化装置は、スライス又はタイル分割の方法として、予め定められた方法を用いてもよいし、点群データに応じて使用する方法を適応的に切り替えてもよい。
スライス分割時には、三次元データ符号化装置は、位置情報と属性情報とに対して一括で三次元空間を分割する。例えば、三次元データ符号化装置は、オブジェクトの形状を判定し、オブジェクトの形状に応じて三次元空間をスライスに分割する。例えば、三次元データ符号化装置は、木又は建物などのオブジェクトを抽出し、オブジェクト単位で分割を行う。例えば、三次元データ符号化装置は、1又は複数のオブジェクトの全体が1つのスライスに含まれるようにスライス分割を行う。または、三次元データ符号化装置は、一つのオブジェクトを複数のスライスに分割する。
この場合、符号化装置は、例えば、スライス毎に符号化方法を変えてもよい。例えば、符号化装置は、特定のオブジェクト、又はオブジェクトの特定の一部に対して、高品質な圧縮方法を用いてもよい。この場合、符号化装置は、スライス毎の符号化方法を示す情報を付加情報(メタデータ)に格納してもよい。
また、三次元データ符号化装置は、地図情報又は位置情報に基づき、各スライスが予め定められた座標空間に対応するようにスライス分割を行ってもよい。
タイル分割時には、三次元データ符号化装置は、位置情報と属性情報とを独立に分割する。例えば、三次元データ符号化装置は、データ量又は処理量に応じてスライスをタイルに分割する。例えば、三次元データ符号化装置は、スライスのデータ量(例えばスライスに含まれる三次元点の数)が予め定められた閾値より多いかを判定する。三次元データ符号化装置は、スライスのデータ量が閾値より多い場合にはスライスをタイルに分割する。三次元データ符号化装置は、スライスのデータ量が閾値より少ないときにはスライスをタイルに分割しない。
例えば、三次元データ符号化装置は、復号装置での処理量又は処理時間が一定の範囲(予め定められた値以下)となるよう、スライスをタイルに分割する。これにより、復号装置におけるタイル当たりの処理量が一定となり、復号装置における分散処理が容易となる。
また、三次元データ符号化装置は、位置情報と属性情報とで処理量が異なる場合、例えば、位置情報の処理量が属性情報の処理量より多い場合、位置情報の分割数を、属性情報の分割数より多くする。
また、例えば、コンテンツによって、復号装置で、位置情報を早く復号して表示し、属性情報を後でゆっくり復号して表示してもよい場合に、三次元データ符号化装置は、位置情報の分割数を、属性情報の分割数より多くしてもよい。これにより、復号装置は、位置情報の並列数を多くできるので、位置情報の処理を属性情報の処理より高速化できる。
なお、復号装置は、スライス化又はタイル化されているデータを必ずしも並列処理する必要はなく、復号処理部の数又は能力に応じて、これらを並列処理するかどうかを判定してもよい。
以上のような方法で分割することにより、コンテンツ又はオブジェクトに応じた、適応的な符号化を実現できる。また、復号処理における並列処理を実現できる。これにより、点群符号化システム又は点群復号システムの柔軟性が向上する。
図38は、スライス及びタイルの分割のパターンの例を示す図である。図中のDUはデータ単位(DataUnit)であり、タイル又はスライスのデータを示す。また、各DUは、スライスインデックス(SliceIndex)とタイルインデックス(TileIndex)を含む。図中のDUの右上の数値がスライスインデックスを示し、DUの左下の数値がタイルインデックスを示す。
パターン1では、スライス分割において、GスライスとAスライスとで分割数及び分割方法は同じである。タイル分割において、Gスライスに対する分割数及び分割方法とAスライスに対する分割数及び分割方法とは異なる。また、複数のGスライス間では同一の分割数及び分割方法が用いられる。複数のAスライス間では同一の分割数及び分割方法が用いられる。
パターン2では、スライス分割において、GスライスとAスライスとで分割数及び分割方法は同じである。タイル分割において、Gスライスに対する分割数及び分割方法とAスライスに対する分割数及び分割方法とは異なる。また、複数のGスライス間で分割数及び分割方法が異なる。複数のAスライス間で分割数及び分割方法が異なる。
(実施の形態6)
以下、タイル分割後にスライス分割を行う例について説明する。車両の自動運転等の自律型のアプリケーションでは、全ての領域の点群データではなく、車両の周辺の領域、又は車両の進行方向の地域の点群データが必要である。ここで、元の点群データを選択的に復号するためにタイル及びスライスを用いることができる。三次元点群データをタイルに分割し、さらにスライスを分割することで、符号化効率の向上、又は並列処理を実現できる。データを分割する際には、付加情報(メタデータ)が生成され、生成された付加情報は、多重化部に送られる。
図39は、本実施の形態に係る三次元データ符号化装置に含まれる第1の符号化部5010の構成を示すブロック図である。第1の符号化部5010は、点群データを第1の符号化方法(GPCC(Geometry based PCC))で符号化することで符号化データ(符号化ストリーム)を生成する。この第1の符号化部5010は、分割部5011と、複数の位置情報符号化部5012と、複数の属性情報符号化部5013と、付加情報符号化部5014と、多重化部5015とを含む。
分割部5011は、点群データを分割することで複数の分割データを生成する。具体的には、分割部5011は、点群データの空間を複数のサブ空間に分割することで複数の分割データを生成する。ここでサブ空間とは、タイル及びスライスの一方、又はタイル及びスライスの組み合わせである。より具体的には、点群データは、位置情報、属性情報、及び付加情報を含む。分割部5011は、位置情報を複数の分割位置情報に分割し、属性情報を複数の分割属性情報に分割する。また、分割部5011は、分割に関する付加情報を生成する。
例えば、分割部5011は、まず、点群をタイルに分割する。次に、分割部5011は、得られたタイルを、さらにスライスに分割する。
複数の位置情報符号化部5012は、複数の分割位置情報を符号化することで複数の符号化位置情報を生成する。例えば、複数の位置情報符号化部5012は、複数の分割位置情報を並列処理する。
複数の属性情報符号化部5013は、複数の分割属性情報を符号化することで複数の符号化属性情報を生成する。例えば、複数の属性情報符号化部5013は、複数の分割属性情報を並列処理する。
付加情報符号化部5014は、点群データに含まれる付加情報と、分割部5011で分割時に生成された、データ分割に関する付加情報とを符号化することで符号化付加情報を生成する。
多重化部5015は、複数の符号化位置情報、複数の符号化属性情報及び符号化付加情報を多重化することで符号化データ(符号化ストリーム)を生成し、生成した符号化データを送出する。また、符号化付加情報は復号時に使用される。
なお、図39では、位置情報符号化部5012及び属性情報符号化部5013の数がそれぞれ2つの例を示しているが、位置情報符号化部5012及び属性情報符号化部5013の数は、それぞれ1つであってもよいし、3つ以上であってもよい。また、複数の分割データは、CPU内の複数コアのように同一チップ内で並列処理されてもよいし、複数のチップのコアで並列処理されてもよいし、複数チップの複数コアで並列処理されてもよい。
次に、復号処理について説明する。図40は、第1の復号部5020の構成を示すブロック図である。第1の復号部5020は、点群データが第1の符号化方法(GPCC)で符号化されることで生成された符号化データ(符号化ストリーム)を復号することで点群データを復元する。この第1の復号部5020は、逆多重化部5021と、複数の位置情報復号部5022と、複数の属性情報復号部5023と、付加情報復号部5024と、結合部5025とを含む。
逆多重化部5021は、符号化データ(符号化ストリーム)を逆多重化することで複数の符号化位置情報、複数の符号化属性情報及び符号化付加情報を生成する。
複数の位置情報復号部5022は、複数の符号化位置情報を復号することで複数の分割位置情報を生成する。例えば、複数の位置情報復号部5022は、複数の符号化位置情報を並列処理する。
複数の属性情報復号部5023は、複数の符号化属性情報を復号することで複数の分割属性情報を生成する。例えば、複数の属性情報復号部5023は、複数の符号化属性情報を並列処理する。
複数の付加情報復号部5024は、符号化付加情報を復号することで付加情報を生成する。
結合部5025は、付加情報を用いて複数の分割位置情報を結合することで位置情報を生成する。結合部5025は、付加情報を用いて複数の分割属性情報を結合することで属性情報を生成する。例えば、結合部5025は、まず、スライス付加情報を用いて、スライスに対する復号された点群データを結合することでタイルに対応する点群データを生成する。次に、結合部5025は、タイル付加情報を用いて、タイルに対応する点群データを結合することで元の点群データを復元する。
なお、図39では、位置情報復号部5022及び属性情報復号部5023の数がそれぞれ2つの例を示しているが、位置情報復号部5022及び属性情報復号部5023の数は、それぞれ1つであってもよし、3つ以上であってもよい。また、複数の分割データは、CPU内の複数コアのように同一チップ内で並列処理されてもよいし、複数のチップのコアで並列処理されてもよい、複数チップの複数コアで並列処理されてもよい。
次に、点群データの分割方法について説明する。車両の自動運転等の自律型のアプリケーションでは、全ての領域の点群データではなく、車両の周辺の領域、又は車両の進行方向の地域の点群データが必要である。
図41は、タイルの形状の例を示す図である。図41に示すように、タイルの形状として、円、矩形又は楕円等の様々な形状が用いられてもよい。
図42は、タイル及びスライスの例を示す図である。スライスの構成はタイル間で異なってもよい。例えば、タイル又はスライスの構成は、データ量に基づき最適化されてもよい。または、タイル又はスライスの構成は、復号速度に基づき最適化されてもよい。
また、位置情報に基づきタイル分割が行われてもよい。この場合、属性情報は、対応する位置情報と同様に分割される。
また、タイル分割後のスライス分割において、位置情報と属性情報とは異なる方法によりスライスに分割されてもよい。例えば、各タイルにおけるスライス分割の方法は、アプリケーションからの要求に応じて選択されてもよい。アプリケーションからの要求に基づき、異なるスライス分割の方法、又は、タイル分割の方法が用いられてもよい。
例えば、分割部5011は、三次元点群データを上から見た二次元形状において、地図情報などの位置情報に基づき、点群データを1以上のタイルに分割する。その後、分割部5011は、それぞれのタイルを1以上のスライスに分割する。
なお、分割部5011は、位置情報(Geometry)と属性情報(Attribute)とを同じ方法でスライスに分割してもよい。
なお、位置情報及び属性情報はそれぞれ1種類であってもよいし、2種類以上であってもよい。また、属性情報を持たない点群データの場合は、属性情報がなくてもよい。
図43は、分割部5011のブロック図である。分割部5011は、タイル分割部5031(Tile Divider)と、位置情報スライス分割部5032(Geometry Slice Divider)と、属性情報スライス分割部5033(Attribute Slice Divider)とを含む。
タイル分割部5031は、位置情報(Position(Geometry))をタイルに分割することで複数のタイル位置情報を生成する。また、タイル分割部5031は、属性情報(Attribute)をタイルに分割することで複数のタイル属性情報を生成する。また、タイル分割部5031は、タイル分割に係る情報、及びタイル分割において生成された情報を含むタイル付加情報(TileMetaData)を出力する。
位置情報スライス分割部5032は、複数のタイル位置情報をスライスに分割することで複数の分割位置情報(複数のスライス位置情報)を生成する。また、位置情報スライス分割部5032は、位置情報のスライス分割に係る情報、及び位置情報のスライス分割において生成された情報を含む位置スライス付加情報(Geometry Slice MetaData)を出力する。
属性情報スライス分割部5033は、複数のタイル属性情報をスライスに分割することで複数の分割属性情報(複数のスライス属性情報)を生成する。また、属性情報スライス分割部5033は、属性情報のスライス分割に係る情報、及び属性情報のスライス分割において生成された情報を含む属性スライス付加情報(Attribute Slice MetaData)を出力する。
次に、タイルの形状の例について説明する。三次元地図(3Dマップ)の全体は、複数のタイルに分割される。複数のタイルのデータは、選択的に三次元データ復号装置に送信される。または、複数のタイルのデータのうち重要度の高いデータから順に三次元データ復号装置に送信される。状況に応じてタイルの形状は複数の形状から選択されてもよい。
図44は、LiDARで得られた点群データを上面視した地図の一例を示す図である。図44に示す例は、高速道路の点群データであり、立体交差部分(Flyover)を含む。
図45は、図44に示す点群データを正方形のタイルに分割した例を示す図である。このような正方形の分割は地図サーバにおいて容易に行うことができる。また、通常の道路に対しては、タイルの高さは低く設定される。立体交差部分では、タイルが立体交差部分を包含するように、タイルの高さは通常の道路よりも高く設定される。
図46は、図44に示す点群データを円形のタイルに分割した例を示す図である。この場合、隣接するタイルが平面視において重複する場合がある。三次元データ符号化装置は、車両が周辺領域の点群データを必要な場合、車両の周辺の円柱(上面視における円)の領域の点群データを車両に送信する。
また、図45の例と同様に、通常の道路に対しては、タイルの高さは低く設定される。立体交差部分では、タイルが立体交差部分を包含するように、タイルの高さは通常の道路よりも高く設定される。
三次元データ符号化装置は、タイルの高さを、例えば、道路又は建物の形状又は高さに応じて変えてもよい。また、三次元データ符号化装置は、位置情報又はエリア情報に応じてタイルの高さを変えてもよい。また、三次元データ符号化装置は、タイルの高さを、タイル毎に変えてもよい。または、三次元データ符号化装置は、複数のタイルを含む区間毎にタイルの高さを変えてもよい。つまり、三次元データ符号化装置は、区間内の複数のタイルの高さを同一にしてもよい。また、異なる高さのタイルが上面視において重複してもよい。
図47は、様々な形状、大きさ又は高さのタイルを用いた場合のタイル分割の例を示す図である。タイルの形状はどのような形状であってもよいし、どのような大きさであってもよいし、これらの組み合わせであってもよい。
例えば、上述したような重複することなく正方形のタイルで分割する例、及び重複した円形のタイルで分割する例だけでなく、三次元データ符号化装置は、重複した正方形のタイルで分割を行ってもよい。また、タイルの形状は、正方形及び円形でなくてもよく、3以上の頂点を持つ多角形が用いられてもよいし、頂点を持たない形状が用いられてもよい。
また、タイルの形状は、2種類以上であってもよいし、異なる形状のタイルが重複してもよい。また、タイルの形状の種類は1以上であり、分割する同一形状において、大きさの異なる形状を組み合わせてもよいし、それらが、重複してもよい。
例えば、道路などのオブジェクトがない領域には、オブジェクトが存在する領域よりも大きなタイルが用いられる。また、三次元データ符号化装置は、オブジェクトに応じてタイルの形状又は大きさを適応的に変えてもよい。
また、例えば、三次元データ符号化装置は、自動車(車両)の進行方向である、自動車の前方遠方のタイルの読み込みが必要となる可能性が高いため、進行方向のタイルを大きいサイズに設定し、自動車の側方に自動車が進む可能性が低いため、側方のタイルを進行方向のタイルよりも小さいサイズに設定してもよい。
図48は、サーバに保存されるタイルのデータの例を示す図である。例えば、予め点群データがタイル分割して符号化され、得られた符号化データがサーバに保存される。ユーザーは、必要なときに所望のタイルのデータをサーバから取得する。または、サーバ(三次元データ符号化装置)は、ユーザーの指示に応じてユーザーが所望するデータを含むようにタイル分割及び符号化を行ってもよい。
例えば、移動体(車両)の移動速度が速い場合は、より広範囲な点群データが必要になることが考えられる。よって、サーバは、予め推測される車の速度(例えば、道路の法定速度、道路の幅及び形状から推測できる車の速度、又は統計上の速度等)に基づき、タイルの形状及び大きさを決定し、タイル分割を行ってもよい。あるいは、図48に示すように、サーバは、予め複数の形状又は大きさのタイルを符号化し、得られたデータを保存しておいてもよい。移動体は、当該移動体の進行方向及び速度に応じて、適切な形状及び大きさのタイルのデータを取得してもよい。
図49は、タイル分割に関するシステムの例を示す図である。図49に示すように、タイルの形状及び領域は、点群データを伝送する通信手段であるアンテナ(基地局)の位置、又はアンテナのサポートする通信エリアに基づいて決定されてもよい。あるいは、点群データをカメラなどのセンサで生成する場合、タイルの形状及び領域は、センサの位置又はセンサの対象範囲(検知範囲)に基づいて決定されてもよい。
1つのアンテナ又はセンサに対して1つのタイルが割り当てられてもよいし、複数のアンテナ又はセンサに対して1つのタイルが割り当てられてもよい。1つのアンテナ又はセンサに対して複数のタイルが割り当てられてもよい。アンテナ又はセンサは固定されていてもよいし、移動可能であってもよい。
例えば、タイルに分割された符号化データは、タイルに割り当てたエリアに対するアンテナ又はセンサに接続されたサーバで管理されてもよい。サーバは、自エリアの符号化データと、隣接するエリアのタイル情報とを管理してもよい。それぞれのタイルに対応する複数のサーバを管理する集中管理サーバ(クラウド)において、複数のタイルの複数の符号化データが管理されてもよい。または、タイルに対応するサーバを設けず、アンテナ又はセンサが集中管理サーバに直接接続されてもよい。
なお、アンテナ又はセンサの対象範囲は、電波の電力、機器の違い、及び設置条件により異なる可能性があり、タイルの形状及び大きさも、これらに合わせて変化してもよい。アンテナ又はセンサの対象範囲に基づき、タイルではなく、スライスが割り当てられてもよいし、PCCフレームが割り当てられてもよい。
次に、タイルをスライスに分割する手法について説明する。類似するオブジェクトを同じスライスに割り当てることで符号化効率を向上できる。
例えば、三次元データ符号化装置は、点群データの特徴を用いてオブジェクト(道路、ビル、木など)を認識し、オブジェクト毎に点群をクラスタリングすることでスライス分割を行ってもよい。
あるいは、三次元データ符号化装置は、同じ属性を持つオブジェクトをグループ化し、各グループにスライスを割り当てることでスライス分割を行ってもよい。ここで属性とは、例えば、動きに関する情報であり、歩行者及び車などの動的情報と、事故及び渋滞などの準動的情報と、交通規制及び道路工事などの準静的情報と、路面及び構造物などの静的情報とにオブジェクトを分類することでグループ化を行う。
なお、複数のスライスにおいてデータが重複してもよい。例えば、複数のオブジェクトグループ毎にスライス分割する場合、任意のオブジェクトは1つのオブジェクトグループに属してもよいし、2以上の複数のオブジェクトグループに属してもよい。
図50は、このスライス分割の例を示す図である。例えば、図50に示す例では、タイルは直方体である。なお、タイルは円柱状であってもよいし、その他の形状であってもよい。
タイルに含まれる点群は、例えば、道、建物、木等のオブジェクトグループにグループ化される。そして、各オブジェクトグループが一つのスライスに含まれるようにスライス化が行われる。そして、各スライスは個別に符号化される。
次に、分割データの符号化方法について説明する。三次元データ符号化装置(第1の符号化部5010)は、分割されたデータを、それぞれ符号化する。三次元データ符号化装置は、属性情報を符号化する際に、どの構成情報(位置情報、付加情報又は他の属性情報)に基づき符号化を行ったかを示す依存関係情報を付加情報として生成する。つまり、依存関係情報は、例えば、参照先(依存先)の構成情報を示す。この場合、三次元データ符号化装置は、属性情報の分割形状に対応する構成情報に基づき依存関係情報を生成する。なお、三次元データ符号化装置は、複数の分割形状に対応する構成情報に基づき依存関係情報を生成してもよい。
依存関係情報は三次元データ符号化装置で生成され、生成された依存関係情報が三次元データ復号装置に送出されてもよい。または、三次元データ復号装置が依存関係情報を生成し、三次元データ符号化装置は依存関係情報を送出しなくてもよい。また、三次元データ符号化装置が使用する依存関係を、予め定めておき、三次元データ符号化装置は、依存関係情報を送出しなくてもよい。
図51は、各データの依存関係の一例を示す図である。図中の矢印の先は依存先を示し、矢印の元は依存元を示している。三次元データ復号装置は、依存先から依存元の順でデータを復号する。また、図中に実線で示すデータは実際に送出されるデータであり、点線で示すデータは送出されないデータである。
また、同図において、Gは位置情報を示し、Aは属性情報を示す。Gt1は、タイル番号1の位置情報を示し、Gt2は、タイル番号2の位置情報を示す。Gt1s1は、タイル番号1かつスライス番号1の位置情報を示し、Gt1s2は、タイル番号1かつスライス番号2の位置情報を示し、Gt2s1は、タイル番号2かつスライス番号1の位置情報を示し、Gt2s2は、タイル番号2かつスライス番号2の位置情報を示す。同様に、At1は、タイル番号1の属性情報を示し、At2は、タイル番号2の属性情報を示す。At1s1は、タイル番号1かつスライス番号1の属性情報を示し、At1s2は、タイル番号1かつスライス番号2の属性情報を示し、At2s1は、タイル番号2かつスライス番号1の属性情報を示し、At2s2は、タイル番号2かつスライス番号2の属性情報を示す。
Mtileは、タイル付加情報を示し、MGsliceは、位置スライス付加情報を示し、MAsliceは、属性スライス付加情報を示す。Dt1s1は属性情報At1s1の依存関係情報を示し、Dt2s1は属性情報At2s1の依存関係情報を示す。
なお、アプリケーション等に応じて、異なるタイル分割又はスライス分割の構造が用いられてもよい。
また、三次元データ符号化装置は、三次元データ復号装置においてデータを並び替える必要がないように、データを復号順に並び替えてもよい。なお、三次元データ復号装置においてデータを並び替えてもよいし、三次元データ符号化装置と三次元データ復号装置との両方でデータを並び替えてもよい。
図52は、データの復号順の例を示す図である。図52の例では、左のデータから順に復号が行われる。三次元データ復号装置は、依存関係にあるデータ間では、依存先のデータから先に復号する。例えば、三次元データ符号化装置は、この順序となるようにデータを予め並び替えて送出する。なお、依存先のデータが先になる順序であれば、どのような順序でもよい。また、三次元データ符号化装置は、付加情報及び依存関係情報をデータより先に送出してもよい。
また、三次元データ復号装置は、アプリケーションからの要求、及びNALユニットヘッダから得られた情報に基づき、選択的にタイルを復号してもよい。図53は、タイルの符号化データの例を示す図である。例えば、タイルの復号順は任意である。つまり、タイル間に依存関係がなくてもよい。
次に、第1の復号部5020に含まれる結合部5025の構成を説明する。図54は、結合部5025の構成を示すブロック図である。結合部5025は、位置情報スライス結合部5041(Geometry Slice Combiner)と、属性情報スライス結合部5042(Attribute Slice Combiner)と、タイル結合部(Tile Combiner)とを含む。
位置情報スライス結合部5041は、位置スライス付加情報を用いて複数の分割位置情報を結合することで複数のタイル位置情報を生成する。属性情報スライス結合部5042は、属性スライス付加情報を用いて複数の分割属性情報を結合することで複数のタイル属性情報を生成する。
タイル結合部5043は、タイル付加情報を用いて複数のタイル位置情報を結合することで位置情報を生成する。また、タイル結合部5043は、タイル付加情報を用いて複数のタイル属性情報を結合することで属性情報を生成する。
なお、分割されるスライス又はタイルの数は1以上である。つまり、スライス又はタイルの分割が行われていなくてもよい。
次に、スライス分割又はタイル分割された符号化データの構成、及び符号化データのNALユニットへの格納方法(多重化方法)を説明する。図55は、符号化データの構成及び符号化データのNALユニットへの格納方法を示す図である。
符号化データ(分割位置情報及び分割属性情報)は、NALユニットのペイロードに格納される。
符号化データは、ヘッダとペイロードとを含む。ヘッダは、ペイロードに含まれるデータを特定するための識別情報を含む。この識別情報は、例えば、スライス分割或いはタイル分割の種別(slice_type、tile_type)、スライス或いはタイルを特定するためのインデックス情報(slice_idx、tile_idx)、データ(スライス或いはタイル)の位置情報、又はデータのアドレス(address)などを含む。スライスを特定するためのインデックス情報は、スライスインデックス(SliceIndex)とも記す。タイルを特定するためのインデックス情報は、タイルインデックス(TileIndex)とも記す。また、分割の種別とは、例えば、上述したようなオブジェクト形状に基づく手法、地図情報或いは位置情報に基づく手法、又は、データ量或いは処理量に基づく手法等である。
また、符号化データのヘッダは、依存関係を示す識別情報を含む。つまり、当該ヘッダは、データ間に依存関係がある場合は、依存元から依存先を参照するための識別情報を含む。例えば、依存先のデータのヘッダには、当該データを特定するための識別情報が含まれる。依存元のデータのヘッダには、依存先を示す識別情報が含まれる。なお、データを特定するための識別情報、スライス分割又はタイル分割に係る付加情報、及び依存関係を示す識別情報を、他の情報から識別可能又は導出可能である場合は、これらの情報を省略してもよい。
次に、本実施の形態に係る点群データの符号化処理及び復号処理の流れについて説明する。図56は、本実施の形態に係る点群データの符号化処理のフローチャートである。
まず、三次元データ符号化装置は、使用する分割方法を決定する(S5011)。この分割方法は、タイル分割を行うか否か、スライス分割を行うか否かを含む。また、分割方法は、タイル分割又はスライス分割を行う場合の分割数、及び、分割の種別等を含んでもよい。分割の種別とは、上述したようなオブジェクト形状に基づく手法、地図情報或いは位置情報に基づく手法、又は、データ量或いは処理量に基づく手法等である。なお、分割方法は、予め定められていてもよい。
タイル分割が行われる場合(S5012でYes)、三次元データ符号化装置は、位置情報と属性情報とを一括で分割することで複数のタイル位置情報及び複数のタイル属性情報を生成する(S5013)。また、三次元データ符号化装置は、タイル分割に係るタイル付加情報を生成する。なお、三次元データ符号化装置は、位置情報と属性情報とを独立に分割してもよい。
スライス分割が行われる場合(S5014でYes)、三次元データ符号化装置は、複数のタイル位置情報及び複数のタイル属性情報(又は位置情報及び属性情報)を独立に分割することで複数の分割位置情報及び複数の分割属性情報を生成する(S5015)。また、三次元データ符号化装置は、スライス分割に係る位置スライス付加情報及び属性スライス付加情報を生成する。なお、三次元データ符号化装置は、タイル位置情報とタイル属性情報とを一括で分割してもよい。
次に、三次元データ符号化装置は、複数の分割位置情報及び複数の分割属性情報の各々を符号化することで、複数の符号化位置情報及び複数の符号化属性情報を生成する(S5016)。また、三次元データ符号化装置は、依存関係情報を生成する。
次に、三次元データ符号化装置は、複数の符号化位置情報、複数の符号化属性情報及び付加情報をNALユニット化(多重化)することで符号化データ(符号化ストリーム)を生成する(S5017)。また、三次元データ符号化装置は、生成した符号化データを送出する。
図57は、本実施の形態に係る点群データの復号処理のフローチャートである。まず、三次元データ復号装置は、符号化データ(符号化ストリーム)に含まれる、分割方法に係る付加情報(タイル付加情報、位置スライス付加情報及び属性スライス付加情報)を解析することで、分割方法を判定する(S5021)。この分割方法は、タイル分割を行うか否か、スライス分割を行うか否かを含む。また、分割方法は、タイル分割又はスライス分割を行う場合の分割数、及び、分割の種別等を含んでもよい。
次に、三次元データ復号装置は、符号化データに含まれる複数の符号化位置情報及び複数の符号化属性情報を、符号化データに含まれる依存関係情報を用いて復号することで分割位置情報及び分割属性情報を生成する(S5022)。
付加情報によりスライス分割が行われていることが示される場合(S5023でYes)、三次元データ復号装置は、位置スライス付加情報及び属性スライス付加情報に基づき、複数の分割位置情報と、複数の分割属性情報とを、それぞれの方法で結合することで、複数のタイル位置情報及び複数のタイル属性情報を生成する(S5024)。なお、三次元データ復号装置は、複数の分割位置情報と、複数の分割属性情報とを同一の方法で結合してもよい。
付加情報によりタイル分割が行われていることが示される場合(S5025でYes)、三次元データ復号装置は、タイル付加情報に基づき、複数のタイル位置情報及び複数のタイル属性情報(複数の分割位置情報及び複数の分割属性情報)を同一の方法で結合することで位置情報及び属性情報を生成する(S5026)。なお、三次元データ復号装置は、複数のタイル位置情報と複数のタイル属性情報とを、それぞれ異なる方法で結合してもよい。
次に、タイル付加情報について説明する。三次元データ符号化装置は、タイルの分割方法に関するメタデータであるタイル付加情報を生成し、生成したタイル付加情報を三次元データ復号装置に送信する。
図58は、タイル付加情報(TileMetaData)のシンタックス例を示す図である。図58に示すように、例えば、タイル付加情報は、分割方法情報(type_of_divide)と、形状情報(topview_shape)と、重複フラグ(tile_overlap_flag)と、重複情報(type_of_overlap)と、高さ情報(tile_height)と、タイル数(tile_number)と、タイル位置情報(global_position、relative_position)と、を含む。
分割方法情報(type_of_divide)は、タイルの分割方法を示す。例えば、分割方法情報は、タイルの分割方法が、地図の情報に基づいた分割であるか、つまり上面視に基づく分割(top_view)であるか、それ以外(other)であるかを示す。
形状情報(topview_shape)は、例えば、タイルの分割方法が上面視に基づく分割である場合に、タイル付加情報に含まれる。形状情報は、タイルを上面視した形状を示す。例えば、この形状は、正方形及び円を含む。なお、この形状は、楕円、矩形又は四角形以外の多角形を含んでもよいし、それ以外の形状を含んでもよい。なお、形状情報は、タイルを上面視した形状に限らず、タイルの三次元形状(例えば、立方体及び円柱等)を示してもよい。
重複フラグ(tile_overlap_flag)は、タイルが重複するか否かを示す。例えば、重複フラグは、タイルの分割方法が上面視に基づく分割である場合に、タイル付加情報に含まれる。この場合、重複フラグは、上面視において、タイルが重複するか否かを示す。なお、重複フラグは、三次元空間においてタイルが重複するか否かを示してもよい。
重複情報(type_of_overlap)は、例えば、タイルが重複する場合に、タイル付加情報に含まれる。重複情報は、タイルの重複のしかた等を示す。例えば、重複情報は、重複する領域の大きさ等を示す。
高さ情報(tile_height)は、タイルの高さを示す。なお、高さ情報は、タイルの形状を示す情報を含んでもよい。例えば、当該情報は、タイルの上面視における形状が矩形の場合には、当該の矩形の辺の長さ(縦の長さ及び横の長さ)を示してもよい。また、当該情報は、タイルの上面視における形状が円の場合には、当該円の直径又は半径を示してもよい。
また、高さ情報は、各タイルの高さを示してもよし、複数のタイルで共通の高さを示してもよい。また、予め道路及び立体交差部分等の複数の高さタイプが設定され、高さ情報により、各高さタイプの高さと、各タイルの高さタイプとが示されてもよい。または、各高さタイプの高さは予め定義されており、高さ情報により、各タイルの高さタイプが示されてもよい。つまり、各高さタイプの高さは、高さ情報で示されなくてもよい。
タイル数(tile_number)は、タイルの数を示す。なお、タイル付加情報は、タイルの間隔を示す情報を含んでもよい。
タイル位置情報(global_position、relative_position)は、各タイルの位置を特定するための情報である。例えば、タイル位置情報は、各タイルの絶対座標又は相対座標を示す。
なお、上記の情報の一部又は全ては、タイル毎に設けられてもよいし、複数のタイル毎(例えばフレーム毎又は複数フレーム毎)に設けられてもよい。
三次元データ符号化装置は、タイル付加情報を、SEI(Supplemental Enhancement Information)に含めて送出してもよい。または、三次元データ符号化装置は、タイル付加情報を、既存のパラメータセット(PPS、GPS、又はAPS等)に格納して送出してもよい。
例えば、タイル付加情報がフレーム毎に変化する場合は、フレーム毎のパラメータセット(GPS又はAPS等)にタイル付加情報が格納されてもよい。シーケンス内でタイル付加情報が変化しない場合は、シーケンス毎のパラメータセット(位置SPS又は属性SPS)にタイル付加情報が格納されてもよい。さらに、位置情報と属性情報とで同じタイル分割情報が用いられる場合は、PCCストリームのパラメータセット(ストリームPS)にタイル付加情報が格納されてもよい。
また、タイル付加情報は、上記のいずれかのパラメータセットに格納されてもよいし、複数のパラメータセットに格納されてもよい。また、タイル付加情報は、符号化データのヘッダに格納されてもよい。また、タイル付加情報は、NALユニットのヘッダに格納されてもよい。
また、タイル付加情報の全て又は一部は、分割位置情報のヘッダ及び分割属性情報のヘッダの一方に格納され、他方に格納されてなくてもよい。例えば、位置情報と属性情報とで同一のタイル付加情報が用いられる場合には、位置情報と属性情報の一方のヘッダにタイル付加情報が含まれてもよい。例えば、位置情報に属性情報が依存する場合には、位置情報が先に処理される。よって、位置情報のヘッダにこれらのタイル付加情報が含まれ、属性情報のヘッダにはタイル付加情報が含まれなくてもよい。この場合、三次元データ復号装置は、例えば、依存先の位置情報のタイルと同一のタイルに依存元の属性情報が属すると判断する。
三次元データ復号装置は、タイル付加情報に基づき、タイル分割された点群データを再構成する。三次元データ復号装置は、重複する点群データがある場合は、重複する複数の点群データを特定し、いずれかを選択、又は複数の点群データをマージする。
また、三次元データ復号装置は、タイル付加情報を用いて復号を行ってもよい。例えば、三次元データ復号装置は、複数のタイルが重複する場合は、タイル毎に復号を行い、復号された複数のデータを用いた処理(例えば平滑化、又はフィルタリング等)を行い、点群データを生成してもよい。これにより精度の高い復号が可能となる可能性がある。
図59は、三次元データ符号化装置及び三次元データ復号装置を含むシステムの構成例を示す図である。タイル分割部5051は、位置情報及び属性情報を含む点群データを第1タイルと第2タイルとに分割する。また、タイル分割部5051は、タイル分割に係るタイル付加情報を復号部5053及びタイル結合部5054に送る。
符号化部5052は、第1タイル及び第2タイルを符号化することで符号化データを生成する。
復号部5053は、符号化部5052で生成された符号化データを復号することで第1タイル及び第2タイルを復元する。タイル結合部5054は、タイル付加情報を用いて、第1タイル及び第2タイルを結合することで点群データ(位置情報及び属性情報)を復元する。
次に、スライス付加情報について説明する。三次元データ符号化装置は、スライスの分割方法に関するメタデータであるスライス付加情報を生成し、生成したスライス付加情報を三次元データ復号装置に送信する。
図60は、スライス付加情報(SliceMetaData)のシンタックス例を示す図である。図60に示すように、例えば、スライス付加情報は、分割方法情報(type_of_divide)と、重複フラグ(slice_overlap_flag)と、重複情報(type_of_overlap)と、スライス数(slice_number)と、スライス位置情報(global_position、relative_position)と、スライスサイズ情報(slice_bounding_box_size)とを含む。
分割方法情報(type_of_divide)は、スライスの分割方法を示す。例えば、分割方法情報は、スライスの分割方法が、図50で示すようなオブジェクトの情報に基づいた分割である(object)か否かを示す。なお、スライス付加情報は、オブジェクト分割の方法を示す情報を含んでもよい。例えば、この情報は、1つのオブジェクトを複数のスライスに分割するか、1つのスライスに割り当てるかを示す。また、この情報は、1つのオブジェクトを複数のスライスに分割する場合の分割数等を示してもよい。
重複フラグ(slice_overlap_flag)は、スライスが重複するか否かを示す。重複情報(type_of_overlap)は、例えば、スライスが重複する場合に、スライス付加情報に含まれる。重複情報は、スライスの重複のしかた等を示す。例えば、重複情報は、重複する領域の大きさ等を示す。
スライス数(slice_number)は、スライスの数を示す。
スライス位置情報(global_position、relative_position)、及びスライスサイズ情報(slice_bounding_box_size)は、スライスの領域に関する情報である。スライス位置情報は、各スライスの位置を特定するための情報である。例えば、スライス位置情報は、各スライスの絶対座標又は相対座標を示す。スライスサイズ情報(slice_bounding_box_size)は、各スライスのサイズを示す。例えば、スライスサイズ情報は、各スライスのバウンディングボックスのサイズを示す。
三次元データ符号化装置は、スライス付加情報をSEIに含めて送出してもよい。または、三次元データ符号化装置は、スライス付加情報を、既存のパラメータセット(PPS、GPS、又はAPS等)に格納して送出してもよい。
例えば、スライス付加情報がフレーム毎に変化する場合は、フレーム毎のパラメータセット(GPS又はAPS等)にスライス付加情報が格納されてもよい。シーケンス内でスライス付加情報が変化しない場合は、シーケンス毎のパラメータセット(位置SPS又は属性SPS)にスライス付加情報が格納されてもよい。さらに、位置情報と属性情報とで同じスライス分割情報が用いられる場合は、PCCストリームのパラメータセット(ストリームPS)にスライス付加情報が格納されてもよい。
また、スライス付加情報は、上記のいずれかのパラメータセットに格納されてもよいし、複数のパラメータセットに格納されてもよい。また、スライス付加情報は、符号化データのヘッダに格納されてもよい。また、スライス付加情報は、NALユニットのヘッダに格納されてもよい。
また、スライス付加情報の全て又は一部は、分割位置情報のヘッダ及び分割属性情報のヘッダの一方に格納され、他方に格納されてなくてもよい。例えば、位置情報と属性情報とで同一のスライス付加情報が用いられる場合には、位置情報と属性情報の一方のヘッダにスライス付加情報が含まれてもよい。例えば、位置情報に属性情報が依存する場合には、位置情報が先に処理される。よって、位置情報のヘッダにこれらのスライス付加情報が含まれ、属性情報のヘッダにはスライス付加情報が含まれなくてもよい。この場合、三次元データ復号装置は、例えば、依存先の位置情報のスライスと同一のスライスに依存元の属性情報が属すると判断する。
三次元データ復号装置は、スライス付加情報に基づき、スライス分割された点群データを再構成する。三次元データ復号装置は、重複する点群データがある場合は、重複する複数の点群データを特定し、いずれかを選択、又は複数の点群データをマージする。
また、三次元データ復号装置は、スライス付加情報を用いて復号を行ってもよい。例えば、三次元データ復号装置は、複数のスライスが重複する場合は、スライス毎に復号を行い、復号された複数のデータを用いた処理(例えば平滑化、又はフィルタリング)を行い、点群データを生成してもよい。これにより精度の高い復号が可能となる可能性がある。
図61は、本実施の形態に係る三次元データ符号化装置による、タイル付加情報の生成処理を含む三次元データ符号化処理のフローチャートである。
まず、三次元データ符号化装置は、タイルの分割方法を決定する(S5031)。具体的には、三次元データ符号化装置は、タイルの分割方法として、上面視に基づく分割方法(top_view)を用いるか、それ以外(other)を用いるかを決定する。また、三次元データ符号化装置は、上面視に基づく分割方法を用いる場合のタイルの形状を決定する。また、三次元データ符号化装置は、タイルが他のタイルと重複するか否かを決定する。
ステップS5031で決定したタイルの分割方法が上面視に基づく分割方法である場合(S5032でYes)、三次元データ符号化装置は、タイルの分割方法が上面視に基づく分割方法(top_view)であることをタイル付加情報に記載する(S5033)。
一方、ステップS5031で決定したタイルの分割方法が上面視に基づく分割方法以外である場合(S5032でNo)、三次元データ符号化装置は、タイルの分割方法が上面視に基づく分割方法(top_view)以外の方法であることをタイル付加情報に記載する(S5034)。
また、ステップS5031で決定した、タイルを上面視した形状が正方形である場合(S5035で正方形)、三次元データ符号化装置は、タイルを上面視した形状が正方形であることをタイル付加情報に記載する(S5036)。一方、ステップS5031で決定した、タイルを上面視した形状が円である場合(S5035で円)、三次元データ符号化装置は、タイルを上面視した形状が円であることをタイル付加情報に記載する(S5037)。
次に、三次元データ符号化装置は、タイルが他のタイルと重複するかを判定する(S5038)。タイルが他のタイルと重複している場合(S5038でYes)、三次元データ符号化装置は、タイルが重複していることをタイル付加情報に記載する(S5039)。一方、タイルが他のタイルと重複していない場合(S5038でNo)、三次元データ符号化装置は、タイルが重複していないことをタイル付加情報に記載する(S5040)。
次に、三次元データ符号化装置は、ステップS5031で決定したタイルの分割方法に基づきタイルを分割し、各タイルを符号化し、生成された符号化データ及びタイル付加情報を送出する(S5041)。
図62は、本実施の形態に係る三次元データ復号装置による、タイル付加情報を用いた三次元データ復号処理のフローチャートである。
まず、三次元データ復号装置は、ビットストリームに含まれるタイル付加情報を解析する(S5051)。
タイル付加情報によりタイルが他のタイルと重複していないことが示される場合(S5052でNo)、三次元データ復号装置は、各タイルを復号することで各タイルの点群データを生成する(S5053)。次に、三次元データ復号装置は、タイル付加情報で示されるタイルの分割方法及びタイルの形状に基づき、各タイルの点群データから点群データを再構成する(S5054)。
一方、タイル付加情報によりタイルが他のタイルと重複していることが示される場合(S5052でYes)、三次元データ復号装置は、各タイルを復号することで各タイルの点群データを生成する。また、三次元データ復号装置は、タイル付加情報に基づき、タイルの重複部分を特定する(S5055)。なお、三次元データ復号装置は、重複部分については重複する複数の情報を用いて復号処理を行ってもよい。次に、三次元データ復号装置は、タイル付加情報で示されるタイルの分割方法、タイルの形状、及び重複情報に基づき、各タイルの点群データから点群データを再構成する(S5056)。
以下、スライスに関する変形例等を説明する。三次元データ符号化装置は、オブジェクトの種類(道、建物、木等)又は属性(動的情報、静的情報等)を示す情報を付加情報として送信してもよい。または、オブジェクトに応じて符号化のパラメータが予め規定され、三次元データ符号化装置は、オブジェクトの種類又は属性を送出することにより符号化パラメータを三次元データ復号装置へ通知してもよい。
スライスデータの符号化順及び送出順について以下の方法を用いてもよい。例えば、三次元データ符号化装置は、オブジェクトの認識又はクラスタリングが容易なデータから順にスライスデータを符号化してもよい。または、三次元データ符号化装置は、早くクラスタリングが終わったスライスデータから順に符号化を行ってもよい。また、三次元データ符号化装置は、符号化されたスライスデータから順に送出してもよい。または、三次元データ符号化装置は、アプリケーションにおいて復号の優先度の高い順にスライスデータを送出してもよい。例えば、動的情報の復号の優先度が高い場合には、三次元データ符号化装置は、動的情報でグループ化されたスライスから順にスライスデータを送出してもよい。
また、三次元データ符号化装置は、符号化データの順番と、復号の優先度の順番とが異なる場合には、符号化データを並び替えた後に送出してもよい。また、三次元データ符号化装置は、符号化データを蓄積する際には、符号化データを並び替えた後に蓄積してもよい。
アプリケーション(三次元データ復号装置)は、所望のデータを含むスライスの送出をサーバ(三次元データ符号化装置)に要求する。サーバはアプリケーションが必要とするスライスデータを送出し、不要なスライスデータは送出しなくてもよい。
アプリケーションは、所望のデータを含むタイルの送出をサーバに要求する。サーバはアプリケーションが必要とするタイルデータを送出し、不要なタイルデータは送出しなくてもよい。
以上のように、本実施の形態に係る三次元データ符号化装置は、図63に示す処理を行う。まず、三次元データ符号化装置は、複数の三次元点が含まれる対象空間を分割した複数のサブ空間(例えばタイル)を符号化することで複数の符号化データを生成する(S5061)。三次元データ符号化装置は、前記複数の符号化データと、前記複数のサブ空間の形状を示す第1情報(例えばtopview_shape)とを含むビットストリームを生成する(S5062)。
これによれば、三次元データ符号化装置は、複数種類のサブ空間の形状から任意の形状を選択できるので符号化効率を向上できる。
例えば、前記形状は、前記複数のサブ空間の二次元における形状、又は三次元における形状である。例えば、前記形状は、前記複数のサブ空間を上面視した形状である。つまり、第1情報は、サブ空間を特定の方向(例えば上方向)から見た形状を示す。言い換えると、第1情報は、サブ空間を俯瞰した形状を示す。例えば、前記形状は、矩形又は円である。
例えば、前記ビットストリームは、前記複数のサブ区間が重複するか否かを示す第2情報(例えばtile_overlap_flag)を含む。
これによれば、三次元データ符号化装置は、サブ空間を重複させることができるので、サブ空間の形状を複雑にすることなくサブ空間を生成できる。
例えば、前記ビットストリームは、前記複数のサブ区間の分割方法が上面視を用いた分割方法であるかを示す第3情報(例えばtype_of_divide)を含む。
例えば、前記ビットストリームは、前記複数のサブ区間の高さ、幅、奥行き及び半径のうち少なくとも1つを示す第4情報(例えばtile_height)を含む。
例えば、前記ビットストリームは、前記複数のサブ区間の各々の位置を示す第5情報(例えばglobal_position又はrelative_position)を含む。
例えば、前記ビットストリームは、前記複数のサブ区間の数を示す第6情報(例えばtile_number)を含む。
例えば、前記ビットストリームは、前記複数のサブ区間の間隔を示す第7情報を含む。
例えば、三次元データ符号化装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態に係る三次元データ復号装置は、図64に示す処理を行う。まず、三次元データ復号装置は、ビットストリームに含まれる、複数の三次元点が含まれる対象空間を分割した複数のサブ空間(例えばタイル)が符号化されることで生成された複数の符号化データを復号することで前記複数のサブ空間を復元する(S5071)。三次元データ復号装置は、前記ビットストリームに含まれる、前記複数のサブ空間の形状を示す第1情報(例えばtopview_shape)を用いて前記複数のサブ空間を結合することで前記対象空間を復元する(S5072)。例えば、三次元データ復号装置は、第1情報を用いて、複数のサブ空間の形状を認識することで、各サブ空間の対象空間内の位置及び範囲を把握できる。三次元データ復号装置は、把握した複数のサブ空間の位置及び範囲に基づき複数のサブ空間を結合できる。これにより、三次元データ復号装置は、複数のサブ空間を正しく結合できる。
例えば、前記形状は、前記複数のサブ空間の二次元における形状、又は三次元における形状である。例えば、前記形状は、矩形又は円である。
例えば、前記ビットストリームは、前記複数のサブ区間が重複するか否かを示す第2情報(例えばtile_overlap_flag)を含む。三次元データ復号装置は、前記対象空間の復元では、前記第2情報をさらに用いて前記複数のサブ空間を結合する。例えば、三次元データ復号装置は、第2情報を用いて、サブ空間が重複している否かを判定する。三次元データ復号装置は、サブ空間が重複している場合には、重複領域を特定し、特定した重複領域に対しては、所定の対応を行う。
例えば、前記ビットストリームは、前記複数のサブ区間の分割方法が上面視を用いた分割方法であるかを示す第3情報(例えばtype_of_divide)を含む。三次元データ復号装置は、前記第3情報により、前記複数のサブ区間の分割方法が上面視を用いた分割方法であることが示される場合、前記第1情報を用いて前記複数のサブ空間を結合する。
例えば、前記ビットストリームは、前記複数のサブ区間の高さ、幅、奥行き及び半径のうち少なくとも1つを示す第4情報(例えばtile_height)を含む。三次元データ復号装置は、前記対象空間の復元では、前記第4情報をさらに用いて前記複数のサブ空間を結合する。例えば、三次元データ復号装置は、第4情報を用いて、複数のサブ空間の高さを認識することで、各サブ空間の対象空間内の位置及び範囲を把握できる。三次元データ復号装置は、把握した複数のサブ空間の位置及び範囲に基づき複数のサブ空間を結合できる。
例えば、前記ビットストリームは、前記複数のサブ区間の各々の位置を示す第5情報(例えばglobal_position又はrelative_position)を含む。三次元データ復号装置は、前記対象空間の復元では、前記第5情報をさらに用いて前記複数のサブ空間を結合する。例えば、三次元データ復号装置は、第5情報を用いて、複数のサブ空間の位置を認識することで、各サブ空間の対象空間内の位置を把握できる。三次元データ復号装置は、把握した複数のサブ空間の位置に基づき複数のサブ空間を結合できる。
例えば、前記ビットストリームは、前記複数のサブ区間の数を示す第6情報(例えばtile_number)を含む。三次元データ復号装置は、前記対象空間の復元では、前記第6情報をさらに用いて前記複数のサブ空間を結合する。
例えば、前記ビットストリームは、前記複数のサブ区間の間隔を示す第7情報を含む。三次元データ復号装置は、前記対象空間の復元では、前記第7情報をさらに用いて前記複数のサブ空間を結合する。例えば、三次元データ復号装置は、第7情報を用いて、複数のサブ空間の間隔を認識することで、各サブ空間の対象空間内の位置及び範囲を把握できる。三次元データ復号装置は、把握した複数のサブ空間の位置及び範囲に基づき複数のサブ空間を結合できる。
例えば、三次元データ復号装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
(実施の形態7)
本実施の形態では、点を含まない分割単位(例えばタイル又はスライス)の処理について説明する。まず、点群データの分割方法について説明する。
HEVCなどの動画像符号化規格では、二次元画像の全ての画素に対してデータが存在するため、二次元空間を複数のデータ領域に分割した場合であっても、全てのデータ領域にデータが存在する。一方、三次元点群データの符号化では、点群データの要素である点自体がデータであり、一部の領域にデータが存在しない可能性がある。
点群データを空間的に分割する方法は様々あるが、分割したデータ単位である分割単位(例えばタイル又はスライス)が常に1以上の点データを含むかどうかで分割方法を分類できる。
複数の分割単位の全てに、1以上の点データを含む分割方法を第1分割方法と呼ぶ。第1分割方法として、例えば、点群データを、符号化の処理時間、又は符号化データのサイズを意識して分割する方法がある。この場合、各分割単位で点の数がおおよそ均等となる。
図65は、分割方法の例を示す図である。例えば、第1分割方法として、図65の(a)に示すように、同一の空間に属する点を2つの同一の空間に分割する方法を用いてもよい。また、図65の(b)に示すように、各分割単位が点を含むように、空間を複数のサブ空間(分割単位)に分割してもよい。
これらの方法は、点を意識した分割であるため、常に全ての分割単位に1以上の点が含まれる。
複数の分割単位に、点データを含まない分割単位が1以上含まれる可能性のある分割方法を第2分割方法と呼ぶ。例えば、第2分割方法として、図65の(c)に示すように、空間を均等に分割する方法を用いることができる。この場合、分割単位に点が存在するとは限らない。つまり、分割単位に点が存在しない場合がある。
三次元データ符号化装置は、点群データを分割する場合、(1)複数の分割単位の全てに1以上の点データを含む分割方法が用いられたか、(2)複数の分割単位に、点データを含まない分割単位が1以上ある分割方法が用いられたか、(3)複数の分割単位に、点データを含まない分割単位が1以上ある可能性のある分割方法が用いられたかを、分割に係る付加情報(メタデータ)である分割付加情報(例えばタイル付加情報又はスライス付加情報)に示し、当該分割付加情報を送出してもよい。
なお、三次元データ符号化装置は、上記の情報を、分割方法のタイプとして示してもよい。また、三次元データ符号化装置は、予め定められた分割方法で分割を行い、分割付加情報を送出しなくてもよい。その場合は、三次元データ符号化装置は、分割方法が、第1分割方法であるか、第2分割方法であるかを予め明示する。
以下、第2分割方法、及び符号化データの生成並びに送出の例を説明する。なお、以降、三次元空間の分割方法として、タイル分割を例に説明するが、タイル分割でなくてもよく、タイルとは別の分割単位の分割方法にも以下の手法を適用できる。例えば、タイル分割をスライス分割と読み替えてもよい。
図66は、点群データを6個のタイルに分割する例を示す図である。図66は、最小単位が点である例を示しており、位置情報(Geometry)と属性情報(Attribute)とを一緒に分割する例を示している。なお、位置情報と属性情報とを個別の分割方法又は分割数で分割する場合、属性情報がない場合、及び、属性情報が複数ある場合も同様である。
図66に示す例では、タイル分割後に、タイル内に点を含むタイル(#1、#2、#4、#6)と、タイル内に点を含まないタイル(#3、#5)とが存在する。タイル内に点を含まないタイルをヌルタイルと呼ぶ。
なお、6個のタイルに分割する場合に限らず、いかなる分割の方法が用いられてもよい。例えば、分割単位は、立方体であってもよいし、直方体又は円柱など立方体でない形状であってもよい。複数の分割単位は同一形状であってもよいし、異なる形状が含まれてもよい。また、分割の方法として、予め定められた方法が用いられてもよいし、所定の単位(例えばPCCフレーム)毎に異なる方法が用いられてもよい。
本分割方法において、点群データをタイルに分割した場合に、タイル内にデータがない場合、当該タイルがヌルタイルであることを示す情報を含むビットストリームが生成される。
以降、ヌルタイルの送出方法、及びヌルタイルのシグナリング方法について説明する。三次元データ符号化装置は、データ分割に関する付加情報(メタデータ)として、例えば、以下の情報を生成し、生成された情報を送出してもよい。図67は、タイル付加情報(TileMetaData)のシンタックス例を示す図である。タイル付加情報は、分割方法情報(type_of_divide)と、分割方法ヌル情報(type_of_divide_null)と、タイル分割数(number_of_tiles)と、タイルヌルフラグ(tile_null_flag)とを含む。
分割方法情報(type_of_divide)は、分割方法又は分割種別に関する情報である。例えば、分割方法情報は、1又は複数の分割方法又は分割種別を示す。例えば、分割方法としては、上面視(top_view)分割、及び均等分割などがある。なお、分割方法の定義が1個の場合は、タイル付加情報に分割方法情報が含まれなくてもよい。
分割方法ヌル情報(type_of_divide_null)は、使用される分割方法が、下記第1分割方法であるか第2分割方法であるかを示す情報である。ここで、第1分割方法とは、複数の分割単位の全てに、常にそれぞれ1以上の点データが含まれる分割方法である。第2分割方法とは、複数の分割単位に、点データを含まない分割単位が1以上存在する分割方法、又は、複数の分割単位に、点データを含まない分割単位が1以上ある可能性のある分割方法である。
また、タイル付加情報は、タイル全体の分割情報として、(1)タイルの分割数を示す情報(タイル分割数(number_of_tiles))、又はタイルの分割数を特定するための情報、(2)ヌルタイルの数を示す情報、又はヌルタイルの数を特定するための情報、及び、(3)ヌルタイル以外のタイルの数を示す情報、又はヌルタイル以外のタイルの数を特定するための情報、のうち少なくとも一つを含んでもよい。また、タイル付加情報は、タイル全体の分割情報として、タイルの形を示す、又はタイルが重複するか否かを示す情報を含んでもよい。
また、タイル付加情報は、タイル毎の分割情報を順に示す。例えば、タイルの順序は、分割方法毎に予め定められており、三次元データ符号化装置及び三次元データ復号装置において既知である。なお、タイルの順序を予め定めない場合には、三次元データ符号化装置は、順序を示す情報を三次元データ復号装置に送出してもよい。
タイル毎の分割情報は、タイル内にデータ(点)が存在するか否かを示すフラグであるタイルヌルフラグ(tile_null_flag)を含む。なお、タイル内にデータがない場合に、タイル分割情報として、タイルヌルフラグが含まれてもよい。
また、タイルがヌルタイルでない場合には、タイル付加情報は、タイル毎の分割情報(位置情報(例えば原点の座標(origin_x、origin_y、origin_z))、及びタイルの高さ情報など)を含む。また、タイルがヌルタイルである場合には、タイル付加情報は、タイル毎の分割情報を含まない。
例えば、タイル毎の分割情報に、タイル毎のスライス分割の情報を格納する場合、三次元データ符号化装置は、付加情報に、ヌルタイルのスライス分割の情報を格納しなくてもよい。
なお、この例では、タイル分割数(number_of_tiles)は、ヌルタイルを含めたタイルの数を示す。図68は、タイルのインデックス情報(idx)の例を示す図である。図68に示す例では、インデックス情報は、ヌルタイルにも割り当てられる。
次に、ヌルタイルを含む符号化データのデータ構成及び送出方法について説明する。図69~図71は、6個のタイルに位置情報及び属性情報を分割する場合において、3番目及び5番目のタイルにデータが存在しない場合のデータ構造を示す図である。
図69は、各データの依存関係の一例を示す図である。図中の矢印の先は依存先を示し、矢印の元は依存元を示している。また、同図において、Gtn(nは1~6)は、タイル番号nの位置情報を示し、Atnは、タイル番号nの属性情報を示す。Mtileは、タイル付加情報を示す。
図70は、三次元データ符号化装置から送出される符号化データである送出データの構成例を示す図である。また、図71は、符号化データの構成及び符号化データのNALユニットへの格納方法を示す図である。
図71に示すように、位置情報(分割位置情報)及び属性情報(分割属性情報)のデータのヘッダ内には、それぞれタイルのインデックス情報(tile_idx)が含まれる。
また、図70の構造1に示すように、三次元データ符号化装置は、ヌルタイルを構成する位置情報又は属性情報は送出しなくてもよい。または、図70の構造2に示すように、三次元データ符号化装置は、ヌルタイルのデータとして当該タイルがヌルタイルであることを示す情報を送出してもよい。例えば、三次元データ符号化装置は、NALユニットのヘッダ、又は、NALユニットのペイロード(nal_unit_payload)内のヘッダに格納されるtile_typeに当該データのタイプがヌルタイルであることを記載し、当該ヘッダを送出してもよい。なお、以降では構造1を前提に説明を行う。
構造1では、ヌルタイルが存在する場合、送出データにおいて、位置情報データ又は属性情報データのヘッダに含まれるタイルのインデックス情報(tile_idx)の値は、歯抜けとなり連続しない。
また、三次元データ符号化装置は、データ間に依存関係がある場合、参照先のデータが参照元のデータより先に復号できるように送出する。なお、属性情報のタイルは位置情報のタイルに対して依存関係がある。依存関係がある属性情報と位置情報には同一のタイルのインデックス番号が付加される。
なお、タイル分割に係るタイル付加情報は、位置情報のパラメータセット(GPS)、及び属性情報のパラメータセット(APS)の両方に格納されてもよいし、いずれか一方に格納されてもよい。GPS及びAPSの一方にタイル付加情報が格納される場合、GPS及びAPSの他方には、参照先のGPS又はAPSを示す参照情報が格納されてもよい。また、位置情報と属性情報とでタイル分割方法が異なる場合は、GPSとAPSとのそれぞれに異なるタイル付加情報が格納される。また、タイル分割の方法がシーケンス(複数PCCフレーム)で同一の場合は、GPS、APS又はSPS(シーケンスパラメータセット)にタイル付加情報が格納されてもよい。
例えば、GPSとAPSとの両方にタイル付加情報が格納される場合、GPS内には位置情報のタイル付加情報が格納され、APS内には属性情報のタイル付加情報が格納される。また、SPSなどの共通の情報にタイル付加情報が格納される場合には、位置情報と属性情報で共通に用いられるタイル付加情報が格納されてもよいし、位置情報のタイル付加情報と属性情報のタイル付加情報とがそれぞれ格納されてもよい。
以下、タイル分割とスライス分割との組み合わせについて説明する。まず、スライス分割後にタイル分割を行う場合のデータ構成及びデータ送出について説明する。
図72は、スライス分割後にタイル分割を行う場合の各データの依存関係の一例を示す図である。図中の矢印の先は依存先を示し、矢印の元は依存元を示している。また、図中に実線で示すデータは実際に送出されるデータであり、点線で示すデータは送出されないデータである。
また、同図において、Gは位置情報を示し、Aは属性情報を示す。Gs1は、スライス番号1の位置情報を示し、Gs2は、スライス番号2の位置情報を示す。Gs1t1は、スライス番号1かつタイル番号1の位置情報を示し、Gs2t2は、スライス番号2かつタイル番号2の位置情報を示す。同様に、As1は、スライス番号1の属性情報を示し、As2は、スライス番号2の属性情報を示す。As1t1は、スライス番号1かつタイル番号1の属性情報を示し、As2t1は、スライス番号2かつタイル番号1の属性情報を示す。
Msliceは、スライス付加情報を示し、MGtileは、位置タイル付加情報を示し、MAtileは、属性タイル付加情報を示す。Ds1t1は属性情報As1t1の依存関係情報を示し、Ds2t1は属性情報As2t1の依存関係情報を示す。
三次元データ符号化装置は、ヌルタイルに係る位置情報及び属性情報の生成及び送出を行わなくてもよい。
また、全てのスライスにおいて、タイル分割数が同一である場合でも、スライス間で生成及び送出されるタイルの数は異なる可能性がある。例えば、位置情報と属性情報とのタイル分割数が異なる場合、位置情報と属性情報とのいずれか一方にヌルタイルが存在し、他方に存在しない場合がある。図72に示す例では、スライス1の位置情報(Gs1)は、Gs1t1とGs1t2との2つのタイルに分割され、このうちGs1t2がヌルタイルである。一方、スライス1の属性情報(As1)は分割されず一つのAs1t1が存在し、ヌルタイルは存在しない。
また、三次元データ符号化装置は、位置情報のスライスにヌルタイルが含まれているか否かに係らず、少なくとも属性情報のタイルにデータが存在する場合、属性情報の依存関係情報を生成及び送出する。例えば、三次元データ符号化装置は、スライス分割に係るスライス付加情報に含まれるスライス毎の分割情報に、タイル毎のスライス分割の情報を格納する場合、この情報に当該タイルがヌルタイルであるか否かの情報を格納する。
図73は、データの復号順の例を示す図である。図73の例では、左のデータから順に復号が行われる。三次元データ復号装置は、依存関係にあるデータ間では、依存先のデータから先に復号する。例えば、三次元データ符号化装置は、この順序となるようにデータを予め並び替えて送出する。なお、依存先のデータが先になる順序であれば、どのような順序でもよい。また、三次元データ符号化装置は、付加情報及び依存関係情報をデータより先に送出してもよい。
次に、タイル分割後にスライス分割を行う場合のデータ構成及びデータ送出について説明する。
図74は、タイル分割後にスライス分割を行う場合の各データの依存関係の一例を示す図である。図中の矢印の先は依存先を示し、矢印の元は依存元を示している。また、図中に実線で示すデータは実際に送出されるデータであり、点線で示すデータは送出されないデータである。
また、同図において、Gは位置情報を示し、Aは属性情報を示す。Gt1は、タイル番号1の位置情報を示す。Gt1s1は、タイル番号1かつスライス番号1の位置情報を示し、Gt1s2は、タイル番号1かつスライス番号2の位置情報を示す。同様に、At1は、タイル番号1の属性情報を示し、At1s1は、タイル番号1かつスライス番号1の属性情報を示す。
Mtileは、タイル付加情報を示し、MGsliceは、位置スライス付加情報を示し、MAsliceは、属性スライス付加情報を示す。Dt1s1は属性情報At1s1の依存関係情報を示し、Dt2s1は属性情報At2s1の依存関係情報を示す。
三次元データ符号化装置は、ヌルタイルをスライス分割しない。また、ヌルタイルに係る位置情報、属性情報、及び属性情報の依存関係情報の生成、及び送出を行わなくてもよい。
図75は、データの復号順の例を示す図である。図75の例では、左のデータから順に復号が行われる。三次元データ復号装置は、依存関係にあるデータ間では、依存先のデータから先に復号する。例えば、三次元データ符号化装置は、この順序となるようにデータを予め並び替えて送出する。なお、依存先のデータが先になる順序であれば、どのような順序でもよい。また、三次元データ符号化装置は、付加情報及び依存関係情報をデータより先に送出してもよい。
次に、点群データの分割処理、及び結合処理の流れについて説明する。なお、ここでは、タイル分割及びスライス分割の例を説明するが、その他の空間の分割に対しても同様の手法を適用できる。
図76は、三次元データ符号化装置によるデータ分割処理を含む三次元データ符号化処理のフローチャートである。まず、三次元データ符号化装置は、使用する分割方法を決定する(S5101)。具体的には、三次元データ符号化装置は、第1分割方法と第2分割方法とのいずれを用いるかを決定する。例えば、三次元データ符号化装置は、ユーザ又は外部装置(例えば三次元データ復号装置)からの指定に基づき分割方法を決定してもよいし、入力された点群データに応じて分割方法を決定してもよい。また、使用される分割方法は予め定められていてもよい。
ここで、第1分割方法とは、複数の分割単位(タイル又はスライス)の全てに、常にそれぞれ1以上の点データが含まれる分割方法である。第2分割方法とは、複数の分割単位に、点データを含まない分割単位が1以上存在する分割方法、又は、複数の分割単位に、点データを含まない分割単位が1以上ある可能性のある分割方法である。
決定された分割方法が第1分割方法である場合(S5102で第1分割方法)、三次元データ符号化装置は、データ分割に係るメタデータである分割付加情報(例えばタイル付加情報又はスライス付加情報)に使用された分割方法が第1分割方法であることを記載する(S5103)。そして、三次元データ符号化装置は、全ての分割単位を符号化する(S5104)。
一方、決定された分割方法が第2分割方法である場合(S5102で第2分割方法)、三次元データ符号化装置は、分割付加情報に使用された分割方法が第2分割方法であることを記載する(S5105)。そして、三次元データ符号化装置は、複数の分割単位のうち、点データを含まない分割単位(例えばヌルタイル)を除く分割単位を符号化する(S5106)。
図77は、三次元データ復号装置によるデータ結合処理を含む三次元データ復号処理のフローチャートである。まず、三次元データ復号装置は、ビットストリームに含まれる分割付加情報を参照し、使用された分割方法が第1分割方法であるか第2分割方法であるかを判定する(S5111)。
使用された分割方法が第1分割方法である場合(S5112で第1分割方法)、三次元データ復号装置は、全ての分割単位の符号化データを受信し、受信した符号化データを復号することで、全ての分割単位の復号データを生成する(S5113)。次に、三次元データ復号装置は、全ての分割単位の復号データを用いて三次元点群を再構成する(S5114)。例えば、三次元データ復号装置は、複数の分割単位を結合することで三次元点群を再構成する。
一方、使用された分割方法が第2分割方法である場合(S5112で第2分割方法)、三次元データ復号装置は、点データを含む分割単位の符号化データ、及び点データを含まない分割単位の符号化データを受信し、受信した分割単位の符号化データを復号することで復号データを生成する(S5115)。なお、三次元データ復号装置は、点データを含まない分割単位が送出されていない場合は、点群データを含まない分割単位を受信及び復号しなくてもよい。次に、三次元データ復号装置は、点データを含む分割単位の復号データを用いて三次元点群を再構成する(S5116)。例えば、三次元データ復号装置は、複数の分割単位を結合することで三次元点群を再構成する。
以下、その他の点群データの分割方法について説明する。図65の(c)に示すように空間を均等に分割する場合、分割された空間に点が存在しない場合がある。この場合において、三次元データ符号化装置は、点が存在しない空間を点が存在する他の空間と結合する。これにより、三次元データ符号化装置は、全ての分割単位が1以上の点を含むように複数の分割単位を形成できる。
図78は、この場合のデータ分割のフローチャートである。まず、三次元データ符号化装置は、データを特定の方法で分割する(S5121)。例えば、特定の方法とは、上述した第2分割方法である。
次に、三次元データ符号化装置は、処理対象の分割単位である対象分割単位に点が含まれるか否かを判定する(S5122)。対象分割単位に点が含まれる場合(S5122でYes)、三次元データ符号化装置は、対象分割単位を符号化する(S5123)。一方、対象分割単位に点が含まれない場合(S5122でNo)、三次元データ符号化装置は、対象分割単位と、点を含む他の分割単位とを結合し、結合後の分割単位を符号化する(S5124)。つまり、三次元データ符号化装置は、対象分割単位を、点を含む他の分割単位と一緒に符号化する。
なお、ここでは、分割単位毎に判定及び結合を行う例を述べたが、処理方法はこれに限らない。例えば、三次元データ符号化装置は、複数の分割単位の各々に点が含まれるか否かを判定し、点が含まれない分割単位がなくなるように結合を行い、結合後の複数の分割単位の各々を符号化してもよい。
次に、ヌルタイルを含むデータの送出方法について説明する。三次元データ符号化装置は、処理対象のタイルである対象タイルがヌルタイルである場合には、対象タイルのデータを送出しない。図79は、データ送出処理のフローチャートである。
まず、三次元データ符号化装置は、タイルの分割方法を決定し、決定した分割方法を用いて点群データをタイルに分割する(S5131)。
次に、三次元データ符号化装置は、対象タイルがヌルタイルであるか否かを判定する(S5132)。つまり、三次元データ符号化装置は、対象タイル内にデータがないか否かを判定する。
対象タイルがヌルタイルである場合(S5132でYes)、三次元データ符号化装置は、タイル付加情報に、対象タイルがヌルタイルであることを示し、対象タイルの情報(タイルの位置及びサイズ等)を示さない(S5133)。また、三次元データ符号化装置は、対象タイルを送出しない(S5134)。
一方、対象タイルがヌルタイルでない場合(S5132でNo)、三次元データ符号化装置は、タイル付加情報に対象タイルがヌルタイルでないことを示し、タイル毎の情報を示す(S5135)。また、三次元データ符号化装置は、対象タイルを送出する(S5136)。
このように、ヌルタイルの情報をタイル付加情報に含めないことにより、タイル付加情報の情報量を削減できる。
以下、ヌルタイルを含む符号化データの復号方法について説明する。まず、パケットロスがない場合の処理について説明する。
図80は、三次元データ符号化装置から送出される符号化データである送出データと、三次元データ復号装置に入力される受信データの例を示す図である。なお、ここでは、パケットロスがないシステム環境の場合を想定しており、受信データは送出データと同じである。
三次元データ復号装置は、パケットロスがないシステム環境の場合には、送出データの全てを受信する。図81は、三次元データ復号装置による処理のフローチャートである。
まず、三次元データ復号装置は、タイル付加情報を参照し(S5141)、それぞれのタイルがヌルタイルであるか否かを判定する(S5142)。
タイル付加情報に対象タイルがヌルタイルでないことが示される場合(S5142でNo)、三次元データ復号装置は、対象タイルはヌルタイルではないと判断し、対象タイルを復号する(S5143)。次に、三次元データ復号装置は、タイル付加情報からタイルの情報(タイルの位置情報(原点座標等)及びサイズ等)を取得し、取得した情報を用いて複数のタイルを結合することでの三次元データを再構成する(S5144)。
一方、タイル付加情報に対象タイルがヌルタイルでないことが示される場合(S5142でYes)、三次元データ復号装置は、対象タイルはヌルタイルであると判断し、対象タイルを復号しない(S5145)。
なお、三次元データ復号装置は、符号化データのヘッダに示されるインデックス情報を順番に解析することにより、歯抜けとなっているデータがヌルタイルであると判定してもよい。また、三次元データ復号装置は、タイル付加情報を用いた判定方法とインデックス情報を用いた判定方法とを組み合わせてもよい。
次に、パケットロスがある場合の処理について説明する。図82は、三次元データ符号化装置から送出される送出データ、及び、三次元データ復号装置に入力される受信データの例を示す図である。ここでは、パケットロスがあるシステム環境の場合を想定している。
パケットロスがあるシステム環境の場合、三次元データ復号装置は、送出データの全てを受信できない可能性がある。この例では、Gt2とAt2のパケットが損失している。
図83は、この場合の三次元データ復号装置の処理のフローチャートである。まず、三次元データ復号装置は、符号化データのヘッダに示されるインデックス情報の連続性を解析し(S5151)、対象タイルのインデックス番号が存在するか否かを判定する(S5152)。
対象タイルのインデックス番号が存在する場合(S5152でYes)、三次元データ復号装置は、対象タイルはヌルタイルでないと判断し、対象タイルの復号処理を実施する(S5153)。次に、三次元データ復号装置は、タイル付加情報からタイルの情報(タイルの位置情報(原点座標等)及びサイズ等)を取得し、取得した情報を用いて複数のタイルを結合することでの三次元データを再構成する(S5154)。
一方、対象タイルのインデックス情報が存在しない場合(S5152でNo)、三次元データ復号装置は、タイル付加情報を参照することで、対象タイルがヌルタイルであるか否かを判定する(S5155)。
対象タイルがヌルタイルでない場合(S5156でNo)、三次元データ復号装置は、対象タイルは損失した(パケットロス)と判断し、エラー復号処理を実施する(S5157)。エラー復号処理とは、例えば、データがあったものとして、元データの復号を試みる処理である。この場合、三次元データ復号装置は、三次元データを再生し、三次元データの再構成を実施してもよい(S5154)。
一方、対象タイルがヌルタイルである場合(S5156でYes)、三次元データ復号装置は、対象タイルはヌルタイルであるものとして、復号処理及び三次元データの再構成を実施しない(S5158)。
次に、ヌルタイルを明示しない場合の符号化方法について説明する。三次元データ符号化装置は、以下の方法で符号化データ及び付加情報を生成してもよい。
三次元データ符号化装置は、タイル付加情報に、ヌルタイルの情報を示さない。三次元データ符号化装置は、ヌルタイルを除くタイルのインデックス番号をデータヘッダに付与する。三次元データ符号化装置は、ヌルタイルを送出しない。
この場合、タイル分割数(number_of_tiles)は、ヌルタイルを含めない分割数を示す。なお、三次元データ符号化装置は、別途ヌルタイルの数を示す情報をビットストリームに格納してもよい。また、三次元データ符号化装置は、付加情報にヌルタイルに関する情報を示してもよし、ヌルタイルに関する一部の情報を示してもよい。
図84は、この場合の三次元データ符号化装置による三次元データ符号化処理のフローチャートである。まず、三次元データ符号化装置は、タイルの分割方法を決定し、決定した分割方法を用いて点群データをタイルに分割する(S5161)。
次に、三次元データ符号化装置は、対象タイルがヌルタイルであるか否かを判定する(S5162)。つまり、三次元データ符号化装置は、対象タイル内にデータがないか否かを判定する。
対象タイルがヌルタイルでない場合(S5162でNo)、三次元データ符号化装置は、データヘッダに、ヌルタイルを除くタイルのインデックス情報を付与する(S5163)。そして、三次元データ符号化装置は、対象タイルを送出する(S5164)。
一方、対象タイルがヌルタイルである場合(S5162でYes)、三次元データ符号化装置は、データヘッダへの対象タイルのインデックス情報を付与、及び対象タイルの送出を行わない。
図85は、データヘッダに付加されるインデックス情報(idx)の例を示す図である。図85に示すようにヌルタイルのインデックス情報は付加されず、ヌルタイル以外のタイルに対して連続番号が付加される。
図86は、各データの依存関係の一例を示す図である。図中の矢印の先は依存先を示し、矢印の元は依存元を示している。また、同図において、Gtn(nは1~4)は、タイル番号nの位置情報を示し、Atnは、タイル番号nの属性情報を示す。Mtileは、タイル付加情報を示す。
図87は、三次元データ符号化装置から送出される符号化データである送出データの構成例を示す図である。
以下、ヌルタイルを明示しない場合の復号方法について説明する。図88は、三次元データ符号化装置から送出される送出データ、及び、三次元データ復号装置に入力される受信データの例を示す図である。ここでは、パケットロスがあるシステム環境の場合を想定している。
図89は、この場合の三次元データ復号装置の処理のフローチャートである。まず、三次元データ復号装置は、符号化データのヘッダに示されるタイルのインデックス情報を解析し、対象タイルのインデックス番号が存在するか否かを判定する。また、三次元データ復号装置は、タイル付加情報からタイルの分割数を取得する(S5171)。
対象タイルのインデックス番号が存在する場合(S5172でYes)、三次元データ復号装置は、対象タイルの復号処理を実施する(S5173)。次に、三次元データ復号装置は、タイル付加情報からタイルの情報(タイルの位置情報(原点座標等)及びサイズ等)を取得し、取得した情報を用いて複数のタイルを結合することでの三次元データを再構成する(S5175)。
一方、対象タイルのインデックス番号が存在しない場合(S5172でNo)、三次元データ復号装置は、対象タイルはパケットロスと判断し、エラー復号処理を実施する(S5174)。また、三次元データ復号装置は、データに存在しない空間は、ヌルタイルであると判断し、三次元データ再構成する。
また、三次元データ符号化装置は、ヌルタイルを明示的に示すことで、測定ミス或いはデータ処理等によるデータ欠損、またはパケットロスではなく、タイル内に点が存在しないことを適切に判断することができる。
なお、三次元データ符号化装置は、ヌルパケットを明示的に示す方法と、ヌルパケットを明示的に示さない方法とを併用してもよい。その場合、三次元データ符号化装置は、ヌルパケットを明示的に示すか否かを示す情報をタイル付加情報に示してもよい。また、分割方法のタイプに応じて、予めヌルパケットを明示的に示すか否かを決定しておき、三次元データ符号化装置は、分割方法のタイプを示すことによりヌルパケットを明示的に示すか否かを示してもよい。
また、図67等において、タイル付加情報に、全てのタイルに係る情報が示される例を示したが、タイル付加情報に、複数のタイルのうちの一部のタイルの情報が示されてもよいし、複数のタイルのうちの一部のタイルのヌルタイルの情報が示されてもよい。
また、分割データ(タイル)があるか否かの情報等の分割データに関する情報が、タイル付加情報に格納される例を説明したが、これらの情報の一部又は全ては、パラメータセットに格納されてもいし、データとして格納されてもよい。これらの情報がデータとして格納される場合には、例えば分割データがあるか否かを示す情報を意味するnal_unit_typeを定義し、これらの情報をNALユニットに格納してもよい。また、これらの情報は、付加情報とデータとの両方に格納されてもよい。
以上のように、本実施の形態に係る三次元データ符号化装置は、図90に示す処理を行う。まず、三次元データ符号化装置は、複数の三次元点が含まれる対象空間を分割した複数のサブ空間(例えばタイル又はスライス)を符号化することで複数の符号化データを生成する(S5181)。三次元データ符号化装置は、複数の符号化データと、複数のサブ空間の各々に対応する第1情報(例えばtile_null_flag)とを含むビットストリームを生成する(S5182)。複数の第1情報の各々は、対応するサブ空間の構造を示す第2情報がビットストリームに含まれるか否かを示す。
これによれば、例えば、点を含まないサブ空間に対しては第2情報を省略できるので、ビットストリームのデータ量を低減できる。
例えば、第2情報は、対応するサブ空間の原点の座標を示す情報を含む。例えば、第2情報は、対応するサブ空間の高さ、幅及び奥行きのうち少なくとも1つを示す情報を含む。
これによれば、当該三次元データ符号化装置は、ビットストリームのデータ量を削減できる。
また、図78に示すように、三次元データ符号化装置は、複数の三次元点が含まれる対象空間を複数のサブ空間(例えばタイル又はスライス)に分割し、複数のサブ空間を各サブ空間に含まれる三次元点の数に応じて結合し、結合後のサブ空間を符号化してもよい。例えば、三次元データ符号化装置は、結合後の複数のサブ空間の各々に含まれる三次元点の数が予め定められた数以上になるように、複数のサブ空間を結合してもよい。例えば、三次元データ符号化装置は、三次元点を含まないサブ空間を三次元点を含むサブ空間と結合してもよい。
これによれば、当該三次元データ符号化装置は、点の数が少ない又は点を含まないサブ空間が生成されることを抑制できるので、符号化効率を向上できる。
例えば、三次元データ符号化装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態に係る三次元データ復号装置は、図91に示す処理を行う。まず、三次元データ復号装置は、ビットストリームから、複数の三次元点が含まれる対象空間を分割した複数のサブ空間(例えばタイル又はスライス)の各々に対応し、対応するサブ空間の構造を示す第2情報がビットストリームに含まれるか否かを各々が示す、複数の第1情報(例えばtile_null_flag)を取得する(S5191)。三次元データ復号装置は、複数の第1情報を用いて、(i)ビットストリームに含まれる複数のサブ空間が符号化されることで生成された複数の符号化データを復号することで複数のサブ空間を復元し、(ii)複数のサブ空間を結合することで対象空間を復元する(S5192)。例えば、三次元データ復号装置は、第1情報を用いて、第2情報がビットストリームに含まれるか否かを判定し、ビットストリームに第2情報が含まれる場合には、第2情報を用いて、復号した複数のサブ空間を結合する。
これによれば、例えば、点を含まないサブ空間に対しては第2情報を省略できるので、ビットストリームのデータ量を低減できる。
例えば、第2情報は、対応するサブ空間の原点の座標を示す情報を含む。例えば、第2情報は、対応するサブ空間の高さ、幅及び奥行きのうち少なくとも1つを示す情報を含む。
これによれば、三次元データ復号装置は、ビットストリームのデータ量を削減できる。
また、三次元データ復号装置は、複数の三次元点が含まれる対象空間を複数のサブ空間(例えばタイル又はスライス)に分割し、複数のサブ空間を各サブ空間に含まれる三次元点の数に応じて結合し、結合後のサブ空間を符号化することで生成された符号化データを受信し、受信した符号化データを復号してもよい。例えば、符号化データは、結合後の複数のサブ空間の各々に含まれる三次元点の数が予め定められた数以上になるように、複数のサブ空間を結合することで生成されてもよい。例えば、三次元データは、三次元点を含まないサブ空間を三次元点を含むサブ空間と結合することで生成されてもよい。
これによれば、当該三次元データ装置は、点の数が少ない又は点を含まないサブ空間が生成されることを抑制することで符号化効率を向上した符号化データを復号できる。
例えば、三次元データ復号装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
(実施の形態8)
図92は、本実施の形態に係る三次元データ符号化装置の構成の一例を示すブロック図である。図93は、本実施の形態に係る三次元データ符号化装置による符号化方法の概略を説明するための図である。
三次元データ符号化装置6800は、タイルやスライスなどのように、点群データが複数に分割された分割データを生成し、複数の分割データごとに符号化する。分割データは、サブ点群データとも言う。点群データは、三次元空間における複数の三次元位置を示すデータである。また、複数の分割データは、点群データが配置される三次元空間を複数のサブ空間に分割することで、点群データが複数に分割された複数のサブ点群データである。なお、分割数、つまり、分割データの数は、分割しないことを示す1としてもよいし、2以上であってもよい。
なお、図92では、2分割する三次元データ符号化装置6800の構成を例に説明する。図93では、点群データを4分割する例が示される。図93では、分割する空間を、二次元空間を例に説明するが、一次元空間または三次元空間であってもよい。
三次元データ符号化装置6800は、分割方法決定部6801と、分割部6802と、量子化部6803a、6803bと、シフト量算出部6804a、6804bと、共通位置シフト部6805a、6805bと、個別位置シフト部6806a、6806bと、符号化部6807a、6807bとを備える。
分割方法決定部6801は、点群データの分割方法を決定する。分割方法決定部6801は、分割方法を示す分割方法情報を、分割部6802およびシフト量算出部6804a、6804bへ出力する。分割方法の具体例は、後述する。三次元データ符号化装置6800は、分割方法決定部6801を有していなくてもよい。この場合、三次元データ符号化装置6800は、予め定められた分割方法で点群データを複数の分割データに分割してもよい。
分割部6802は、分割方法決定部6801で決定された分割方法にしたがって、点群データを複数の分割データに分割する。分割部6802により分割された複数の分割データは、個別に処理される。このため、三次元データ符号化装置6800は、分割データ毎に、その後の処理を実行する処理部を備える。具体的には、三次元データ符号化装置6800は、第1の分割データを処理するための、量子化部6803aと、シフト量算出部6804aと、共通位置シフト部6805aと、個別位置シフト部6806aと、符号化部6807aとを備える。また、三次元データ符号化装置6800は、第2の分割データを処理するための、量子化部6803bと、シフト量算出部6804bと、共通位置シフト部6805bと、個別位置シフト部6806bと、符号化部6807bとを備える。これにより、三次元データ符号化装置6800は、複数の分割データごとの処理を並列に実行することができる。なお、図92では、三次元データ符号化装置6800は、2つの分割データを並列処理する処理部の例を示しているが、3以上の分割データを並列処理する処理部を有していてもよい。また、三次元データ符号化装置は、複数の分割データをそれぞれ単体の処理部で処理する構成としてもよい。
量子化部6803a、6803bのそれぞれは、対応する分割データに対してスケーリング(位置情報を任意の値で割る)および量子化を行う。量子化部6803a、6803bのそれぞれは、複数の点が重複する場合、重複する複数の点の少なくとも1つを削除してもよいし、当該少なくとも1つの点に対して処理しなくてもよい。
シフト量算出部6804a、6804bのそれぞれは、分割方法決定部6801により決定された分割方法にしたがって対応する分割データの位置をシフトする、つまり、移動するための共通位置シフト量および個別位置シフト量の少なくとも一方を算出する。シフト量算出部6804a、6804bは、分割方法に応じて、共通位置シフト量および個別位置シフト量のうちの共通位置シフト量のみを算出したり、個別位置シフト量のみを算出したり、共通位置シフト量および個別位置シフト量の両方を算出したりする。
共通位置シフト量とは、複数の分割データの位置を共通して移動させるシフト量(移動量)である。つまり、共通位置シフト量は、複数の分割データの間で同じである。共通位置シフト量は、複数の分割データの位置を移動させる方向、および、移動させる距離を含む。共通位置シフト量は、第1移動量の一例である。
個別位置シフト量は、複数の分割データのそれぞれの位置を個別に移動させるシフト量(移動量)である。個別位置シフト量は、複数の分割データのそれぞれに1対1で対応して定められたシフト量であり、多くの場合で複数の分割データの間で互いに異なる。個別位置シフト量は、対応する分割データの位置を移動させる方向、および、移動させる距離を含む。個別位置シフト量は、第2移動量の一例である。
共通位置シフト部6805a、6805bのそれぞれは、シフト量算出部6804a、6804bにより算出された共通位置シフト量で、対応する分割データに対して位置シフトを実行する。これにより、図93の(a)に示される点群データ6810が分割された複数の分割データ6811~6814は、図93の(b)に示されるように、共通位置シフト量で示される方向および距離で移動する。
個別位置シフト部6806a、6806bのそれぞれは、シフト量算出部6804a、6804bにより算出された個別位置シフト量で、対応する分割データに対して位置シフトを実行する。これにより、図93の(c)に示される複数の分割データ6811~6814は、それぞれ対応する個別シフト量で示される方向および距離で移動する。
符号化部6807a、6807bのそれぞれは、個別位置シフト部6806a、6806bにより移動された複数の分割データのうちの対応する分割データを符号化する。
なお、分割部6802、量子化部6803a、6803b、シフト量算出部6804a、6804b、共通位置シフト部6805a、6805b、個別位置シフト部6806a、6806bの処理順は、入れ替わってもよい。例えば、シフト量算出部6804a、6804bおよび共通位置シフト部6805a、6805bは、分割部6802より前に処理を行ってもよく、この場合、シフト量算出部6804a、6804bは1つの処理部にマージされていてもよいし、共通位置シフト部6805a、6805bは1つの処理部にマージされていてもよい。またこの場合、シフト量算出部6804a、6804bは、共通位置シフト部6805a、6805bより前に共通位置シフト量および個別位置シフト量のうちの少なくとも共通位置シフト量を算出していればよく、個別位置シフト量は、個別位置シフト部6806a、6806bの処理が行われる前に算出していればよい。つまり、共通位置シフト量を算出する処理部が個別位置シフト量を算出する処理部とは別に、共通位置シフト部の前に共通位置シフト量を算出する構成であってもよい。また、上記の複数の処理部のうちのいずれかの2以上の処理部は、マージされてもよい。
次に、共通位置シフト量及び個別位置シフト量の算出例を、図94を用いて説明する。図94は、位置シフトの第1の例を説明するための図である。第1の例は、共通位置シフト量で点群データ6810をシフトした後に、複数の分割データ6811~6814をそれぞれに対応する個別位置シフト量でシフトする例である。
三次元データ符号化装置は、図94の(a)に示すように、点群データ6810の全ての分割データ6811~6814を含むサイズのバウンディングボックス6820を生成し、生成したバウンディングボックス6820の最小値の点を算出する。そして、三次元データ符号化装置は、算出した最小値の点と原点との差分で示されるベクトルの方向および距離を共通位置シフト量として算出する。なお、原点は、0であるため、差分は、最小値の点の座標で示される。原点は、0でない所定の基準点であってもよい。バウンディングボックス6820は、全ての分割データ6811~6814を囲う最小のサイズの矩形の領域であってもよい。バウンディングボックス6820の最小値の点とは、バウンディングボックス6820の領域において最も原点に近い点である。バウンディングボックス6820は、共通のバウンディングボックスとも言う。また、バウンディングボックスは、符号化バウンディングボックスとも言う。
三次元データ符号化装置は、図94の(b)に示すように、算出された共通位置シフト量で、複数の分割データ6811~6814を移動する。なお、三次元データ符号化装置は、共通位置シフト量で、分割前の点群データ6810を移動させてもよい。
次に、三次元データ符号化装置は、図94の(b)に示すように、共通位置シフトした後の複数の分割データ6811~6814のそれぞれについて、当該分割データ6811~6814を含むサイズのバウンディングボックス6821~6824を生成し、生成した各バウンディングボックス6821~6824の最小値の点を算出する。そして、三次元データ符号化装置は、複数の分割データ6811~6814のそれぞれについて、当該分割データに対応するバウンディングボックスの最小値の点と原点との距離を当該分割データの個別の位置シフト量として算出する。各バウンディングボックス6821~6824、対応する分割データ6811~6814を囲う最小のサイズの矩形の領域であってもよい。バウンディングボックス6821~6824の最小値の点とは、バウンディングボックス6821~6824のそれぞれの領域において最も原点に近い点である。各バウンディングボックス6821~6824は、個別のバウンディングボックスとも言う。
三次元データ符号化装置は、図94の(c)に示すように、複数の分割データ6811~6814のそれぞれを、算出された対応する個別位置シフト量で移動する。
三次元データ符号化装置は、個別位置シフト量で移動された複数の分割データ6811~6814のそれぞれを、対応するバウンディングボックス6821~6824を用いて符号化することでビットストリームを生成する。このとき、三次元データ符号化装置は、各バウンディングボックス6821~6824の最小値の点の位置およびサイズを示す第2バウンディングボックス情報をビットストリームに含まれるメタデータに格納する。なお、以降では、バウンディングボックスは、符号化バウンディングボックス(符号化BB)とも言う。
なお、共通位置シフト量、および、バウンディングボックス6820の最小値の点の位置およびサイズを示す第1バウンディングボックス情報は、図94の(e)で示されるビットストリームのデータ構成のうちのSPSに格納される。また、個別位置シフト量は、対応する分割データの位置情報のヘッダに格納される。また、各分割データ6811~6814の符号化に用いたバウンディングボックス6821~6824の第2バウンディングボックス情報は、対応する分割データの位置情報のヘッダに格納される。
ここで、共通位置シフト量をShift_Aとし、個別位置シフト量をShift_B(i)(iは分割データのインデックス)とすると、分割データ(i)のシフト量Shift(i)は、下記の式を用いて算出することができる。
Shift(i) = Shift_A + Shift_B(i)
つまり、図94の(d)に示すように、各分割データの全シフト量は、共通位置シフト量および対応する個別位置シフト量を加算することで算出することができる。
三次元データ符号化装置は、点群データを符号化する前に、i番目の分割データの点群データに対して、Shift(i)減算することで位置シフトする。
三次元データ復号装置は、SPSおよび分割データのヘッダからShift_AおよびShift_B(i)を取得し、Shift(i)を算出した後、復号した分割データ(i)にShift(i)を加算することで分割データを元の位置に戻すことができる。これにより、複数の分割データを正しく復元することができる。
次に、共通位置シフトを行い、かつ、個別位置シフトを行わない位置シフトの第2の第2の例を、図95を用いて説明する。第2の例では、個別位置シフト量を送出しないため、ビットストリームの情報量を削減することができる。
図95は、位置シフトの第2の例を説明するための図である。第2の例では、共通位置シフト量で点群データ6810を位置シフトし、個別位置シフト量で各分割データ6811~6814を位置シフトしない。
三次元データ符号化装置は、図95の(a)に示すように、点群データ6810の全ての分割データ6811~6814を含むサイズのバウンディングボックス6820を生成し、生成したバウンディングボックス6820を用いて共通位置シフト量を算出する。共通位置シフト量の算出方法は、図94を用いて説明した方法と同じである。
三次元データ符号化装置は、図95の(b)に示すように、算出された共通位置シフト量で、複数の分割データ6811~6814を移動し、共通位置シフトした後の全ての分割データ6811~6814を含むバウンディングボックス6820を用いて符号化する。
このように、第2の例では、点群データ6810を分割した後に、複数の分割データ6811~6814のそれぞれの個別位置シフト量またはバウンディングボックス情報を算出しない。なお、第2の例では、三次元データ符号化装置は、複数の分割データ6811~6814を、共通位置シフト量で位置をシフトし、かつ、共通のバウンディングボックスを用いて符号化するとしたが、これに限らない。例えば、三次元データ符号化装置は、共通位置シフト量で複数の分割データ6811~6814の位置をシフトし、各分割データ6811~6814の個別のバウンディングボックスを用いて符号化してもよい。また、三次元データ符号化装置は、各分割データ6811~6814を個別位置シフト量でシフトし、共通のバウンディングボックスを用いて符号化してもよい。
図95の(c)に示すように、各分割データの全シフト量は、共通位置シフト量である。
なお、共通の位置シフト量、および、全ての分割データを含むバウンディングボックス6820の最小値の点の位置およびサイズを示す第1バウンディングボックス情報は図95の(d)で示されるビットストリームのデータ構成のうちのSPSに格納される。
一方、対応する分割データの位置情報のヘッダには、個別位置シフト量、および各分割データの符号化に用いた第2バウンディングボックス情報は格納されない。
また、共通位置シフト量および全ての分割データ6811~6814を含むバウンディングボックスを用いて符号化したことを示すフラグ(識別情報)と、個別位置シフト量、および分割データの符号化に用いたバウンディングボックスのサイズ情報が分割データ毎の位置情報のヘッダに格納されていないことを示すフラグ(識別情報)とは、SPSあるいはGPSに格納される。
三次元データ復号装置は、SPSまたはGPSに格納される上記フラグに基づき、共通の情報で符号化されたか、個別の情報で符号化されたかを判定し、復号に用いる位置情報およびバウンディングボックスのサイズを算出する。
なお、以降において、BBは、バウンディングボックスを示す。また、共通情報とは、複数の分割データに共通する共通位置シフト量および第1BB情報である。なお、共通位置シフト量は、共通のバウンディングボックスの最小値の点で示されてもよい。また、個別情報は、分割データ毎の個別位置シフト量および符号化に用いられる分割データ毎のバウンディングボックスの第2BB情報である。なお、個別位置シフト量は、分割データ毎のバウンディングボックスの最小値の点で示されてもよい。分割領域情報は、データを分割する際の空間における分割境界を示す情報であり、BBの最小値の点、および、BBのサイズを示すBB情報を含んでいてもよい。
図96は、第1の例および第2の例を切り替えて行う場合の符号化方法の一例を示すフローチャートである。図97は、第1の例および第2の例を切り替えて行う場合の復号方法の一例を示すフローチャートである。
三次元データ符号化装置は、図96に示すように、点群データ6810の共通位置シフト量、および、点群データ6810を囲う共通のBBのサイズを決定する(S6801)。
三次元データ符号化装置は、各分割データ6811~6814を、個別位置シフト量を用いて個別にシフトするか否かを判定する(S6802)。三次元データ符号化装置は、ヘッダ情報の削減量、または、符号化効率を求めた結果に基づき決定してもよい。
三次元データ符号化装置は、各分割データ6811~6814を個別にシフトしない場合(S6802でNo)、共通位置シフト量および共通のBBのサイズを送出すると決定し(S6803)、かつ、個別位置シフト量および共通のBBのサイズを送出しないと決定する(S6804)。これにより、三次元データ符号化装置は、共通位置シフト量および共通のBBのサイズを含み、かつ、個別位置シフト量および個別のBBのサイズを含まないビットストリームを生成する。ビットストリームには、個別にシフトしないことを示す識別情報が格納されてもよい。
一方、三次元データ符号化装置は、各分割データ6811~6814を個別にシフトする場合(S6802でYes)、共通位置シフト量および共通のBBのサイズを送出すると決定し(S6805)、かつ、個別位置シフト量および個別のBBのサイズを送出すると決定する(S6806)。これにより、三次元データ符号化装置は、共通位置シフト量および共通のBBのサイズを含み、かつ、個別位置シフト量および個別のBBのサイズを含むビットストリームを生成する。ビットストリームには、個別にシフトすることを示す識別情報が格納されてもよい。なお、三次元データ符号化装置は、ステップS6806において、各分割データ6811~6814の個別位置シフト量および個別のBBのサイズを算出してもよい。
三次元データ復号装置は、図97に示すように、ビットストリームを取得することで、個別シフトが行われたか否かを示す識別情報を取得する(S6811)。
三次元データ復号装置は、識別情報を用いて、符号化時に個別シフトが行われたか否かを判定する(S6812)。
三次元データ復号装置は、各分割データ6811~6814に対する個別のシフトが行われていないと判定した場合(S6812でNo)、ビットストリームから共通位置シフト量および共通のBBのサイズを取得する(S6813)。
一方で、三次元データ復号装置は、各分割データ6811~6814に対する個別のシフトが行われたと判定した場合(S6812でYes)、ビットストリームから共通位置シフト量および共通のBBのサイズを取得し(S6814)、かつ、個別位置シフト量および個別のBBのサイズを取得する(S6815)。
次に、点群データが存在する空間の分割領域を用いて決定した位置シフト量で位置シフトする第3の例について、図98を用いて説明する。第3の例では、さらに、位置シフト量の情報量を削減することができる。
図98は、位置シフトの第3の例について説明するための図である。第3の例では、各分割データ6811~6814の全シフト量が3段階のシフト量で表される。
三次元データ符号化装置は、図98の(a)に示すように、バウンディングボックス6820を用いて共通位置シフト量を算出する。共通位置シフト量の算出方法は、図94を用いて説明した方法と同じである。このとき三次元データ符号化装置は、点群データ6810を複数に分割するための複数の分割領域6831~6834(図98の(b))を決定し、決定した複数の分割領域6831~6834に従って点群データ6810を複数の分割データ6811~6814に分割する。複数の分割領域6831~6834は、それぞれ、複数の分割データ6811~6814に対応する領域である。なお、複数の分割領域6831~6834は、分割領域バウンディングボックスとも言う。
三次元データ符号化装置は、図98の(b)に示すように全ての分割データを含むバウンディングボックス6820の最小値の点と、各分割領域6831~6834の最小値の点との差分で示されるベクトルの方向および距離を分割領域の位置シフト量として算出する。
三次元データ符号化装置は、図98の(c)に示すように、複数の分割データ6811~6814のそれぞれについて、当該分割データ6811~6814を含むサイズのバウンディングボックス6821~6824を生成し、生成した各バウンディングボックス6821~6824の最小値の点を算出する。そして、三次元データ符号化装置は、複数の分割データ6811~6814のそれぞれについて、当該分割データに対応するバウンディングボックスの最小値の点と対応する分割領域の最小値の点との差分で示されるベクトルの方向および距離を当該分割データの個別位置シフト量として算出する。
三次元データ符号化装置は、共通位置シフト量、分割データ毎の個別位置シフト量、バウンディングボックス6820のサイズを示すバウンディングボックス情報をビットストリームに格納する。
なお、共通位置シフト量、および、バウンディングボックス6820の最小点の位置およびサイズを示す第1バウンディングボックス情報は、図98の(e)で示されるビットストリームのデータ構成のうちのSPSに格納される。また、個別位置シフト量は、対応する分割データの位置情報のヘッダに格納される。また、分割領域ごとの位置シフト量を含む分割領域情報は、例えば、分割メタデータが格納されるパラメータセットに格納される。また、各分割データ6811~6814の符号化に用いたバウンディングボックス6821~6824の第2バウンディングボックス情報は、対応する分割データの位置情報のヘッダに格納される。ここで、各分割データ6811~6814の符号化に用いられる各バウンディングボックス6821~6824は、各分割領域6831~6834に含まれる。
ここで、共通位置シフト量をShift_Aとし、個別位置シフト量をShift_B(i)とし、分割領域の位置シフト量をShift_C(i)(iは分割データのインデックス)とすると、分割データ(i)のシフト量Shift(i)は、下記の式を用いて算出することができる。
Shift(i) = Shift_A + Shift_B(i) + Shift_C(i)
つまり、図98の(d)に示すように、各分割データの全シフト量は、共通位置シフト量、分割領域の位置シフト量および個別位置シフト量の3つのシフト量を加算することで算出することができる。
三次元データ符号化装置は、点群データを符号化する前に、i番目の分割データの点群データに対して、Shift(i)減算することで位置シフトする。
三次元データ復号装置は、SPSおよび分割データのヘッダからShift_A、Shift_B(i)およびShift_C(i)を取得し、Shift(i)を算出した後、復号した分割データ(i)にShift(i)を加算することで分割データを元の位置に戻すことができる。これにより、複数の分割データを正しく復号することができる。
この方法は、分割領域情報を送出する場合に、個別位置シフト量を分割領域からの差分として示すことにより、分割データ毎のシフト量の情報量を削減する効果がある。
なお、分割領域情報を送出するかしないかに応じて、個別位置シフト量を、共通のバウンディングボックスの最小値の点と個別のバウンディングボックスの最小値の点との差分とするか、分割領域ごとの最小値の点と個別のバウンディングボックスの最小値の点との差分とするかを切り替えてもよい。後者の場合、個別位置シフト量は、分割領域の位置シフト量と、算出された差分との和により表される。
図99は、個別に位置シフトする場合において、第1の例および第3の例を切り替えて行う場合の符号化方法の一例を示すフローチャートである。図100は、個別に位置シフトする場合において、第1の例および第3の例を切り替えて行う場合の復号方法の一例を示すフローチャートである。
三次元データ符号化装置は、図99に示すように、点群データ6810の分割方法を決定する(S6821)。具体的には、三次元データ符号化装置は、点群データを第1の例で位置シフトするか、第3の例で位置シフトするかを決定する。
三次元データ符号化装置は、決定した分割方法に基づいて、分割領域を用いる第3の例の方法であるか否かを判定する(S6822)。
三次元データ符号化装置は、第1の例の方法であると判定された場合(S6822でNo)、個別位置シフト量を共通BBの最小値の点と個別BBの最小値の点との差分に設定する(S6823)。
三次元データ符号化装置は、共通情報および個別情報を含むビットストリームを生成する(S6824)。ビットストリームには、第1の例の方法であることを示す識別情報が格納されてもよい。
三次元データ符号化装置は、第3の例の方法であると判定された場合(S6822でYes)、個別位置シフト量を分割領域BBの最小値の点と個別BBの最小値の点との差分に設定する(S6825)。
三次元データ符号化装置は、共通情報、個別情報および分割領域情報を含むビットストリームを送出する(S6826)。ビットストリームには、第3の例の方法であることを示す識別情報が格納されてもよい。
三次元データ復号装置は、図100に示すように、ビットストリームを取得することで、ビットストリームに分割領域情報が含まれているか否かを判定する(S6831)。これにより、三次元データ復号装置は、取得したビットストリームが第1の例で符号化された点群データを含むのか、第3の例で符号化された点群データを含むのかを判定する。具体的には、ビットストリームに分割領域情報が含まれていれば当該ビットストリームが第3の例で符号化された点群データを含むと判定し、含まれていなければ当該ビットストリームが第1の例で符号化された点群データを含むと判定する。なお、三次元データ復号装置は、ビットストリームに含まれる識別情報を取得することで、当該ビットストリームが第1の例で符号化されたか、第3の例で符号化されたのかを判定してもよい。
三次元データ復号装置は、ビットストリームに分割領域情報が含まれていない場合(S6831でNo)、つまり、第1の例で符号化された場合、ビットストリームから共通情報および個別情報を取得する(S6832)。
三次元データ復号装置は、取得した共通情報および個別情報に基づいて、分割データ毎の位置シフト量、つまり、第1の例における位置シフト量Shift(i)、共通BBおよび個別BBを算出し、これらの情報を用いて点群データを復号する(S6833)。
三次元データ復号装置は、ビットストリームに分割領域情報が含まれている場合(S6831でYes)、つまり、第3の例で符号化された場合、ビットストリームから共通情報、個別情報および分割領域情報を取得する(S6834)。
三次元データ復号装置は、取得した共通情報、個別情報および分割領域情報に基づいて、分割データ毎の位置シフト量、つまり、第3の例における位置シフト量Shift(i)、共通BB、個別BBおよび分割領域を算出し、これらの情報を用いて点群データを復号する(S6835)。
次に、点群データが存在する空間の分割領域を符号化のバウンディングボックスとして決定した位置シフト量で位置シフトする第4の例について、図101を用いて説明する。第4の例では、分割領域と個別のバウンディングボックスとが一致するため第3の例と比較してバウンディングボックスの情報量を削減することができる。
図101は、位置シフトの第4の例について説明するための図である。第4の例では、各分割データ6811~6814の全シフト量が共通位置シフト量および分割領域の位置シフト量の2段階のシフト量で表される。
三次元データ符号化装置は、図101の(a)に示すように、バウンディングボックス6820を用いて共通位置シフト量を算出する。共通位置シフト量の算出方法は、図94を用いて説明した方法と同じである。このとき三次元データ符号化装置は、点群データ6810を複数の分割データ6811~6814に分割する。点群データ6810の分割方法は、図98の(a)を用いて説明した方法と同じである。
三次元データ符号化装置は、図101の(b)に示すように、分割領域の位置シフト量を算出する。分割領域の位置シフト量の算出方法は、図98の(b)を用いて説明した方法と同じである。
三次元データ符号化装置は、分割領域の位置シフト量を、各分割データ6811~6814の個別の位置シフト量として算出する。このため、三次元データ符号化装置は、共通位置シフト量、個別位置シフト量(分割領域の位置シフト量)およびバウンディングボックス(分割領域)のサイズを示すバウンディングボックス情報をビットストリームに格納する。
なお、共通位置シフト量、および、バウンディングボックス6820の最小点の位置およびサイズを示す第1バウンディングボックス情報は、図101の(d)に示されるビットストリームのデータ構成のうちのSPSに格納される。
また、個別位置シフト量は、対応する分割データの位置情報のヘッダおよび分割メタデータの少なくとも一方に格納される。個別位置シフト量が位置情報のヘッダおよび分割メタデータの一方に格納される場合、個別位置シフト量が分割データの位置情報のヘッダに格納されていることを示す識別情報、または、分割メタデータに格納されていることを示す識別情報がGPSやSPSに格納されてもよい。あるいは、個別位置シフト量は、例えば、分割データのヘッダに格納され、分割データのヘッダに格納される位置シフト量およびバウンディングボックス情報が分割領域と一致するか否かを示す識別情報(フラグ)がGPSやSPSに格納されてもよい。これにより、三次元データ復号装置は、上記フラグにより、分割領域情報が分割データのヘッダに格納されていると判断し、分割データのヘッダに格納される位置シフト量およびバウンディングボックス情報を分割領域の情報として用いることができる。あるいは、上記フラグは、分割メタデータに格納されていてもよく、三次元データ復号装置は、上記フラグが1を示す場合、つまり、分割領域情報が分割データのヘッダに格納されていることを示す場合には、分割データのヘッダを参照することで分割領域情報を取得してもよい。
ここで、共通位置シフト量を、Shift_Aとし、個別位置シフト量をShift_B(i)とし、分割領域の位置シフト量をShift_C(i)(iは分割データのインデックス)とすると、分割データ(i)のシフト量Shift(i)は、下記の式を用いて算出することができる。
Shift_B(i) = Shift_C(i)
Shift(i) = Shift_A + Shift_B(i)
つまり、図101の(c)に示すように、各分割データの全シフト量は、共通位置シフト量と、分割領域の位置シフト量(つまり、個別位置シフト量)とを加算することで算出することができる。
三次元データ符号化装置は、点群データを符号化する前に、i番目の分割データの点群データに対して、Shift(i)減算することで位置シフトする。
三次元データ復号装置は、SPSおよび分割データのヘッダにからShift_A、Shift_B(i)あるいはShift_C(i)を取得し、Shift(i)を算出した後、復号した分割データ(i)にShift(i)を加算することで分割データを元の位置に戻すことができる。これにより、複数の分割データを正しく復号することができる。
この方法は、個別位置シフト量を分割領域の位置シフト量とすることにより、分割領域情報の送出が必要な場合であっても新たに分割領域情報を送出しなくてもよく、情報量を削減する効果がある。
なお、分割領域情報を送出するかしないか応じて、個別位置シフト量を各分割データの個別のバウンディングボックスのバウンディングボックス情報とするか、分割領域情報とするかを切り替えてもよい。
図102は、分割領域情報を格納する場合、第3の例および第4の例を切り替えて行う場合の符号化方法の一例を示すフローチャートである。
三次元データ符号化装置は、図102に示すように、点群データ6810の分割方法を決定する(S6841)。具体的には、三次元データ符号化装置は、点群データを第3の例で位置シフトするか、第4の例で位置シフトするかを決定する。三次元データ符号化装置は、ヘッダ情報の削減量、または、符号化効率を求めた結果に基づき決定してもよい。
三次元データ符号化装置は、決定した分割方法に基づいて、個別のバウンディングボックスを用いて位置シフトを行うか否かを判定する(S6842)。つまり、三次元データ符号化装置は、第3の例の方法を用いるか第4の例の方法を用いるかを判定する。
三次元データ符号化装置は、第3の例の方法であると判定された場合(S6842でYes)、個別位置シフト量を分割領域BBの最小値の点と個別BBの最小値の点との差分に設定する(S6843)。
三次元データ符号化装置は、共通情報、個別情報および分割領域情報を含むビットストリームを生成する(S6844)。ビットストリームには、第3の例の方法であることを示す識別情報が格納されてもよい。
三次元データ符号化装置は、第4の例の方法であると判定された場合(S6842でNo)、個別位置シフト量を共通BBの最小値の点と分割領域BBの最小値の点との差分に設定する(S6845)。
三次元データ符号化装置は、共通情報および分割領域情報を含むビットストリームを送出する(S6846)。ビットストリームには、第4の例の方法であることを示す識別情報が格納されてもよい。
次に、点群データが存在する空間の分割領域を用いて決定した位置シフト量で位置シフトする第5の例について、図103を用いて説明する。第5の例では、シフト量の情報量を削減することができる。
図103は、位置シフトの第5の例について説明するための図である。第5の例では、第3の例と比較して、第3の例の分割領域が等分された領域である点が異なる。
三次元データ符号化装置は、図103の(a)に示すように、バウンディングボックス6820を用いて共通位置シフト量を算出する。共通位置シフト量の算出方法は、図94を用いて説明した方法と同じである。このとき三次元データ符号化装置は、点群データ6810を複数に分割するための複数の分割領域6841~6844(図103の(b))を、例えば、バウンディングボックス6820を基準に所定の規則に従って決定する。三次元データ符号化装置は、例えば、バウンディングボックス6820をN等分する場合で、N=4の場合、大きさが等しい4つの分割領域6841~6844を生成することができる。ここで、例えば各分割領域6841~6844を特定する識別子としてモートンオーダーで領域番号を定義すると定める場合、それぞれの分割領域のサイズが等しいため、領域の分割数および領域番号から分割領域の位置シフト量を算出できる。このため、三次元データ符号化装置は、分割領域の位置シフト量を送出する代わりに領域の分割数および領域を識別するための識別情報を送出してもよい。識別情報は、上述したように、複数の分割領域6841~6844のそれぞれに対応するモートンオーダーである。
図103の(c)の例は、符号化の領域を複数の分割データそれぞれに個別のバウンディングボックスとする例である。この場合の各分割データの位置シフト量は、共通位置シフト量と、対応する分割領域の位置シフト量と、対応する分割領域の基準位置(最小の点の位置)からの個別位置シフト量との加算値で示される。この場合、対応する分割領域は、符号化の領域(つまり、個別BB)の全部の領域を含まなくてもよい。
図103の(d)の例は、各分割データの符号化の領域と各分割領域とを一致させる例である。この場合の各分割データの位置シフト量は、共通位置シフト量と、対応する分割領域の位置シフト量との加算値で示される。この場合、対応する分割領域は、符号化の領域(つまり、個別BB)と一致するため、符号化の領域を含む。
このように、三次元データ符号化装置は、各分割データの符号化の領域と、点群データを分割する際の分割領域とを一致させてもよいし、一致させなくてもよい。各分割データの符号化の領域と分割領域とを一致させる場合には、図103の(c)と、図103の(d)のいずれの方法でも用いることができる。各分割データの符号化の領域と分割領域と一致させない場合は、図103の(c)の方法を用いることができる。
図103の(c)および図103の(d)の方法を用いる場合、共通位置シフト量、バウンディングボックス6820の最小点の位置およびサイズを示すバウンディングボックス情報は、ビットストリームのデータ構成のうちのSPSに格納される。また、分割領域情報としての、分割方法に関する情報、分割数は、すべての分割データに共通の情報としてSPSやGPSなどに格納され、各分割領域の所定の順序(モートンオーダー)における番号(識別情報)は、各分割領域の情報として、分割データの位置情報のヘッダに格納される。
また、個別位置シフト量は、対応する分割データの位置情報のヘッダに格納される。また、図103の(c)の場合は、さらに個別位置シフト量は、分割データの位置情報のヘッダに格納される。
なお、分割領域と分割データとを一致させる場合(つまり、分割領域と分割データの個別バウンディングボックスとを一致させる場合)、分割データの位置情報のヘッダに含まれる分割データの番号(タイルID)が、分割領域ごとの所定の順序における番号として扱われてもよい。このように、個別位置シフト量を、データ毎の識別情報(所定の順序における番号)で示すことにより、ヘッダの情報量を削減できる効果がある。
なお、三次元データ符号化装置は、第5の例の分割方法を用いる場合に、共通バウンディングボックスを等分する分割方法および所定の順序を用いることで、分割領域の位置シフト量を分割数および分割領域の識別情報を含む領域情報で示すとし、別の分割方法を用いる場合には、上記の領域情報を用いない方法で位置シフト量を示すように、切り替えてもよい。
ここで、共通位置シフト量をShift_Aとし、個別位置シフト量をShift_B(i)とし、分割領域の位置シフト量をShift_D(i)(iは分割データのインデックス)とすると、分割データ(i)のシフト量Shift(i)は、下記の式を用いて算出することができる。
Shift(i) = Shift_A + Shift_B(i) + Shift_D(i)
つまり、各分割データの全シフト量は、共通位置シフト量、分割領域の位置シフト量および個別位置シフト量の3つのシフト量を加算することで算出することができる。
三次元データ符号化装置は、点群データを符号化する前に、i番目の分割データの点群データに対して、Shift(i)減算することで位置シフトする。
三次元データ復号装置は、SPSおよび分割データのヘッダにからShift_AおよびShift_B(i)を取得し、さらに、分割領域情報として、分割方法に関する情報、分割数、分割領域ごとの所定の順序における番号を取得し、所定の方法で位置シフト量Shift_D(i)を導出し、Shift(i)を算出した後、復号した分割データ(i)にShift(i)を加算することで分割データを元の位置に戻すことができる。これにより、複数の分割データを正しく復号することができる。
点群データを8分木で分割する場合における、規則およびヘッダ量を削減する具体例を説明する。図104は、8分木で三次元空間を分割する場合の符号化方法について説明するための図である。
まず、三次元データ符号化装置は、三次元空間上にある点群データを、共通位置シフト量でオフセット(位置シフト、移動)した後に、8分木で分割してもよい。三次元データ符号化装置は、点群データのバウンディングボックス6850を8つの分割領域に8分木で分割し、分割数を8分木のDepth(深さ)で設定する。例えば、Depthに対する分割数は、N=2^(Depth*3)で与えられ、Depth=1の場合の分割数は8となり、Depth=2の場合の分割数は64となる。また、分割領域の順序は、モートンオーダーとする。分割領域の位置情報は、第5の例を三次元空間に適用することで、モートンオーダーから算出することができる。なお、モートンオーダーは、分割領域の位置情報から所定の方法で算出できるという特徴がある。
点群データのバウンディングボックス情報は、複数の分割データで共通のメタデータを含むSPSまたはGPSに格納する。バウンディングボックス情報は、バウンディングボックスの最小値の点(初期位置)およびサイズを含む。
三次元データ符号化装置は、分割方法が8分木を用いて分割されたことを示す識別情報、および、8分木分割である場合には、8分木のDepth(深さ)を示すDepth情報(深さ情報)を、図104の(e)で示されるビットストリームのデータ構成のうちのSPSまたはGPSに格納する。各分割データのヘッダには、分割データ番号としてのモートン順序での番号が格納される。また、分割方法が8分木である場合には、分割データの位置シフト量および符号化のバウンディングボックス情報はモートン順序から導出することを前提とし、ビットストリームに格納しない。
つまり、図104の(f)に示すように、三次元データ符号化装置は、8分木で分割された複数の分割領域のそれぞれの位置情報を所定の方法を用いて、8分木で分割されたことを示す識別情報と、8分木のDepthと、モートンオーダーとを算出する。三次元データ復号装置では、図104の(g)に示すように、8分木で分割されたことを示す識別情報と、8分木のDepthと、モートンオーダーとを取得し、所定の方法で8分木で分割された複数の分割領域のそれぞれの位置情報を復元する。
なお、分割領域内に点群データがない場合は、当該分割領域情報はなくてもよい。例えば、分割データ番号=2の領域に点群データがない場合は、当該分割データ番号を送出しないため、分割データ番号の並びは2をスキップし1,3,4となる。
なお、分割メタデータには、分割データ番号が格納されてもよく、点群データがない分割領域も含めたすべての分割領域情報が格納されてもよい。この場合、分割領域情報によって、当該分割領域に点群データがあるかないかが示されてもよい。
図105は、GPSのシンタックスの一例を示す図である。
octree_partition_flagは、点群データの分割方法が8分木分割であるか否かを示すフラグである。
depthは、点群データを8分木分割する場合の、8分木の分割の深さを示す。
gheader_BBmin_present_flagは、点群データの符号化のバウンディングボックスの位置情報フィールドが位置情報のヘッダに存在するか否かを示すフラグである。
gheader_BBsize_present_flagは、点群データの符号化のバウンディングボックスのサイズ情報フィールドが位置情報のヘッダに存在するか否かを示すフラグである。
なお、octree_partition_flag=1の場合は、gheader_BBmin_present_flag及びgheader_BBsize_present_flagは0とする。
図106は、位置情報のヘッダのシンタックスの一例を示す図である。
partition_idは、分割データの識別情報を示す。partition_idは、8分木分割の場合、モートンオーダーの順序で一意の位置を示す。
BBminは、データあるいは分割データを符号化する際のシフト量を示す。
BBsizeは、データあるいは分割データを符号化する際のバウンディングボックスのサイズを示す。
なお、8分木の分割を例に説明したが、それ以外の分割方法でも同様に所定の分割方法、分割データの順序や、位置情報の算出方法を定めることにより、本方式が適用できる。例えば、点群データを上から俯瞰し、x-y平面において等間隔で分割する場合は、分割方法が前記分割方法であること、分割の数あるいは分割のサイズ、順序を定め、送信することで、当該情報に基づき三次元データ符号化装置および三次元データ復号装置の双方で位置情報や位置シフト量を算出することができ、位置情報を送出しないことにより、データ量を削減できる。8分木で分割するか、分割する平面の情報、4分木で分割する情報を送出してもよい。
図107は、8分木分割するか否かに応じて処理を切り替える符号化方法の一例を示すフローチャートである。図108は、8分木分割したか否かに応じて処理を切り替える復号方法の一例を示すフローチャートである。
三次元データ符号化装置は、図107に示すように、点群データの分割方法を決定する(S6851)。
三次元データ符号化装置は、決定した分割方法に基づいて、8分木分割するか否かを判定する(S6852)。
三次元データ符号化装置は、8分木分割しないと判定した場合(S6852でNo)、個別位置シフト量を分割データ毎の個別BBの最小値の点に決定して、分割データを位置シフトし、分割データを、個別BBを用いて符号化する(S6853)。
三次元データ符号化装置は、共通のメタデータに、共通BBの情報を格納する(S6854)。
三次元データ符号化装置は、分割データのヘッダに、分割データ毎の個別位置シフト量を格納する(S6855)。
三次元データ符号化装置は、8分木分割すると判定した場合(S6852でYes)、個別位置シフト量を8分木分割された分割領域の最小値の点に決定して、分割データを位置シフトし、分割データを、8分木の分割領域を用いて符号化する(S6856)。
三次元データ符号化装置は、共通のメタデータに、共通BBの情報、8分木分割したことを示す識別情報、および、Depth情報を格納する(S6857)。
三次元データ符号化装置は、分割データのヘッダに、分割データ毎の個別位置シフト量を特定するためのモートンオーダーの順番を示す順序情報を格納する(S6858)。
三次元データ復号装置は、点群データの分割方法を示す情報を共通のメタデータから取得する(S6861)。
三次元データ復号装置は、取得した分割方法を示す情報に基づいて、分割方法が8分木分割であるか否かを判定する(S6862)。具体的には、三次元データ復号装置は、8分木分割したか否かを示す識別情報に基づいて、分割方法が8分木であるか否かを判定する。
三次元データ復号装置は、分割方法が8分木分割でない場合(S6862でNo)、共通BBの情報、個別位置シフト量、および個別BBの情報を取得し、点群データを復号する(S6863)。
三次元データ復号装置は、分割方法が8分木分割である場合(S6862でYes)、共通BBの情報、Depth情報および個別の順序情報を取得し、個別位置シフト量および符号化のBB情報を算出し、点群データを復号する(S6864)。
本実施の形態で説明した複数の例の方法は、いずれの方法を用いても符号量を削減できる可能性が期待できる。所定の方法で複数の例の方法のうちのいずれかの方法に切り替えてもよい。
例えば、三次元データ符号化装置は、符号量を算出して、算出した符号量に応じて所定の条件で上記の複数の方法のうちの第1の方法を行うことに決定してもよい。あるいは、不可逆圧縮の場合で量子化係数が所定値よりも大きい場合、データの分割数が所定数よりも大きい場合、点群の数が所定数よりも少ない場合を判定し、オーバーヘッドが変化する可能性がある場合に上記の複数の方法のうちの第1の方法から第2の方法へ切り替えてもよい。
また、各分割データのヘッダには、共通情報に対する差分を当該分割データに対応する個別情報として格納するとしたが、これに限らずに、当該分割データの一つ前の分割データの個別情報との差分を当該分割データの個別情報として格納してもよい。
図109は、分割データが、ランダムアクセス可能なAデータとそうでないBデータとに分類される場合のビットストリームのデータ構成の一例を示す図である。図110は、図109の分割データをフレームとした場合の例である。
この場合、つまり1以上の複数のランダムアクセス単位がある場合、AデータのデータヘッダとBデータのデータヘッダとにはそれぞれ異なる情報を格納してもよい。例えば、Aデータの分割データは、GPSに格納される共通の情報からの個別の差分情報が格納され、Bデータの分割データには、ランダムアクセス単位におけるAデータとの差分情報が格納されてもよい。なお、Bデータの分割データがランダムアクセス単位で複数含まれる場合、同一のランダムアクセス単位に含まれる複数のBデータの分割データのそれぞれにAデータとの差分情報が格納されてもよいし、複数のBデータの分割データには、当該Bデータの一つ前のAデータまたはBデータとの差分情報が格納されてもよい。
上記では、分割データについて説明したが、フレームについても同様である。
本実施の形態では、主に、データ分割における分割領域あるいは分割境界は、全ての分割データのBBを対象として、その領域を分割する例(図111)を用いて説明したが、分割領域がその他の場合であっても、本実施の形態の方法を用いることにより、同様の符号量削減の効果が期待できる。
図111に示すように全ての分割データを含むBBを分割する場合、三次元データ符号化装置は、BBの最小値を基準に位置シフトすることで、位置シフト後の点群データを分割の対象としてもよい。また、三次元データ符号化装置は、点群データがスケーリングまたは量子化されている場合には、スケーリングまたは量子化された後の点群データを分割の対象としてもよいし、スケーリングまたは量子化される前の点群データを分割の対象としてもよい。
図112に示すように、三次元データ符号化装置は、点群データの入力データの座標系で分割領域を設定してもよい。この場合、三次元データ符号化装置は、点群データのBBの最小値の点をシフトしない。
図113に示すように、三次元データ符号化装置は、点群データの上位の座標系で分割領域を設定してもよい。例えば、三次元データ符号化装置は、地図データなどのGPS座標に基づき分割領域を設定してもよい。
この場合、三次元データ符号化装置は、上位の座標系に対する点群の座標系の相対位置情報をビットストリームに格納し、送出してもよい。例えば、三次元データ符号化装置は、車載Lidarなどのセンサーが移動しながら点群データをセンシングする際、センサーの位置情報(GPS座標や加速度、速度、移動距離)を相対位置情報として送出もよい。また、三次元データ符号化装置は、時系列のフレーム構造を持つ点群データの場合、フレーム毎の時系列のセンサー位置情報をビットストリームに格納し送出してもよい。なお、上位の座標系は絶対座標であってもよいし、絶対座標に基づく相対座標でもよい。上位の座標系は、上位の座標系のさらに上位の座標系であってもよい。
図114に示すように、三次元データ符号化装置は、点群データのオブジェクトまたはデータ属性に基づき分割領域を決定してもよい。例えば、三次元データ符号化装置は、画像認識結果に基づき分割領域を決定してもよい。この場合の、分割領域は、重複する領域を含んでいてもよい。三次元データ符号化装置は、点群の各点を所定の属性に基づきクラスタリングしてもよいし、点の数をベースにデータを分割してもよいし、ほぼ等しい数の点群を有するように領域を分割してもよい。
三次元データ符号化装置は、符号化対象の点の数をシグナリングし、三次元データ復号装置は、点の数を用いて点群データを復号してもよい。
符号化対象は、フレーム毎あるいは1フレームを分割した分割データ毎に設定され、符号化対象の点の数は、基本的にそれぞれのデータヘッダに格納される。シグナリングされる符号化対象の点の数は、基準値が共通のメタデータに格納され、基準値との差分情報がデータヘッダに格納してもよい。
三次元データ符号化装置は、例えば、図115に示すように基準の点の数A(つまり基準値)をGPSまたはSPSに格納し、基準の点の数Aからの差分である点の数B(i) (iは分割データのインデックス)をそれぞれのデータヘッダに格納してもよい。分割データ(i)の点の数は、数Aに数B(i)を加算することで得られる。このため、三次元データ復号装置は、A+B(i)を算出し、算出した値を、分割データ(i)の点の数として復号する。
あるいは、図116に示すように、三次元データ符号化装置は、分割データの前の分割データの点の数からの差分情報をそれぞれのデータヘッダに格納してもよい。この場合、分割データ(i)の点の数は、数Aに先頭の分割データの数B(1)~数B(i)を加算することで得られる。
また、例えば、図117に示すように複数のフレーム構造を持つ、時系列点群データの場合、三次元データ符号化装置は、共通のSPSに符号化対象の点の数の基準値を格納し、基準値に対するそれぞれのフレームの相対値をGPSあるいはデータヘッダに格納してもよい。また、三次元データ符号化装置は、SPSに格納される基準値に対する差分(相対値)をGPSに格納し、さらにSPSの基準値とGPSの差分値との加算値からの差分(相対値)をデータヘッダに格納してもよい。これにより、オーバーヘッドの符号量を削減効果が期待できる。
なお、点群データを分割する方法として、点の数がほぼ等しくなるように分割する方法が考えられる。その場合には図115と同様の方法を用いることができる。
例えば、図118に示すように、分割データに含まれる点の差が1以内となるように分割する方法では、Δは、1bitのデータで示されてもよいし、Δ=0の場合は、差分情報は示されなくてもよい。
例えば、図119に示すように、基本的にはGPSに記載される基準値を分割数とするデータと、余りの数で構成されるデータであってもよい。Δ=0の場合は、差分情報は示されなくてもよい。
上記の図115~図119のいずれの方法を用いてもオーバーヘッドの情報量を削減効果が期待できる。
以上のように、本実施の形態に係る三次元データ符号化装置は、図120に示す処理を行う。三次元データ符号化装置は、三次元空間における複数の三次元位置を示す点群データを符号化する装置である。三次元データ符号化装置は、点群データを第1移動量だけ移動させる(S6871)。次に、三次元データ符号化装置は、三次元空間を複数のサブ空間に分割することで、点群データを複数のサブ点群データに分割する(S6872)。三次元データ符号化装置は、第1移動量だけ移動した後の点群データに含まれる複数のサブ点群データのそれぞれについて、当該サブ点群データが含まれるサブ空間の位置に基づく第2移動量だけ当該サブ点群データを移動させる(S6873)。三次元データ符号化装置は、移動後の複数のサブ点群データを符号化することでビットストリームを生成する(S6874)。ビットストリームは、第1移動量を算出するための第1移動情報と、複数のサブ点群データを移動させた複数の第2移動量をそれぞれ算出するための複数の第2移動情報とを含む。これによれば、分割したサブ点群データを移動した後に符号化するため、各サブ点群データの位置情報の情報量を低減することができ、符号化効率を向上できる。
例えば、複数のサブ空間は、互いに等しい大きさを有する。複数の第2移動情報のそれぞれは、複数のサブ空間の数、および、対応するサブ空間を識別するための第1識別情報を含む。このため、第2移動情報の情報量を低減することができ、符号化効率を向上できる。
例えば、第1識別情報は、複数のサブ空間のそれぞれに対応するモートンオーダーである。
例えば、複数のサブ空間は、それぞれ、1つの三次元空間が8分木を用いて分割された空間である。ビットストリームは、複数のサブ空間が8分木を用いて分割された空間であることを示す第2識別情報と、8分木の深さを示す深さ情報とを含む。このため、三次元空間上の点群データを、8分木を用いて分割するため、各サブ点群データの位置情報の情報量を低減することができ、符号化効率を向上できる。
例えば、分割は、点群データを第1移動量だけ移動させた後に行われる。
例えば、三次元データ符号化装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態に係る三次元データ復号装置は、図121に示す処理を行う。三次元データ復号装置は、三次元空間を複数のサブ空間に分割することで複数の三次元位置を示す点群データが分割された複数のサブ点群データであって、それぞれが第1移動量、および、対応する第2移動量だけ移動された複数のサブ点群データと、第1移動量を算出するための第1移動情報と、複数のサブ点群データを移動させた複数の第2移動量をそれぞれ算出するための複数の第2移動情報とを、ビットストリームから復号する(S6881)。三次元データ復号装置は、複数のサブ点群データのそれぞれを、第1移動量、および、対応する第2移動量を加算した移動量だけ移動させることで点群データを復元する(S6882)。これによれば、符号化効率が向上されたビットストリームを用いて点群データを正しく復号することができる。
例えば、複数のサブ空間は、互いに等しい大きさを有する。複数の第2移動情報のそれぞれは、複数のサブ空間の数、および、対応するサブ空間を識別するための第1識別情報を含む。このため、第2移動情報の情報量を低減することができ、符号化効率を向上できる。
例えば、第1識別情報は、複数のサブ空間のそれぞれに対応するモートンオーダーである。
例えば、複数のサブ空間は、それぞれ、1つの三次元空間が8分木を用いて分割された空間である。ビットストリームは、複数のサブ空間が8分木を用いて分割された空間であることを示す第2識別情報と、8分木の深さを示す深さ情報とを含む。このため、三次元空間上の点群データを、8分木を用いて分割するため、各サブ点群データの位置情報の情報量を低減することができ、符号化効率を向上できる。
例えば、三次元データ復号装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
(実施の形態9)
本実施の形態では、上述した分割領域情報を用いた位置シフト量の算出における個別位置シフト量と分割領域位置シフト量の算出方法の例を説明する。
図122は、個別位置シフト量及び分割領域位置シフト量の例を示す図である。図122に示すように、点群データ(三次元データ)のバウンディングボックスの最小座標と原点との差分が共通位置シフト量である。また、点群データのバウンディングボックスは、複数の分割領域に分割される。また、点群データのバウンディングボックスの最小座標と分割領域の最小座標との差分が分割領域位置シフト量である。さらに、分割領域の最小座標と、当該分割領域に含まれる点群データである分割データのバウンディングボックスの最小座標との差分が個別位置シフト量である。
なお、ここでは共通位置シフト量と分割領域位置シフト量とが個別に定義される例を示すが、共通位置シフト量が存在しなくてもよい。また、図122に示す共通位置シフト量と分割領域位置シフト量とを合わせたものが分割領域位置シフト量であってもよい。また、図122に示す分割領域位置シフト量と個別位置シフト量とを合わせたベクトルが個別位置シフト量であってもよい。
図123は、本実施の形態に係る分割領域位置シフト量及び個別位置シフト量の算出処理のフローチャートである。まず、三次元データ符号化装置は、点群データを分割データであるスライスに分割する(S7501)。なお、いかなる分割方法が用いられてもよい。また、複数の分割領域は重複しなくてもよいし、重複してもよい。
次に、三次元データ符号化装置は、例えば、スライス符号化の基準位置(原点座標)を、それぞれのスライスを構成する点群(三次元点)データのバウンディングボックスの最小値(最小座標)に設定すると決定する(S7502)。
次に、三次元データ符号化装置は、複数のスライスから処理対象の対象スライスを選択し、スライス毎の処理を開始する(S7503)。まず、三次元データ符号化装置は、対象スライスを構成する点群データ(分割データ)のバウンディングボックスの最小位置座標を算出する(S7504)。ここで、個別位置シフト量は、対象スライスを構成する点群データのバウンディングボックスの最小位置座標と点群データのバウンディングボックスの最小座標(つまり、共通位置シフト量)との差分であり、図122に示す分割領域位置シフト量と個別位置シフト量との合計に対応する。
次に、三次元データ符号化装置は、最小位置座標を分割境界で分割する(S7505)。例えば、分割境界は、全てのスライスの全ての軸(x、y、z)で共通であってもよいし、異なる境界が用いられてもよい。また、分割境界は、スライス内で共通であってよいし、2以上の任意の軸で共通であってもよい。
図124は、最小位置座標の分割処理を模式的に示す図である。図124に示すように最小位置座標は分割境界で上位ビットと下位ビットとに分割される。
また、例えば、分割境界を示す上位ビット数はint(k*N)に設定される。ここで、Nは最小位置座標のビット数である。また、k(k<=1)は固定的又は適応的に設定される係数である。これにより、最小位置座標のビット数に基づき分割境界が決定される。このように、上位ビットと下位ビットに分割することで、最小位置座標を分割領域位置シフト量と、個別位置シフト量とに分割できる。
次に、三次元データ符号化装置は、上位ビットの処理を行う(S7506)。具体的には、三次元データ符号化装置は、下位ビットを0でマスクする(S7511)。これにより、ビット数を削減できる。次に、三次元データ符号化装置は、上位ビットを抽出し、抽出した上位ビットを符号化する(S7512)。
また、三次元データ符号化装置は、下位ビットの処理を行う(S7507)。具体的には、三次元データ符号化装置は、上位ビットを0でマスクする(S7521)。次に、三次元データ符号化装置は、下位ビットを抽出し、抽出した下位ビットを符号化する(S7522)。
全てのスライスの処理が完了していない場合(S7508でNo)、三次元データ符号化装置は、次のスライスを対象スライスとして選択し(S7503)、ステップS7504以降の処理を再度行う。全てのスライスの処理が完了した場合(S7508でYes)、三次元データ符号化装置は、処理を終了する。
また、例えば、三次元データ符号化装置は、対象スライス内の複数の三次元点の位置を最小位置座標(分割領域位置シフト量と個別位置シフト量との合計)に応じて移動(シフト)し、移動後の複数の三次元点の位置を符号化する。つまり、三次元データ符号化装置は、対象スライス内の複数の三次元点の位置と最小位置座標との差分を符号化する。
図125は、三次元データ復号装置におけるシフト量の算出の例を示す図である。三次元データ復号装置は、ビットストリームから、下位ビットと上位ビットとを復号し、得られた下位ビットと上位ビットとを連結させることで、最小位置座標を算出する。
また、例えば、三次元データ復号装置は、ビットストリームから、移動後(シフト後)の複数の三次元点の位置を復号する。三次元データ復号装置は、対象スライス内の移動後の複数の三次元点の位置を、算出した最小位置座標(分割領域位置シフト量と個別位置シフト量との合計)に応じて移動(シフト)し、複数の三次元点の位置を復元する。なお、三次元データ復号装置で行われる移動は、三次元データ符号化装置で行われる移動の逆方向の移動である。
次に、8分木分割方法を用いる場合の個別位置シフト量と分割領域位置シフト量の算出方法を説明する。図126は、この場合の分割領域位置シフト量及び個別位置シフト量の算出処理のフローチャートである。なお、図126に示す処理は、図123に示す処理に対して、S7501がS7501Aに変更され、S7505がS7505Aに変更されている点が異なる。
まず、三次元データ符号化装置は、点群データを8分木(Octree)分割方法を用いてスライスに分割する(S7501A)。なお、ステップS7502~S7504は図123と同様である。
次に、三次元データ符号化装置は、最小位置座標を深さビット(depthビット)に基づく分割境界で分割する(S7505A)。例えば、分割境界は、上位から深さビット目の位置に設定される。ここで、深さビットは8分木における階層の深さを示す。
図127は、この場合の最小位置座標の分割処理を模式的に示す図である。図127に示すように分割境界は上位から深さビットの境界に設定される。
例えば、全てのスライス及び全ての軸に対して共通の深さビットに基づく分割境界で分割が行われる。これにより、下位ビットを値0にマスクした最小位置座標は、分割領域位置シフト量を示す。また、上位ビットの値は分割領域の順序を示すモートンオーダーと等価である。また、下位ビットは0となる確率が高くなり、符号化率の向上が期待できる。なお、ステップS7506以降の処理は図123と同様である。
なお、三次元データ符号化装置は、上位ビット又は下位ビットのいずれかまたは両方を、さらに上位と下位のビットに分け、処理を多段階で行ってもよい。
図128は、三次元データ復号装置におけるシフト量の算出の例を示す図である。三次元データ復号装置は、ビットストリームから、下位ビットと上位ビットとを復号し、得られた下位ビットと上位ビットとを連結させることで、最小位置座標を算出する。
次に、分割境界を示す境界情報の送出方法について説明する。境界情報は、上位ビットのビット数を示してもよいし、下位ビットのビット数を示してもよい。
スライス又は軸で個別の分割境界(ビット数)が用いられる場合は、境界情報は、それぞれの分割境界(ビット数)を示す。共通の分割境界が用いられる場合は、共通の分割境界を示す、複数スライスに共通の境界情報がビットストリームに格納されてもよい。または、各スライス又は各軸に対して対応するスライス又は軸の分割境界を示す境界情報が設けられ、複数の境界情報で同じ分割境界が示されてもよい。また、これらのいずれの手法が用いられるかがフラグに基づき切り替えられてもよい。
また、三次元データ符号化装置は、上位ビットと下位ビットのビット数を比較し、境界情報は、上位ビットと下位ビットとのうちビット数の少ないビットのビット数を示してもよい。その場合は、三次元データ符号化装置は、境界情報で示されるビット数が上位ビットのビット数であるか、下位ビットのビット数であるかを示すフラグをビットストリームに格納する。三次元データ復号装置は、当該フラグに基づき、境界情報で示されるビット数が上位ビットのビット数であるか下位ビットのビット数であるかを判定し、位置シフト量の算出方法を切り替える。
なお、三次元データ符号化装置は、下位ビットを符号化して送出する場合は、三次元データ復号装置が当該下位ビットに基づき下位ビットの数を算出可能であるため、下位ビットのビット数を送出しなくてもよい。
また、三次元データ符号化装置は、分割方法に応じて、分割境界(上位ビット又は下位ビットのビット数)の決定方法を切り替えてもよい。例えば、三次元データ符号化装置は、8分木分割が用いられる場合は、深さビットを用い、その他の分割方法が用いられる場合は、例えば、上位ビットのビット数をint(k*N)に設定する。
以下、シフト量の算出の別の例を説明する。三次元データ符号化装置は、上位ビットを送信し、下位ビットを送信しなくてもよい。例えば、三次元データ符号化装置は、分割領域を符号化領域と一致させる場合に、上位ビットを送信し、下位ビットを送信しなくてもよい。なお、三次元データ符号化装置は、分割領域を符号化領域と一致させない場合でも、上位ビットを送信し、下位ビットを送信しなくてもよい。
三次元データ符号化装置は、下位ビットを送信しない場合、分割境界を示すビット数を送出する。送出方法は、例えば、上位ビットと下位ビットの両方を送出する方法の場合と同様である。
下位ビットを送出しない場合、三次元データ符号化装置は、位置情報(最小位置座標)の下位から連続する値0のビットをカウントし、下位から連続する値0のビットを下位ビットに設定してもよい。これにより、位置情報の値を変化させることなくビット数を削減できる。図129は、この場合の下位ビットの設定例を示す図である。図129に示すスライス1では、下位から3ビットが値0であるためこの3ビットが下位ビットに設定される。図129に示すスライス2では、最下位ビットが値1であるため下位ビットは設定されない。図129に示すスライス3では、下位から2ビットが値0であるためこの2ビットが下位ビットに設定される。
また、三次元データ符号化装置は、スライス毎にビット数が共通化される場合は、スライス毎のx座標、y座標及びz座標のそれぞれの値の下位から連続する値0のビットの数をカウントし、その中で最小の数を下位ビットのビット数に設定してもよい。つまり、三次元データ符号化装置は、下位から連続するx座標、y座標及びz座標の全てが0のビットを下位ビットに設定してもよい。この場合、最小位置座標を変化させることなく、ビット数を削減できる。なお、三次元データ符号化装置は、全ビットが0である場合は処理を行わずそのまま0を送出してもよい。
また、三次元データ符号化装置は、全ビット数と、上位ビットのビット数とを送出してもよい。この場合、三次元データ復号装置は、全ビット数から上位ビットのビット数を減算することで下位ビットのビット数を算出してもよい。
また、三次元データ符号化装置は、値1のビットを含むビットを下位ビットに設定してもよい。この場合は下位ビットを送出しないため、復号される位置情報は元の位置情報の値から変化する。つまり、位置情報が量子化される。
図130は、下位ビットを送出しない場合のシフト量の算出処理のフローチャートである。なお、図130に示す処理は、図123に示す処理に対して、S7506がS7506Bに変更され、S7507を含まない点が異なる。
三次元データ符号化装置は、ステップS7505の後、上位ビットの処理を行う(S7506B)。具体的には、三次元データ符号化装置は、上位ビットを抽出し、抽出した上位ビットを符号化する(S7512)。また、三次元データ符号化装置は、下位ビットのビット数(下位ビット数とも記す)を符号化する(S7513)。つまり、三次元データ符号化装置は、下位ビットのビット数を示す情報をビットストリームに格納する。
また、例えば、三次元データ符号化装置は、対象スライス内の複数の三次元点の位置を最小位置座標の下位ビットを全てゼロに置き換えた値(分割領域位置シフト量)に応じて移動(シフト)し、移動後の複数の三次元点の位置を符号化する。つまり、三次元データ符号化装置は、対象スライス内の複数の三次元点の位置と、最小位置座標の下位ビットを全てゼロに置き換えた値との差分を符号化する。
また、例えば、三次元データ復号装置は、ビットストリームから、移動後の複数の三次元点の位置を復号する。また、三次元データ復号装置は、復号した上位ビットの値を有する上位ビットと、下位ビット数で示されるビット数の全て値ゼロの下位ビットとで構成される移動量(分割領域位置シフト量)を算出する。三次元データ復号装置は、対象スライス内の移動後の複数の三次元点の位置を、算出した移動量(分割領域位置シフト量)に応じて移動(シフト)し、複数の三次元点の位置を復元する。なお、三次元データ復号装置で行われる移動は、三次元データ符号化装置で行われる移動の逆方向の移動である。
図131は、8分木分割方法を用いる場合において、下位ビットを送出しない場合のシフト量の算出処理のフローチャートである。なお、図131に示す処理は、図126に示す処理に対して、S7506がS7506Bに変更され、S7507を含まない点が異なる。
ステップS7505Aにおいて、三次元データ符号化装置は、最小位置座標を深さビット(depthビット)に基づく分割境界で分割する。ここで、下位ビットが符号化されないため、この処理は、上位から深さビット目で最小位置座標を量子化することと等価である。また、8分木分割の場合は、分割領域に含まれる複数の点の座標に含まれる上位から深さビット目までのビットは全て共通である。よって、三次元データ符号化装置は、スライスを構成する複数の点群の全てに含まれる点の上位から深さビット目までを上位ビットとして抽出してもよい。
次に、三次元データ符号化装置は、上位ビットの処理を行う(S7506B)。具体的には、三次元データ符号化装置は、上位ビットを抽出し、抽出した上位ビットを符号化する(S7512)。また、三次元データ符号化装置は、下位ビットのビット数を符号化する(S7513)。つまり、三次元データ符号化装置は、下位ビットのビット数を示す情報をビットストリームに格納する。
次に、ビットストリームのシンタックス例を説明する。図132は、GPS(位置情報パラメータセット)のシンタックス例を示す図である。GPSは、フレーム単位の位置情報のパラメータセット(制御情報)であり、複数のスライス(分割領域)に共通のパラメータセットである。
GPSは、gheader_origin_present_flagと、gheader_origin2_present_flagと、origin_shift_bit_present_flagと、origin_shift_bitとを含む。
gheader_origin_present_flagは、位置情報ヘッダ(Geometory_header)に第1のシフト位置情報が含まれるか否かを示すフラグである。第1のシフト位置情報は、例えば、上位ビットの値を示す。また、位置情報ヘッダはスライス(分割領域)単位の位置情報のヘッダである。
gheader_origin2_present_flagは、位置情報ヘッダに第2のシフト位置情報が含まれるか否かを示すフラグである。第2のシフト位置情報は、例えば、下位ビットの値を示す。
origin_shift_bit_present_flagは、分割境界を示すビット数(例えば下位ビットのビット数)が、GPSに含まれるか、位置情報ヘッダに含まれるかを示すフラグである。例えば、三次元データ符号化装置は、複数のスライスで共通の分割境界(ビット数)を用いる場合、origin_shift_bit_present_flagをオン(例えば値1)に設定し、ビット数(origin_shift_bit)をGPSに格納する。一方、三次元データ符号化装置は、スライス毎に個別の分割境界(ビット数)を用いる場合、origin_shift_bit_present_flagをオフ(例えば値0)に設定し、ビット数(origin_shift_bit)をスライス毎の位置情報ヘッダに格納する。
origin_shift_bitは、分割境界を示すビット数(下位ビットのビット数)を示す。origin_shift_bitは、origin_shift_bit_present_flagがオン(例えば値1)の場合にGPSに含まれ、origin_shift_bit_present_flagがオフ(例えば値0)の場合にはGPSに含まれない。
図133は、位置情報ヘッダ(Geometory_header)のシンタックス例を示す図である。位置情報ヘッダは、BB_origin_x、BB_origin_y、及びBB_origin_zと、origin_shift_bitと、BB_origin2_x、BB_origin2_y及びBB_origin2_zと、origin2_shift_bitとを含む。
BB_origin_x、BB_origin_y及びBB_origin_zは、シフト量(最小位置座標)の上位ビットの値を示す。BB_origin_x、BB_origin_y及びBB_origin_zは、gheader_origin_present_flagがオン(例えば値1)の場合に位置情報ヘッダに含まれ、gheader_origin_present_flagがオフ(例えば値0)の場合は位置情報ヘッダに含まれない。
origin_shift_bitは、分割境界を示すビット数(下位ビットのビット数)を示す。origin_shift_bitは、gheader_origin_present_flagがオン(例えば値1)、かつ、origin_shift_bit_present_flagがオフ(例えば値0)の場合に位置情報ヘッダに含まれ、それ以外の場合には位置情報ヘッダに含まれない。
BB_origin2_x、BB_origin2_y及びBB_origin2_zは、シフト量の下位ビットを示す。BB_origin2_x、BB_origin2_y及びBB_origin2_zは、gheader_origin2_present_flagがオン(例えば値1)の場合に位置情報ヘッダに含まれ、gheader_origin2_present_flagがオフ(例えば値0)の場合は位置情報ヘッダに含まれない。
origin2_shift_bitは、下位ビットを、さらに上位と下位に分割する場合に位置情報ヘッダに含まれる。origin2_shift_bitは、下位ビットをさらに分割した下位ビットのビット数を示す。origin2_shift_bitは、gheader_origin2_present_flagがオン(例えば値1)の場合に位置情報ヘッダに含まれ、gheader_origin2_present_flagがオフ(例えば値0)の場合は位置情報ヘッダに含まれない。
このように、gheader_origin2_present_flagが1である場合には、第1のシフト位置情報に加え、第2のシフト位置情報が追加される。なお、三次元データ符号化装置は、第1のシフト位置情報、第2のシフト位置情報の順序で使用する。つまり、三次元データ符号化装置は、第1のシフト位置情報を送出せずに第2のシフト位置情報を送出しない。
次に、シフト量の決定方法の組み合わせの例を説明する。三次元データ符号化装置は、分割方法に基づき送出方法を切り替えてもよいし、分割方法以外の方法に基づき送出方法を切り替えてもよい。例えば、三次元データ符号化装置は、8分木分割方法が用いられた場合は、上位ビットと下位ビットの両方を送出する方法を用い、その他の分割方法が用いられた場合は、上位ビットを送出し下位ビットを送出しない方法を用いてもよい。
図134は、この場合のシフト量の送出処理の例を示すフローチャートである。まず、三次元データ符号化装置は、データ分割方法を決定する(S7531)。決定されたデータ分割方法が8分木分割方法以外である場合(S7532でNo)、三次元データ符号化装置は、上位ビットを送出し、下位ビットを送出しない(S7533)。また、三次元データ符号化装置は、下位ビットのビット数を送出する(S7534)。一方、決定されたデータ分割方法が8分木分割方法である場合(S7532でYes)、三次元データ符号化装置は、上位ビットと下位ビットの両方を送出する(S7535)。また、三次元データ符号化装置は、下位ビットのビット数を送出しない(S7536)。
なお、ここでは、8分木分割方法が用いられる場合に上位ビットと下位ビットとの両方を送出する例を述べたが、三次元データ符号化装置は、8分木分割方法が用いられる場合に上位ビットを送出し、下位ビットを送出せず、8分木分割方法以外が用いられる場合に、上位ビットと下位ビットとの両方を送出してもよい。また、三次元データ符号化装置は、上位ビットと下位ビットとの両方を送出する場合に、下位ビットのビット数を送出してもよい。
また、三次元データ符号化装置は、分割方法に応じて、量子化の方法又は分割境界のビット数の算出方法を切り替えてもよい。図135は、この場合のシフト量の算出処理のフローチャートである。まず、三次元データ符号化装置は、データ分割方法を決定する(S7541)。
決定されたデータ分割方法が8分木分割方法以外である場合(S7542でNo)、三次元データ符号化装置は、分割データ(スライス)毎に、個別位置シフト量(例えば個別BBの最小値)を算出し、算出した個別位置シフト量を所定の方法で分割データ毎に量子化する(S7543)。例えば、三次元データ符号化装置は、個別位置シフト量の上位ビットを抽出することで量子化を行う。なお、三次元データ符号化装置は、量子化を行わない方法を用いてもよい。また、三次元データ符号化装置は、量子化に用いる分割境界のビット数を分割データ毎のヘッダに記載する(S7544)。
一方、決定されたデータ分割方法が8分木分割方法である場合(S7542でYes)、三次元データ符号化装置は、全ての分割データの個別位置シフト量を、8分木分割における深さ(depth)情報(例えば深さビット)を用いて量子化する(S7545)。また、三次元データ符号化装置は、量子化に用いる分割境界のビット数を複数の分割データに共通のメタデータに記載する(S7546)。
以上のように、本実施の形態に係る三次元データ符号化装置は、図136に示す処理を行う。三次元データ符号化装置は、三次元空間における複数の三次元位置を示す点群データを符号化する。三次元データ符号化装置は、三次元空間を複数のサブ空間(例えば分割領域)に分割することで、点群データを複数のサブ点群データ(例えばスライス)に分割する(S7551)。次に、三次元データ符号化装置は、所定の移動量(例えば分割領域位置シフト量)に応じて移動させる(S7552)。次に、三次元データ符号化装置は、移動後の複数のサブ点群データを符号化することでビットストリームを生成する(S7553)。また、ビットストリームは、複数のサブ点群データに共通であって、複数のサブ点群データの移動量に関する第1情報(例えばorigin_shift_bit)を含む第1制御情報(例えばGPS)と、サブ点群データ毎の複数の第2制御情報(位置情報ヘッダ)とを含む。
これによれば、三次元データ符号化装置は、第1情報により移動量を三次元データ復号装置に伝えることができる。また、第1情報を複数のサブ点群データで共通化することで符号量を削減できる。
例えば、移動量は、サブ点群データとサブ点群データが含まれるサブ空間とのいずれかに基づく移動量である。
例えば、移動量は、上位ビットと下位ビットとを含む。第1情報は、複数のサブ点群データに共通の情報であって、下位ビットのビット数を示す。複数の第2制御情報の各々は、当該第2制御情報に対応するサブ点群データに対する移動量に含まれる上位ビットの値を示す第2情報(例えばBB_origin_x、BB_origin_y、BB_origin_z)を含む。
これによれば、三次元データ符号化装置は、第1情報及び第2情報により移動量を三次元データ復号装置に伝えることができる。また、第1情報を複数のサブ点群データで共通化することで符号量を削減できる。
例えば、第1制御情報は、下位ビットのビット数を示す情報が第1制御情報に含まれるか、複数の第2制御情報の各々に含まれるかを示すフラグ(例えばorigin_shift_bit_present_flag)を含む。フラグにより下位ビットのビット数を示す情報が第1制御情報に含まれることが示される場合、第1制御情報は第1情報を含み、複数の第2制御情報の各々は下位ビットのビット数を示す情報を含まない。フラグにより下位ビットのビット数を示す情報が複数の第2制御情報の各々に含まれることが示される場合、複数の第2制御情報の各々は、当該第2制御情報に対応するサブ点群データに対する移動量に含まれる下位ビットのビット数を示す第3情報(例えばorigin_shift_bit)を含み、第1制御情報は第1情報を含まない。
これによれば、三次元データ符号化装置は、第1情報を複数のサブ点群データで共通化するか否かを切り替えることができるので適切な符号化を行える。
例えば、下位ビットに含まれる全てのビットは値ゼロであり、ビットストリームは、下位ビットの値を示す情報を含まない。
例えば、三次元データ符号化装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態に係る三次元データ復号装置は、図137に示す処理を行う。三次元データ復号装置は、三次元空間を複数のサブ空間(例えば分割領域)に分割することで複数の三次元位置を示す点群データが分割された複数のサブ点群データ(例えばスライス)が、所定の移動量(例えば分割領域位置シフト量)に応じて移動された移動後の複数のサブ点群データをビットストリームから復号する(S7561)。また、三次元データ復号装置は、ビットストリームに含まれる、複数のサブ点群データに共通の第1制御情報(例えばGPS)から、複数のサブ点群データの移動量に関する第1情報(例えばorigin_shift_bit)を取得する(S7562)。
次に、三次元データ復号装置は、第1情報を用いて複数のサブ点群データの複数の移動量を算出する(S7563)。次に、三次元復号装置は、移動後の複数のサブ点群データの各々を、当該サブ点群データに対応する移動量に応じて移動させることで、複数のサブ点群データを復元する(S7564)。
これによれば、三次元データ復号装置は、第1情報により移動量を算出できる。また、第1情報が複数のサブ点群データで共通化されていることで符号量が削減される。
例えば、移動量は、サブ点群データとサブ点群データが含まれるサブ空間とのいずれかに基づく移動量である。
例えば、移動量は、上位ビットと下位ビットとを含み、第1情報は、前記複数のサブ点群データに共通の情報であって、前記下位ビットのビット数を示す。三次元データ復号装置は、ビットストリームに含まれる、ビットストリームに含まれるサブ点群データ毎の複数の第2制御情報(例えば位置情報ヘッダ)から、複数のサブ点群データの各々の移動量の上位ビットの値を示す複数の第2情報(例えばBB_origin_x、BB_origin_y、BB_origin_z)を取得する。三次元データ復号装置は、移動量の算出では、第1情報及び複数の第2情報を用いて複数のサブ点群データの複数の移動量を算出する。具体的には、三次元データ復号装置は、処理対象のサブ点群データの移動量を、第1情報と、処理対象のサブ点群データの第2情報とを用いて算出する。
これによれば、三次元データ復号装置は、第1情報及び第2情報により移動量を算出できる。また、第1情報が複数のサブ点群データで共通化されていることで符号量が削減される。
例えば、第1制御情報は、下位ビットのビット数を示す情報が第1制御情報に含まれるか、複数の第2制御情報の各々に含まれるかを示すフラグ(例えばorigin_shift_bit_present_flag)を含む。フラグにより下位ビットのビット数を示す情報が第1制御情報に含まれることが示される場合、三次元データ復号装置は、第1制御情報から第1情報を取得し、第1情報及び複数の第2情報を用いて複数のサブ点群データの複数の移動量を算出する。一方、フラグにより下位ビットのビット数を示す情報が複数の第2制御情報の各々に含まれることが示される場合、三次元データ復号装置は、複数の第2制御情報の各々から、複数のサブ点群データの各々の移動量の下位ビットのビット数を示す複数の第3情報を取得し、複数の第3情報及び複数の第2情報を用いて複数のサブ点群データの複数の移動量を算出する。具体的には、三次元データ復号装置は、処理対象のサブ点群データの移動量を、処理対象のサブ点群データの第2制御情報から取得した第3情報及び第2情報を用いて算出する。
これによれば、三次元データ復号装置は、第1情報に基づき、複数のサブ点群データで共通化するか否かを切り替えることができるので適切な復号を行える。
例えば、三次元データ復号装置は、移動量の算出(S7563)では、下位ビットに含まれる全てのビットを値ゼロに設定する。
例えば、三次元データ復号装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
以上、本開示の実施の形態に係る三次元データ符号化装置及び三次元データ復号装置等について説明したが、本開示は、この実施の形態に限定されるものではない。
また、上記実施の形態に係る三次元データ符号化装置及び三次元データ復号装置等に含まれる各処理部は典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されてもよいし、一部又は全てを含むように1チップ化されてもよい。
また、集積回路化はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)、又はLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
また、上記各実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。
また、本開示は、三次元データ符号化装置及び三次元データ復号装置等により実行される三次元データ符号化方法又は三次元データ復号方法等として実現されてもよい。
また、ブロック図における機能ブロックの分割は一例であり、複数の機能ブロックを一つの機能ブロックとして実現したり、一つの機能ブロックを複数に分割したり、一部の機能を他の機能ブロックに移してもよい。また、類似する機能を有する複数の機能ブロックの機能を単一のハードウェア又はソフトウェアが並列又は時分割に処理してもよい。
また、フローチャートにおける各ステップが実行される順序は、本開示を具体的に説明するために例示するためのものであり、上記以外の順序であってもよい。また、上記ステップの一部が、他のステップと同時(並列)に実行されてもよい。
以上、一つまたは複数の態様に係る三次元データ符号化装置及び三次元データ復号装置等について、実施の形態に基づいて説明したが、本開示は、この実施の形態に限定されるものではない。本開示の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、一つまたは複数の態様の範囲内に含まれてもよい。