本開示の一態様に係る三次元データ符号化方法は、第1点群データと第2点群データとが結合された第3点群データであって、前記第3点群データに含まれる複数の三次元点のそれぞれの位置情報と、前記複数の三次元点のそれぞれが前記第1点群データと前記第2点群データとのいずれに属するかを示す識別情報とを含む第3点群データを取得し、取得された前記第3点群データを符号化することで符号化データを生成し、前記生成では、前記複数の三次元点のそれぞれについて、当該三次元点の識別情報を当該三次元点の属性情報として符号化する。
これによれば、当該三次元データ符号化方法は、複数の点群データをまとめて符号化することにより符号化効率を向上することができる。
例えば、前記生成では、前記複数の三次元点のうちの第1三次元点の周囲の第2三次元点の属性情報を用いて、前記第1三次元点の属性情報を符号化してもよい。
例えば、前記第1三次元点の属性情報は、前記第1三次元点が前記第1点群データに属することを示す第1識別情報を含み、前記第2三次元点の属性情報は、前記第2三次元点が前記第2点群データに属することを示す第2識別情報を含んでもよい。
例えば、前記生成では、前記第1三次元点の属性情報の予測値を前記第2三次元点の属性情報を用いて算出し、前記第1三次元点の属性情報と、前記予測値との差分である予測残差を算出し、前記予測残差を含む符号化データを生成してもよい。
例えば、前記取得では、前記第1点群データと前記第2点群データとを結合することで前記第3点群データを生成することで、前記第3点群データを取得してもよい。
例えば、前記符号化データは、前記識別情報を、前記識別情報と異なる他の属性情報と同じデータ形式で含んでもよい。
本開示の一態様に係る三次元データ復号方法は、符号化データを取得し、前記符号化データを復号することで、第1点群データと第2点群データとが結合された第3点群データに含まれる複数の三次元点のそれぞれの位置情報および属性情報とを取得し、前記属性情報は、前記属性情報に対応する三次元点が前記第1点群データと前記第2点群データとのいずれに属するかを示す識別情報を含む。
これによれば、当該三次元データ復号方法は、複数の点群データをまとめて符号化することにより符号化効率を向上した符号化データを復号できる。
例えば、前記取得では、前記複数の三次元点のうちの第1三次元点の周囲の第2三次元点の属性情報を用いて、前記第1三次元点の属性情報を復号してもよい。
例えば、前記第1三次元点の属性情報は、前記第1三次元点が前記第1点群データに属することを示す第1識別情報を含み、前記第2三次元点の属性情報は、前記第2三次元点が前記第2点群データに属することを示す第2識別情報を含んでもよい。
例えば、前記符号化データは、予測残差を含み、前記符号化データの復号では、前記第1三次元点の属性情報の予測値を前記第2三次元点の属性情報を用いて算出し、前記予測値と前記予測残差とを加算することで、前記第1三次元点の属性情報を算出してもよい。
例えば、さらに、前記識別情報を用いて、前記第3点群データを、前記第1点群データと前記第2点群データとに分割してもよい。
例えば、前記符号化データは、前記識別情報を、前記識別情報と異なる他の属性情報と同じデータ形式で含んでもよい。
また、本開示の一態様に係る三次元データ符号化装置は、プロセッサと、メモリとを備え、前記プロセッサは、前記メモリを用いて、第1点群データと第2点群データとが結合された第3点群データであって、前記第3点群データに含まれる複数の三次元点のそれぞれの位置情報と、前記複数の三次元点のそれぞれが前記第1点群データと前記第2点群データとのいずれに属するかを示す識別情報とを含む第3点群データを取得し、取得された前記第3点群データを符号化することで符号化データを生成し、前記生成では、前記複数の三次元点のそれぞれについて、当該三次元点の識別情報を当該三次元点の属性情報として符号化する。
これによれば、当該三次元データ符号化装置は、複数の点群データをまとめて符号化することにより符号化効率を向上することができる。
本開示の一態様に係る三次元データ復号装置は、プロセッサと、メモリとを備え、前記プロセッサは、前記メモリを用いて、符号化データを取得し、前記符号化データを復号することで、第1点群データと第2点群データとが結合された第3点群データに含まれる複数の三次元点のそれぞれの位置情報および属性情報とを取得し、前記属性情報は、前記属性情報に対応する三次元点が前記第1点群データと前記第2点群データとのいずれに属するかを示す識別情報を含む。
これによれば、当該三次元データ復号装置は、複数の点群データをまとめて符号化することにより符号化効率を向上した符号化データを復号できる。
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能な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)を規定することが望ましい。
(実施の形態3)
本実施の形態では、上述した第1の符号化部4630、又は第2の符号化部4650で生成される符号化データ(位置情報(Geometry)、属性情報(Attribute)、付加情報(Metadata))の種別、及び付加情報(メタデータ)の生成方法、及び多重化部における多重処理について説明する。なお、付加情報(メタデータ)は、パラメータセット、又は制御情報と表記することもある。
本実施の形態では、図4で説明した動的オブジェクト(時間的に変化する三次元点群データ)を例に説明するが、静的オブジェクト(任意の時刻の三次元点群データ)の場合でも同様の方法を用いてもよい。
図16は、本実施の形態に係る三次元データ符号化装置に含まれる符号化部4801及び多重化部4802の構成を示す図である。符号化部4801は、例えば、上述した第1の符号化部4630又は第2の符号化部4650に対応する。多重化部4802は、上述した多重化部4634又は46456に対応する。
符号化部4801は、複数のPCC(Point Cloud Compression)フレームの点群データを符号化し、複数の位置情報、属性情報及び付加情報の符号化データ(Multiple Compressed Data)を生成する。
多重化部4802は、複数のデータ種別(位置情報、属性情報及び付加情報)のデータをNALユニット化することで、データを復号装置におけるデータアクセスを考慮したデータ構成に変換する。
図17は、符号化部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)で表す。また、図17では、属性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の符号化方法では、符号化属性データは符号化位置データに依存する。
また、図17では2種類の属性情報(属性Xと属性Y)が存在する場合の例を示している。2種類の属性情報がある場合は、例えば、2つの符号化部により、それぞれのデータ及びメタデータが生成される。また、例えば、属性情報の種類毎に属性シーケンスが定義され、属性情報の種類毎に属性SPSが生成される。
なお、図17では、位置情報が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ユニットへの格納方法を説明する。
例えば、符号化データの種類毎にデータフォーマットが規定される。図18は、符号化データ及びNALユニットの例を示す図である。
例えば、図18に示すように符号化データは、ヘッダとペイロードとを含む。なお、符号化データは、符号化データ、ヘッダ又はペイロードの長さ(データ量)を示す長さ情報を含んでもよい。また、符号化データは、ヘッダを含まなくてもよい。
ヘッダは、例えば、データを特定するための識別情報を含む。この識別情報は、例えば、データ種別又はフレーム番号を示す。
ヘッダは、例えば、参照関係を示す識別情報を含む。この識別情報は、例えば、データ間に依存関係がある場合にヘッダに格納され、参照元から参照先を参照するための情報である。例えば、参照先のヘッダには、当該データを特定するための識別情報が含まれる。参照元のヘッダには、参照先を示す識別情報が含まれる。
なお、他の情報から参照先又は参照元を識別可能又は導出可能である場合は、データを特定するための識別情報、又は参照関係を示す識別情報を省略してもよい。
多重化部4802は、符号化データを、NALユニットのペイロードに格納する。NALユニットヘッダには、符号化データの識別情報であるpcc_nal_unit_typeが含まれる。図19は、pcc_nal_unit_typeのセマンティクスの例を示す図である。
図19に示すように、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は、参照先のデータを先に送出する。
図20は、NALユニットの送出順の例を示す図である。図20は、位置情報優先と、パラメータ優先と、データ統合との3つの例を示す。
位置情報優先の送出順序は、位置情報に関する情報と、属性情報に関する情報との各々をまとめて送出する例である。この送出順序の場合、位置情報に関する情報の送出が属性情報に関する情報の送出よりも早く完了する。
例えば、この送出順序を用いることで、属性情報を復号しない復号装置は、属性情報の復号を無視することで、処理しない時間を設けることができる可能性がある。また、例えば、位置情報を早く復号したい復号装置の場合、位置情報の符号化データを早く得ることにより、より早く位置情報を復号することができる可能性がある。
なお、図20では、属性XSPSと属性YSPSを統合し、属性SPSと記載しているが、属性XSPSと属性YSPSとを個別に配置してもよい。
パラメータセット優先の送出順序では、パラメータセットが先に送出され、データが後で送出される。
以上のようにNALユニット送出順序の制約に従えば、多重化部4802は、NALユニットをどのような順序で送出してもよい。例えば、順序識別情報が定義され、多重化部4802は、複数パターンの順序でNALユニットを送出する機能を有してもよい。例えばストリームPSにNALユニットの順序識別情報が格納される。
三次元データ復号装置は、順序識別情報に基づき復号を行ってもよい。三次元データ復号装置から三次元データ符号化装置に所望の送出順序が指示され、三次元データ符号化装置(多重化部4802)は、指示された送出順序に従って送出順序を制御してもよい。
なお、多重化部4802は、データ統合の送出順序のように、送出順序の制約に従う範囲であれば、複数の機能をマージした符号化データを生成してもよい。例えば、図20に示すように、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には、タイル又はスライスに係るデータ又はパラメータを格納するデータであることを示す識別子が定義される。
(実施の形態4)
HEVC符号化では復号装置における並列処理を可能とするために、スライス又はタイルといったデータ分割のツールがあるが、PCC(Point Cloud Compression)符号化ではまだない。
PCCでは、並列処理、圧縮効率、及び圧縮アルゴリズムによって、様々なデータ分割方法が考えられる。ここでは、スライス及びタイルの定義、データ構造及び送受信方法について説明する。
図21は、本実施の形態に係る三次元データ符号化装置に含まれる第1の符号化部4910の構成を示すブロック図である。第1の符号化部4910は、点群データを第1の符号化方法(GPCC(Geometry based PCC))で符号化することで符号化データ(符号化ストリーム)を生成する。この第1の符号化部4910は、分割部4911と、複数の位置情報符号化部4912と、複数の属性情報符号化部4913と、付加情報符号化部4914と、多重化部4915とを含む。
分割部4911は、点群データを分割することで複数の分割データを生成する。具体的には、分割部4911は、点群データの空間を複数のサブ空間に分割することで複数の分割データを生成する。ここでサブ空間とは、タイル及びスライスの一方、又はタイル及びスライスの組み合わせである。より具体的には、点群データは、位置情報、属性情報、及び付加情報を含む。分割部4911は、位置情報を複数の分割位置情報に分割し、属性情報を複数の分割属性情報に分割する。また、分割部4911は、分割に関する付加情報を生成する。
複数の位置情報符号化部4912は、複数の分割位置情報を符号化することで複数の符号化位置情報を生成する。例えば、複数の位置情報符号化部4912は、複数の分割位置情報を並列処理する。
複数の属性情報符号化部4913は、複数の分割属性情報を符号化することで複数の符号化属性情報を生成する。例えば、複数の属性情報符号化部4913は、複数の分割属性情報を並列処理する。
付加情報符号化部4914は、点群データに含まれる付加情報と、分割部4911で分割時に生成された、データ分割に関する付加情報とを符号化することで符号化付加情報を生成する。
多重化部4915は、複数の符号化位置情報、複数の符号化属性情報及び符号化付加情報を多重化することで符号化データ(符号化ストリーム)を生成し、生成した符号化データを送出する。また、符号化付加情報は復号時に使用される。
なお、図21では、位置情報符号化部4912及び属性情報符号化部4913の数がそれぞれ2つの例を示しているが、位置情報符号化部4912及び属性情報符号化部4913の数は、それぞれ1つであってもよいし、3つ以上であってもよい。また、複数の分割データは、CPU内の複数コアのように同一チップ内で並列処理されてもよいし、複数のチップのコアで並列処理されてもよいし、複数チップの複数コアで並列処理されてもよい。
図22は、第1の復号部4920の構成を示すブロック図である。第1の復号部4920は、点群データが第1の符号化方法(GPCC)で符号化されることで生成された符号化データ(符号化ストリーム)を復号することで点群データを復元する。この第1の復号部4920は、逆多重化部4921と、複数の位置情報復号部4922と、複数の属性情報復号部4923と、付加情報復号部4924と、結合部4925とを含む。
逆多重化部4921は、符号化データ(符号化ストリーム)を逆多重化することで複数の符号化位置情報、複数の符号化属性情報及び符号化付加情報を生成する。
複数の位置情報復号部4922は、複数の符号化位置情報を復号することで複数の分割位置情報を生成する。例えば、複数の位置情報復号部4922は、複数の符号化位置情報を並列処理する。
複数の属性情報復号部4923は、複数の符号化属性情報を復号することで複数の分割属性情報を生成する。例えば、複数の属性情報復号部4923は、複数の符号化属性情報を並列処理する。
複数の付加情報復号部4924は、符号化付加情報を復号することで付加情報を生成する。
結合部4925は、付加情報を用いて複数の分割位置情報を結合することで位置情報を生成する。結合部4925は、付加情報を用いて複数の分割属性情報を結合することで属性情報を生成する。
なお、図22では、位置情報復号部4922及び属性情報復号部4923の数がそれぞれ2つの例を示しているが、位置情報復号部4922及び属性情報復号部4923の数は、それぞれ1つであってもよし、3つ以上であってもよい。また、複数の分割データは、CPU内の複数コアのように同一チップ内で並列処理されてもよいし、複数のチップのコアで並列処理されてもよい、複数チップの複数コアで並列処理されてもよい。
次に、分割部4911の構成を説明する。図23は、分割部4911のブロック図である。分割部4911は、スライス分割部4931(Slice Divider)と、位置情報タイル分割部4932(Geometry Tile Divider)と、属性情報タイル分割部4933(Attribute Tile Divider)とを含む。
スライス分割部4931は、位置情報(Position(Geometry))をスライスに分割することで複数のスライス位置情報を生成する。また、スライス分割部4931は、属性情報(Attribute)をスライスに分割することで複数のスライス属性情報を生成する。また、スライス分割部4931は、スライス分割に係る情報、及びスライス分割において生成された情報を含むスライス付加情報(Slice MetaData)を出力する。
位置情報タイル分割部4932は、複数のスライス位置情報をタイルに分割することで複数の分割位置情報(複数のタイル位置情報)を生成する。また、位置情報タイル分割部4932は、位置情報のタイル分割に係る情報、及び位置情報のタイル分割において生成された情報を含む位置タイル付加情報(Geometry Tile MetaData)を出力する。
属性情報タイル分割部4933は、複数のスライス属性情報をタイルに分割することで複数の分割属性情報(複数のタイル属性情報)を生成する。また、属性情報タイル分割部4933は、属性情報のタイル分割に係る情報、及び属性情報のタイル分割において生成された情報を含む属性タイル付加情報(Attribute Tile MetaData)を出力する。
なお、分割されるスライス又はタイルの数は1以上である。つまり、スライス又はタイルの分割を行わなくてもよい。
また、ここでは、スライス分割後にタイル分割が行われる例を示したが、タイル分割後にスライス分割が行われてもよい。また、スライス及びタイルに加え新たな分割種別を定義し、3つ以上の分割種別で分割が行われてもよい。
以下、点群データの分割方法について説明する。図24は、スライス及びタイル分割の例を示す図である。
まず、スライス分割の方法について説明する。分割部4911は、三次元点群データを、スライス単位で、任意の点群に分割する。分割部4911は、スライス分割において、点を構成する位置情報と属性情報とを分割せず、位置情報と属性情報とを一括で分割する。すなわち、分割部4911は、任意の点における位置情報と属性情報とが同じスライスに属するようにスライス分割を行う。なお、これらに従えば、分割数、及び分割方法はどのような方法でもよい。また、分割の最小単位は点である。例えば、位置情報と属性情報との分割数は同一である。例えば、スライス分割後の位置情報に対応する三次元点と、属性情報に対応する三次元点とは同一のスライスに含まれる。
また、分割部4911は、スライス分割時に分割数及び分割方法に係る付加情報であるスライス付加情報を生成する。スライス付加情報は、位置情報と属性情報とで同一である。例えば、スライス付加情報は、分割後のバウンディングボックスの基準座標位置、大きさ、又は辺の長さを示す情報を含む。また、スライス付加情報は、分割数、及び分割タイプなどを示す情報を含む。
次に、タイル分割の方法について説明する。分割部4911は、スライス分割されたデータを、スライス位置情報(Gスライス)とスライス属性情報(Aスライス)とに分割し、スライス位置情報とスライス属性情報をそれぞれタイル単位に分割する。
なお、図24では8分木構造で分割する例を示しているが、分割数及び分割方法はどのような方法でもよい。
また、分割部4911は、位置情報と属性情報とを異なる分割方法で分割してもよいし、同一の分割方法で分割してもよい。また、分割部4911は、複数のスライスを異なる分割方法でタイルに分割してもよいし、同一の分割方法でタイルに分割してもよい。
また、分割部4911は、タイル分割時に分割数及び分割方法に係るタイル付加情報を生成する。タイル付加情報(位置タイル付加情報及び属性タイル付加情報)は、位置情報と属性情報とで独立している。例えば、タイル付加情報は、分割後のバウンディングボックスの基準座標位置、大きさ、又は辺の長さを示す情報を含む。また、タイル付加情報は、分割数、及び分割タイプなど示す情報を含む。
次に、点群データをスライス又はタイルに分割する方法の例を説明する。分割部4911は、スライス又はタイル分割の方法として、予め定められた方法を用いてもよいし、点群データに応じて使用する方法を適応的に切り替えてもよい。
スライス分割時には、分割部4911は、位置情報と属性情報とに対して一括で三次元空間を分割する。例えば、分割部4911は、オブジェクトの形状を判定し、オブジェクトの形状に応じて三次元空間をスライスに分割する。例えば、分割部4911は、木又は建物などのオブジェクトを抽出し、オブジェクト単位で分割を行う。例えば、分割部4911は、1又は複数のオブジェクトの全体が1つのスライスに含まれるようにスライス分割を行う。または、分割部4911は、一つのオブジェクトを複数のスライスに分割する。
この場合、符号化装置は、例えば、スライス毎に符号化方法を変えてもよい。例えば、符号化装置は、特定のオブジェクト、又はオブジェクトの特定の一部に対して、高品質な圧縮方法を用いてもよい。この場合、符号化装置は、スライス毎の符号化方法を示す情報を付加情報(メタデータ)に格納してもよい。
また、分割部4911は、地図情報又は位置情報に基づき、各スライスが予め定められた座標空間に対応するようにスライス分割を行ってもよい。
タイル分割時には、分割部4911は、位置情報と属性情報とを独立に分割する。例えば、分割部4911は、データ量又は処理量に応じてスライスをタイルに分割する。例えば、分割部4911は、スライスのデータ量(例えばスライスに含まれる三次元点の数)が予め定められた閾値より多いかを判定する。分割部4911は、スライスのデータ量が閾値より多い場合にはスライスをタイルに分割する。分割部4911は、スライスのデータ量が閾値より少ないときにはスライスをタイルに分割しない。
例えば、分割部4911は、復号装置での処理量又は処理時間が一定の範囲(予め定められた値以下)となるよう、スライスをタイルに分割する。これにより、復号装置におけるタイル当たりの処理量が一定となり、復号装置における分散処理が容易となる。
また、分割部4911は、位置情報と属性情報とで処理量が異なる場合、例えば、位置情報の処理量が属性情報の処理量より多い場合、位置情報の分割数を、属性情報の分割数より多くする。
また、例えば、コンテンツによって、復号装置で、位置情報を早く復号して表示し、属性情報を後でゆっくり復号して表示してもよい場合に、分割部4911は、位置情報の分割数を、属性情報の分割数より多くしてもよい。これにより、復号装置は、位置情報の並列数を多くできるので、位置情報の処理を属性情報の処理より高速化できる。
なお、復号装置は、スライス化又はタイル化されているデータを必ずしも並列処理する必要はなく、復号処理部の数又は能力に応じて、これらを並列処理するかどうかを判定してもよい。
以上のような方法で分割することにより、コンテンツ又はオブジェクトに応じた、適応的な符号化を実現できる。また、復号処理における並列処理を実現できる。これにより、点群符号化システム又は点群復号システムの柔軟性が向上する。
図25は、スライス及びタイルの分割のパターンの例を示す図である。図中のDUはデータ単位(DataUnit)であり、タイル又はスライスのデータを示す。また、各DUは、スライスインデックス(SliceIndex)とタイルインデックス(TileIndex)を含む。図中のDUの右上の数値がスライスインデックスを示し、DUの左下の数値がタイルインデックスを示す。
パターン1では、スライス分割において、GスライスとAスライスとで分割数及び分割方法は同じである。タイル分割において、Gスライスに対する分割数及び分割方法とAスライスに対する分割数及び分割方法とは異なる。また、複数のGスライス間では同一の分割数及び分割方法が用いられる。複数のAスライス間では同一の分割数及び分割方法が用いられる。
パターン2では、スライス分割において、GスライスとAスライスとで分割数及び分割方法は同じである。タイル分割において、Gスライスに対する分割数及び分割方法とAスライスに対する分割数及び分割方法とは異なる。また、複数のGスライス間で分割数及び分割方法が異なる。複数のAスライス間で分割数及び分割方法が異なる。
次に、分割データの符号化方法について説明する。三次元データ符号化装置(第1の符号化部4910)は、分割されたデータを、それぞれ符号化する。三次元データ符号化装置は、属性情報を符号化する際に、どの構成情報(位置情報、付加情報又は他の属性情報)に基づき符号化を行ったかを示す依存関係情報を付加情報として生成する。つまり、依存関係情報は、例えば、参照先(依存先)の構成情報を示す。この場合、三次元データ符号化装置は、属性情報の分割形状に対応する構成情報に基づき依存関係情報を生成する。なお、三次元データ符号化装置は、複数の分割形状に対応する構成情報に基づき依存関係情報を生成してもよい。
依存関係情報は三次元データ符号化装置で生成され、生成された依存関係情報が三次元データ復号装置に送出されてもよい。または、三次元データ復号装置が依存関係情報を生成し、三次元データ符号化装置は依存関係情報を送出しなくてもよい。また、三次元データ符号化装置が使用する依存関係を、予め定めておき、三次元データ符号化装置は、依存関係情報を送出しなくてもよい。
図26は、各データの依存関係の一例を示す図である。図中の矢印の先は依存先を示し、矢印の元は依存元を示している。三次元データ復号装置は、依存先から依存元の順でデータを復号する。また、図中に実線で示すデータは実際に送出されるデータであり、点線で示すデータは送出されないデータである。
また、同図において、Gは位置情報を示し、Aは属性情報を示す。Gs1は、スライス番号1の位置情報を示し、Gs2は、スライス番号2の位置情報を示す。Gs1t1は、スライス番号1かつタイル番号1の位置情報を示し、Gs1t2は、スライス番号1かつタイル番号2の位置情報を示し、Gs2t1は、スライス番号2かつタイル番号1の位置情報を示し、Gs2t2は、スライス番号2かつタイル番号2の位置情報を示す。同様に、As1は、スライス番号1の属性情報を示し、As2は、スライス番号2の属性情報を示す。As1t1は、スライス番号1かつタイル番号1の属性情報を示し、As1t2は、スライス番号1かつタイル番号2の属性情報を示し、As2t1は、スライス番号2かつタイル番号1の属性情報を示し、As2t2は、スライス番号2かつタイル番号2の属性情報を示す。
Msliceは、スライス付加情報を示し、MGtileは、位置タイル付加情報を示し、MAtileは、属性タイル付加情報を示す。Ds1t1は属性情報As1t1の依存関係情報を示し、Ds2t1は属性情報As2t1の依存関係情報を示す。
また、三次元データ符号化装置は、三次元データ復号装置においてデータを並び替える必要がないように、データを復号順に並び替えてもよい。なお、三次元データ復号装置においてデータを並び替えてもよいし、三次元データ符号化装置と三次元データ復号装置との両方でデータを並び替えてもよい。
図27は、データの復号順の例を示す図である。図27の例では、左のデータから順に復号が行われる。三次元データ復号装置は、依存関係にあるデータ間では、依存先のデータから先に復号する。例えば、三次元データ符号化装置は、この順序となるようにデータを予め並び替えて送出する。なお、依存先のデータが先になる順序であれば、どのような順序でもよい。また、三次元データ符号化装置は、付加情報及び依存関係情報をデータより先に送出してもよい。
図28は、三次元データ符号装置による処理の流れを示すフローチャートである。まず、三次元データ符号化装置は、上記のように複数のスライス又はタイルのデータを符号化する(S4901)。次に、三次元データ符号化装置は、図27に示すように、依存先のデータが先になるようにデータを並び替える(S4902)。次に、三次元データ符号化装置は、並び替え後のデータを多重化(NALユニット化)する(S4903)。
次に、第1の復号部4920に含まれる結合部4925の構成を説明する。図29は、結合部4925の構成を示すブロック図である。結合部4925は、位置情報タイル結合部4941(Geometry Tile Combiner)と、属性情報タイル結合部4942(Attribute Tile Combiner)と、スライス結合部(Slice Combiner)とを含む。
位置情報タイル結合部4941は、位置タイル付加情報を用いて複数の分割位置情報を結合することで複数のスライス位置情報を生成する。属性情報タイル結合部4942は、属性タイル付加情報を用いて複数の分割属性情報を結合することで複数のスライス属性情報を生成する。
スライス結合部4943は、スライス付加情報を用いて複数のスライス位置情報を結合することで位置情報を生成する。また、スライス結合部4943は、スライス付加情報を用いて複数のスライス属性情報を結合することで属性情報を生成する。
なお、分割されるスライス又はタイルの数は1以上である。つまり、スライス又はタイルの分割が行われていなくてもよい。
また、ここでは、スライス分割後にタイル分割が行われる例を示したが、タイル分割後にスライス分割が行われてもよい。また、スライス及びタイルに加え新たな分割種別を定義し、3つ以上の分割種別で分割が行われてもよい。
次に、スライス分割又はタイル分割された符号化データの構成、及び符号化データのNALユニットへの格納方法(多重化方法)を説明する。図30は、符号化データの構成及び符号化データのNALユニットへの格納方法を示す図である。
符号化データ(分割位置情報及び分割属性情報)は、NALユニットのペイロードに格納される。
符号化データは、ヘッダとペイロードとを含む。ヘッダは、ペイロードに含まれるデータを特定するための識別情報を含む。この識別情報は、例えば、スライス分割或いはタイル分割の種別(slice_type、tile_type)、スライス或いはタイルを特定するためのインデックス情報(slice_idx、tile_idx)、データ(スライス或いはタイル)の位置情報、又はデータのアドレス(address)などを含む。スライスを特定するためのインデックス情報は、スライスインデックス(SliceIndex)とも記す。タイルを特定するためのインデックス情報は、タイルインデックス(TileIndex)とも記す。また、分割の種別とは、例えば、上述したようなオブジェクト形状に基づく手法、地図情報或いは位置情報に基づく手法、又は、データ量或いは処理量に基づく手法等である。
なお、上記の情報の全て又は一部は、分割位置情報のヘッダ及び分割属性情報のヘッダの一方に格納され、他方に格納されてなくてもよい。例えば、位置情報と属性情報とで同一の分割方法が用いられる場合には、位置情報と属性情報とで分割の種別(slice_type、tile_type)及びインデックス情報(slice_idx、tile_idx)は同一である。よって、位置情報と属性情報の一方のヘッダにこれらの情報が含まれてもよい。例えば、位置情報に属性情報が依存する場合には、位置情報が先に処理される。よって、位置情報のヘッダにこれらの情報が含まれ、属性情報のヘッダにはこれらの情報が含まれなくてもよい。この場合、三次元データ復号装置は、例えば、依存先の位置情報のスライス又はタイルと同一のスライス又はタイルに依存元の属性情報が属すると判断する。
また、スライス分割又はタイル分割に係る付加情報(スライス付加情報、位置タイル付加情報又は属性タイル付加情報)、及び依存関係を示す依存関係情報等は、既存のパラメータセット(GPS、APS、位置SPS又は属性SPSなど)に格納されて送出されてもよい。分割方法がフレーム毎に変化する場合は、フレーム毎のパラメータセット(GPS又はAPS等)に分割方法を示す情報が格納されてもよい。シーケンス内で分割方法が変化しない場合は、シーケンス毎のパラメータセット(位置SPS又は属性SPS)に分割方法を示す情報が格納されてもよい。さらに、位置情報と属性情報とで同じ分割方法が用いられる場合は、PCCストリームのパラメータセット(ストリームPS)に分割方法を示す情報が格納されてもよい。
また、上記の情報は、上記のいずれかのパラメータセットに格納されてもよいし、複数のパラメータセットに格納されてもよい。また、タイル分割又はスライス分割用のパラメータセットを定義し、当該パラメータセットに上記の情報を格納してもよい。また、これらの情報は、符号化データのヘッダに格納されてもよい。
また、符号化データのヘッダは、依存関係を示す識別情報を含む。つまり、当該ヘッダは、データ間に依存関係がある場合は、依存元から依存先を参照するための識別情報を含む。例えば、依存先のデータのヘッダには、当該データを特定するための識別情報が含まれる。依存元のデータのヘッダには、依存先を示す識別情報が含まれる。なお、データを特定するための識別情報、スライス分割又はタイル分割に係る付加情報、及び依存関係を示す識別情報を、他の情報から識別可能又は導出可能である場合は、これらの情報を省略してもよい。
次に、本実施の形態に係る点群データの符号化処理及び復号処理の流れについて説明する。図31は、本実施の形態に係る点群データの符号化処理のフローチャートである。
まず、三次元データ符号化装置は、使用する分割方法を決定する(S4911)。この分割方法は、スライス分割を行うか否か、タイル分割を行うか否かを含む。また、分割方法は、スライス分割又はタイル分割を行う場合の分割数、及び、分割の種別等を含んでもよい。分割の種別とは、上述したようなオブジェクト形状に基づく手法、地図情報或いは位置情報に基づく手法、又は、データ量或いは処理量に基づく手法等である。なお、分割方法は、予め定められていてもよい。
スライス分割が行われる場合(S4912でYes)、三次元データ符号化装置は、位置情報と属性情報とを一括で分割することで複数のスライス位置情報及び複数のスライス属性情報を生成する(S4913)。また、三次元データ符号化装置は、スライス分割に係るスライス付加情報を生成する。なお、三次元データ符号化装置は、位置情報と属性情報とを独立に分割してもよい。
タイル分割が行われる場合(S4914でYes)、三次元データ符号化装置は、複数のスライス位置情報及び複数のスライス属性情報(又は位置情報及び属性情報)を独立に分割することで複数の分割位置情報及び複数の分割属性情報を生成する(S4915)。また、三次元データ符号化装置は、タイル分割に係る位置タイル付加情報及び属性タイル付加情報を生成する。なお、三次元データ符号化装置は、スライス位置情報とスライス属性情報とを一括で分割してもよい。
次に、三次元データ符号化装置は、複数の分割位置情報及び複数の分割属性情報の各々を符号化することで、複数の符号化位置情報及び複数の符号化属性情報を生成する(S4916)。また、三次元データ符号化装置は、依存関係情報を生成する。
次に、三次元データ符号化装置は、複数の符号化位置情報、複数の符号化属性情報及び付加情報をNALユニット化(多重化)することで符号化データ(符号化ストリーム)を生成する(S4917)。また、三次元データ符号化装置は、生成した符号化データを送出する。
図32は、本実施の形態に係る点群データの復号処理のフローチャートである。まず、三次元データ復号装置は、符号化データ(符号化ストリーム)に含まれる、分割方法に係る付加情報(スライス付加情報、位置タイル付加情報及び属性タイル付加情報)を解析することで、分割方法を判定する(S4921)。この分割方法は、スライス分割を行うか否か、タイル分割を行うか否かを含む。また、分割方法は、スライス分割又はタイル分割を行う場合の分割数、及び、分割の種別等を含んでもよい。
次に、三次元データ復号装置は、符号化データに含まれる複数の符号化位置情報及び複数の符号化属性情報を、符号化データに含まれる依存関係情報を用いて復号することで分割位置情報及び分割属性情報を生成する(S4922)。
付加情報によりタイル分割が行われていることが示される場合(S4923でYes)、三次元データ復号装置は、位置タイル付加情報及び属性タイル付加情報に基づき、複数の分割位置情報と、複数の分割属性情報とを、それぞれの方法で結合することで、複数のスライス位置情報及び複数のスライス属性情報を生成する(S4924)。なお、三次元データ復号装置は、複数の分割位置情報と、複数の分割属性情報とを同一の方法で結合してもよい。
付加情報によりスライス分割が行われていることが示される場合(S4925でYes)、三次元データ復号装置は、スライス付加情報に基づき、複数のスライス位置情報及び複数のスライス属性情報(複数の分割位置情報及び複数の分割属性情報)を同一の方法で結合することで位置情報及び属性情報を生成する(S4926)。なお、三次元データ復号装置は、複数のスライス位置情報と複数のスライス属性情報とを、それぞれ異なる方法で結合してもよい。
以上のように、本実施の形態に係る三次元データ符号化装置は、図33に示す処理を行う。まず、三次元データ符号化装置は、複数の三次元点が含まれる対象空間が分割された複数のサブ空間(例えばスライス)に含まれ、各々が1以上の三次元点を含む複数の分割データ(例えばタイル)に分割する。ここで、分割データは、サブ空間に含まれ、1以上の三次元点を含む1以上のデータ集合体である。また、分割データは空間でもあり、三次元点を含まない空間を含んでいてもよい。また、1つのサブ空間に複数の分割データが含まれてもよいし、1つのサブ空間に1つの分割データが含まれてもよい。なお、対象空間に複数のサブ空間が設定されてもよいし、対象空間に1つのサブ空間が設定されてもよい。
次に、三次元データ符号化装置は、複数の分割データの各々を符号化することで、複数の分割データの各々に対応する複数の符号化データを生成する(S4931)。三次元データ符号化装置は、複数の符号化データと、複数の符号化データの各々に対する複数の制御情報(例えば図30に示すヘッダ)とを含むビットストリームを生成する(S4932)。複数の制御情報の各々には、当該制御情報に対応する符号化データに対応するサブ空間を示す第1識別子(例えばslice_idx)と、当該制御情報に対応する符号化データに対応する分割データを示す第2識別子(例えばtile_idx)とが格納される。
これによれば、三次元データ符号化装置で生成されたビットストリームを復号する三次元データ復号装置は、第1識別子及び第2識別子を用いて、複数の分割データのデータを結合して対象空間を容易に復元できる。よって、三次元データ復号装置における処理量を低減できる。
例えば、三次元データ符号化装置は、前記符号化では、複数の分割データの各々に含まれる三次元点の位置情報と属性情報とを符号化する。複数の符号化データの各々は、位置情報の符号化データと、属性情報の符号化データとを含む。複数の制御情報の各々は、位置情報の符号化データの制御情報と、属性情報の符号化データの制御情報とを含む。第1識別子及び第2識別子は、位置情報の符号化データの制御情報に格納される。
例えば、ビットストリームにおいて、複数の制御情報の各々は、当該制御情報に対応する符号化データの前に配置されている。
また、三次元データ符号化装置は、複数の三次元点が含まれる対象空間が1以上のサブ空間に設定され、前記サブ空間に1以上の三次元点を含む1以上の分割データが含まれ、前記分割データの各々を符号化することで、前記複数の分割データの各々に対応する複数の符号化データを生成し、前記複数の符号化データと、前記複数の符号化データの各々に対する複数の制御情報とを含むビットストリームを生成し、前記複数の制御情報の各々には、当該制御情報に対応する符号化データに対応するサブ空間を示す第1識別子と、当該制御情報に対応する符号化データに対応する分割データを示す第2識別子とが格納されてもよい。
例えば、三次元データ符号化装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態に係る三次元データ復号装置は、図34に示す処理を行う。まず、三次元データ復号装置は、複数の三次元点が含まれる対象空間が分割された複数のサブ空間(例えばスライス)に含まれ、各々が1以上の三次元点を含む複数の分割データ(例えばタイル)の各々が符号化されることで生成された複数の符号化データと、複数の符号化データの各々に対する複数の制御情報(例えば図30に示すヘッダ)とを含むビットストリームから、前記複数の制御情報に格納されている、当該制御情報に対応する符号化データに対応するサブ空間を示す第1識別子(例えばslice_idx)と、当該制御情報に対応する符号化データに対応する分割データを示す第2識別子(例えばtile_idx)とを取得する(S4941)。次に、三次元データ復号装置は、複数の符号化データを復号することで複数の分割データを復元する(S4942)。次に、三次元データ復号装置は、第1識別子及び第2識別子を用いて、複数の分割データを結合することで対象空間を復元する(S4943)。例えば、三次元データ符号化装置は、第2識別子を用いて複数の分割データを結合することで複数のサブ空間を復元し、第1識別子を用いて複数のサブ空間を結合することで対象空間(複数の三次元点)を復元する。なお、三次元データ復号装置は、第1識別子及び第2識別子の少なくとも一方を用いて、所望のサブ空間又は分割データの符号化データをビットストリームから取得し、取得した符号化データを選択的に復号、又は優先的に復号してもよい。
これによれば、三次元データ復号装置は、第1識別子及び第2識別子を用いて、複数の分割データのデータを結合して対象空間を容易に復元できる。よって、三次元データ復号装置における処理量を低減できる。
例えば、複数の符号化データの各々は、対応する分割データに含まれる三次元点の位置情報と属性情報とが符号化されることで生成され、位置情報の符号化データと、属性情報の符号化データとを含む。複数の制御情報の各々は、位置情報の符号化データの制御情報と、属性情報の符号化データの制御情報とを含む。第1識別子及び第2識別子は、位置情報の符号化データの制御情報に格納されている。
例えば、ビットストリームにおいて、制御情報は、対応する符号化データの前に配置されている。
例えば、三次元データ復号装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
(実施の形態5)
隣接依存を用いた位置情報符号化では、点群の密度が高いほど符号化効率が向上する可能性がある。本実施の形態では、三次元データ符号化装置は、連続するフレームの点群データを結合することで、連続するフレームの点群データをまとめて符号化する。このとき、三次元データ符号化装置は、結合後の点群データに含まれるリーフノードの各々が属するフレームを識別するための情報を加えた符号化データを生成する。
ここで、連続するフレームの点群データは類似する可能性が高い。よって、連続するフレームで、オキュパンシー符号の上位レベルが同一になる可能性が高い。つまり、連続するフレームをまとめて符号化することで、オキュパンシー符号の上位レベルを共用できる。
また、点群がどのフレームに属するかの区別は、フレームのインデックスを符号化することにより、リーフノードで行われる。
図35は、N個のPCC(Point Cloud Compression)フレームの点群データからツリー構造及びオキュパンシー符号(Occupancy Code)を生成するイメージを示す図である。同図において、矢印中の点は、それぞれのPCCフレームに属する点を示している。初めに、それぞれのPCCフレームに属する点には、フレームを特定するためのフレームインデックスが付与される。
次に、N個のフレームに属する点をツリー構造に変換し、オキュパンシー符号が生成される。具体的には、点ごとに、点がツリー構造におけるどのリーフノードに属するかが判定される。同図では、木構造(Tree Structure)はノードの集合を示している。上位のノードから順番に、点がどのノードに属するかが判定される。ノードごとの判定結果がオキュパンシー符号として符号化される。オキュパンシー符号はN個のフレームで共通である。
ノードには、異なるフレームインデックスが付与された、異なるフレームの点が混在する場合がある。なお、8分木(Octree)の分解能が小さい場合は、同一のフレームインデックスが付与された同一フレームの点が混在することもある。
最下層のノード(リーフノード)には、複数のフレームに属する点が混在(重複)することがある。
ツリー構造及びオキュパンシー符号において、上位のレベルのツリー構造及びオキュパンシー符号は、全てのフレームにおいて共通成分である可能性があり、下位のレベルのツリー構造及びオキュパンシー符号はフレーム毎の個別成分、又は共通成分と個別成分とが混在する可能性がある。
例えば、リーフノードなどの最下層のノードには、フレームインデックスを持つ0以上の点が生成され、点の数を示す情報、及び各点に対するフレームインデックスの情報が生成される。これらの情報は、フレームにおいて個別の情報であるともいえる。
図36は、フレーム結合の例を示す図である。図36の(a)に示すように、複数フレームをまとめてツリー構造を生成することにより、同一のノードに含まれるフレームの点の密度が増える。また、ツリー構造を共有することによりオキュパンシー符号のデータ量を削減できる。これらにより、符号化率を向上できる可能性がある。
また、図36の(b)に示すように、ツリー構造におけるオキュパンシー符号の個別成分がより密になることにより、算術符号化の効果が高まるので、符号化率を向上できる可能性がある。
以降、時間的に異なる複数のPCCフレームの結合を例に説明するが、複数フレームでない場合、つまりフレームを結合しない場合(N=1)にも適用可能である。また、結合する複数の点群データは、複数フレーム、つまり、同一対象物の時刻の異なる点群データに限らない。つまり、以下の手法は、空間的、又は時空間的に異なる複数の点群データの結合にも適用可能である。また、以下の手法は、コンテンツの異なる点群データ又は点群ファイルの結合にも適用可能である。
図37は、時間的に異なる複数のPCCフレームの結合の例を示す図である。図37は、自動車が移動しながら、LiDARなどのセンサで点群データを取得する例を示す。点線は、フレーム毎のセンサの取得範囲、すなわち点群データの領域を示している。センサの取得範囲が大きい場合は、点群データの範囲も大きくなる。
点群データを結合して符号化する手法は、以下のような点群データに対して有効である。例えば、図37に示す例では、自動車は移動しており、フレームは自動車の周辺の360°のスキャンにより識別される。つまり、次のフレームであるフレーム2は、車両がX方向への移動した後の別の360°のスキャンに対応する。
この場合、フレーム1とフレーム2とには、重複する領域が存在するため同一の点群データが含まれる可能性がある。よって、フレーム1とフレーム2とを結合して符号化することで符号化効率を向上できる可能性がある。なお、より多くのフレームを結合することも考えられる。ただし、結合するフレーム数を増やすと、リーフノードに付加されるフレームインデックスの符号化に必要なビット数が増加する。
また、異なる位置のセンサによって点群データが取得されてもよい。それにより、それぞれの位置から取得されたそれぞれの点群データがそれぞれフレームとして用いらてもよい。つまり、複数のフレームは、単一のセンサで取得された点群データであってもよいし、複数のセンサで取得された点群データであってもよい。また、複数のフレーム間において、一部又は全ての対象物が同一であってもよいし、異なってもよい。
次に、本実施の形態に係る三次元データ符号化処理の流れを説明する。図38は、三次元データ符号化処理のフローチャートである。三次元データ符号化装置は、結合を行うフレームの数である結合フレーム数Nに基づき、N個全てのフレームの点群データを読み込む。
まず、三次元データ符号化装置は、結合フレーム数Nを決定する(S5401)。例えば、この結合フレーム数Nはユーザにより指定される。
次に、三次元データ符号化装置は、点群データを取得する(S5402)。次に、三次元データ符号化装置は、取得した点群データのフレームインデックスを記録する(S5403)。
N個のフレームを処理済みでない場合(S5404でNo)、三次元データ符号化装置は、次の点群データを指定し(S5405)、指定された点群データに対してステップS5402以降の処理を行う。
一方、N個のフレームを処理済みである場合(S5404でYes)、三次元データ符号化装置は、N個のフレームを結合し、結合後のフレームを符号化する(S5406)。
図39は、符号化処理(S5406)のフローチャートである。まず、三次元データ符号化装置は、N個のフレームに共通の共通情報を生成する(S5411)。例えば、共通情報は、オキュパンシー符号、及び結合フレーム数Nを示す情報を含む。
次に、三次元データ符号化装置は、フレーム毎に個別の情報である個別情報を生成する(S5412)。例えば、個別情報は、リーフノードに含まれる点の数、及びリーフノードに含まれる点のフレームインデックスを含む。
次に、三次元データ符号化装置は、共通情報と個別情報とを結合し、結合後の情報を符号化することで符号化データを生成する(S5413)。次に、三次元データ符号化装置は、フレーム結合に係る付加情報(メタデータ)を生成し、生成した付加情報を符号化する(S5414)。
次に、本実施の形態に係る三次元データ復号処理の流れを説明する。図40は、三次元データ復号処理のフローチャートである。
まず、三次元データ復号装置は、ビットストリームから結合フレーム数Nを取得する(S5421)。次に、三次元データ符号化装置は、ビットストリームから符号化データを取得する(S5422)。次に、三次元データ復号装置は、符号化データを復号することで点群データとフレームインデックスと取得する(S5423)。最後に、三次元データ復号装置は、復号された点群データをフレームインデックスを用いて分割する(S5424)。
図41は、復号及び分割処理(S5423及びS5424)のフローチャートである。まず、三次元データ復号装置は、符号化データ(ビットストリーム)から共通情報及び個別情報を復号(取得)する(S5431)。
次に、三次元データ復号装置は、単一のフレームを復号するか複数のフレームを復号するかを決定する(S5432)。例えば、単一のフレームを復号するか複数のフレームを復号するかは外部から指定されてもよい。ここで、複数のフレームとは、結合されたフレームの全てのフレームであってもよいし、一部のフレームであってもよい。例えば、三次元データ復号装置は、アプリケーションが必要とする特定のフレームを復号すると決定し、必要としないフレームを復号しないと決定してもよい。または、リアルタイムな復号が要求される場合には、三次元データ復号装置は、結合された複数フレームのうち単一のフレームを復号すると決定してもよい。
単一のフレームを復号する場合(S5432でYes)、三次元データ復号装置は、復号した個別情報から指定された単一のフレームインデックスに対応する個別情報を抽出し、抽出した個別情報を復号することで、指定されたフレームインデックスに対応するフレームの点群データを復元する(S5433)。
一方、複数フレームを復号する場合(S5432でNo)、三次元データ復号装置は、指定された複数のフレーム(又は全てのフレーム)のフレームインデックスに対応する個別情報を抽出し、抽出した個別情報を復号することで、指定された複数フレームの点群データを復元する(S5434)。次に、三次元データ復号装置は、フレームインデックスに基づき、復号した点群データ(個別情報)を分割する(S5435)。つまり、三次元データ復号装置は、復号した点群データを複数フレームに分割する。
なお、三次元データ復号装置は、結合された全てのフレームのデータを一括で復号し、復号したデータを各フレームに分割してもよいし、結合された全てのフレームのうち、任意の一部のフレームを一括で復号し、復号したデータを各フレームに分割してもよい。また、三次元データ復号装置は、複数フレームからなる予め定められた単位フレームを単独で復号してもよい。
以下、本実施の形態に係る三次元データ符号化装置の構成を説明する。図42は、本実施の形態に係る三次元データ符号化装置に含まれる符号化部5410の構成を示すブロック図である。符号化部5410は、点群データ(ポイントクラウド)を符号化することで符号化データ(符号化ストリーム)を生成する。この符号化部5410は、分割部5411と、複数の位置情報符号化部5412と、複数の属性情報符号化部5413と、付加情報符号化部5414と、多重化部5415とを含む。
分割部5411は、複数フレームの点群データを分割することで複数フレームの複数の分割データを生成する。具体的には、分割部5411は、各フレームの点群データの空間を複数のサブ空間に分割することで複数の分割データを生成する。ここでサブ空間とは、タイル及びスライスの一方、又はタイル及びスライスの組み合わせである。より具体的には、点群データは、位置情報、属性情報(色又は反射率等)、及び付加情報を含む。また、分割部5411には、フレーム番号が入力される。分割部5411は、各フレームの位置情報を複数の分割位置情報に分割し、各フレームの属性情報を複数の分割属性情報に分割する。また、分割部5411は、分割に関する付加情報を生成する。
例えば、分割部5411は、まず、点群をタイルに分割する。次に、分割部5411は、得られたタイルを、さらにスライスに分割する。
複数の位置情報符号化部5412は、複数の分割位置情報を符号化することで複数の符号化位置情報を生成する。例えば、位置情報符号化部5412は、8分木等のN分木構造を用いて分割位置情報を符号化する。具体的には、8分木では、対象空間が8個のノード(サブ空間)に分割され、各ノードに点群が含まれるか否かを示す8ビットの情報(オキュパンシー符号)が生成される。また、点群が含まれるノードは、さらに、8個のノードに分割され、当該8個のノードの各々に点群が含まれるか否かを示す8ビットの情報が生成される。この処理が、予め定められた階層又はノードに含まれる点群の数の閾値以下になるまで繰り返される。例えば、複数の位置情報符号化部5412は、複数の分割位置情報を並列処理する。
属性情報符号化部4632は、位置情報符号化部4631で生成された構成情報を用いて符号化することで符号化データである符号化属性情報を生成する。例えば、属性情報符号化部4632は、位置情報符号化部4631で生成された8分木構造に基づき、処理対象の対象点(対象ノード)の符号化において参照する参照点(参照ノード)を決定する。例えば、属性情報符号化部4632は、周辺ノード又は隣接ノードのうち、8分木における親ノードが対象ノードと同一のノードを参照する。なお、参照関係の決定方法はこれに限らない。
また、位置情報又は属性情報の符号化処理は、量子化処理、予測処理、及び算術符号化処理のうち少なくとも一つを含んでもよい。この場合、参照とは、属性情報の予測値の算出に参照ノードを用いること、又は、符号化のパラメータの決定に参照ノードの状態(例えば、参照ノードに点群が含まれる否かを示す占有情報)を用いること、である。例えば、符号化のパラメータとは、量子化処理における量子化パラメータ、又は算術符号化におけるコンテキスト等である。
複数の属性情報符号化部5413は、複数の分割属性情報を符号化することで複数の符号化属性情報を生成する。例えば、複数の属性情報符号化部5413は、複数の分割属性情報を並列処理する。
付加情報符号化部5414は、点群データに含まれる付加情報と、分割部5411で分割時に生成された、データ分割に関する付加情報とを符号化することで符号化付加情報を生成する。
多重化部5415は、複数フレームの、複数の符号化位置情報、複数の符号化属性情報及び符号化付加情報を多重化することで符号化データ(符号化ストリーム)を生成し、生成した符号化データを送出する。また、符号化付加情報は復号時に使用される。
図43は、分割部5411のブロック図である。分割部5411は、タイル分割部5421と、スライス分割部5422とを含む。
タイル分割部5421は、複数フレームの位置情報(Position(Geometry))の各々をタイルに分割することで複数のタイル位置情報を生成する。また、タイル分割部5421は、複数フレームの属性情報(Attribute)の各々をタイルに分割することで複数のタイル属性情報を生成する。また、タイル分割部5421は、タイル分割に係る情報、及びタイル分割において生成された情報を含むタイル付加情報(Tile MetaData)を出力する。
スライス分割部5422は、複数のタイル位置情報をスライスに分割することで複数の分割位置情報(複数のスライス位置情報)を生成する。また、スライス分割部5422は、複数のタイル属性情報をスライスに分割することで複数の分割属性情報(複数のスライス属性情報)を生成する。また、スライス分割部5422は、スライス分割に係る情報、及びスライス分割において生成された情報を含むスライス付加情報(Slice MetaData)を出力する。
また、分割部5411は、分割処理において、原点座標及び属性情報等を示すために、フレーム番号(フレームインデックス)を用いる。
図44は、位置情報符号化部5412のブロック図である。位置情報符号化部5412は、フレームインデックス生成部5431と、エントロピー符号化部5432とを含む。
フレームインデックス生成部5431は、フレーム番号に基づきフレームインデックスの値を決定し、決定したフレームインデックスを位置情報に付加する。エントロピー符号化部5432は、フレームインデックスが付加された分割位置情報をエントロピー符号化することで符号化位置情報を生成する。
図45は、属性情報符号化部5413のブロック図である。属性情報符号化部5413は、フレームインデックス生成部5441と、エントロピー符号化部5442とを含む。
フレームインデックス生成部5441は、フレーム番号に基づきフレームインデックスの値を決定し、決定したフレームインデックスを属性情報に付加する。エントロピー符号化部5442は、フレームインデックスが付加された分割属性情報をエントロピー符号化することで符号化属性情報を生成する。
次に、本実施の形態に係る点群データの符号化処理及び復号処理の流れについて説明する。図46は、本実施の形態に係る点群データの符号化処理のフローチャートである。
まず、三次元データ符号化装置は、使用する分割方法を決定する(S5441)。この分割方法は、スライス分割を行うか否か、タイル分割を行うか否かを含む。また、分割方法は、スライス分割又はタイル分割を行う場合の分割数、及び、分割の種別等を含んでもよい。
タイル分割が行われる場合(S5442でYes)、三次元データ符号化装置は、位置情報と属性情報とを分割することで複数のタイル位置情報及び複数のタイル属性情報を生成する(S5443)。また、三次元データ符号化装置は、タイル分割に係るタイル付加情報を生成する。
スライス分割が行われる場合(S5444でYes)、三次元データ符号化装置は、複数のタイル位置情報及び複数のタイル属性情報(又は位置情報及び属性情報)を分割することで複数の分割位置情報及び複数の分割属性情報を生成する(S5445)。また、三次元データ符号化装置は、スライス分割に係るスライス付加情報を生成する。
次に、三次元データ符号化装置は、複数の分割位置情報及び複数の分割属性情報の各々をフレームインデックスと符号化することで、複数の符号化位置情報及び複数の符号化属性情報を生成する(S5446)。また、三次元データ符号化装置は、依存関係情報を生成する。
次に、三次元データ符号化装置は、複数の符号化位置情報、複数の符号化属性情報及び付加情報をNALユニット化(多重化)することで符号化データ(符号化ストリーム)を生成する(S5447)。また、三次元データ符号化装置は、生成した符号化データを送出する。
図47は、符号化処理(S5446)のフローチャートである。まず、三次元データ符号化装置は、分割位置情報を符号化する(S5451)。次に、三次元データ符号化装置は、分割位置情報用のフレームインデックスを符号化する(S5452)。
分割属性情報が存在する場合(S5453でYes)、三次元データ符号化装置は、分割属性情報を符号化し(S5454)、分割属性情報用のフレームインデックスを符号化する(S5455)。一方、分割属性情報が存在しない場合(S5453でNo)、三次元データ符号化装置は、分割属性情報の符号化、及び分割属性情報用のフレームインデックスの符号化を行わない。なお、フレームインデックスは分割位置情報と分割属性情報のいずれか一方または両方に格納されてもよい。
なお、三次元データ符号化装置は、属性情報を、フレームインデックスを用いて符号化してもよいし、フレームインデックスを用いずに符号化してもよい。つまり、三次元データ符号化装置は、フレームインデックスを用いて、それぞれの点が属するフレームを識別し、フレーム毎に符号化してもよいし、フレームを識別せずに、全てのフレームに属する点を符号化してもよい。
以下、本実施の形態に係る三次元データ復号装置の構成を説明する。図48は、復号部5450の構成を示すブロック図である。復号部5450は、点群データが符号化されることで生成された符号化データ(符号化ストリーム)を復号することで点群データを復元する。この復号部5450は、逆多重化部5451と、複数の位置情報復号部5452と、複数の属性情報復号部5453と、付加情報復号部5454と、結合部5455とを含む。
逆多重化部5451は、符号化データ(符号化ストリーム)を逆多重化することで複数の符号化位置情報、複数の符号化属性情報及び符号化付加情報を生成する。
複数の位置情報復号部5452は、複数の符号化位置情報を復号することで複数の分割位置情報を生成する。例えば、複数の位置情報復号部5452は、複数の符号化位置情報を並列処理する。
複数の属性情報復号部5453は、複数の符号化属性情報を復号することで複数の分割属性情報を生成する。例えば、複数の属性情報復号部5453は、複数の符号化属性情報を並列処理する。
複数の付加情報復号部5454は、符号化付加情報を復号することで付加情報を生成する。
結合部5455は、付加情報を用いて複数の分割位置情報を結合することで位置情報を生成する。結合部5455は、付加情報を用いて複数の分割属性情報を結合することで属性情報を生成する。また、結合部5455は、フレームインデックスを用いて位置情報及び属性情報を複数フレームの位置情報及び複数フレームの属性情報に分割する。
図49は、位置情報復号部5452のブロック図である。位置情報復号部5452は、エントロピー復号部5461と、フレームインデックス取得部5462とを含む。エントロピー復号部5461は、符号化位置情報をエントロピー復号することで分割位置情報を生成する。フレームインデックス取得部5462は、分割位置情報からフレームインデックを取得する。
図50は、属性情報復号部5453のブロック図である。属性情報復号部5453は、エントロピー復号部5471と、フレームインデックス取得部5472とを含む。エントロピー復号部5471は、符号化属性情報をエントロピー復号することで分割属性情報を生成する。フレームインデックス取得部5472は、分割属性情報からフレームインデックを取得する。
図51は、結合部5455の構成を示す図である。結合部5455は、複数の分割位置情報を結合することで位置情報を生成する。結合部5455は、複数の分割属性情報を結合することで属性情報を生成する。また、結合部5455は、フレームインデックスを用いて位置情報及び属性情報を複数フレームの位置情報及び複数フレームの属性情報に分割する。
図52は、本実施の形態に係る点群データの復号処理のフローチャートである。まず、三次元データ復号装置は、符号化データ(符号化ストリーム)に含まれる、分割方法に係る付加情報(スライス付加情報、及びタイル付加情報)を解析することで、分割方法を判定する(S5461)。この分割方法は、スライス分割を行うか否か、タイル分割を行うか否かを含む。また、分割方法は、スライス分割又はタイル分割を行う場合の分割数、及び、分割の種別等を含んでもよい。
次に、三次元データ復号装置は、符号化データに含まれる複数の符号化位置情報及び複数の符号化属性情報を、符号化データに含まれる依存関係情報を用いて復号することで分割位置情報及び分割属性情報を生成する(S5462)。
付加情報によりスライス分割が行われていることが示される場合(S5463でYes)、三次元データ復号装置は、スライス付加情報に基づき、複数の分割位置情報を結合することで複数のタイル位置情報を生成し、複数の分割属性情報を結合することで複数のタイル属性情報を生成する(S5464)。ここで、複数の分割位置情報、複数の分割属性情報、複数のタイル位置情報、及び複数のタイル属性情報は、フレームインデックスを含む。
付加情報によりタイル分割が行われていることが示される場合(S5465でYes)、三次元データ復号装置は、タイル付加情報に基づき、複数のタイル位置情報(複数の分割位置情報)を結合することで位置情報を生成し、複数のタイル属性情報(複数の分割属性情報)を結合することで属性情報を生成する(S5466)。ここで、複数のタイル位置情報、複数のタイル属性情報、位置情報及び属性情報は、フレームインデックスを含む。
図53は、復号処理(S5464又はS5466)のフローチャートである。まず、三次元データ復号装置は、分割位置情報(スライス位置情報)を復号する(S5471)。次に、三次元データ復号装置は、分割位置情報用のフレームインデックスを復号する(S5472)。
分割属性情報が存在する場合(S5473でYes)、三次元データ復号装置は、分割属性情報を復号し(S5474)、分割属性情報用のフレームインデックスを復号する(S5475)。一方、分割属性情報が存在しない場合(S5473でNo)、三次元データ復号装置は、分割属性情報の復号、及び分割属性情報用のフレームインデックスの復号を行わない。
なお、三次元データ復号装置は、属性情報を、フレームインデックスを用いて復号してもよいし、フレームインデックスを用いずに復号してもよい。
以下、フレーム結合における符号化単位について説明する。図54は、フレームの結合パターンの例を示す図である。同図の例は、例えば、PCCフレームが時系列であり、リアルタイムにデータの生成及び符号化が行われる場合の例である。
図54の(a)は、固定的に4フレームを結合する場合を示している。三次元データ符号化装置は、4フレーム分のデータの生成を待ってから符号化データを生成する。
図54の(b)は、適応的にフレーム数が変化する場合を示している。例えば、三次元データ符号化装置は、レート制御において符号化データの符号量を調整するために結合フレーム数を変化させる。
なお、三次元データ符号化装置は、フレーム結合による効果がない可能性がある場合は、フレームを結合しなくてもよい。また、三次元データ符号化装置は、フレーム結合する場合とフレーム結合しない場合とを切り替えてもよい。
図54の(c)は、結合する複数のフレームの一部が次に結合する複数のフレームの一部と重複する場合の例である。この例は、符号化できたものから順次送出するなど、リアルタイム性、又は低遅延が要求される場合に有用である。
図55は、PCCフレームの構成例を示す図である。三次元データ符号化装置は、結合するフレームを、少なくとも単独で復号できるデータ単位を含むように構成してもよい。例えば、図55の(a)に示すように、PCCフレームが全てイントラ符号化されており、PCCフレームを単独で復号可能な場合には、上記のいずれのパターンも適用可能である。
また、図55の(b)に示すように、インター予測が適用されている場合などにおいてGOF(グループオブフレーム)などのランダムアクセス単位が設定される場合は、三次元データ符号化装置は、そのGOF単位を最小単位として、データを結合してもよい。
なお、三次元データ符号化装置は、共通情報と個別情報とを一括で符号化してもよいし、それぞれを別に符号化してもよい。また、三次元データ符号化装置は、共通情報と個別情報とに共通のデータ構造を用いてもよいし別のデータ構造を用いてもよい。
また、三次元データ符号化装置は、フレーム毎にオキュパンシー符号を生成した後に、複数フレームのオキュパンシー符号を比較し、例えば、所定の基準で複数フレームのオキュパンシー符号間で共通部分が多いか否かを判定し、共通部分が多い場合に共通情報を生成してもよい。あるいは、三次元データ符号化装置は、共通部分が多いか否に基づき、フレーム結合するかどうか、どのフレームを結合するか、又は結合フレーム数を決定してもよい。
次に、符号化位置情報の構成を説明する。図56は、符号化位置情報の構成を示す図である。符号化位置情報は、ヘッダとペイロードとを含む。
図57は、符号化位置情報のヘッダ(Geometry_header)のシンタックス例を示す図である。符号化位置情報のヘッダは、GPSインデックス(gps_idx)と、オフセット情報(offset)と、その他の情報(other_geometry_information)と、フレーム結合フラグ(combine_frame_flag)と、結合フレーム数(number_of_combine_frame)とを含む。
GPSインデックスは、符号化位置情報に対応するパラメータセット(GPS)の識別子(ID)を示す。GPSは、1フレーム又は複数のフレームの符号化位置情報のパラメータセットである。なお、1フレーム毎にパラメータセットが存在する場合は、複数のパラメータセットの識別子がヘッダに示されてもよい。
オフセット情報は、結合データを取得するためのオフセット位置を示す。その他の情報は、位置情報に関するその他の情報(例えば、量子化パラメータの差分値(QPdelta)など)を示す。フレーム結合フラグは、符号化データがフレーム結合されているか否かを示すフラグである。結合フレーム数は、結合されているフレームの数を示す。
なお、上記の情報の一部又は全てがSPS又はGPSに記載されてもよい。なお、SPSとは、シーケンス(複数フレーム)単位のパラメータセットであり、符号化位置情報と符号化属性情報とに共通に用いられるパラメータセットである。
図58は、符号化位置情報のペイロード(Geometry_data)のシンタックス例を示す図である。符号化位置情報のペイロードは、共通情報と、リーフノード情報とを含む。
共通情報は、1以上のフレーム結合したデータであり、オキュパンシー符号(occupancy_Code)等を含む。
リーフノード情報(combine_information)は、各リーフノードの情報である。フレーム数のループとして、フレーム毎にリーフノード情報が示されてもよい。
リーフノードに含まれる点のフレームインデックスを示す方法としては、方法1と方法2とのいずれかを用いることができる。図59は、方法1の場合のリーフノード情報の例を示す図である。図59に示すリーフノード情報は、ノードに含まれる点の数を示す三次元点数(NumberOfPoints)と、点ごとのフレームインデックス(FrameIndex)とを含む。
図60は、方法2の場合のリーフノード情報の例を示す図である。図60に示す例では、リーフノード情報は、ビットマップにより複数の点のフレームインデックを示すビットマップ情報(bitmapIsFramePointsFlag)を含む。図61は、ビットマップ情報の例を示す図である。この例では、ビットマップにより、リーフノードがフレームインデックス1と3と5の三次元点を含むことが示される。
なお、量子化の分解能が低い場合は、同一フレームに重複点が存在する場合がある。この場合、三次元点数(NumberOfPoints)を共有化し、各フレームの三次元点の数と複数フレームの合計の三次元点の数とが示されてもよい。
また、不可逆圧縮が用いられる場合、三次元データ符号化装置は、重複点を削除し、情報量を削減してもよい。三次元データ符号化装置は、フレーム結合前に重複点を削除してもよいし、フレーム結合後に重複点を削除してもよい。
次に、符号化属性情報の構成を説明する。図62は、符号化属性情報の構成を示す図である。符号化属性情報は、ヘッダとペイロードとを含む。
図63は、符号化属性情報のヘッダ(Attribute_header)のシンタックス例を示す図である。符号化属性情報のヘッダは、APSインデックス(aps_idx)と、オフセット情報(offset)と、その他の情報(other_attribute_information)と、フレーム結合フラグ(combine_frame_flag)と、結合フレーム数(number_of_combine_frame)とを含む。
APSインデックスは、符号化属性情報に対応するパラメータセット(APS)の識別子(ID)を示す。APSは、1フレーム又は複数のフレームの符号化属性情報のパラメータセットである。なお、1フレーム毎にパラメータセットが存在する場合は、複数のパラメータセットの識別子がヘッダに示されてもよい。
オフセット情報は、結合データを取得するためのオフセット位置を示す。その他の情報は、属性情報に関するその他の情報(例えば、量子化パラメータの差分値(QPdelta)など)を示す。フレーム結合フラグは、符号化データがフレーム結合されているか否かを示すフラグである。結合フレーム数は、結合されているフレームの数を示す。
なお、上記の情報の一部又は全てがSPS又はAPSに記載されてもよい。
図64は、符号化属性情報のペイロード(Attribute_data)のシンタックス例を示す図である。符号化属性情報のペイロードは、リーフノード情報(combine_information)を含む。例えば、このリーフノード情報の構成は、符号化位置情報のペイロードに含まれるリーフノード情報と同様である。つまり、リーフノード情報(フレームインデックス)は、属性情報に含まれてもよい。
また、リーフノード情報(フレームインデックス)は、符号化位置情報と符号化属性情報との一方に格納され、他方に格納されてなくてもよい。この場合、符号化位置情報と符号化属性情報との一方に格納されているリーフノード情報(フレームインデックス)が他方の情報の復号時に参照される。また、参照先を示す情報が符号化位置情報又は符号化属性情報に含まれてもよい。
次に、符号化データの送出順及び復号順の例を説明する。図65は、符号化データの構成を示す図である。符号化データはヘッダとペイロードとを含む。
図66~図68は、データの送出順と、データの参照関係を示す図である。同図において、G(1)等は、符号化位置情報を示し、GPS(1)等は、符号化位置情報のパラメータセットを示し、SPSは、シーケンス(複数フレーム)のパラメータセットを示す。また、()内の数字はフレームインデックスの値を示す。なお、三次元データ符号化装置は、データを復号順で送出してもよい。
図66はフレームを結合しない場合の送出順の例を示す図である。図67はフレームを結合する場合であって、PCCフレーム毎にメタデータ(パラメータセット)が付加される場合の例を示す図である。図68はフレームを結合する場合であって、結合する単位でメタデータ(パラメータセット)が付加される場合の例を示す図である。
フレーム結合されたデータのヘッダには、当該フレームのメタデータを得るために、参照先のメタデータの識別子が格納される。図68のように、複数フレーム毎のメタデータをまとめてもよい。フレーム結合された複数のフレームに共通のパラメータは一つにまとめてもよい。フレームに共通でないパラメータは各フレームに対する値を示す。
フレーム毎の情報(フレームで共通でないパラメータ)とは、例えば、フレームデータの生成時刻、符号化時刻、又は復号時刻などを示すタイムスタンプである。また、フレーム毎の情報は、フレームデータを取得したセンサの情報(センサのスピード、加速度、位置情報、センサの向き、その他のセンサ情報など)を含んでもよい。
図69は、図67に示す例において、一部のフレームを復号する例を示す図である。図69に示すように、フレーム結合データ内で、フレーム間に依存関係がなければ、三次元データ復号装置は、各データを独立に復号できる。
点群データが属性情報を有する場合、三次元データ符号化装置は、属性情報をフレーム結合してもよい。属性情報は、位置情報を参照して符号化及び復号される。参照される位置情報は、フレーム結合する前の位置情報であってもよいし、フレーム結合した後の位置情報であってもよい。位置情報の結合フレーム数と属性情報の結合フレーム数とは共通(同じ)であってもよいし、独立していて(異なって)もよい。
図70~図73は、データの送出順と、データの参照関係を示す図である。図70及び図71は、位置情報と属性情報とを共に4フレームで結合する例を示す。図70では、PCCフレーム毎にメタデータ(パラメータセット)が付加される。図71では、結合する単位でメタデータ(パラメータセット)が付加される。同図において、A(1)等は、符号化属性情報を示し、APS(1)等は、符号化属性情報のパラメータセットを示す。また、()内の数字はフレームインデックスの値を示す。
図72は、位置情報を4フレームで結合し、属性情報を結合しない例を示す。図72に示すように位置情報をフレーム結合し、属性情報をフレーム結合しなくてもよい。
図73は、フレーム結合とタイル分割とを組み合わせた例を示す。図73に示すようにタイル分割を行う場合には、各タイル位置情報のヘッダは、GPSインデックス(gps_idx)、及び結合フレーム数(number_of_combine_frame)等の情報を含む。また、各タイル位置情報のヘッダは、タイルを識別するためのタイルインデックス(tile_idx)を含む。
以上のように、本実施の形態に係る三次元データ符号化装置は、図74に示す処理を行う。まず、三次元データ符号化装置は、第1点群データと第2点群データとを結合することで第3点群データを生成する(S5481)。次に、三次元データ符号化装置は、第3点群データを符号化することで符号化データを生成する(S5482)。また、符号化データは、第3点群データに含まれる複数の三次元点の各々が第1点群データと第2点群データとのいずれに属するかを示す識別情報(例えばフレームインデックス)を含む。
これによれば、三次元データ符号化装置は、複数の点群データをまとめて符号化することにより符号化効率を向上できる。
例えば、第1点群データと第2点群データとは、異なる時刻の点群データ(例えばPCCフレーム)である。例えば、第1点群データと第2点群データとは、同一の対象物の異なる時刻の点群データ(例えばPCCフレーム)である。
符号化データは、第3点群データに含まれる複数の三次元点の各々の位置情報と属性情報とを含み、識別情報は、属性情報に含まれる。
例えば、符号化データは、第3点群データに含まれる複数の三次元点の各々の位置をN(Nは2以上の整数)分木を用いて表した位置情報(例えばオキュパンシー符号)を含む。
例えば、三次元データ符号化装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態に係る三次元データ復号装置は、図75に示す処理を行う。まず、三次元データ復号装置は、符号化データを復号することで、第1点群データと第2点群データとが結合されることで生成された第3点群データと、第3点群データに含まれる複数の三次元点の各々が第1点群データと第2点群データとのいずれに属するかを示す識別情報とを取得する(S5491)。次に、三次元データ復号装置は、識別情報を用いて、第3点群データから第1点群データと第2点群データとを分離する(S5492)。
これによれば、三次元データ復号装置は、複数の点群データをまとめて符号化することにより符号化効率を向上した符号化データを復号できる。
例えば、第1点群データと第2点群データとは、異なる時刻の点群データ(例えばPCCフレーム)である。例えば、第1点群データと第2点群データとは、同一の対象物の異なる時刻の点群データ(例えばPCCフレーム)である。
符号化データは、第3点群データに含まれる複数の三次元点の各々の位置情報と属性情報とを含み、識別情報は、属性情報に含まれる。
例えば、符号化データは、第3点群データに含まれる複数の三次元点の各々の位置をN(Nは2以上の整数)分木を用いて表した位置情報(例えばオキュパンシー符号)を含む。
例えば、三次元データ復号装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
(実施の形態6)
三次元点群の情報は、位置情報(geometry)と属性情報(attribute)とを含む。位置情報は、ある点を基準とした座標(x座標、y座標、z座標)を含む。位置情報を符号化する場合は、各三次元点の座標を直接符号化する代わりに、各三次元点の位置を8分木表現で表現し、8分木の情報を符号化することで符号量を削減する方法が用いられる。
一方、属性情報は、各三次元点の色情報(RGB、YUVなど)、反射率、及び法線ベクトルなどを示す情報を含む。例えば、三次元データ符号化装置は、属性情報を、位置情報とは別の符号化方法を用いて符号化することができる。
本実施の形態では位置情報を複数のフレームの複数の点群データを結合して符号化する際の属性情報の符号化方法について説明する。なお、本実施の形態では属性情報の値として整数値を用いて説明する。例えば色情報RGB又はYUVの各色成分が8bit精度である場合、各色成分は0~255の整数値をとる。反射率の値が10bit精度である場合、反射率の値は0~1023の整数値をとる。なお、三次元データ符号化装置は、属性情報のビット精度が小数精度である場合、属性情報の値が整数値になるように、当該値にスケール値を乗じてから整数値に丸めてもよい。なお、三次元データ符号化装置は、このスケール値をビットストリームのヘッダ等に付加してもよい。
三次元点群の各位置情報を複数のフレームの点群データを結合して符号化した際の属性情報の符号化方法として、例えば、結合後の位置情報を用いて各位置情報に対応する属性情報を符号化することが考えられる。ここで、結合後の位置情報は、三次元点群の位置情報とその三次元点群が属するframe_index(フレームインデックス)を含んでもよい。また、三次元点群のうちの第1三次元点の属性情報を符号化する際に、第1三次元点が属するフレーム内に含まれる三次元点群の位置情報または属性情報だけでなく、第1三次元点の属するフレームとは異なるフレーム内に含まれる三次元点群の位置情報または属性情報を用いるようにしてもよい。
複数のフレームのそれぞれは、点群データを含む。複数のフレームのうちの第1フレームに属する第1点群データと、第2フレームに属する第2点群データとは、異なる時刻の点群データである。また、第1点群データと第2点群データとは、例えば、同一の対象物の異なる時刻の点群データである。第1点群データは、第1点群データに含まれる三次元点群が第1点群データに属することを示すフレームインデックスを含む。第2点群データは、第2点群データに含まれる三次元点群が第2点群データに属することを示すフレームインデックスを含む。フレームインデックスは、異なるフレームに属する複数の点群データが結合された結合点群データに含まれる三次元点群がいずれの点群データに属するかを示す識別情報である。なお、三次元点群は、複数の三次元点ともいう。
三次元点の属性情報の符号化方法として、三次元点の属性情報の予測値を算出し、元の属性情報の値と予測値との差分(予測残差)を符号化することが考えられる。例えば、三次元点pの属性情報の値がApであり、予測値がPpである場合、三次元データ符号化装置は、その差分絶対値Diffp=|Ap-Pp|を符号化する。この場合、予測値Ppを高精度に生成することができれば、差分絶対値Diffpの値が小さくなる。よって、例えば、値が小さい程発生ビット数が小さくなる符号化テーブルを用いて差分絶対値Diffpをエントロピー符号化することで符号量を削減することができる。
属性情報の予測値を生成する方法として、符号化対象の対象三次元点の周囲にある別の三次元点である参照三次元点の属性情報を用いることが考えられる。このように、三次元データ符号化装置は、周囲の三次元点の属性情報を用いて第1三次元点の属性情報を符号化してもよい。ここで、符号化対象の三次元点の周囲にある別の周囲三次元点は、符号化対象の対象三次元点が属するフレーム内に存在してもよいし、また、符号化対象の対象三次元点が属するフレームとは異なるフレーム内に存在してもよい。つまり、対象三次元点の属性情報は、当該対象三次元点が第1点群データに属することを示す第1フレームインデックスを含み、周囲三次元点の属性情報は、当該周囲三次元点が第2点群データに属することを示す第2フレームインデックスを含んでいてもよい。これにより、符号化対象の三次元点が属するフレーム以外の三次元点の属性情報も参照することで高精度な予測値Ppを生成することができ、符号化効率を向上できる。
ここで参照三次元点とは、対象三次元点から予め定められた距離範囲内にある三次元点である。例えば、対象三次元点p=(x1,y1,z1)と三次元点q=(x2,y2,z2)とが存在する場合、三次元データ符号化装置は、(式H1)に示す三次元点pと三次元点qとのユークリッド距離d(p、q)を算出する。
三次元データ符号化装置は、ユークリッド距離d(p、q)が予め定められた閾値THdより小さい場合、三次元点qの位置が対象三次元点pの位置に近いと判定し、対象三次元点pの属性情報の予測値の生成に三次元点qの属性情報の値を利用すると判定する。なお、距離算出方法は別の方法でもよく、例えばマハラノビス距離等が用いられてもよい。また、三次元データ符号化装置は、対象三次元点から予め定められた距離範囲外の三次元点を予測処理に用いないと判定してもよい。例えば、三次元点rが存在し、対象三次元pと三次元点rとの距離d(p、r)が閾値THd以上である場合、三次元データ符号化装置は、三次元点rを予測に用いないと判定してもよい。なお、三次元データ符号化装置は、閾値THdを示す情報を、ビットストリームのヘッダ等に付加してもよい。なお、三次元データ符号化装置は、三次元点群の各位置情報を複数のフレームの点群データを結合して符号化した場合、結合後の三次元点群から各三次元点間の距離を算出してもよい。つまり、三次元データ符号化装置は、異なるフレームに属する2つの三次元点間の距離を算出してもよいし、同じフレームに属する2つの三次元点間の距離を算出してもよい。
図76は、三次元点の例を示す図である。この例では、対象三次元点pと三次元点qとの距離d(p、q)が閾値THdより小さい。よって、三次元データ符号化装置は、三次元点qを対象三次元点pの参照三次元点と判定し、対象三次元pの属性情報Apの予測値Ppの生成に三次元点qの属性情報Aqの値を利用すると判定する。
一方、対象三次元点pと三次元点rとの距離d(p、r)は、閾値THd以上である。よって、三次元データ符号化装置は、三次元点rを対象三次元点pの参照三次元点でないと判定し、対象三次元点pの属性情報Apの予測値Ppの生成に三次元点rの属性情報Arの値を利用しないと判定する。
ここで、三次元点pは、フレームインデックス(frame_idx=0)で示されるフレームに属し、三次元点qは、フレームインデックス(frame_idx=1)で示されるフレームに属する、三次元点rは、フレームインデックス(frame_idx=0)で示されるフレームに属する。三次元符号化装置は、同じフレームに属することがフレームインデックスにより示されている三次元点pおよび三次元点rの間の距離を算出してもよいし、異なるフレームに属することがフレームインデックスにより示されている三次元点pおよび三次元点qの間の距離を算出してもよい。
また、三次元データ符号化装置は、対象三次元点の属性情報を予測値を用いて符号化する場合、既に属性情報を符号化及び復号済みの三次元点を参照三次元点として利用する。同様に、三次元データ復号装置は、復号対象の対象三次元点の属性情報を予測値を用いて復号する場合、既に属性情報を復号済みの三次元点を参照三次元点として利用する。これにより、符号化時と復号時とで同一の予測値を生成することができるので、符号化で生成した三次元点のビットストリームを復号側で正しく復号することができる。
なお、符号化対象の対象三次元点の周囲にある別の周囲三次元点は、符号化対象の対象三次元点が属するフレーム内に存在してもよいし、また、符号化対象の対象三次元点が属するフレームとは異なるフレーム内に存在してもよいとしたが、必ずしもこれに限らず、例えば、符号化対象の対象三次元点が属するフレームとは異なるフレーム内に存在する三次元点は、符号化対象の対象三次元点の周囲にないと判定し、予測値として用いないようにしても構わない。これにより、三次元データ符号化装置は、例えば、結合対象の複数のフレームの各三次元点の属性情報が大きく異なる場合は、位置情報をフレーム結合して符号化し、属性情報を同一フレーム内の他の周囲三次元点の属性情報を用いて予測符号化することで符号化効率を向上できる。なお、三次元データ符号化装置は、フレーム結合による符号化時に、同一フレームの周囲三次元点の属性情報を用いて対象三次元点の属性情報を符号化するか、または、同一フレームおよび同一フレーム以外の周囲三次元点の属性情報を用いて対象三次元点の属性情報を符号化するかを示す情報を符号化データのヘッダに付加し、切替えるようにしても構わない。これにより、三次元データ復号装置は、ヘッダを復号することで、フレーム結合による符号化データの復号時に、同一フレームまたは、同一フレームおよび同一フレーム以外の周囲三次元点の属性情報を用いて対象三次元点の属性情報を復号するか否かを判定し、いずれの復号にするかを切り替えることができるためビットストリームを適切に復号できる。
また、複数のフレームを結合した後の三次元点の属性情報を符号化する場合に、同一フレームもしくは異なるフレームに属する三次元点の位置情報を用いて各三次元点を複数階層に分類してから符号化することが考えられる。ここで、分類した各階層をLoD(Level of Detail)と呼ぶ。LoDの生成方法について図77を用いて説明する。
まず、三次元データ符号化装置は、結合後の三次元点群から初期点a0を選択し、LoD0に割当てる。次に、三次元データ符号化装置は、点a0からの距離がLoD0の閾値Thres_LoD[0]より大きい点a1を抽出しLoD0に割当てる。次に、三次元データ符号化装置は、点a1からの距離がLoD0の閾値Thres_LoD[0]より大きい点a2を抽出しLoD0に割当てる。このように、三次元データ符号化装置は、LoD0内の各点の間の距離が閾値Thres_LoD[0]より大きくなるようにLoD0を構成する。なお、三次元データ符号化装置は、2点の三次元点の距離を、それぞれが同一フレームもしくは異なるフレームに属するか否かに関わらず、同一の処理で算出してもよい。例えば、点a0と点a1とは、同じフレームに属していてもよいし、互いに異なるフレームに属していてもよい。このため、点a0と点a1との距離は、同じフレームに属していても、互いに異なるフレームに属していても同一の処理で算出される。
次に、三次元データ符号化装置は、まだLoDが未割当ての点b0を選択し、LoD1に割当てる。次に、三次元データ符号化装置は、点b0からの距離がLoD1の閾値Thres_LoD[1]より大きく、LoDが未割当ての点b1を抽出しLoD1に割当てる。次に、三次元データ符号化装置は、点b1からの距離がLoD1の閾値Thres_LoD[1]より大きく、LoDが未割当ての点b2を抽出しLoD1に割当てる。このように、三次元データ符号化装置は、LoD1内の各点の間の距離が閾値Thres_LoD[1]より大きくなるようにLoD1を構成する。
次に、三次元データ符号化装置は、まだLoDが未割当ての点c0を選択し、LoD2に割当てる。次に、三次元データ符号化装置は、点c0からの距離がLoD2の閾値Thres_LoD[2]より大きく、LoDが未割当ての点c1を抽出しLoD2に割当てる。次に、三次元データ符号化装置は、点c1からの距離がLoD2の閾値Thres_LoD[2]より大きく、LoDが未割当ての点c2を抽出しLoD2に割当てる。このように、三次元データ符号化装置は、LoD2内の各点の間の距離が閾値Thres_LoD[2]より大きくなるようにLoD2を構成する。例えば、図78に示すように、各LoDの閾値Thres_LoD[0]、Thres_LoD[1]、及びThres_LoD[2]が設定される。
また、三次元データ符号化装置は、各LoDの閾値を示す情報を、ビットストリームのヘッダ等に付加してもよい。例えば、図78に示す例の場合、三次元データ符号化装置は、閾値Thres_LoD[0]、Thres_LoD[1]、及びThres_LoD[2]をヘッダに付加してもよい。
また、三次元データ符号化装置は、LoDの最下層にLoDが未割当ての三次元点全てを割当ててもよい。この場合、三次元データ符号化装置は、LoDの最下層の閾値をヘッダに付加しないことでヘッダの符号量を削減できる。例えば、図78に示す例の場合、三次元データ符号化装置は、閾値Thres_LoD[0]とThres_LoD[1]をヘッダに付加し、Thres_LoD[2]をヘッダに付加しない。この場合、三次元データ復号装置は、Thres_LoD[2]の値0と推定してもよい。また、三次元データ符号化装置は、LoDの階層数をヘッダに付加してもよい。これにより、三次元データ復号装置は、LoDの階層数を用いて最下層のLoDを判定できる。
また、LoDの各層の閾値の値を図78に示すように上位層ほど大きく設定することで、上位層(LoD0に近い層)ほど三次元点間の距離が離れた疎点群(sparse)となり、下位層ほど三次元点間の距離が近い密点群(dense)となる。なお、図78に示す例では、LoD0が最上位層である。
また、各LoDを設定する際の初期三次元点の選択方法は、位置情報符号化時の符号化順に依存してもよい。例えば、三次元データ符号化装置は、LoD0の初期点a0として、位置情報符号化時に最初に符号化された三次元点を選択し、初期点a0を基点に、点a1、点a2を選択してLoD0を構成する。そして、三次元データ符号化装置は、LoD1の初期点b0として、LoD0に属していない三次元点の中で、最も早く位置情報が符号化された三次元点を選択してもよい。つまり、三次元データ符号化装置は、LoDnの初期点n0として、LoDnの上層(LoD0~LoDn-1)に属していない三次元点の中で、最も早く位置情報が符号化された三次元点を選択してもよい。これにより、三次元データ復号装置は、復号時に同様の初期点選択方法を用いることで、符号化時と同一のLoDを構成できるので、ビットストリームを適切に復号できる。具体的には、三次元データ復号装置は、LoDnの初期点n0として、LoDnの上層に属していない三次元点の中で、最も早く位置情報が復号された三次元点を選択する。
以下、三次元点の属性情報の予測値を、LoDの情報を用いて生成する手法について説明する。例えば、三次元データ符号化装置は、LoD0に含まれる三次元点から順に符号化する場合、LoD1に含まれる対象三次元点を、LoD0及びLoD1に含まれる符号化かつ復号済み(以下、単に「符号化済み」とも記す)の属性情報を用いて生成する。このように、三次元データ符号化装置は、LoDnに含まれる三次元点の属性情報の予測値を、LoDn’(n’<=n)に含まれる符号化済みの属性情報を用いて生成する。つまり、三次元データ符号化装置は、LoDnに含まれる三次元点の属性情報の予測値の算出に、LoDnの下層に含まれる三次元点の属性情報を用いない。
例えば、三次元データ符号化装置は、三次元点の属性情報の予測値を、符号化対象の対象三次元点の周辺の符号化済みの三次元点のうち、N個以下の三次元点の属性値の平均を算出することで生成する。また、三次元データ符号化装置は、Nの値を、ビットストリームのヘッダ等に付加してもよい。なお、三次元データ符号化装置は、Nの値を三次元点毎に変更し、三次元点毎にNの値を付加してもよい。これにより、三次元点毎に適切なNを選択することができるので、予測値の精度を向上できる。よって、予測残差を小さくできる。また、三次元データ符号化装置は、Nの値をビットストリームのヘッダに付加し、ビットストリーム内でNの値を固定してもよい。これにより、三次元点毎にNの値を符号化、又は復号する必要がなくなるので、処理量を削減できる。また、三次元データ符号化装置は、LoD毎にNの値を別々に符号化してもよい。これによりLoD毎に適切なNを選択することで符号化効率を向上できる。
または、三次元データ符号化装置は、三次元点の属性情報の予測値を、周囲の符号化済みのN個の三次元点の属性情報の重み付け平均値により算出してもよい。例えば、三次元データ符号化装置は、対象三次元点と周囲のN個の三次元点とのそれぞれの距離情報を用いて重みを算出する。
三次元データ符号化装置は、LoD毎にNの値を別々に符号化する場合、例えばLoDの上位層ほどNの値を大きく設定し、下位層ほどNの値を小さく設定する。LoDの上位層では属する三次元点間の距離が離れるため、Nの値を大きく設定して複数の周囲の三次元点を選択して平均化することで予測精度を向上できる可能性がある。また、LoDの下位層では属する三次元点間の距離が近いため、Nの値を小さく設定して平均化の処理量を抑えつつ、効率的な予測を行うことが可能となる。
図79は、予測値に用いる属性情報の例を示す図である。上述したように、LoDNに含まれる点Pの予測値は、LoDN’(N’<=N)に含まれる符号化済みの周囲点P’を用いて生成される。ここで、周囲点P’は、点Pとの距離に基づき選択される。例えば、図79に示す点b2の属性情報の予測値は、点a0、a1、a2、b0、b1の属性情報を用いて生成される。
上述したNの値に応じて、選択される周囲点は変化する。例えばN=5の場合は点b2の周囲点としてa0、a1、a2、b0、b1が選択される。N=4の場合は距離情報を元に点a0、a1、a2、b1を選択される。
予測値は、距離依存の重み付け平均により算出される。例えば、図79に示す例では、点a2の予測値a2pは、(式H2)及び(式H3)に示すように、点a0及び点a1の属性情報の重み付け平均により算出される。なお、Aiは点aiの属性情報の値である。
また、点b2の予測値b2pは、(式H4)~(式H6)に示すように、点a0、a1、a2、b0、b1の属性情報の重み付け平均により算出される。なお、Biは点biの属性情報の値である。
また、三次元データ符号化装置は、三次元点の属性情報の値と、周囲点から生成した予測値との差分値(予測残差)を算出し、算出した予測残差を量子化してもよい。例えば、三次元データ符号化装置は、予測残差を量子化スケール(量子化ステップとも呼ぶ)で除算することで量子化を行う。この場合、量子化スケールが小さいほど量子化によって発生しうる誤差(量子化誤差)が小さくなる。逆に量子化スケールが大きいほど量子化誤差は大きくなる。
なお、三次元データ符号化装置は、使用する量子化スケールをLoD毎に変えてもよい。例えば、三次元データ符号化装置は、上位層ほど量子化スケールを小さくし、下位層ほど量子化スケールを大きくする。上位層に属する三次元点の属性情報の値は、下位層に属する三次元点の属性情報の予測値として使用される可能性があるため、上位層の量子化スケールを小さくして上位層で発生しうる量子化誤差を抑え、予測値の精度を高めることで符号化効率を向上できる。なお、三次元データ符号化装置は、LoD毎に使用する量子化スケールをヘッダ等に付加してもよい。これにより、三次元データ復号装置は、正しく量子化スケールを復号できるので、ビットストリームを適切に復号できる。
また、三次元データ符号化装置は、量子化後の予測残差である符号付整数値(符号付量子化値)を符号なし整数値(符号なし量子化値)に変換してもよい。これにより予測残差をエントロピー符号化する場合に、負の整数の発生を考慮する必要がなくなる。なお、三次元データ符号化装置は、必ずしも符号付整数値を符号なし整数値に変換する必要はなく、例えば符号ビットを別途エントロピー符号化してもよい。
予測残差は、元の値から予測値を減算することにより算出される。例えば、点a2の予測残差a2rは、(式H7)に示すように、点a2の属性情報の値A2から、点a2の予測値a2pを減算することで算出される。点b2の予測残差b2rは、(式H8)に示すように、点b2の属性情報の値B2から、点b2の予測値b2pを減算することで算出される。
a2r=A2-a2p ・・・(式H7)
b2r=B2-b2p ・・・(式H8)
また、予測残差は、QS(量子化ステップ(Quantization Step))で除算されることで量子化される。例えば、点a2の量子化値a2qは、(式H9)により算出される。点b2の量子化値b2qは、(式H10)により算出される。ここで、QS_LoD0は、LoD0用のQSであり、QS_LoD1は、LoD1用のQSである。つまり、LoDに応じてQSが変更されてもよい。
a2q=a2r/QS_LoD0 ・・・(式H9)
b2q=b2r/QS_LoD1 ・・・(式H10)
また、三次元データ符号化装置は、以下のように、上記量子化値である符号付整数値を符号なし整数値に変換する。三次元データ符号化装置は、符号付整数値a2qが0より小さい場合、符号なし整数値a2uを-1-(2×a2q)に設定する。三次元データ符号化装置は、符号付整数値a2qが0以上の場合、符号なし整数値a2uを2×a2qに設定する。
同様に、三次元データ符号化装置は、符号付整数値b2qが0より小さい場合、符号なし整数値b2uを-1-(2×b2q)に設定する。三次元データ符号化装置は、符号付整数値b2qが0以上の場合、符号なし整数値b2uを2×b2qに設定する。
また、三次元データ符号化装置は、量子化後の予測残差(符号なし整数値)を、エントロピー符号化によって符号化してもよい。例えば符号なし整数値を二値化したうえで、二値の算術符号化を適用してもよい。
なお、この場合、三次元データ符号化装置は、予測残差の値に応じて二値化方法を切替えてもよい。例えば、三次元データ符号化装置は、予測残差puが閾値R_THより小さい場合は、閾値R_THを表現するために必要な固定ビット数で予測残差puを二値化する。また、三次元データ符号化装置は、予測残差puが閾値R_TH以上の場合は、閾値R_THの二値化データと(pu-R_TH)の値を指数ゴロム(Exponential-Golomb)等を用いて二値化する。
例えば、三次元データ符号化装置は、閾値R_THが63であり、予測残差puが63より小さい場合は、予測残差puを6bitで二値化する。また、三次元データ符号化装置は、予測残差puが63以上である場合は、閾値R_THの二値データ(111111)と(pu-63)とを指数ゴロムを用いて二値化することで算術符号化を行う。
より具体的な例では、三次元データ符号化装置は、予測残差puが32である場合、6bitの二値データ(100000)を生成し、このビット列を算術符号化する。また、三次元データ符号化装置は、予測残差puが66の場合、閾値R_THの二値データ(111111)と値3(66-63)を指数ゴロムで表したビット列(00100)とを生成し、このビット列(111111+00100)を算術符号化する。
このように、三次元データ符号化装置は、予測残差の大きさに応じて二値化の方法を切替えることで、予測残差が大きくなった場合の二値化ビット数の急激な増加を抑えながら符号化することが可能となる。なお、三次元データ符号化装置は、閾値R_THをビットストリームのヘッダ等に付加してもよい。
例えば、高ビットレートで符号化が行われる場合、つまり、量子化スケールが小さい場合、量子化誤差が小さく予測精度が高くなり、結果として予測残差が大きくならない可能性がある。よって、この場合には、三次元データ符号化装置は、閾値R_THを大きく設定する。これにより、閾値R_THの二値化データを符号化する可能性が低くなり、符号化効率が向上する。逆に、低ビットレートで符号化が行われる場合、つまり、量子化スケールが大きい場合、量子化誤差が大きく予測精度が悪くなり、結果として予測残差が大きくなる可能性がある。よって、この場合には、三次元データ符号化装置は、閾値R_THを小さく設定する。これにより、二値化データの急激なビット長増加を防ぐことができる。
また、三次元データ符号化装置は、LoD毎に閾値R_THを切り替え、LoD毎の閾値R_THをヘッダ等に付加してもよい。つまり、三次元データ符号化装置は、LoD毎に二値化の方法を切替えてもよい。例えば、上位層では三次元点間の距離が遠いため、予測精度が悪く結果として予測残差が大きくなる可能性がある。よって、三次元データ符号化装置は、上位層に対しては閾値R_THを小さく設定することで二値化データの急激なビット長増加を防ぐ。また、下位層では三次元点間の距離が近いため、予測精度が高く結果として予測残差が小さくなる可能性がある。よって、三次元データ符号化装置は、階層に対しては閾値R_THを大きく設定することで符号化効率を向上する。
図80は、指数ゴロム符号の一例を示す図であって、二値化前の値(多値)と、二値化後のビット(符号)との関係を示す図である。なお、図80に示す0と1とを反転させてもよい。
また、三次元データ符号化装置は、予測残差の二値化データに算術符号化を適用する。これにより、符号化効率を向上できる。なお、算術符号化の適用時に、二値化データのうち、nビットで二値化した部分であるnビット符号(n-bit code)と、指数ゴロムを用いて二値化した部分である残り符号(remaining code)とで、各ビットの0と1の出現確率の傾向は異なる可能性がある。よって、三次元データ符号化装置は、nビット符号と残り符号とで、算術符号化の適用方法を切替えてもよい。
例えば、三次元データ符号化装置は、nビット符号に対しては、ビット毎に異なる符号化テーブル(確率テーブル)を用いて算術符号化を行う。この際、三次元データ符号化装置は、ビット毎に使用する符号化テーブルの数を変えてもよい。例えば、三次元データ符号化装置は、nビット符号の先頭ビットb0には1個の符号化テーブルを用いて算術符号化を行う。また、三次元データ符号化装置は、次のビットb1に対しては2個の符号化テーブルを用いる。また、三次元データ符号化装置は、b0の値(0又は1)に応じてビットb1の算術符号化に用いる符号化テーブルを切替える。同様に、三次元データ符号化装置は、更に次のビットb2に対しては4個の符号化テーブルを用いる。また、三次元データ符号化装置は、b0及びb1の値(0~3)に応じて、ビットb2の算術符号化に用いる符号化テーブルを切替える。
このように、三次元データ符号化装置は、nビット符号の各ビットbn-1を算術符号化する際に、2n-1個の符号化テーブルを用いる。また、三次元データ符号化装置は、bn-1より前のビットの値(発生パターン)に応じて、使用する符号化テーブルを切替える。これにより、三次元データ符号化装置は、ビット毎に適切な符号化テーブルを使用できるので、符号化効率を向上できる。
なお、三次元データ符号化装置は、各ビットで使用する符号化テーブルの数を削減してもよい。例えば、三次元データ符号化装置は、各ビットbn-1を算術符号化する際に、bn-1より前のmビット(m<n-1)の値(発生パターン)に応じて2m個の符号化テーブルを切替えてもよい。これにより各ビットで使用する符号化テーブルの数を抑えつつ、符号化効率を向上できる。なお、三次元データ符号化装置は、各符号化テーブルにおける0と1の発生確率を、実際に発生した二値化データの値に応じて更新してもよい。また、三次元データ符号化装置は、一部のビットの符号化テーブルにおける0と1の発生確率を固定化してもよい。これにより、発生確率の更新回数を抑制できるので処理量を削減できる。
例えば、nビット符号がb0b1b2…bn-1である場合、b0用の符号化テーブルは1個(CTb0)である。b1用の符号化テーブルは2個(CTb10、CTb11)である。また、b0の値(0~1)に応じて使用する符号化テーブルが切替えられる。b2用の符号化テーブルは、4個(CTb20、CTb21、CTb22、CTb23)である。また、b0及びb1の値(0~3)に応じて使用する符号化テーブルが切替えられる。bn-1用の符号化テーブルは2n-1個(CTbn0、CTbn1、…、CTbn(2n-1-1))である。また、b0b1…bn-2の値(0~2n-1-1)に応じて使用する符号化テーブルを切替えられる。
なお、三次元データ符号化装置は、nビット符号に対しては、二値化せずに0~2n-1の値を設定するm-aryによる算術符号化(m=2n)を適用してもよい。また、三次元データ符号化装置が、nビット符号をm-aryで算術符号化する場合は、三次元データ復号装置もm-aryの算術復号によりnビット符号を復元してもよい。
図81は、例えば、残り符号が指数ゴロム符号の場合の処理を説明するための図である。指数ゴロムを用いて二値化した部分である残り符号は、図81に示すようにprefix部とsuffix部とを含む。例えば、三次元データ符号化装置は、prefix部とsuffix部とで符号化テーブルを切替える。つまり、三次元データ符号化装置は、prefix部に含まれる各ビットを、prefix用の符号化テーブルを用いて算術符号化し、suffix部に含まれる各ビットを、suffix用の符号化テーブルを用いて算術符号化する。
なお、三次元データ符号化装置は、各符号化テーブルにおける0と1の発生確率を、実際に発生した二値化データの値に応じて更新してもよい。または、三次元データ符号化装置は、どちらかの符号化テーブルにおける0と1の発生確率を固定化してもよい。これにより、発生確率の更新回数を抑制できるので処理量を削減できる。例えば、三次元データ符号化装置は、prefix部に対して発生確率を更新し、suffix部に対して発生確率を固定化してもよい。
また、三次元データ符号化装置は、量子化後の予測残差を、逆量子化及び再構成することで復号し、復号した予測残差である復号値を符号化対象の三次元点以降の予測に利用する。具体的には、三次元データ符号化装置は、量子化後の予測残差(量子化値)に量子化スケールを乗算することで逆量子化値を算出し、逆量子化値と予測値とを加算して復号値(再構成値)を得る。
例えば、点a2の逆量子化値a2iqは、点a2の量子化値a2qを用いて(式H11)により算出される。点b2の逆量子化値b2iqは、点b2の量子化値b2qを用いて(式H12)により算出される。ここで、QS_LoD0は、LoD0用のQSであり、QS_LoD1は、LoD1用のQSである。つまり、LoDに応じてQSが変更されてもよい。
a2iq=a2q×QS_LoD0 ・・・(式H11)
b2iq=b2q×QS_LoD1 ・・・(式H12)
例えば、点a2の復号値a2recは、(式H13)に示すように、点a2の逆量子化値a2iqに、点a2の予測値a2pを加算することで算出される。点b2の復号値b2recは、(式H14)に示すように、点b2の逆量子化値b2iqに、点b2の予測値b2pを加算することで算出される。
a2rec=a2iq+a2p ・・・(式H13)
b2rec=b2iq+b2p ・・・(式H14)
以下、本実施の形態に係るビットストリームのシンタックス例を説明する。図82は、本実施の形態に係る属性ヘッダ(attribute_header)のシンタックス例を示す図である。属性ヘッダは、属性情報のヘッダ情報である。図82に示すように、属性ヘッダは、階層数情報(NumLoD)と、三次元点数情報(NumOfPoint[i])と、階層閾値(Thres_Lod[i])と、周囲点数情報(NumNeighborPoint[i])と、予測閾値(THd[i])と、量子化スケール(QS[i])と、二値化閾値(R_TH[i])とを含む。
階層数情報(NumLoD)は、用いられるLoDの階層数を示す。
三次元点数情報(NumOfPoint[i])は、階層iに属する三次元点の数を示す。なお、三次元データ符号化装置は、三次元点の総数を示す三次元点総数情報(AllNumOfPoint)を別のヘッダに付加してもよい。この場合、三次元データ符号化装置は、最下層に属する三次元点の数を示すNumOfPoint[NumLoD-1]をヘッダに付加しなくてもよい。この場合、三次元データ復号装置は、(式H15)によりNumOfPoint[NumLoD-1]を算出できる。これにより、ヘッダの符号量を削減できる。
階層閾値(Thres_Lod[i])は、階層iの設定に用いられる閾値である。三次元データ符号化装置及び三次元データ復号装置は、LoDi内の各点の間の距離が閾値Thres_LoD[i]より大きくなるようにLoDiを構成する。また、三次元データ符号化装置は、Thres_Lod[NumLoD-1](最下層)の値をヘッダに付加しなくてもよい。この場合、三次元データ復号装置は、Thres_Lod[NumLoD-1]の値を0と推定する。これによりヘッダの符号量を削減できる。
周囲点数情報(NumNeighorPoint[i])は、階層iに属する三次元点の予測値の生成に用いる周囲の点数の上限値を示す。三次元データ符号化装置は、周囲の点数MがNumNeighorPoint[i]に満たない場合(M<NumNeighorPoint[i])は、M個の周囲の点数を用いて予測値を算出してもよい。また、三次元データ符号化装置は、各LoDでNumNeighorPoint[i]の値を分ける必要がない場合は、全てのLoDで使用される1個の周囲点数情報(NumNeighorPoint)をヘッダに付加してもよい。
予測閾値(THd[i])は、階層iにて符号化又は復号対象の対象三次元点の予測に用いる周囲の三次元点と対象三次元点との距離の上限値を示す。三次元データ符号化装置及び三次元データ復号装置は、対象三次元点からの距離がTHd[i]より離れている三次元点を予測に用いない。なお、三次元データ符号化装置は、各LoDでTHd[i]の値を分ける必要がない場合は、全てのLoDで使用される1個の予測閾値(THd)をヘッダに付加してもよい。
量子化スケール(QS[i])は、階層iの量子化及び逆量子化で用いられる量子化スケールを示す。
二値化閾値(R_TH[i])は、階層iに属する三次元点の予測残差の二値化方法を切替えるための閾値である。例えば、三次元データ符号化装置は、予測残差が閾値R_THより小さい場合は、固定ビット数で予測残差puを二値化し、予測残差が閾値R_TH以上の場合は、閾値R_THの二値化データと(pu-R_TH)の値を、指数ゴロムを用いて二値化する。なお、各LoDでR_TH[i]の値を切替える必要がない場合は、三次元データ符号化装置は、全てのLoDで使用される1個の二値化閾値(R_TH)をヘッダに付加してもよい。
なお、R_TH[i]はnbitで表せる最大値であってもよい。例えば6bitではR_THは63であり、8bitではR_THは255である。また、三次元データ符号化装置は、二値化閾値としてnbitで表せる最大値を符号化する代わりに、ビット数を符号化してもよい。例えば、三次元データ符号化装置は、R_TH[i]=63の場合は値6を、R_TH[i]=255の場合は値8をヘッダに付加してもよい。また、三次元データ符号化装置は、R_TH[i]を表すビット数の最小値(最小ビット数)を定義し、最小値からの相対ビット数をヘッダに付加してもよい。例えば、三次元データ符号化装置は、R_TH[i]=63で最小ビット数が6の場合は値0をヘッダに付加し、R_TH[i]=255で最小ビット数が6の場合は値2をヘッダに付加してもよい。
また、三次元データ符号化装置は、NumLoD、Thres_Lod[i]、NumNeighborPoint[i]、THd[i]、QS[i]及びR_TH[i]の少なくとも一つをエントロピー符号化してヘッダに付加してもよい。例えば、三次元データ符号化装置は、各値を二値化して算術符号化してもよい。また、三次元データ符号化装置は、処理量を抑えるために各値を固定長で符号化してもよい。
また、三次元データ符号化装置は、NumLoD、Thres_Lod[i]、NumNeighborPoint[i]、THd[i]、QS[i]、及びR_TH[i]の少なくとも一つをヘッダに付加しなくてもよい。例えば、これらのうちの少なくとも一つの値が、規格等のprofile又はlevel等で規定されてもよい。これによりヘッダのビット量を削減することができる。
図83は、本実施の形態に係る属性データ(attribute_data)のシンタックス例を示す図である。この属性データは、複数の三次元点の属性情報の符号化データを含む。図83に示すように属性データは、nビット符号(n-bit code)と、残り符号(remaining code)とを含む。
nビット符号は(n-bit code)は、属性情報の値の予測残差の符号化データ又はその一部である。nビット符号のビット長はR_TH[i]の値に依存する。例えばR_TH[i]の示す値が63の場合、nビット符号は6bitであり、R_TH[i]の示す値が255の場合、nビット符号は8bitである。
残り符号(remaining code)は、属性情報の値の予測残差の符号化データのうち、指数ゴロムで符号化された符号化データである。この残り符号は、nビット符号がR_TH[i]と同じ場合に符号化又は復号される。また、三次元データ復号装置は、nビット符号の値と残り符号の値を加算して予測残差を復号する。なお、nビット符号がR_TH[i]と同じ値でない場合は、残り符号は符号化又は復号されなくてもよい。
以下、三次元データ符号化装置における処理の流れを説明する。図84は、三次元データ符号化装置による三次元データ符号化処理のフローチャートである。
まず、三次元データ符号化装置は、複数のフレームを結合する(S5601)。例えば、三次元データ符号化装置は、入力された複数のフレームに属する複数の三次元点群を1つの三次元点群に結合する。なお、三次元データ符号化装置は、結合時に、各三次元点群に、各三次元点群が属するフレームを示すフレームインデックスを付加する。
次に、三次元データ符号化装置は、フレーム結合後の位置情報(geometry)を符号化する(S5602)。例えば、三次元データ符号化は、8分木表現を用いて符号化を行う。
三次元データ符号化装置は、位置情報の符号化後に、量子化等によって三次元点の位置が変化した場合に、変化後の三次元点に元の三次元点の属性情報を再割り当てする(S5603)。例えば、三次元データ符号化装置は、位置の変化量に応じて属性情報の値を補間することで再割り当てを行う。例えば、三次元データ符号化装置は、変化後の三次元位置に近い変化前の三次元点をN個検出し、N個の三次元点の属性情報の値を重み付け平均する。例えば、三次元データ符号化装置は、重み付け平均において、変化後の三次元位置から各N個の三次元までの距離に基づいて重みを決定する。そして、三次元データ符号化装置は、重み付け平均により得られた値を変化後の三次元点の属性情報の値に決定する。また、三次元データ符号化装置は、量子化等によって2個以上の三次元点が同一の三次元位置に変化した場合は、その変化後の三次元点の属性情報の値として、変化前の2個以上の三次元点の属性情報の平均値を割当ててもよい。
次に、三次元データ符号化装置は、再割り当て後の属性情報(Attribute)を符号化する(S5604)。ここで、三次元データ符号化装置は、複数の三次元点のそれぞれについて、当該三次元点のフレームインデックスを当該三次元点の属性情報として符号化する。また、例えば、三次元データ符号化装置は、複数種類の属性情報を符号化する場合は、複数種類の属性情報を順に符号化してもよい。例えば、三次元データ符号化装置は、属性情報として、色と反射率とフレームインデックスとを符号化する場合は、色の符号化結果の後に反射率の符号化結果を付加し、かつ、反射率の符号化結果の後にフレームインデックスの符号化結果を付加したビットストリームを生成してもよい。なお、ビットストリームに付加される属性情報の複数の符号化結果の順番は、この順に限らず、どのような順番でもよい。また、三次元データ符号化装置は、フレームインデックスを、色または反射率のような、フレームインデックスと異なる他の属性情報と同じデータ形式で、属性情報として符号化する。このため、符号化データは、フレームインデックスを、フレームインデックスと異なる他の属性情報と同じデータ形式で含む。
また、三次元データ符号化装置は、ビットストリーム内の各属性情報の符号化データ開始場所を示す情報をヘッダ等に付加してもよい。これにより、三次元データ復号装置は、復号が必要な属性情報を選択的に復号できるので、復号が不必要な属性情報の復号処理を省略できる。よって、三次元データ復号装置の処理量を削減できる。また、三次元データ符号化装置は、複数種類の属性情報を並列に符号化し、符号化結果を1つのビットストリームに統合してもよい。これにより、三次元データ符号化装置は、高速に複数種類の属性情報を符号化できる。
図85は、属性情報符号化処理(S5604)のフローチャートである。まず、三次元データ符号化装置は、LoDを設定する(S5611)。つまり、三次元データ符号化装置は、各三次元点を複数のLoDのいずれかに割り当てる。
次に、三次元データ符号化装置は、LoD単位のループを開始する(S5612)。つまり、三次元データ符号化装置は、LoD毎にステップS5613~S5621の処理を繰り返し行う。
次に、三次元データ符号化装置は、三次元点単位のループを開始する(S5613)。つまり、三次元データ符号化装置は、三次元点毎にステップS5614~S5620の処理を繰り返し行う。
まず、三次元データ符号化装置は、処理対象の対象三次元点の予測値の算出に用いる、対象三次元点の周囲に存在する三次元点である複数の周囲点を探索する(S5614)。次に、三次元データ符号化装置は、複数の周囲点の属性情報の値の重み付け平均を算出し、得られた値を予測値Pに設定する(S5615)。次に、三次元データ符号化装置は、対象三次元点の属性情報と予測値との差分である予測残差を算出する(S5616)。次に、三次元データ符号化装置は、予測残差を量子化することで量子化値を算出する(S5617)。次に、三次元データ符号化装置は、量子化値を算術符号化する(S5618)。
また、三次元データ符号化装置は、量子化値を逆量子化することで逆量子化値を算出する(S5619)。次に、三次元データ符号化装置は、逆量子化値に予測値を加算することで復号値を生成する(S5620)。次に、三次元データ符号化装置は、三次元点単位のループを終了する(S5621)。また、三次元データ符号化装置は、LoD単位のループを終了する(S5622)。
以下、上記の三次元データ符号化装置により生成されたビットストリームを復号する三次元データ復号装置における三次元データ復号処理について説明する。
三次元データ復号装置は、三次元データ符号化装置によって生成されたビットストリーム内の属性情報の二値化データを、三次元データ符号化装置と同様の方法で算術復号することで、復号された二値化データを生成する。なお、三次元データ符号化装置において、nビットで二値化した部分(nビット符号)と、指数ゴロムを用いて二値化した部分(残り符号)とで算術符号化の適用方法を切替えた場合は、三次元データ復号装置は、算術復号適用時に、それに合わせて復号を行う。
例えば、三次元データ復号装置は、nビット符号の算術復号方法において、ビット毎に異なる符号化テーブル(復号テーブル)を用いて算術復号を行う。この際、三次元データ復号装置は、ビット毎に使用する符号化テーブルの数を変えてもよい。例えば、nビット符号の先頭ビットb0には1個の符号化テーブルを用いて算術復号を行う。また、三次元データ復号装置は、次のビットb1に対しては2個の符号化テーブルを用いる。また、三次元データ復号装置は、b0の値(0又は1)に応じてビットb1の算術復号に用いる符号化テーブルを切替える。同様に、三次元データ復号装置は、更に次のビットb2に対しては4個の符号化テーブルを用いる。また、三次元データ復号装置は、b0及びb1の値(0~3)に応じて、ビットb2の算術復号に用いる符号化テーブルを切替える。
このように、三次元データ復号装置は、nビット符号の各ビットbn-1を算術復号する際に、2n-1個の符号化テーブルを用いる。また、三次元データ復号装置は、bn-1より前のビットの値(発生パターン)に応じて、使用する符号化テーブルを切替える。これにより、三次元データ復号装置は、ビット毎に適切な符号化テーブルを使用して符号化効率を向上したビットストリームを適切に復号できる。
なお、三次元データ復号装置は、各ビットで使用する符号化テーブルの数を削減してもよい。例えば、三次元データ復号装置は、各ビットbn-1を算術復号する際に、bn-1より前のmビット(m<n-1)の値(発生パターン)に応じて2m個の符号化テーブルを切替えてもよい。これにより、三次元データ復号装置は、各ビットで使用する符号化テーブルの数を抑えつつ、符号化効率を向上したビットストリームを適切に復号できる。なお、三次元データ復号装置は、各符号化テーブルにおける0と1の発生確率を、実際に発生した二値化データの値に応じて更新してもよい。また、三次元データ復号装置は、一部のビットの符号化テーブルにおける0と1の発生確率を固定化してもよい。これにより、発生確率の更新回数を抑制できるので処理量を削減できる。
例えば、nビット符号がb0b1b2…bn-1である場合、b0用の符号化テーブルは1個(CTb0)である。b1用の符号化テーブルは2個(CTb10、CTb11)である。また、b0の値(0~1)に応じて符号化テーブルが切替えられる。b2用の符号化テーブルは4個(CTb20、CTb21、CTb22、CTb23)である。また、b0及びb1の値(0~3)に応じて符号化テーブルが切替えられる。bn-1用の符号化テーブルは、2n-1個(CTbn0、CTbn1、…、CTbn(2n-1-1))である。また、b0b1…bn-2の値(0~2n-1-1)に応じて符号化テーブルが切替えられる。
図86は、例えば、残り符号が指数ゴロム符号である場合の処理を説明するための図である。三次元データ符号化装置が指数ゴロムを用いて二値化して符号化した部分(残り符号)は、図86に示すようにprefix部とsuffix部とを含む。例えば、三次元データ復号装置は、prefix部とsuffix部とで符号化テーブルを切替える。つまり、三次元データ復号装置は、prefix部に含まれる各ビットを、prefix用の符号化テーブルを用いて算術復号し、suffix部に含まれる各ビットを、suffix用の符号化テーブルを用いて算術復号する。
なお、三次元データ復号装置は、各符号化テーブルにおける0と1の発生確率を、復号時に発生した二値化データの値に応じて更新してもよい。または、三次元データ復号装置は、どちらかの符号化テーブルにおける0と1の発生確率を固定化してもよい。これにより、発生確率の更新回数を抑制できるので処理量を削減できる。例えば、三次元データ復号装置は、prefix部に対して発生確率を更新し、suffix部に対して発生確率を固定化してもよい。
また、三次元データ復号装置は、算術復号した予測残差の二値化データを、三次元データ符号化装置で用いられた符号化方法に合わせて多値化することで量子化後の予測残差(符号なし整数値)を復号する。三次元データ復号装置は、まずnビット符号の二値化データを算術復号することで復号したnビット符号の値を算出する。次に、三次元データ復号装置は、nビット符号の値とR_THの値とを比較する。
三次元データ復号装置は、nビット符号の値とR_THの値とが一致した場合、指数ゴロムで符号化されたビットが次に存在すると判定し、指数ゴロムで符号化された二値化データである残り符号を算術復号する。そして、三次元データ復号装置は、復号した残り符号から、残り符号とその値との関係を示す逆引きテーブルを用いて残り符号の値を算出する。図87は、残り符号とその値との関係を示す逆引きテーブルの例を示す図である。次に、三次元データ復号装置は、得られた残り符号の値をR_THに加算することで多値化された量子化後の予測残差を得る。
一方、三次元データ復号装置は、nビット符号の値とR_THの値とが一致しない(R_THより値が小さい)場合、nビット符号の値をそのまま、多値化された量子化後の予測残差に決定する。これにより、三次元データ復号装置は、三次元データ符号化装置で予測残差の値に応じて二値化方法を切替えて生成したビットストリームを適切に復号できる。
なお、三次元データ復号装置は、閾値R_THがビットストリームのヘッダ等に付加されている場合は、閾値R_THの値をヘッダから復号し、復号した閾値R_THの値を用いて復号方法を切替えてもよい。また、三次元データ復号装置は、LoD毎に閾値R_THがヘッダ等に付加されている場合、LoD毎に復号した閾値R_THを用いて復号方法を切替える。
例えば、閾値R_THが63であり、復号したnビット符号の値が63である場合、三次元データ復号装置は、残り符号を指数ゴロムにより復号することで残り符号の値を得る。例えば、図87に示す例では、残り符号が00100であり、残り符号の値として3が得られる。次に、三次元データ復号装置は、閾値R_THの値63と、残り符号の値3とを加算することで予測残差の値66を得る。
また、復号したnビット符号の値が32である場合、三次元データ復号装置は、nビット符号の値32を予測残差の値に設定する。
また、三次元データ復号装置は、復号した量子化後の予測残差を、例えば、三次元データ符号化装置における処理と逆の処理により、符号なし整数値から符号付整数値に変換する。これにより、三次元データ復号装置は、予測残差をエントロピー符号化する場合に、負の整数の発生を考慮せずに生成したビットストリームを適切に復号できる。なお、三次元データ復号装置は、必ずしも符号なし整数値を符号付整数値に変換する必要はなく、例えば符号ビットを別途エントロピー符号化して生成されたビットストリームを復号する場合は、符号ビットを復号してもよい。
三次元データ復号装置は、符号付整数値に変換した量子化後の予測残差を、逆量子化及び再構成によって復号することで復号値を生成する。また、三次元データ復号装置は、生成した復号値を、復号対象の三次元点以降の予測に利用する。具体的には、三次元データ復号装置は、量子化後の予測残差に、復号した量子化スケールを乗算することで逆量子化値を算出し、逆量子化値と予測値とを加算して復号値を得る。
復号された符号なし整数値(符号なし量子化値)は、以下の処理により符号付整数値に変換される。三次元データ復号装置は、復号された符号なし整数値a2uのLSB(least significant bit)が1である場合、符号付整数値a2qを-((a2u+1)>>1)に設定する。三次元データ復号装置は、符号なし整数値a2uのLSBが1でない場合、符号付整数値a2qを(a2u>>1)に設定する。
同様に、三次元データ復号装置は、復号された符号なし整数値b2uのLSBが1である場合、符号付整数値b2qを-((b2u+1)>>1)に設定する。三次元データ復号装置は、符号なし整数値n2uのLSBが1でない場合、符号付整数値b2qを(b2u>>1)に設定する。
また、三次元データ復号装置による逆量子化及び再構成処理の詳細は、三次元データ符号化装置における逆量子化及び再構成処理と同様である。
以下、三次元データ復号装置における処理の流れを説明する。図88は、三次元データ復号装置による三次元データ復号処理のフローチャートである。まず、三次元データ復号装置は、ビットストリームから位置情報(geometry)を復号する(S5631)。例えば、三次元データ復号装置は、8分木表現を用いて復号を行う。
次に、三次元データ復号装置は、ビットストリームから属性情報(Attribute)を復号する(S5632)。例えば、三次元データ復号装置は、複数種類の属性情報を復号する場合は、複数種類の属性情報を順に復号してもよい。例えば、三次元データ復号装置は、属性情報として色と反射率とフレームインデックスとを復号する場合は、ビットストリームに付加されている順に従い、色の符号化結果と反射率の符号化結果とフレームインデックスの符号化結果とを復号する。例えば、ビットストリームにおいて、色の符号化結果の後に反射率の符号化結果が付加されている場合、三次元データ復号装置は、色の符号化結果を復号し、その後に反射率の符号化結果を復号する。また、ビットストリームにおいて、反射率の符号化結果の後にフレームインデックスの符号化結果が付加されている場合、三次元データ復号装置は、反射率の符号化結果の復号の後のフレームインデックスの符号化結果を復号する。なお、三次元データ復号装置は、ビットストリームに付加される属性情報の符号化結果をどのような順番で復号してもよい。
また、三次元データ復号装置は、ビットストリーム内の各属性情報の符号化データ開始場所を示す情報を、ヘッダ等を復号することで取得してもよい。これにより、三次元データ復号装置は、復号が必要な属性情報を選択的に復号できるので、復号が不必要な属性情報の復号処理を省略できる。よって、三次元データ復号装置の処理量を削減できる。また、三次元データ復号装置は、複数種類の属性情報を並列に復号し、復号結果を1つの三次元点群に統合してもよい。これにより、三次元データ復号装置は、高速に複数種類の属性情報を復号できる。
次に、三次元データ復号装置は、復号した三次元点群を各三次元点の位置情報と共に復号されたフレームインデックスの値を元に複数のフレームに分割する(S5633)。三次元データ復号装置は、例えば復号した三次元点aのフレームインデックスが0の場合は、フレーム0に三次元点aの位置情報および属性情報を加え、復号した三次元点bのフレームインデックスが1の場合は、フレーム1に三次元点bの位置情報および属性情報を加えることで、復号により得られた三次元点群を異なる複数のフレームにそれぞれ属する複数の三次元点群に分割する。
図89は、属性情報復号処理(S5632)のフローチャートである。まず、三次元データ復号装置は、LoDを設定する(S5641)。つまり、三次元データ復号装置は、復号された位置情報を有する複数の三次元点の各々を複数のLoDのいずれかに割り当てる。例えば、この割り当て方法は、三次元データ符号化装置で用いられた割り当て方法と同じ方法である。
次に、三次元データ復号装置は、LoD単位のループを開始する(S5642)。つまり、三次元データ復号装置は、LoD毎にステップS5643~S5649の処理を繰り返し行う。
次に、三次元データ復号装置は、三次元点単位のループを開始する(S5643)。つまり、三次元データ復号装置は、三次元点毎にステップS5644~S5648の処理を繰り返し行う。
まず、三次元データ復号装置は、処理対象の対象三次元点の予測値の算出に用いる、対象三次元点の周囲に存在する三次元点である複数の周囲点を探索する(S5644)。次に、三次元データ復号装置は、複数の周囲点の属性情報の値の重み付け平均を算出し、得られた値を予測値Pに設定する(S5645)。なお、これらの処理は三次元データ符号化装置における処理と同様である。
次に、三次元データ復号装置は、ビットストリームから量子化値を算術復号する(S5646)。また、三次元データ復号装置は、復号した量子化値を逆量子化することで逆量子化値を算出する(S5647)。次に、三次元データ復号装置は、逆量子化値に予測値を加算することで復号値を生成する(S5648)。次に、三次元データ復号装置は、三次元点単位のループを終了する(S5649)。また、三次元データ復号装置は、LoD単位のループを終了する(S5650)。
次に、本実施の形態に係る三次元データ符号化装置及び三次元データ復号装置の構成を説明する。図90は、本実施の形態に係る三次元データ符号化装置5600の構成を示すブロック図である。この三次元データ符号化装置5600は、フレーム結合部5601と、位置情報符号化部5602と、属性情報再割り当て部5603と、属性情報符号化部5604とを備える。
フレーム結合部5601は、複数のフレームを結合する。位置情報符号化部5602は、入力点群に含まれる複数の三次元点の位置情報(geometry)を符号化する。属性情報再割り当て部5603は、入力点群に含まれる複数の三次元点の属性情報の値を、位置情報の符号化及び復号結果を用いて再割り当てする。属性情報符号化部5604は、再割り当てされた属性情報(attribute)を符号化する。また、三次元データ符号化装置5600は、符号化された位置情報及び符号化された属性情報を含むビットストリームを生成する。
図91は、本実施の形態に係る三次元データ復号装置5610の構成を示すブロック図である。この三次元データ復号装置5610は、位置情報復号部5611と、属性情報復号部5612と、フレーム分割部5613とを含む。
位置情報復号部5611は、ビットストリームから複数の三次元点の位置情報(geometry)を復号する。属性情報復号部5612は、ビットストリームから複数の三次元点の属性情報(attribute)を復号する。フレーム分割部5613は、復号した三次元点群を各三次元点の位置情報と共に復号されたフレームインデックスの値を元に複数のフレームに分割する。また、三次元データ復号装置5610は、復号した位置情報と復号した属性情報とを結合することで出力点群を生成する。
図92は、属性情報の構成を示す図である。図92の(a)は、圧縮された属性情報の構成を示す図であり、図92の(b)は、属性情報のヘッダのシンタックスの一例を示す図であり、図92の(c)は、属性情報のペイロード(データ)のシンタックスの一例を示す図である。
図92の(b)に示すように、属性情報のヘッダのシンタックスについて説明する。apx_idxは、対応するパラメータセットのIDを示す。apx_idxでは、フレーム毎にパラメータセットがある場合、複数のIDが示されてもよい。offsetは、結合データを取得するためのオフセット位置を示す。other_attribute_informationは、例えば量子化パラメータの差分値を示すQPデルタなどのように、その他の属性データを示す。combine_frame_flagは、符号化データがフレーム結合されているか否かを示すフラグである。number_of _combine_frameは、結合されたフレームの数Nを示す。number_of _combine_frameは、SPSまたはAPSに含まれていてもよい。
refer_different_frameは、符号化/復号対象の対象三次元点の属性情報を、同一フレーム、または、同一フレームおよび同一フレーム以外に属する周囲三次元点の属性情報を用いて符号化/復号するかを示すフラグである。例えば、下記のような値の割り当てが考えられる。refer_different_frameが0の場合、三次元データ符号化装置または三次元データ復号装置は、対象三次元点と同一フレーム内の周囲三次元点の属性情報を用いて対象三次元点の属性情報を符号化/復号する。この場合、三次元データ符号化装置または三次元データ復号装置は、対象三次元点と異なるフレーム内の周囲三次元点の属性情報を用いて対象三次元点の属性情報を符号化/復号しない。
一方、refer_different_frameが1の場合、三次元データ符号化装置または三次元データ復号装置は、対象三次元点が属するフレームと同一フレームおよび同一フレーム以外の周囲三次元点の属性情報を用いて対象三次元点の属性情報を符号化/復号する。つまり、三次元データ符号化装置または三次元データ復号装置は、対象三次元点が属するフレームと同一フレームに属するか否かに関わらず、周囲三次元点の属性情報を用いて対象三次元点の属性情報を符号化/復号する。
対象三次元点の属性情報として、色情報または反射率情報を周囲三次元点の属性情報を用いて符号化する例を示したが、対象三次元点のフレームインデックスを周囲三次元点のフレームインデックスを用いて符号化してもよい。三次元データ符号化装置は、例えば、複数フレームを結合した際に各三次元点に付加したフレームインデックスを各三次元点の属性情報とし、本開示で説明した予測符号化方法を用いて符号化しても構わない。例えば、三次元データ符号化装置は、三次元点Aのフレームインデックスの予測値を、三次元点Aの周囲三次元点B,C,Dのフレームインデックスの値から算出し、予測残差を符号化しても構わない。これにより、三次元データ符号化装置は、フレームインデックスを符号化するためのビット量を削減することができ、符号化効率を向上することができる。
図93は、符号化データについて説明するための図である。
点群データが属性情報を含む場合、属性情報がフレーム結合されてもよい。属性情報は、位置情報を参照して符号化または復号される。参照される位置情報は、フレーム結合する前の位置情報であってもよいし、フレーム結合した後の位置情報であってもよい。位置情報の結合フレームの数と属性情報の結合フレームの数とは、同じであってもよいし、独立しており、異なっていてもよい。
図93における括弧内の数値は、フレームを示しており、例えば1の場合、フレーム1の情報であることを示し、1-4の場合、結合されたフレーム1~4の情報であることを示す。また、Gは、位置情報を示し、Aは、属性情報を示す。Frame_idx1は、フレーム1のフレームインデックスである。
図93の(a)は、refer_different_frameが1の場合の例を示す。refer_different_frameが1の場合、三次元データ符号化装置または三次元データ復号装置は、G(1-4)の情報を元にA(1-4)を符号化または復号する。三次元データ復号装置は、復号時に、G(1-4)とともに復号されたFrame_idx1-4を用いてG(1-4)とA(1-4)とをFrame1-4に分割する。なお、A(1-4)を符号化または復号する場合、三次元データ符号化装置または三次元データ復号装置は、A(1-4)の他の属性情報を参照してもよい。つまり、三次元データ符号化装置または三次元データ復号装置は、A(1)を符号化または復号する場合、他のA(1)を参照してもよいし、A(2-4)を参照してもよい。また、矢印は、情報の参照元と参照先とを示し、矢印の元は参照元を示し、矢印の先は参照先を示す。
図93の(b)は、refer_different_frameが0の場合の例を示す。refer_different_frameが0の場合、refer_different_frameが1の場合とは異なり、三次元データ符号化装置または三次元データ復号装置は、異なるフレームの属性情報を参照しない。つまり、三次元データ符号化装置または三次元データ復号装置は、A(1)を符号化または復号する場合、他のA(1)を参照し、A(2-4)を参照しない。
図93の(c)は、refer_different_frameが0の場合の別の例を示す。この場合では、位置情報は、結合されたフレームで符号化されているが、属性情報は、フレーム毎に符号化されている。このため、三次元データ符号化装置または三次元データ復号装置は、A(1)を符号化または復号する場合、他のA(1)を参照する。同様に、属性情報を符号化または復号する場合、同じフレームに属する他の属性情報を参照する。なお、A(1-4)は、それぞれのAPSをヘッダに付加してもよい。
以上のように、本実施の形態に係る三次元データ符号化装置は、図94に示す処理を行う。三次元データ符号化装置は、第1点群データと第2点群データとが結合された第3点群データであって、第3点群データに含まれる複数の三次元点のそれぞれの位置情報と、複数の三次元点のそれぞれが第1点群データと第2点群データとのいずれに属するかを示す識別情報とを含む第3点群データを取得する(S5661)。次に、三次元データ符号化装置は、取得された第3点群データを符号化することで符号化データを生成する(S5662)。三次元データ符号化装置は、符号化データの生成において、複数の三次元点のそれぞれについて、当該三次元点の識別情報を当該三次元点の属性情報として符号化する。
これによれば、当該三次元データ符号化方法は、複数の点群データをまとめて符号化することにより符号化効率を向上することができる。
例えば、符号化データの生成(S5662)では、複数の三次元点のうちの第1三次元点の周囲の第2三次元点の属性情報を用いて、第1三次元点の属性情報を符号化する。
例えば、第1三次元点の属性情報は、第1三次元点が第1点群データに属することを示す第1識別情報を含む。また、第2三次元点の属性情報は、第2三次元点が第2点群データに属することを示す第2識別情報を含む。
例えば、符号化データの生成(S5662)では、第1三次元点の属性情報の予測値を第2三次元点の属性情報を用いて算出し、第1三次元点の属性情報と、予測値との差分である予測残差を算出し、予測残差を含む符号化データを生成する。
例えば、取得(S5661)では、第1点群データと第2点群データとを結合することで第3点群データを生成することで、第3点群データを取得する。
例えば、符号化データは、識別情報を、識別情報と異なる他の属性情報と同じデータ形式で含む。
例えば、三次元データ符号化装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態に係る三次元データ復号装置は、図95に示す処理を行う。三次元データ復号装置は、符号化データを取得する(S5671)。次に、三次元データ復号装置は、符号化データを復号することで、第1点群データと第2点群データとが結合された第3点群データに含まれる複数の三次元点のそれぞれの位置情報および属性情報とを取得する(S5672)。なお、属性情報は、属性情報に対応する三次元点が第1点群データと第2点群データとのいずれに属するかを示す識別情報を含む。
これによれば、三次元データ復号装置は、複数の点群データをまとめて符号化することにより符号化効率を向上した符号化データを復号することができる。
例えば、取得(S5671)では、複数の三次元点のうちの第1三次元点の周囲の第2三次元点の属性情報を用いて、第1三次元点の属性情報を復号する。
例えば、第1三次元点の属性情報は、第1三次元点が第1点群データに属することを示す第1識別情報を含む。また、第2三次元点の属性情報は、第2三次元点が第2点群データに属することを示す第2識別情報を含む。
例えば、符号化データは、予測残差を含む。そして、符号化データの復号(S5672)では、第1三次元点の属性情報の予測値を第2三次元点の属性情報を用いて算出し、予測値と予測残差とを加算することで、第1三次元点の属性情報を算出する。
例えば、三次元データ復号装置は、さらに、識別情報を用いて、第3三次元点群データと、第1点群データと第2点群データとに分割する。
例えば、符号化データは、識別情報を、識別情報と異なる他の属性情報と同じデータ形式で含む。
例えば、三次元データ復号装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
以上、本開示の実施の形態に係る三次元データ符号化装置及び三次元データ復号装置等について説明したが、本開示は、この実施の形態に限定されるものではない。
また、上記実施の形態に係る三次元データ符号化装置及び三次元データ復号装置等に含まれる各処理部は典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されてもよいし、一部又は全てを含むように1チップ化されてもよい。
また、集積回路化はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)、又はLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
また、上記各実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。
また、本開示は、三次元データ符号化装置及び三次元データ復号装置等により実行される三次元データ符号化方法又は三次元データ復号方法等として実現されてもよい。
また、ブロック図における機能ブロックの分割は一例であり、複数の機能ブロックを一つの機能ブロックとして実現したり、一つの機能ブロックを複数に分割したり、一部の機能を他の機能ブロックに移してもよい。また、類似する機能を有する複数の機能ブロックの機能を単一のハードウェア又はソフトウェアが並列又は時分割に処理してもよい。
また、フローチャートにおける各ステップが実行される順序は、本開示を具体的に説明するために例示するためのものであり、上記以外の順序であってもよい。また、上記ステップの一部が、他のステップと同時(並列)に実行されてもよい。
以上、一つまたは複数の態様に係る三次元データ符号化装置及び三次元データ復号装置等について、実施の形態に基づいて説明したが、本開示は、この実施の形態に限定されるものではない。本開示の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、一つまたは複数の態様の範囲内に含まれてもよい。