本開示の一態様に係る三次元データ符号化方法は、階層構造を有する複数の三次元点を符号化する三次元データ符号化方法であって、第1三次元点の周囲の1以上の第2三次元点の第2位置情報を用いて、前記第1三次元点の第1位置情報の予測値を算出するための2以上の予測モードのうちの1つの予測モードを設定し、設定された前記予測モードの予測値を算出し、前記第1位置情報と、算出された前記予測値との差分である予測残差を算出し、前記設定された予測モードと前記予測残差とを含む第1ビットストリームを生成し、前記設定では、前記第1三次元点の前記階層構造の深さに基づいて、前記予測モードを設定する。
これによれば、2以上の予測モードのうちで、階層構造の深さに基づいて設定された1つの予測モードの予測値を用いて位置情報を符号化できるため、位置情報の符号化効率を向上させることができる。
また、前記設定では、前記第1三次元点の前記階層構造の深さの値以下の、予測モード値を設定し、前記予測モード値は、前記予測モードを示してもよい。
また、前記第1ビットストリームは、さらに、前記2以上の予測モードの数を示す予測モード数を含んでもよい。
また、前記生成では、設定された前記予測モードを示す予測モード値を、前記予測モード数を用いて符号化し、前記第1ビットストリームは、符号化された前記予測モード値を、前記設定された予測モードとして含んでもよい。
また、前記生成では、前記予測モード数を最大値としたtruncated unary codeで前記予測モード値を符号化してもよい。
このため、予測モード値の符号量を低減することができる。
また、前記第1位置情報、及び、前記第2位置情報のそれぞれは、3つの要素を含み、前記設定では、前記第1位置情報が含む3つの要素の各要素の予測値を算出するための前記1つの予測モードとして、前記3つの要素について共通した予測モードを設定してもよい。
このため、予測モード値の符号量を低減することができる。
また、前記第1位置情報、及び、前記第2位置情報のそれぞれは、3つの要素を含み、前記設定では、前記第1位置情報が含む3つの要素の各要素の予測値を算出するための前記1つの予測モードとして、前記3つの要素それぞれについて独立した予測モードを設定してもよい。
このため、三次元データ復号装置は、各要素を独立して復号することができる。
また、前記第1位置情報、及び、前記第2位置情報のそれぞれは、3つの要素を含み、前記設定では、前記第1位置情報が含む3つの要素の各要素の予測値を算出するための前記1つの予測モードとして、前記3つの要素のうちの2つの要素について共通した予測モードを設定し、残りの1つの要素について前記2つの要素とは独立した予測モードを設定してもよい。
このため、2つの要素についての予測モード値の符号量を低減することができる。また、三次元データ復号装置は、残りの1つの要素を独立して復号することができる。
また、前記生成では、前記予測モード数が1である場合、前記予測モードを示す予測モード値を符号化せずに、前記予測モード値を含まない第2ビットストリームを生成してもよい。
このため、ビットストリームの符号量を低減することができる。
また、前記生成では、前記算出において算出される予測値が0となる予測モードが設定されている場合、前記予測残差が正であるか負であるかを示す正負情報を符号化せずに、前記正負情報を含まない第3ビットストリームを生成してもよい。
このため、ビットストリームの符号量を低減することができる。
本開示の一態様に係る三次元データ復号方法は、階層構造を有する複数の三次元点を復号する三次元データ復号方法であって、符号化された、前記複数の三次元点のうちの第1三次元点の予測モード、及び、符号化された予測残差を含む第1ビットストリームを取得し、前記符号化された予測モードを示す予測モード値、及び、前記符号化された予測残差を復号し、復号することで得られた前記予測モード値で示される予測モードの予測値を算出し、前記予測値と、復号することで得られた予測残差とを加算することで、前記第1三次元点の第1位置情報を算出し、前記第1ビットストリームに含まれる、符号化された前記予測モードは、前記第1三次元点の前記階層構造の深さに基づいて設定された予測モードである。
これによれば、2以上の予測モードのうちで、階層構造の深さに基づいて設定された1つの予測モードの予測値を用いて符号化された位置情報を適切に復号することができる。
また、前記第1ビットストリームに含まれる、符号化された予測モードを示す予測モード値は、前記第1三次元点の前記階層構造の深さの値以下であってもよい。
また、前記第1ビットストリームは、前記2以上の予測モードの数を示す予測モード数を含んでもよい。
また、前記復号では、前記予測モード数を最大値としたtruncated unary codeで前記符号化された予測モード値を復号してもよい。
また、前記第1位置情報、及び、前記第1三次元点の周囲の1以上の第2三次元点の第2位置情報のそれぞれは、3つの要素を含み、前記予測モードは、前記第1位置情報が含む3つの要素の各要素の予測値を算出するために用いられ、前記3つの要素について共通して設定されていてもよい。
また、前記第1位置情報、及び、前記第1三次元点の周囲の1以上の第2三次元点の第2位置情報のそれぞれは、3つの要素を含み、前記予測モードは、前記第1位置情報が含む3つの要素の各要素の予測値を算出するために用いられ、前記3つの要素それぞれについて独立して設定されていてもよい。
また、前記第1位置情報、及び、前記第1三次元点の周囲の1以上の第2三次元点の第2位置情報のそれぞれは、3つの要素を含み、前記予測モードは、前記第1位置情報が含む3つの要素の各要素の予測値を算出するために用いられ、前記3つの要素のうちの2つの要素について共通して設定されており、かつ、残りの1つの要素について前記2つの要素とは独立して設定されていてもよい。
また、前記取得において、前記予測モード値を含まない第2ビットストリームを取得した場合、前記予測値の算出では、特定の予測モードの予測値を算出してもよい。
また、前記取得において、前記予測残差が正であるか負であるかを示す正負情報を含まない第3ビットストリームを取得した場合、前記第1位置情報の算出では、前記予測残差を0又は正の数として扱ってもよい。
また、本開示の一態様に係る三次元データ符号化装置は、複数の三次元点を符号化する三次元データ符号化装置であって、プロセッサと、メモリとを備え、前記プロセッサは、前記メモリを用いて、階層構造を有する複数の三次元点を符号化する三次元データ符号化方法であって、第1三次元点の周囲の1以上の第2三次元点の第2位置情報を用いて、前記第1三次元点の第1位置情報の予測値を算出するための2以上の予測モードのうちの1つの予測モードを設定し、設定された前記予測モードの予測値を算出し、前記第1位置情報と、算出された前記予測値との差分である予測残差を算出し、前記設定された予測モードと前記予測残差とを含む第1ビットストリームを生成し、前記設定では、前記第1三次元点の前記階層構造の深さに基づいて、前記予測モードを設定する。
これによれば、2以上の予測モードのうちで、階層構造の深さに基づいて設定された1つの予測モードの予測値を用いて位置情報を符号化できるため、位置情報の符号化効率を向上させることができる。
また、本開示の一態様に係る三次元データ復号装置は、複数の三次元点を復号する三次元データ復号装置であって、プロセッサと、メモリとを備え、前記プロセッサは、前記メモリを用いて、階層構造を有する複数の三次元点を復号する三次元データ復号方法であって、符号化された、前記複数の三次元点のうちの第1三次元点の予測モード、及び、符号化された予測残差を含む第1ビットストリームを取得し、前記符号化された予測モードを示す予測モード値、及び、前記符号化された予測残差を復号し、復号することで得られた前記予測モード値で示される予測モードの予測値を算出し、前記予測値と、復号することで得られた予測残差とを加算することで、前記第1三次元点の第1位置情報を算出し、前記第1ビットストリームに含まれる、符号化された前記予測モードは、前記第1三次元点の前記階層構造の深さに基づいて設定された予測モードである。
これによれば、2以上の予測モードのうちで、階層構造の深さに基づいて設定された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は、位置情報及び属性情報の復号処理に必要な付加情報を復号時に使用し、アプリケーションに必要な付加情報を外部に出力する。
次に、位置情報符号化部の構成例を説明する。図9は、本実施の形態に係る位置情報符号化部2700のブロック図である。位置情報符号化部2700は、8分木生成部2701と、幾何情報算出部2702と、符号化テーブル選択部2703と、エントロピー符号化部2704とを備える。
8分木生成部2701は、入力された位置情報から、例えば8分木を生成し、8分木の各ノードのオキュパンシー符号を生成する。幾何情報算出部2702は、対象ノードの隣接ノードが占有ノードか否かを示す情報を取得する。例えば、幾何情報算出部2702は、対象ノードが所属する親ノードのオキュパンシー符号から隣接ノードの占有情報(隣接ノードが占有ノードであるか否かを示す情報)を算出する。また、幾何情報算出部2702は、符号化済みのノードをリストに保存しておき、そのリスト内から隣接ノードを探索してもよい。なお、幾何情報算出部2702は、対象ノードの親ノード内の位置に応じて隣接ノードを切替えてもよい。
符号化テーブル選択部2703は、幾何情報算出部2702で算出された隣接ノードの占有情報を用いて対象ノードのエントロピー符号化に用いる符号化テーブルを選択する。例えば、符号化テーブル選択部2703は、隣接ノードの占有情報を用いてビット列を生成し、そのビット列から生成されるインデックス番号の符号化テーブルを選択してもよい。
エントロピー符号化部2704は、選択されたインデックス番号の符号化テーブルを用いて対象ノードのオキュパンシー符号にエントロピー符号化を行うことで符号化位置情報及びメタデータを生成する。エントロピー符号化部2704は、選択された符号化テーブルを示す情報を符号化位置情報に付加してもよい。
以下、8分木表現と位置情報のスキャン順について説明する。位置情報(位置データ)は8分木構造に変換(8分木化)された後、符号化される。8分木構造はノードとリーフとで構成される。各ノードは8つのノード又はリーフを持ち、各リーフはボクセル(VXL)情報を持つ。図10は、複数のボクセルを含む位置情報の構造例を示す図である。図11は、図10に示す位置情報を8分木構造に変換した例を示す図である。ここで、図11に示すリーフのうち、リーフ1、2、3はそれぞれ図10に示すボクセルVXL1、VXL2、VXL3を表し、点群を含むVXL(以下、有効VXL)を表現している。
具体的には、ノード1は、図10の位置情報を包含する全体空間に対応する。ノード1に対応する全体空間は8つのノードに分割され、8つのノードのうち、有効VXLを含むノードが、さらに8つのノードまたはリーフに分割され、この処理が木構造の階層分繰り返される。ここで、各ノードはサブ空間に対応し、ノード情報として分割後のどの位置に次のノードまたはリーフを持つかを示す情報(オキュパンシー符号)を持つ。また、最下層のブロックはリーフに設定され、リーフ情報としてリーフ内に含まれる点群数などが保持される。
次に、位置情報復号部の構成例を説明する。図12は、本実施の形態に係る位置情報復号部2710のブロック図である。位置情報復号部2710は、8分木生成部2711と、幾何情報算出部2712と、符号化テーブル選択部2713と、エントロピー復号部2714とを備える。
8分木生成部2711は、ビットストリームのヘッダ情報又はメタデータ等を用いて、ある空間(ノード)の8分木を生成する。例えば、8分木生成部2711は、ヘッダ情報に付加されたある空間のx軸、y軸、z軸方向の大きさを用いて大空間(ルートノード)を生成し、その空間をx軸、y軸、z軸方向にそれぞれ2分割することで8個の小空間A(ノードA0~A7)を生成することで8分木を生成する。また、対象ノードとしてノードA0~A7が順に設定される。
幾何情報算出部2712は、対象ノードの隣接ノードが占有ノードであるか否かを示す占有情報を取得する。例えば、幾何情報算出部2712は、対象ノードが所属する親ノードのオキュパンシー符号から隣接ノードの占有情報を算出する。また、幾何情報算出部2712は、復号済みのノードをリストに保存しておき、そのリスト内から隣接ノードを探索してもよい。なお、幾何情報算出部2712は、対象ノードの親ノード内の位置に応じて隣接ノードを切替えてもよい。
符号化テーブル選択部2713は、幾何情報算出部2712で算出された隣接ノードの占有情報を用いて対象ノードのエントロピー復号に用いる符号化テーブル(復号テーブル)を選択する。例えば、符号化テーブル選択部2713は、隣接ノードの占有情報を用いてビット列を生成し、そのビット列から生成されるインデックス番号の符号化テーブルを選択してもよい。
エントロピー復号部2714は、選択された符号化テーブルを用いて対象ノードのオキュパンシー符号をエントロピー復号することで、位置情報を生成する。なお、エントロピー復号部2714は、選択された符号化テーブルの情報をビットストリームから復号して取得し、当該情報で示される符号化テーブルを用いて、対象ノードのオキュパンシー符号をエントロピー復号してもよい。
以下、属性情報符号化部及び属性情報復号部の構成を説明する。図13は属性情報符号化部A100の構成例を示すブロック図である。属性情報符号化部は異なる符号化方法を実行する複数の符号化部を含んでもよい。例えば、属性情報符号化部は、下記の2方式をユースケースに応じて切替えて用いてもよい。
属性情報符号化部A100は、LoD属性情報符号化部A101と、変換属性情報符号化部A102とを含む。LoD属性情報符号化部A101は、三次元点の位置情報を用いて各三次元点を複数階層に分類し、各階層に属する三次元点の属性情報を予測して、その予測残差を符号化する。ここで、分類した各階層をLoD(Level of Detail)と呼ぶ。
変換属性情報符号化部A102は、RAHT(Region Adaptive Hierarchical Transform)を用いて属性情報を符号化する。具体的には、変換属性情報符号化部A102は、三次元点の位置情報を元に各属性情報に対してRAHTまたはHaar変換を適用することで、各階層の高周波成分および低周波数成分を生成し、それらの値を量子化及びエントロピー符号化等を用いて符号化する。
図14は属性情報復号部A110の構成例を示すブロック図である。属性情報復号部は異なる復号方法を実行する複数の復号部を含んでもよい。例えば、属性情報復号部は、下記の2方式をヘッダやメタデータに含まれる情報を元に切替えて復号してもよい。
属性情報復号部A110は、LoD属性情報復号部A111と、変換属性情報復号部A112とを含む。LoD属性情報復号部A111は、三次元点の位置情報を用いて各三次元点を複数階層に分類し、各階層に属する三次元点の属性情報を予測しながら属性値を復号する。
変換属性情報復号部A112は、RAHT(Region Adaptive Hierarchical Transform)を用いて属性情報を復号する。具体的には、変換属性情報復号部A112は、三次元点の位置情報を元に各属性値の高周波成分および低周波成分に対して、inverse RAHTまたはinverse Haar変換を適用することで属性値を復号する。
図15は、LoD属性情報符号化部A101の一例である属性情報符号化部3140の構成を示すブロック図である。
属性情報符号化部3140は、LoD生成部3141と、周囲探索部3142と、予測部3143と、予測残差算出部3144と、量子化部3145と、算術符号化部3146と、逆量子化部3147と、復号値生成部3148と、メモリ3149と、を含む。
LoD生成部3141は、三次元点の位置情報を用いてLoDを生成する。
周囲探索部3142は、LoD生成部3141によるLoDの生成結果と各三次元点間の距離を示す距離情報とを用いて、各三次元点に隣接する近隣三次元点を探索する。
予測部3143は、符号化対象の対象三次元点の属性情報の予測値を生成する。
予測残差算出部3144は、予測部3143により生成された属性情報の予測値の予測残差を算出(生成)する。
量子化部3145は、予測残差算出部3144により算出された属性情報の予測残差を量子化する。
算術符号化部3146は、量子化部3145により量子化された後の予測残差を算術符号化する。算術符号化部3146は、算術符号化した予測残差を含むビットストリームを、例えば、三次元データ復号装置に出力する。
なお、予測残差は、算術符号化部3146によって算術符号化される前に、例えば量子化部3145によって二値化されてもよい。
また、例えば、算術符号化部3146は、算術符号化に用いる符号化テーブルを算術符号化前に初期化してもよい。算術符号化部3146は、算術符号化に用いる符号化テーブルを、層毎に初期化してもよい。また、算術符号化部3146は、符号化テーブルを初期化した層の位置を示す情報をビットストリームに含めて出力してもよい。
逆量子化部3147は、量子化部3145によって量子化された後の予測残差を逆量子化する。
復号値生成部3148は、予測部3143により生成された属性情報の予測値と、逆量子化部3147により逆量子化された後の予測残差とを加算することで復号値を生成する。
メモリ3149は、復号値生成部3148により復号された各三次元点の属性情報の復号値を記憶するメモリである。例えば、予測部3143は、まだ符号化していない三次元点の予測値を生成する場合に、メモリ3149に記憶されている各三次元点の属性情報の復号値を利用して予測値を生成する。
図16は、変換属性情報符号化部A102の一例である属性情報符号化部6600のブロック図である。属性情報符号化部6600は、ソート部6601と、Haar変換部6602と、量子化部6603と、逆量子化部6604と、逆Haar変換部6605と、メモリ6606と、算術符号化部6607とを備える。
ソート部6601は、三次元点の位置情報を用いてモートン符号を生成し、複数の三次元点をモートン符号順にソートする。Haar変換部6602は、属性情報にHaar変換を適用することで符号化係数を生成する。量子化部6603は、属性情報の符号化係数を量子化する。
逆量子化部6604は、量子化後の符号化係数を逆量子化する。逆Haar変換部6605は、符号化係数に逆Haar変換を適用する。メモリ6606は、復号済みの複数の三次元点の属性情報の値を記憶する。例えば、メモリ6606に記憶される復号済みの三次元点の属性情報は、符号化されていない三次元点の予測等に利用されてもよい。
算術符号化部6607は、量子化後の符号化係数からZeroCntを算出し、ZeroCntを算術符号化する。また、算術符号化部6607は、量子化後の非ゼロの符号化係数を算術符号化する。算術符号化部6607は、符号化係数を算術符号化前に二値化してもよい。また、算術符号化部6607は、各種ヘッダ情報を生成及び符号化してもよい。
図17は、LoD属性情報復号部A111の一例である属性情報復号部3150の構成を示すブロック図である。
属性情報復号部3150は、LoD生成部3151と、周囲探索部3152と、予測部3153と、算術復号部3154と、逆量子化部3155と、復号値生成部3156と、メモリ3157と、を含む。
LoD生成部3151は、位置情報復号部(図17には不図示)により復号された三次元点の位置情報を用いてLoDを生成する。
周囲探索部3152は、LoD生成部3151によるLoDの生成結果と各三次元点間の距離を示す距離情報とを用いて、各三次元点に隣接する近隣三次元点を探索する。
予測部3153は、復号対象の対象三次元点の属性情報の予測値を生成する。
算術復号部3154は、図15に示す属性情報符号化部3140より取得したビットストリーム内の予測残差を算術復号する。なお、算術復号部3154は、算術復号に用いる復号テーブルを初期化してもよい。算術復号部3154は、図15に示す算術符号化部3146が符号化処理を行った層について、算術復号に用いる復号テーブルを初期化する。算術復号部3154は、算術復号に用いる復号テーブルを層毎に初期化してもよい。また、算術復号部3154は、ビットストリームに含まれる、符号化テーブルを初期化した層の位置を示す情報に基づいて、復号テーブルを初期化してもよい。
逆量子化部3155は、算術復号部3154が算術復号した予測残差を逆量子化する。
復号値生成部3156は、予測部3153により生成された予測値と逆量子化部3155により逆量子化された後の予測残差とを加算して復号値を生成する。復号値生成部3156は、復号された属性情報データを他の装置へ出力する。
メモリ3157は、復号値生成部3156により復号された各三次元点の属性情報の復号値を記憶するメモリである。例えば、予測部3153は、まだ復号していない三次元点の予測値を生成する場合に、メモリ3157に記憶されている各三次元点の属性情報の復号値を利用して予測値を生成する。
図18は、変換属性情報復号部A112の一例である属性情報復号部6610のブロック図である。属性情報復号部6610は、算術復号部6611と、逆量子化部6612と、逆Haar変換部6613と、メモリ6614とを備える。
算術復号部6611は、ビットストリームに含まれるZeroCntと符号化係数を算術復号する。なお、算術復号部6611は、各種ヘッダ情報を復号してもよい。
逆量子化部6612は、算術復号した符号化係数を逆量子化する。逆Haar変換部6613は、逆量子化後の符号化係数に逆Haar変換を適用する。メモリ6614は、復号済みの複数の三次元点の属性情報の値を記憶する。例えば、メモリ6614に記憶される復号済みの三次元点の属性情報は、復号されていない三次元点の予測に利用されてもよい。
次に、第2の符号化方法の符号化を行う符号化部4613の例である第2の符号化部4650について説明する。図19は、第2の符号化部4650の構成を示す図である。図20は、第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について説明する。図21は、第2の復号部4660の構成を示す図である。図22は、第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符号化方式における課題を説明する。図23は、PCC符号化データに関わるプロトコルスタックを示す図である。図23には、PCC符号化データに、映像(例えばHEVC)又は音声などの他のメディアのデータを多重し、伝送又は蓄積する例を示す。
多重化方式及びファイルフォーマットは、様々な符号化データを多重し、伝送又は蓄積するための機能を有している。符号化データを伝送又は蓄積するためには、符号化データを多重化方式のフォーマットに変換しなければならない。例えば、HEVCでは、NALユニットと呼ばれるデータ構造に符号化データを格納し、NALユニットをISOBMFFに格納する技術が規定されている。
一方、現在、点群データの符号化方法として第1の符号化方法(Codec1)、及び第2の符号化方法(Codec2)が検討されているが、符号化データの構成、及び符号化データをシステムフォーマットへ格納する方法が定義されておらず、このままでは符号化部におけるMUX処理(多重化)、伝送及び蓄積ができないという課題がある。
なお、以降において、特定の符号化方法の記載がなければ、第1の符号化方法、及び第2の符号化方法のいずれかを示すものとする。
(実施の形態2)
本実施の形態では、上述した第1の符号化部4630、又は第2の符号化部4650で生成される符号化データ(位置情報(Geometry)、属性情報(Attribute)、付加情報(Metadata))の種別、及び付加情報(メタデータ)の生成方法、及び多重化部における多重処理について説明する。なお、付加情報(メタデータ)は、パラメータセット、又は制御情報と表記することもある。
本実施の形態では、図4で説明した動的オブジェクト(時間的に変化する三次元点群データ)を例に説明するが、静的オブジェクト(任意の時刻の三次元点群データ)の場合でも同様の方法を用いてもよい。
図24は、本実施の形態に係る三次元データ符号化装置に含まれる符号化部4801及び多重化部4802の構成を示す図である。符号化部4801は、例えば、上述した第1の符号化部4630又は第2の符号化部4650に対応する。多重化部4802は、上述した多重化部4634又は4656に対応する。
符号化部4801は、複数のPCC(Point Cloud Compression)フレームの点群データを符号化し、複数の位置情報、属性情報及び付加情報の符号化データ(Multiple Compressed Data)を生成する。
多重化部4802は、複数のデータ種別(位置情報、属性情報及び付加情報)のデータをNALユニット化することで、データを復号装置におけるデータアクセスを考慮したデータ構成に変換する。
図25は、符号化部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)で表す。また、図25では、属性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の符号化方法では、符号化属性データは符号化位置データに依存する。
また、図25では2種類の属性情報(属性Xと属性Y)が存在する場合の例を示している。2種類の属性情報がある場合は、例えば、2つの符号化部により、それぞれのデータ及びメタデータが生成される。また、例えば、属性情報の種類毎に属性シーケンスが定義され、属性情報の種類毎に属性SPSが生成される。
なお、図25では、位置情報が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ユニットへの格納方法を説明する。
例えば、符号化データの種類毎にデータフォーマットが規定される。図26は、符号化データ及びNALユニットの例を示す図である。
例えば、図26に示すように符号化データは、ヘッダとペイロードとを含む。なお、符号化データは、符号化データ、ヘッダ又はペイロードの長さ(データ量)を示す長さ情報を含んでもよい。また、符号化データは、ヘッダを含まなくてもよい。
ヘッダは、例えば、データを特定するための識別情報を含む。この識別情報は、例えば、データ種別又はフレーム番号を示す。
ヘッダは、例えば、参照関係を示す識別情報を含む。この識別情報は、例えば、データ間に依存関係がある場合にヘッダに格納され、参照元から参照先を参照するための情報である。例えば、参照先のヘッダには、当該データを特定するための識別情報が含まれる。参照元のヘッダには、参照先を示す識別情報が含まれる。
なお、他の情報から参照先又は参照元を識別可能又は導出可能である場合は、データを特定するための識別情報、又は参照関係を示す識別情報を省略してもよい。
多重化部4802は、符号化データを、NALユニットのペイロードに格納する。NALユニットヘッダには、符号化データの識別情報であるpcc_nal_unit_typeが含まれる。図27は、pcc_nal_unit_typeのセマンティクスの例を示す図である。
図27に示すように、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は、参照先のデータを先に送出する。
図28は、NALユニットの送出順の例を示す図である。図28は、位置情報優先と、パラメータ優先と、データ統合との3つの例を示す。
位置情報優先の送出順序は、位置情報に関する情報と、属性情報に関する情報との各々をまとめて送出する例である。この送出順序の場合、位置情報に関する情報の送出が属性情報に関する情報の送出よりも早く完了する。
例えば、この送出順序を用いることで、属性情報を復号しない復号装置は、属性情報の復号を無視することで、処理しない時間を設けることができる可能性がある。また、例えば、位置情報を早く復号したい復号装置の場合、位置情報の符号化データを早く得ることにより、より早く位置情報を復号することができる可能性がある。
なお、図28では、属性XSPSと属性YSPSを統合し、属性SPSと記載しているが、属性XSPSと属性YSPSとを個別に配置してもよい。
パラメータセット優先の送出順序では、パラメータセットが先に送出され、データが後で送出される。
以上のようにNALユニット送出順序の制約に従えば、多重化部4802は、NALユニットをどのような順序で送出してもよい。例えば、順序識別情報が定義され、多重化部4802は、複数パターンの順序でNALユニットを送出する機能を有してもよい。例えばストリームPSにNALユニットの順序識別情報が格納される。
三次元データ復号装置は、順序識別情報に基づき復号を行ってもよい。三次元データ復号装置から三次元データ符号化装置に所望の送出順序が指示され、三次元データ符号化装置(多重化部4802)は、指示された送出順序に従って送出順序を制御してもよい。
なお、多重化部4802は、データ統合の送出順序のように、送出順序の制約に従う範囲であれば、複数の機能をマージした符号化データを生成してもよい。例えば、図28に示すように、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には、タイル又はスライスに係るデータ又はパラメータを格納するデータであることを示す識別子が定義される。
以下、順序識別情報に係る処理について説明する。図29は、NALユニットの送出順序に係る三次元データ符号化装置(符号化部4801及び多重化部4802)による処理のフローチャートである。
まず、三次元データ符号化装置は、NALユニットの送出順序(位置情報優先又はパラメータセット優先)を決定する(S4801)。例えば、三次元データ符号化装置は、ユーザ又は外部装置(例えば三次元データ復号装置)からの指定に基づき送出順序を決定する。
決定された送出順序が位置情報優先である場合(S4802で位置情報優先)、三次元データ符号化装置は、ストリームPSに含まれる順序識別情報を、位置情報優先に設定する(S4803)。つまり、この場合、順序識別情報は、位置情報優先の順序でNALユニットが送出されることを示す。そして、三次元データ符号化装置は、位置情報優先の順序でNALユニットを送出する(S4804)。
一方、決定された送出順序がパラメータセット優先である場合(S4802でパラメータセット優先)、三次元データ符号化装置は、ストリームPSに含まれる順序識別情報をパラメータセット優先に設定する(S4805)。つまり、この場合、順序識別情報は、パラメータセット優先の順序でNALユニットが送出されることを示す。そして、三次元データ符号化装置は、パラメータセットパラメータセット優先の順序でNALユニットを送出する(S4806)。
図30は、NALユニットの送出順序に係る三次元データ復号装置による処理のフローチャートである。まず、三次元データ復号装置は、ストリームPSに含まれる順序識別情報を解析する(S4811)。
順序識別情報で示される送出順序が位置情報優先である場合(S4812で位置情報優先)、三次元データ復号装置は、NALユニットの送出順序が位置情報優先であるものとして、NALユニットを復号する(S4813)。
一方、順序識別情報で示される送出順序がパラメータセット優先である場合(S4812でパラメータセット優先)、三次元データ復号装置は、NALユニットの送出順序がパラメータセット優先であるものとして、NALユニットを復号する(S4814)。
例えば、三次元データ復号装置は、属性情報を復号しない場合、ステップS4813において、全てのNALユニットを取得せずに、位置情報に関するNALユニットを取得し、取得したNALユニットから位置情報を復号してもよい。
次に、AU及びGOFの生成に係る処理について説明する。図31は、NALユニットの多重化におけるAU及びGOF生成に係る三次元データ符号化装置(多重化部4802)による処理のフローチャートである。
まず、三次元データ符号化装置は、符号化データの種類を判定する(S4821)。具体的には、三次元データ符号化装置は、処理対象の符号化データがAU先頭のデータであるか、GOF先頭のデータであるか、それ以外のデータであるかを判定する。
符号化データがGOF先頭のデータである場合(S4822でGOF先頭)、三次元データ符号化装置は、GOFヘッダ及びAUヘッダをGOFに属する符号化データの先頭に配置してNALユニットを生成する(S4823)。
符号化データがAU先頭のデータである場合(S4822でAU先頭)、三次元データ符号化装置は、AUヘッダをAUに属する符号化データの先頭に配置してNALユニットを生成する(S4824)。
符号化データがGOF先頭及びAU先頭のいずれでもない場合(S4822でGOF先頭、AU先頭以外)、三次元データ符号化装置は、符号化データが属するAUのAUヘッダの後に符号化データを配置してNALユニットを生成する(S4825)。
次に、AU及びGOFへのアクセスに係る処理について説明する。図32は、NALユニットの逆多重化におけるAU及びGOFのアクセスに係る三次元データ復号装置の処理のフローチャートである。
まず、三次元データ復号装置は、NALユニットに含まれるnal_unit_typeを解析することでNALユニットに含まれる符号化データの種類を判定する(S4831)。具体的には、三次元データ復号装置は、NALユニットに含まれる符号化データが、AU先頭のデータであるか、GOF先頭のデータであるか、それ以外のデータであるかを判定する。
NALユニットに含まれる符号化データがGOF先頭のデータである場合(S4832のGOF先頭)、三次元データ復号装置は、NALユニットがランダムアクセスの開始位置であると判断して、当該NALユニットにアクセスし、復号処理を開始する(S4833)。
一方、NALユニットに含まれる符号化データがAU先頭のデータである場合(S4832でAU先頭)、三次元データ復号装置は、NALユニットがAU先頭であると判断して、NALユニットに含まれるデータにアクセスし、当該AUを復号する(S4834)。
一方、NALユニットに含まれる符号化データが、GOF先頭及びAU先頭のいずれでもない場合(S4832でGOF先頭、AU先頭以外)、三次元データ復号装置は、当該NALユニットを処理しない。
(実施の形態3)
本実施の形態では、三次元データの符号化における三次元点(ポイントクラウド)の表現手法について説明する。
図33は、本実施の形態に係る三次元データの配信システムの構成を示すブロック図である。図33に示す配信システムは、サーバ1501と、複数のクライアント1502とを含む。
サーバ1501は、記憶部1511と、制御部1512とを含む。記憶部1511は、符号化された三次元データである符号化三次元マップ1513を格納している。
図34は、符号化三次元マップ1513のビットストリームの構成例を示す図である。三次元マップは、複数のサブマップ(sub-map)に分割され、各サブマップが符号化される。各サブマップには、サブ座標情報を含むランダムアクセスヘッダ(RA)が付加される。サブ座標情報は、サブマップの符号化効率を向上させるために用いられる。このサブ座標情報は、サブマップのサブ座標(sub-coordinate)を示す。サブ座標は、基準座標(reference coordinate)を基準としたサブマップの座標である。なお、複数のサブマップが含まれる三次元マップを全体マップと呼ぶ。また、全体マップにおいて基準となる座標(例えば原点)を基準座標と呼ぶ。つまり、サブ座標は、全体マップの座標系におけるサブマップの座標である。言い換えると、サブ座標は、全体マップの座標系とサブマップの座標系とのオフセットを示す。また、基準座標を基準とする全体マップの座標系における座標を全体座標と呼ぶ。サブ座標を基準とするサブマップの座標系における座標を差分座標と呼ぶ。
クライアント1502は、サーバ1501にメッセージを送信する。このメッセージは、クライアント1502の位置情報を含む。サーバ1501に含まれる制御部1512は、受信したメッセージに含まれる位置情報に基づき、クライアント1502の位置に最も近い位置のサブマップのビットストリームを取得する。サブマップのビットストリームは、サブ座標情報を含み、クライアント1502に送信される。クライアント1502に含まれるデコーダ1521は、このサブ座標情報を用いて、基準座標を基準としたサブマップの全体座標を得る。クライアント1502に含まれるアプリケーション1522は、得られたサブマップの全体座標を用いて、自己位置に関連するアプリケーションを実行する。
また、サブマップは全体マップの一部領域を示す。サブ座標は全体マップの基準座標空間においてサブマップが位置する座標である。例えばAの全体マップ中に、AAのサブマップA、及びABのサブマップBが存在するとする。車両は、AAの地図を参照したい場合は、サブマップAから復号を開始し、ABの地図を参照したい場合は、サブマップBから復号を開始する。ここでサブマップはランダムアクセスポイントである。具体的には、Aは大阪府、AAは大阪市、ABは高槻市などである。
各サブマップはサブ座標情報と共にクライアントに送信される。サブ座標情報は各サブマップのヘッダ情報、又は送信パケット等に含まれる。
各サブマップのサブ座標情報の基準の座標となる基準座標は、全体マップのヘッダ情報などサブマップより上位の空間のヘッダ情報に付加されてもよい。
サブマップは1つのスペース(SPC)で構成されてもよい。また、サブマップは複数のSPCで構成されてもよい。
また、サブマップは、GOS(Group of Space)を含んでもよい。またサブマップは、ワールドで構成されてもよい。例えば、サブマップの中に複数のオブジェクトがある場合、複数のオブジェクトを別々のSPCに割り当てるとサブマップは複数のSPCで構成される。また複数のオブジェクトを1つのSPCに割り当てるとサブマップは1つのSPCで構成される。
次に、サブ座標情報を用いた場合の符号化効率の改善効果について説明する。図35は、この効果を説明するための図である。例えば、図35に示す、基準座標から遠い位置の三次元点Aを符号化するためには、多くのビット数が必要となる。ここで、サブ座標と三次元点Aとの距離は、基準座標と三次元点Aとの距離よりも短い。よって、基準座標を基準とした三次元点Aの座標を符号化する場合よりも、サブ座標を基準とした三次元点Aの座標を符号化することで、符号化効率を改善できる。また、サブマップのビットストリームは、サブ座標情報を含む。サブマップのビットストリームと基準座標とを復号側(クライアント)に送ることで、復号側においてサブマップの全体座標を復元できる。
図36は、サブマップの送信側であるサーバ1501による処理のフローチャートである。
まず、サーバ1501は、クライアント1502から、クライアント1502の位置情報を含むメッセージを受信する(S1501)。制御部1512は、記憶部1511から、クライアントの位置情報に基づくサブマップの符号化ビットストリームを取得する(S1502)。そして、サーバ1501は、サブマップの符号化ビットストリームと基準座標とをクライアント1502に送信する(S1503)。
図37は、サブマップの受信側であるクライアント1502による処理のフローチャートである。
まず、クライアント1502は、サーバ1501から送信されたサブマップの符号化ビットストリームと基準座標とを受信する(S1511)。次に、クライアント1502は、符号化ビットストリームを復号することでサブマップとサブ座標情報とを取得する(S1512)。次に、クライアント1502は、基準座標とサブ座標とを用いてサブマップ内の差分座標を全体座標に復元する(S1513)。
次に、サブマップに関する情報のシンタックス例を説明する。サブマップの符号化において、三次元データ符号化装置は、各ポイントクラウド(三次元点)の座標からサブ座標を減算することで差分座標を算出する。そして、三次元データ符号化装置は、各ポイントクラウドの値として、差分座標をビットストリームに符号化する。また、符号化装置は、サブ座標を示すサブ座標情報をビットストリームのヘッダ情報として符号化する。これにより、三次元データ復号装置は、各ポイントクラウドの全体座標を得ることができる。例えば、三次元データ符号化装置はサーバ1501に含まれ、三次元データ復号装置はクライアント1502に含まれる。
図38は、サブマップのシンタックス例を示す図である。図38に示すNumOfPointは、サブマップに含まれるポイントクラウド数を示す。sub_coordinate_x、sub_coordinate_y、及びsub_coordinate_zは、サブ座標情報である。sub_coordinate_xは、サブ座標のx座標を示す。sub_coordinate_yは、サブ座標のy座標を示す。sub_coordinate_zは、サブ座標のz座標を示す。
また、diff_x[i]、diff_y[i]、及びdiff_z[i]は、サブマップ内のi番目ポイントクラウドの差分座標である。diff_x[i]は、サブマップ内のi番目ポイントクラウドのx座標とサブ座標のx座標との差分値を示す。diff_y[i]は、サブマップ内のi番目ポイントクラウドのy座標とサブ座標のy座標との差分値を示す。diff_z[i]は、サブマップ内のi番目ポイントクラウドのz座標とサブ座標のz座標との差分値を示す。
三次元データ復号装置は、i番目のポイントクラウドの全体座標であるpoint_cloud[i]_x、point_cloud[i]_y、及びpoint_cloud[i]_zを下記式を用いて復号する。point_cloud[i]_xは、i番目のポイントクラウドの全体座標のx座標である。point_cloud[i]_yは、i番目のポイントクラウドの全体座標のy座標である。point_cloud[i]_zは、i番目のポイントクラウドの全体座標のz座標である。
point_cloud[i]_x=sub_coordinate_x+diff_x[i]
point_cloud[i]_y=sub_coordinate_y+diff_y[i]
point_cloud[i]_z=sub_coordinate_z+diff_z[i]
次に、8分木符号化の適用の切り替え処理について説明する。三次元データ符号化装置は、サブマップ符号化時に、各ポイントクラウドを8分木表現で符号化する(以下、8分木符号化(octree符号化)と呼ぶ)を用いるか、サブ座標からの差分値を符号化する(以下、非8分木符号化(non-octree符号化)と呼ぶ)を用いるかを選択する。図39は、この動作を模式的に示す図である。例えば、三次元データ符号化装置は、サブマップ内のポイントクラウド数が予め定められた閾値以上の場合には、サブマップに8分木符号化を適用する。三次元データ符号化装置は、サブマップ内のポイントクラウド数が上記閾値より小さい場合は、サブマップに非8分木符号化を適用する。これにより、三次元データ符号化装置は、サブマップ内に含まれるオブジェクトの形状及び密度に応じて適切に8分木符号化を用いるか、非8分木符号化を用いるかを選択できるので、符号化効率を向上することができる。
また、三次元データ符号化装置は、サブマップに8分木符号化と非8分木符号化とのどちらを適用したかを示す情報(以下、8分木符号化適用情報と呼ぶ)を、サブマップのヘッダ等に付加する。これにより、三次元データ復号装置は、ビットストリームが、サブマップが8分木符号化されることで得られたビットストリームであるか、サブマップが非8分木符号化されることで得られたビットストリームであるかを判別できる。
また、三次元データ符号化装置は、8分木符号化と非8分木符号化とのそれぞれを同一のポイントクラウドに適用した際の符号化効率を算出し、符号化効率が良い符号化方式をサブマップに適用してもよい。
図40は、この切り替えを行う場合のサブマップのシンタックス例を示す図である。図40に示すcoding_typeは、符号化タイプを示す情報であり、上記8分木符号化適用情報である。coding_type=00は、8分木符号化が適用されたことを示す。coding_type=01は、非8分木符号化が適用されたことを示す。coding_type=10又は11は、上記外の他の符号化方式などが適用されたことを示す。
符号化タイプが非8分木符号化(non_octree)の場合、サブマップは、NumOfPointと、サブ座標情報(sub_coordinate_x、sub_coordinate_y、及びsub_coordinate_z)とを含む。
符号化タイプが8分木符号化(octree)の場合、サブマップは、octree_infoを含む。octree_infoは、8分木符号化に必要な情報であり、例えばdepth情報などを含む。
符号化タイプが非8分木符号化(non_octree)の場合、サブマップは、差分座標(diff_x[i]、diff_y[i]、及びdiff_z[i])を含む。
符号化タイプが8分木符号化(octree)の場合、サブマップは、8分木符号化に関する符号化データであるoctree_dataを含む。
なお、ここでは、ポイントクラウドの座標系としてxyz座標系が用いられる例を示したが、極座標系が用いられてもよい。
図41は、三次元データ符号化装置による三次元データ符号化処理のフローチャートである。まず、三次元データ符号化装置は、処理対象のサブマップである対象サブマップ内のポイントクラウド数を算出する(S1521)。次に、三次元データ符号化装置は、算出されたポイントクラウド数が予め定められた閾値以上であるか否かを判定する(S1522)。
ポイントクラウド数が閾値以上の場合(S1522でYes)、三次元データ符号化装置は、対象サブマップに8分木符号化を適用する(S1523)。また、三次元点データ符号化装置は、対象サブマップに8分木符号化を適用したことを示す8分木符号化適用情報をビットストリームのヘッダに付加する(S1525)。
一方、ポイントクラウド数が閾値未満の場合(S1522でNo)、三次元データ符号化装置は、対象サブマップに非8分木符号化を適用する(S1524)。また、三次元点データ符号化装置は、対象サブマップに非8分木符号化を適用したことを示す8分木符号化適用情報をビットストリームのヘッダに付加する(S1525)。
図42は、三次元データ復号装置による三次元データ復号処理のフローチャートである。まず、三次元データ復号装置は、ビットストリームのヘッダから8分木符号化適用情報を復号する(S1531)。次に、三次元データ復号装置は、復号した8分木符号化適用情報に基づき、対象サブマップに適用された符号化タイプが8分木符号化であるか否かを判定する(S1532)。
8分木符号化適用情報により示される符号化タイプが8分木符号化である場合(S1532でYes)、三次元データ復号装置は、8分木復号により対象サブマップを復号する(S1533)。一方、8分木符号化適用情報により示される符号化タイプが非8分木符号化である場合(S1532でNo)、三次元データ復号装置は、非8分木復号により対象サブマップを復号する(S1534)。
以下、本実施の形態の変形例について説明する。図43~図45は、符号化タイプの切り替え処理の変形例の動作を模式的に示す図である。
図43に示すように、三次元データ符号化装置は、8分木符号化を適用するか非8分木符号化を適用するかをスペース毎に選択してもよい。この場合は、三次元データ符号化装置は、8分木符号化適用情報をスペースのヘッダに付加する。これにより、三次元データ復号装置は、8分木符号化が適用されたか否かをスペース毎に判断できる。また、この場合、三次元データ符号化装置は、スペース毎にサブ座標を設定し、スペース内の各ポイントクラウドの座標からサブ座標の値を引いた差分値を符号化する。
これにより、三次元データ符号化装置は、スペース内のオブジェクトの形状又はポイントクラウド数に応じて8分木符号化を適用するか否かを適切に切り替えることができるので、符号化効率を向上できる。
また、図44に示すように、三次元データ符号化装置は、8分木符号化を適用するか非8分木符号化を適用するかをボリューム毎に選択してもよい。この場合は、三次元データ符号化装置は、8分木符号化適用情報をボリュームのヘッダに付加する。これにより、三次元データ復号装置は、8分木符号化が適用されたか否かをボリューム毎に判断できる。また、この場合、三次元データ符号化装置は、ボリューム毎にサブ座標を設定し、ボリューム内の各ポイントクラウドの座標からサブ座標の値を引いた差分値を符号化する。
これにより、三次元データ符号化装置は、ボリューム内のオブジェクトの形状又はポイントクラウド数に応じて8分木符号化を適用するか否かを適切に切り替えることができるので、符号化効率を向上できる。
また、上記説明では、非8分木符号化として、各ポイントクラウドの座標からサブ座標を引いた差分を符号化する例を示したが、必ずしもこれに限らず、8分木符号化以外のどのような符号化方法で符号化してもよい。例えば、図45に示すように、三次元データ符号化装置は、非8分木符号化として、サブ座標からの差分ではなく、サブマップ、スペース、又はボリューム内のポイントクラウドの値そのものを符号化する方式(以下、原座標符号化と呼ぶ)を用いてもよい。
その場合は、三次元データ符号化装置は、対象空間(サブマップ、スペース、又はボリューム)に原座標符号化が適用されたことを示す情報をヘッダに格納する。これにより、三次元データ復号装置は、対象空間に原座標符号化が適用されたか否かを判断できる。
また、原座標符号化を適用する場合には、三次元データ符号化装置は、原座標に量子化及び算術符号化を適用せずに符号化を行ってもよい。また、三次元データ符号化装置は、原座標を予め定められた固定のビット長で符号化してもよい。これにより、三次元データ符号化装置は、あるタイミングで一定のビット長のストリームを生成することができる。
また、上記説明では、非8分木符号化として、各ポイントクラウドの座標からサブ座標を引いた差分を符号化する例を示したが、必ずしもこれに限らない。
例えば、三次元データ符号化装置は、各ポイントクラウドの座標間の差分値を順に符号化してもよい。図46は、この場合の動作を説明するための図である。例えば、図46に示す例では、三次元データ符号化装置は、ポイントクラウドPAを符号化する際に、サブ座標を予測座標として用い、ポイントクラウドPAの座標と予測座標との差分値を符号化する。また、三次元データ符号化装置は、ポイントクラウドPBを符号化する際には、ポイントクラウドPAの座標を予測座標として用い、ポイントクラウドPBと予測座標との差分値を符号化する。また、三次元データ符号化装置は、ポイントクラウドPCを符号化する際には、ポイントクラウドPBを予測座標として用い、ポイントクラウドPBと予測座標との差分値を符号化する。このように、三次元データ符号化装置は、複数のポイントクラウドにスキャン順を設定し、処理対象の対象ポイントクラウドの座標と、対象ポイントクラウドに対してスキャン順で直前のポイントクラウドの座標との差分値を符号化してもよい。
また、上記説明では、サブ座標は、サブマップの左下手前の隅の座標であったが、サブ座標の位置はこれに限らない。図47~図49は、サブ座標の位置の別の例を示す図である。サブ座標は、サブ座標の設定位置は、対象空間(サブマップ、スペース、又はボリューム)内のどの座標に設定されてもよい。つまり、サブ座標は、上述したように、対象空間の左下手前の隅の座標であってもよい。図47に示すように、サブ座標は、対象空間の中心の座標であってもよい。図48に示すように、サブ座標は、対象空間の右上奥の隅の座標であってもよい。また、サブ座標は、対象空間の左下手前又は右上奥の隅の座標に限らず、対象空間のいずれかの隅の座標であってもよい。
また、サブ座標の設定位置は、対象空間(サブマップ、スペース、又はボリューム)内のあるポイントクラウドの座標と同一であってもよい。例えば、図49に示す例では、サブ座標の座標は、ポイントクラウドPDの座標と一致する。
また、本実施の形態では、8分木符号化を適用するか、非8分木符号化を適用するかを切り替える例を示したが、必ずしもこれには限らない。例えば、三次元データ符号化装置は、8分木以外の別の木構造を適用するかと、当該木構造以外の非木構造を適用するかとを切り替えてもよい。例えば、別の木構造とは、座標軸の1つに垂直な平面を使って分割を行うkd木などである。なお、別の木構造として、どのような方式を用いてもよい。
また、本実施の形態では、ポイントクラウドが持つ座標情報を符号化する例を示したが、必ずしもこれには限らない。三次元データ符号化装置は、例えば、色情報、三次元特徴量又は、可視光の特徴量なども座標情報と同様の方法で符号化してもよい。例えば、三次元データ符号化装置は、サブマップ内の各ポイントクラウドが持つ色情報の平均値をサブ色情報(sub-color)に設定し、各ポイントクラウドの色情報とサブ色情報との差分を符号化してもよい。
また、本実施の形態では、ポイントクラウドの数等に応じて符号化効率が良い符号化方式(8分木符号化又は非8分木符号化)を選択する例を示したが、必ずこれには限らない。例えば、サーバ側である三次元データ符号化装置は、8分木符号化により符号化したポイントクラウドのビットストリーム、非8分木符号化により符号化したポイントクラウドのビットストリーム、及びその両方により符号化したポイントクラウドのビットストリームを保持しておき、通信環境又は三次元データ復号装置の処理能力に応じて、三次元データ復号装置に送信するビットストリームを切り替えてもよい。
図50は、8分木符号化の適用を切り替える場合のボリュームのシンタックス例を示す図である。図50に示すシンタックスは、図40に示すシンタックスと基本的には同じであるが、各情報がボリューム単位の情報である点が異なる。具体的には、NumOfPointは、ボリュームに含まれるポイントクラウド数を示す。sub_coordinate_x、sub_coordinate_y、及びsub_coordinate_zは、ボリュームのサブ座標情報である。
また、diff_x[i]、diff_y[i]、及びdiff_z[i]は、ボリューム内のi番目ポイントクラウドの差分座標である。diff_x[i]は、ボリューム内のi番目ポイントクラウドのx座標とサブ座標のx座標との差分値を示す。diff_y[i]は、ボリューム内のi番目ポイントクラウドのy座標とサブ座標のy座標との差分値を示す。diff_z[i]は、ボリューム内のi番目ポイントクラウドのz座標とサブ座標のz座標との差分値を示す。
なお、スペースにおけるボリュームの相対位置が計算できる場合は、三次元データ符号化装置は、サブ座標情報をボリュームのヘッダに含めなくてもよい。つまり、三次元データ符号化装置は、サブ座標情報をヘッダに含めずに、スペースにおけるボリュームの相対位置を計算し、計算した位置を各ボリュームのサブ座標として用いてよい。
以上のように、本実施の形態に係る三次元データ符号化装置は、三次元データに含まれる複数の空間単位(例えば、サブマップ、スペース又はボリューム)のうち対象空間単位を8分木構造で符号化するか否かを判定する(例えば、図41のS1522)。例えば、三次元データ符号化装置は、対象空間単位に含まれる三次元点の数が予め定められた閾値より多い場合、対象空間単位を8分木構造で符号化すると判定する。また、三次元データ符号化装置は、対象空間単位に含まれる三次元点の数が上記閾値以下の場合、対象空間単位を8分木構造で符号化しないと判定する。
対象空間単位を8分木構造で符号化すると判定された場合(S1522でYes)、三次元データ符号化装置は、対象空間単位を8分木構造を用いて符号化する(S1523)。また、対象空間単位を8分木構造で符号化しないと判定された場合(S1522でNo)、三次元データ符号化装置は、対象空間単位を8分木構造とは異なる方式で符号化する(S1524)。例えば、三次元データ符号化装置は、異なる方式では、対象空間単位に含まれる三次元点の座標を符号化する。具体的には、三次元データ符号化装置は、異なる方式では、対象空間単位の基準座標と、対象空間単位に含まれる三次元点の座標との差分を符号化する。
次に、三次元データ符号化装置は、対象空間単位を8分木構造で符号化したか否かを示す情報をビットストリームに付加する(S1525)。
これによれば、当該三次元データ符号化装置は、符号化信号のデータ量を削減できるので符号化効率を向上できる。
例えば、三次元データ符号化装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態に係る三次元データ復号装置は、三次元データに含まれる複数の対象空間単位(例えば、サブマップ、スペース又はボリューム)のうち対象空間単位を8分木構造で復号するか否かを示す情報をビットストリームから復号する(例えば、図42のS1531)。上記情報により対象空間単位を8分木構造で復号すると示される場合(S1532でYes)、三次元データ復号装置は、対象空間単位を8分木構造を用いて復号する(S1533)。
上記情報により前記対象空間単位を8分木構造で復号しないと示される場合(S1532でNo)、三次元データ復号装置は、対象空間単位を8分木構造とは異なる方式で復号する(S1534)。例えば、三次元データ復号装置は、異なる方式では、対象空間単位に含まれる三次元点の座標を復号する。具体的には、三次元データ復号装置は、異なる方式では、対象空間単位の基準座標と、対象空間単位に含まれる三次元点の座標との差分を復号する。
これによれば、当該三次元データ復号装置は、符号化信号のデータ量を削減できるので符号化効率を向上できる。
例えば、三次元データ復号装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
(実施の形態4)
三次元点群の情報は、位置情報(geometry)と属性情報(attribute)とを含む。位置情報は、ある点を基準とした座標(x座標、y座標、z座標)を含む。位置情報を符号化する場合は、各三次元点の座標を直接符号化する代わりに、各三次元点の位置を8分木表現で表現し、8分木の情報を符号化することで符号量を削減する方法が用いられる。
一方、属性情報は、各三次元点の色情報(RGB、YUVなど)、反射率、及び法線ベクトルなどを示す情報を含む。例えば、三次元データ符号化装置は、属性情報を、位置情報とは別の符号化方法を用いて符号化することができる。
本実施の形態では属性情報の符号化方法について説明する。なお、本実施の形態では属性情報の値として整数値を用いて説明する。例えば色情報RGB又はYUVの各色成分が8bit精度である場合、各色成分は0~255の整数値をとる。反射率の値が10bit精度である場合、反射率の値は0~1023の整数値をとる。なお、三次元データ符号化装置は、属性情報のビット精度が小数精度である場合、属性情報の値が整数値になるように、当該値にスケール値を乗じてから整数値に丸めてもよい。なお、三次元データ符号化装置は、このスケール値をビットストリームのヘッダ等に付加してもよい。
三次元点の属性情報の符号化方法として、三次元点の属性情報の予測値を算出し、元の属性情報の値と予測値との差分(予測残差)を符号化することが考えられる。例えば、三次元点pの属性情報の値がApであり、予測値がPpである場合、三次元データ符号化装置は、その差分絶対値Diffp=|Ap-Pp|を符号化する。この場合、予測値Ppを高精度に生成することができれば、差分絶対値Diffpの値が小さくなる。よって、例えば、値が小さい程発生ビット数が小さくなる符号化テーブルを用いて差分絶対値Diffpをエントロピー符号化することで符号量を削減することができる。
属性情報の予測値を生成する方法として、符号化対象の対象三次元点の周囲にある別の三次元点である参照三次元点の属性情報を用いることが考えられる。ここで参照三次元点とは、対象三次元点から予め定められた距離範囲内にある三次元点である。例えば、対象三次元点p=(x1,y1,z1)と三次元点q=(x2,y2,z2)とが存在する場合、三次元データ符号化装置は、(式A1)に示す三次元点pと三次元点qとのユークリッド距離d(p、q)を算出する。
三次元データ符号化装置は、ユークリッド距離d(p、q)が予め定められた閾値THdより小さい場合、三次元点qの位置が対象三次元点pの位置に近いと判定し、対象三次元点pの属性情報の予測値の生成に三次元点qの属性情報の値を利用すると判定する。なお、距離算出方法は別の方法でもよく、例えばマハラノビス距離等が用いられてもよい。また、三次元データ符号化装置は、対象三次元点から予め定められた距離範囲外の三次元点を予測処理に用いないと判定してもよい。例えば、三次元点rが存在し、対象三次元pと三次元点rとの距離d(p、r)が閾値THd以上である場合、三次元データ符号化装置は、三次元点rを予測に用いないと判定してもよい。なお、三次元データ符号化装置は、閾値THdを示す情報を、ビットストリームのヘッダ等に付加してもよい。
図51は、三次元点の例を示す図である。この例では、対象三次元点pと三次元点qとの距離d(p、q)が閾値THdより小さい。よって、三次元データ符号化装置は、三次元点qを対象三次元点pの参照三次元点と判定し、対象三次元pの属性情報Apの予測値Ppの生成に三次元点qの属性情報Aqの値を利用すると判定する。
一方、対象三次元点pと三次元点rとの距離d(p、r)は、閾値THd以上である。よって、三次元データ符号化装置は、三次元点rを対象三次元点pの参照三次元点でないと判定し、対象三次元点pの属性情報Apの予測値Ppの生成に三次元点rの属性情報Arの値を利用しないと判定する。
また、三次元データ符号化装置は、対象三次元点の属性情報を予測値を用いて符号化する場合、既に属性情報を符号化及び復号済みの三次元点を参照三次元点として利用する。同様に、三次元データ復号装置は、復号対象の対象三次元点の属性情報を予測値を用いて復号する場合、既に属性情報を復号済みの三次元点を参照三次元点として利用する。これにより、符号化時と復号時とで同一の予測値を生成することができるので、符号化で生成した三次元点のビットストリームを復号側で正しく復号することができる。
また、三次元点の属性情報を符号化する場合に、三次元点の位置情報を用いて各三次元点を複数階層に分類してから符号化することが考えられる。ここで、分類した各階層をLoD(Level of Detail)と呼ぶ。LoDの生成方法について図52を用いて説明する。
まず、三次元データ符号化装置は、初期点a0を選択し、LoD0に割当てる。次に、三次元データ符号化装置は、点a0からの距離がLoD0の閾値Thres_LoD[0]より大きい点a1を抽出しLoD0に割当てる。次に、三次元データ符号化装置は、点a1からの距離がLoD0の閾値Thres_LoD[0]より大きい点a2を抽出しLoD0に割当てる。このように、三次元データ符号化装置は、LoD0内の各点の間の距離が閾値Thres_LoD[0]より大きくなるようにLoD0を構成する。
次に、三次元データ符号化装置は、まだLoDが未割当ての点b0を選択し、LoD1に割当てる。次に、三次元データ符号化装置は、点b0からの距離がLoD1の閾値Thres_LoD[1]より大きく、LoDが未割当ての点b1を抽出しLoD1に割当てる。次に、三次元データ符号化装置は、点b1からの距離がLoD1の閾値Thres_LoD[1]より大きく、LoDが未割当ての点b2を抽出しLoD1に割当てる。このように、三次元データ符号化装置は、LoD1内の各点の間の距離が閾値Thres_LoD[1]より大きくなるようにLoD1を構成する。
次に、三次元データ符号化装置は、まだLoDが未割当ての点c0を選択し、LoD2に割当てる。次に、三次元データ符号化装置は、点c0からの距離がLoD2の閾値Thres_LoD[2]より大きく、LoDが未割当ての点c1を抽出しLoD2に割当てる。次に、三次元データ符号化装置は、点c1からの距離がLoD2の閾値Thres_LoD[2]より大きく、LoDが未割当ての点c2を抽出しLoD2に割当てる。このように、三次元データ符号化装置は、LoD2内の各点の間の距離が閾値Thres_LoD[2]より大きくなるようにLoD2を構成する。例えば、図53に示すように、各LoDの閾値Thres_LoD[0]、Thres_LoD[1]、及びThres_LoD[2]が設定される。
また、三次元データ符号化装置は、各LoDの閾値を示す情報を、ビットストリームのヘッダ等に付加してもよい。例えば、図53に示す例の場合、三次元データ符号化装置は、閾値Thres_LoD[0]、Thres_LoD[1]、及びThres_LoD[2]をヘッダに付加してもよい。
また、三次元データ符号化装置は、LoDの最下層にLoDが未割当ての三次元点全てを割当ててもよい。この場合、三次元データ符号化装置は、LoDの最下層の閾値をヘッダに付加しないことでヘッダの符号量を削減できる。例えば、図53に示す例の場合、三次元データ符号化装置は、閾値Thres_LoD[0]とThres_LoD[1]をヘッダに付加し、Thres_LoD[2]をヘッダに付加しない。この場合、三次元データ復号装置は、Thres_LoD[2]の値0と推定してもよい。また、三次元データ符号化装置は、LoDの階層数をヘッダに付加してもよい。これにより、三次元データ復号装置は、LoDの階層数を用いて最下層のLoDを判定できる。
また、LoDの各層の閾値の値を図53に示すように上位層ほど大きく設定することで、上位層(LoD0に近い層)ほど三次元点間の距離が離れた疎点群(sparse)となり、下位層ほど三次元点間の距離が近い密点群(dense)となる。なお、図53に示す例では、LoD0が最上位層である。
また、各LoDを設定する際の初期三次元点の選択方法は、位置情報符号化時の符号化順に依存してもよい。例えば、三次元データ符号化装置は、LoD0の初期点a0として、位置情報符号化時に最初に符号化された三次元点を選択し、初期点a0を基点に、点a1、点a2を選択してLoD0を構成する。そして、三次元データ符号化装置は、LoD1の初期点b0として、LoD0に属していない三次元点の中で、最も早く位置情報が符号化された三次元点を選択してもよい。つまり、三次元データ符号化装置は、LoDnの初期点n0として、LoDnの上層(LoD0~LoDn-1)に属していない三次元点の中で、最も早く位置情報が符号化された三次元点を選択してもよい。これにより、三次元データ復号装置は、復号時に同様の初期点選択方法を用いることで、符号化時と同一のLoDを構成できるので、ビットストリームを適切に復号できる。具体的には、三次元データ復号装置は、LoDnの初期点n0として、LoDnの上層に属していない三次元点の中で、最も早く位置情報が復号された三次元点を選択する。
以下、三次元点の属性情報の予測値を、LoDの情報を用いて生成する手法について説明する。例えば、三次元データ符号化装置は、LoD0に含まれる三次元点から順に符号化する場合、LoD1に含まれる対象三次元点を、LoD0及びLoD1に含まれる符号化かつ復号済み(以下、単に「符号化済み」とも記す)の属性情報を用いて生成する。このように、三次元データ符号化装置は、LoDnに含まれる三次元点の属性情報の予測値を、LoDn’(n’<=n)に含まれる符号化済みの属性情報を用いて生成する。つまり、三次元データ符号化装置は、LoDnに含まれる三次元点の属性情報の予測値の算出に、LoDnの下層に含まれる三次元点の属性情報を用いない。
例えば、三次元データ符号化装置は、三次元点の属性情報の予測値を、符号化対象の対象三次元点の周辺の符号化済みの三次元点のうち、N個以下の三次元点の属性値の平均を算出することで生成する。また、三次元データ符号化装置は、Nの値を、ビットストリームのヘッダ等に付加してもよい。なお、三次元データ符号化装置は、Nの値を三次元点毎に変更し、三次元点毎にNの値を付加してもよい。これにより、三次元点毎に適切なNを選択することができるので、予測値の精度を向上できる。よって、予測残差を小さくできる。また、三次元データ符号化装置は、Nの値をビットストリームのヘッダに付加し、ビットストリーム内でNの値を固定してもよい。これにより、三次元点毎にNの値を符号化、又は復号する必要がなくなるので、処理量を削減できる。また、三次元データ符号化装置は、LoD毎にNの値を別々に符号化してもよい。これによりLoD毎に適切なNを選択することで符号化効率を向上できる。
または、三次元データ符号化装置は、三次元点の属性情報の予測値を、周囲の符号化済みのN個の三次元点の属性情報の重み付け平均値により算出してもよい。例えば、三次元データ符号化装置は、対象三次元点と周囲のN個の三次元点とのそれぞれの距離情報を用いて重みを算出する。
三次元データ符号化装置は、LoD毎にNの値を別々に符号化する場合、例えばLoDの上位層ほどNの値を大きく設定し、下位層ほどNの値を小さく設定する。LoDの上位層では属する三次元点間の距離が離れるため、Nの値を大きく設定して複数の周囲の三次元点を選択して平均化することで予測精度を向上できる可能性がある。また、LoDの下位層では属する三次元点間の距離が近いため、Nの値を小さく設定して平均化の処理量を抑えつつ、効率的な予測を行うことが可能となる。
図54は、予測値に用いる属性情報の例を示す図である。上述したように、LoDNに含まれる点Pの予測値は、LoDN’(N’<=N)に含まれる符号化済みの周囲点P’を用いて生成される。ここで、周囲点P’は、点Pとの距離に基づき選択される。例えば、図54に示す点b2の属性情報の予測値は、点a0、a1、a2、b0、b1の属性情報を用いて生成される。
上述したNの値に応じて、選択される周囲点は変化する。例えばN=5の場合は点b2の周囲点としてa0、a1、a2、b0、b1が選択される。N=4の場合は距離情報を元に点a0、a1、a2、b1を選択される。
予測値は、距離依存の重み付け平均により算出される。例えば、図54に示す例では、点a2の予測値a2pは、(式A2)及び(式A3)に示すように、点a0及び点a1の属性情報の重み付け平均により算出される。なお、Aiは点aiの属性情報の値である。
また、点b2の予測値b2pは、(式A4)~(式A6)に示すように、点a0、a1、a2、b0、b1の属性情報の重み付け平均により算出される。なお、Biは点biの属性情報の値である。
また、三次元データ符号化装置は、三次元点の属性情報の値と、周囲点から生成した予測値との差分値(予測残差)を算出し、算出した予測残差を量子化してもよい。例えば、三次元データ符号化装置は、予測残差を量子化スケール(量子化ステップとも呼ぶ)で除算することで量子化を行う。この場合、量子化スケールが小さいほど量子化によって発生しうる誤差(量子化誤差)が小さくなる。逆に量子化スケールが大きいほど量子化誤差は大きくなる。
なお、三次元データ符号化装置は、使用する量子化スケールをLoD毎に変えてもよい。例えば、三次元データ符号化装置は、上位層ほど量子化スケールを小さくし、下位層ほど量子化スケールを大きくする。上位層に属する三次元点の属性情報の値は、下位層に属する三次元点の属性情報の予測値として使用される可能性があるため、上位層の量子化スケールを小さくして上位層で発生しうる量子化誤差を抑え、予測値の精度を高めることで符号化効率を向上できる。なお、三次元データ符号化装置は、LoD毎に使用する量子化スケールをヘッダ等に付加してもよい。これにより、三次元データ復号装置は、正しく量子化スケールを復号できるので、ビットストリームを適切に復号できる。
また、三次元データ符号化装置は、量子化後の予測残差である符号付整数値(符号付量子化値)を符号なし整数値(符号なし量子化値)に変換してもよい。これにより予測残差をエントロピー符号化する場合に、負の整数の発生を考慮する必要がなくなる。なお、三次元データ符号化装置は、必ずしも符号付整数値を符号なし整数値に変換する必要はなく、例えば符号ビットを別途エントロピー符号化してもよい。
予測残差は、元の値から予測値を減算することにより算出される。例えば、点a2の予測残差a2rは、(式A7)に示すように、点a2の属性情報の値A2から、点a2の予測値a2pを減算することで算出される。点b2の予測残差b2rは、(式A8)に示すように、点b2の属性情報の値B2から、点b2の予測値b2pを減算することで算出される。
a2r=A2-a2p ・・・(式A7)
b2r=B2-b2p ・・・(式A8)
また、予測残差は、QS(量子化ステップ(Quantization Step))で除算されることで量子化される。例えば、点a2の量子化値a2qは、(式A9)により算出される。点b2の量子化値b2qは、(式A10)により算出される。ここで、QS_LoD0は、LoD0用のQSであり、QS_LoD1は、LoD1用のQSである。つまり、LoDに応じてQSが変更されてもよい。
a2q=a2r/QS_LoD0 ・・・(式A9)
b2q=b2r/QS_LoD1 ・・・(式A10)
また、三次元データ符号化装置は、以下のように、上記量子化値である符号付整数値を符号なし整数値に変換する。三次元データ符号化装置は、符号付整数値a2qが0より小さい場合、符号なし整数値a2uを-1-(2×a2q)に設定する。三次元データ符号化装置は、符号付整数値a2qが0以上の場合、符号なし整数値a2uを2×a2qに設定する。
同様に、三次元データ符号化装置は、符号付整数値b2qが0より小さい場合、符号なし整数値b2uを-1-(2×b2q)に設定する。三次元データ符号化装置は、符号付整数値b2qが0以上の場合、符号なし整数値b2uを2×b2qに設定する。
また、三次元データ符号化装置は、量子化後の予測残差(符号なし整数値)を、エントロピー符号化によって符号化してもよい。例えば符号なし整数値を二値化したうえで、二値の算術符号化を適用してもよい。
なお、この場合、三次元データ符号化装置は、予測残差の値に応じて二値化方法を切替えてもよい。例えば、三次元データ符号化装置は、予測残差puが閾値R_THより小さい場合は、閾値R_THを表現するために必要な固定ビット数で予測残差puを二値化する。また、三次元データ符号化装置は、予測残差puが閾値R_TH以上の場合は、閾値R_THの二値化データと(pu-R_TH)の値を指数ゴロム(Exponential-Golomb)等を用いて二値化する。
例えば、三次元データ符号化装置は、閾値R_THが63であり、予測残差puが63より小さい場合は、予測残差puを6bitで二値化する。また、三次元データ符号化装置は、予測残差puが63以上である場合は、閾値R_THの二値データ(111111)と(pu-63)とを指数ゴロムを用いて二値化することで算術符号化を行う。
より具体的な例では、三次元データ符号化装置は、予測残差puが32である場合、6bitの二値データ(100000)を生成し、このビット列を算術符号化する。また、三次元データ符号化装置は、予測残差puが66の場合、閾値R_THの二値データ(111111)と値3(66-63)を指数ゴロムで表したビット列(00100)とを生成し、このビット列(111111+00100)を算術符号化する。
このように、三次元データ符号化装置は、予測残差の大きさに応じて二値化の方法を切替えることで、予測残差が大きくなった場合の二値化ビット数の急激な増加を抑えながら符号化することが可能となる。なお、三次元データ符号化装置は、閾値R_THをビットストリームのヘッダ等に付加してもよい。
例えば、高ビットレートで符号化が行われる場合、つまり、量子化スケールが小さい場合、量子化誤差が小さく予測精度が高くなり、結果として予測残差が大きくならない可能性がある。よって、この場合には、三次元データ符号化装置は、閾値R_THを大きく設定する。これにより、閾値R_THの二値化データを符号化する可能性が低くなり、符号化効率が向上する。逆に、低ビットレートで符号化が行われる場合、つまり、量子化スケールが大きい場合、量子化誤差が大きく予測精度が悪くなり、結果として予測残差が大きくなる可能性がある。よって、この場合には、三次元データ符号化装置は、閾値R_THを小さく設定する。これにより、二値化データの急激なビット長増加を防ぐことができる。
また、三次元データ符号化装置は、LoD毎に閾値R_THを切り替え、LoD毎の閾値R_THをヘッダ等に付加してもよい。つまり、三次元データ符号化装置は、LoD毎に二値化の方法を切替えてもよい。例えば、上位層では三次元点間の距離が遠いため、予測精度が悪く結果として予測残差が大きくなる可能性がある。よって、三次元データ符号化装置は、上位層に対しては閾値R_THを小さく設定することで二値化データの急激なビット長増加を防ぐ。また、下位層では三次元点間の距離が近いため、予測精度が高く結果として予測残差が小さくなる可能性がある。よって、三次元データ符号化装置は、階層に対しては閾値R_THを大きく設定することで符号化効率を向上する。
図55は、指数ゴロム符号の一例を示す図であって、二値化前の値(多値)と、二値化後のビット(符号)との関係を示す図である。なお、図55に示す0と1とを反転させてもよい。
また、三次元データ符号化装置は、予測残差の二値化データに算術符号化を適用する。これにより、符号化効率を向上できる。なお、算術符号化の適用時に、二値化データのうち、nビットで二値化した部分であるnビット符号(n-bit code)と、指数ゴロムを用いて二値化した部分である残り符号(remaining code)とで、各ビットの0と1の出現確率の傾向は異なる可能性がある。よって、三次元データ符号化装置は、nビット符号と残り符号とで、算術符号化の適用方法を切替えてもよい。
例えば、三次元データ符号化装置は、nビット符号に対しては、ビット毎に異なる符号化テーブル(確率テーブル)を用いて算術符号化を行う。この際、三次元データ符号化装置は、ビット毎に使用する符号化テーブルの数を変えてもよい。例えば、三次元データ符号化装置は、nビット符号の先頭ビットb0には1個の符号化テーブルを用いて算術符号化を行う。また、三次元データ符号化装置は、次のビットb1に対しては2個の符号化テーブルを用いる。また、三次元データ符号化装置は、b0の値(0又は1)に応じてビットb1の算術符号化に用いる符号化テーブルを切替える。同様に、三次元データ符号化装置は、更に次のビットb2に対しては4個の符号化テーブルを用いる。また、三次元データ符号化装置は、b0及びb1の値(0~3)に応じて、ビットb2の算術符号化に用いる符号化テーブルを切替える。
このように、三次元データ符号化装置は、nビット符号の各ビットbn-1を算術符号化する際に、2n-1個の符号化テーブルを用いる。また、三次元データ符号化装置は、bn-1より前のビットの値(発生パターン)に応じて、使用する符号化テーブルを切替える。これにより、三次元データ符号化装置は、ビット毎に適切な符号化テーブルを使用できるので、符号化効率を向上できる。
なお、三次元データ符号化装置は、各ビットで使用する符号化テーブルの数を削減してもよい。例えば、三次元データ符号化装置は、各ビットbn-1を算術符号化する際に、bn-1より前のmビット(m<n-1)の値(発生パターン)に応じて2m個の符号化テーブルを切替えてもよい。これにより各ビットで使用する符号化テーブルの数を抑えつつ、符号化効率を向上できる。なお、三次元データ符号化装置は、各符号化テーブルにおける0と1の発生確率を、実際に発生した二値化データの値に応じて更新してもよい。また、三次元データ符号化装置は、一部のビットの符号化テーブルにおける0と1の発生確率を固定化してもよい。これにより、発生確率の更新回数を抑制できるので処理量を削減できる。
例えば、nビット符号がb0b1b2…bn-1である場合、b0用の符号化テーブルは1個(CTb0)である。b1用の符号化テーブルは2個(CTb10、CTb11)である。また、b0の値(0~1)に応じて使用する符号化テーブルが切替えられる。b2用の符号化テーブルは、4個(CTb20、CTb21、CTb22、CTb23)である。また、b0及びb1の値(0~3)に応じて使用する符号化テーブルが切替えられる。bn-1用の符号化テーブルは2n-1個(CTbn0、CTbn1、…、CTbn(2n-1-1))である。また、b0b1…bn-2の値(0~2n-1-1)に応じて使用する符号化テーブルを切替えられる。
なお、三次元データ符号化装置は、nビット符号に対しては、二値化せずに0~2n-1の値を設定するm-aryによる算術符号化(m=2n)を適用してもよい。また、三次元データ符号化装置が、nビット符号をm-aryで算術符号化する場合は、三次元データ復号装置もm-aryの算術復号によりnビット符号を復元してもよい。
図56は、例えば、残り符号が指数ゴロム符号の場合の処理を説明するための図である。指数ゴロムを用いて二値化した部分である残り符号は、図56に示すようにprefix部とsuffix部とを含む。例えば、三次元データ符号化装置は、prefix部とsuffix部とで符号化テーブルを切替える。つまり、三次元データ符号化装置は、prefix部に含まれる各ビットを、prefix用の符号化テーブルを用いて算術符号化し、suffix部に含まれる各ビットを、suffix用の符号化テーブルを用いて算術符号化する。
なお、三次元データ符号化装置は、各符号化テーブルにおける0と1の発生確率を、実際に発生した二値化データの値に応じて更新してもよい。または、三次元データ符号化装置は、どちらかの符号化テーブルにおける0と1の発生確率を固定化してもよい。これにより、発生確率の更新回数を抑制できるので処理量を削減できる。例えば、三次元データ符号化装置は、prefix部に対して発生確率を更新し、suffix部に対して発生確率を固定化してもよい。
また、三次元データ符号化装置は、量子化後の予測残差を、逆量子化及び再構成するこで復号し、復号した予測残差である復号値を符号化対象の三次元点以降の予測に利用する。具体的には、三次元データ符号化装置は、量子化後の予測残差(量子化値)に量子化スケールを乗算することで逆量子化値を算出し、逆量子化値と予測値とを加算して復号値(再構成値)を得る。
例えば、点a2の逆量子化値a2iqは、点a2の量子化値a2qを用いて(式A11)により算出される。点b2の逆量子化値b2iqは、点b2の量子化値b2qを用いて(式A12)により算出される。ここで、QS_LoD0は、LoD0用のQSであり、QS_LoD1は、LoD1用のQSである。つまり、LoDに応じてQSが変更されてもよい。
a2iq=a2q×QS_LoD0 ・・・(式A11)
b2iq=b2q×QS_LoD1 ・・・(式A12)
例えば、点a2の復号値a2recは、(式A13)に示すように、点a2の逆量子化値a2iqに、点a2の予測値a2pを加算することで算出される。点b2の復号値b2recは、(式A14)に示すように、点b2の逆量子化値b2iqに、点b2の予測値b2pを加算することで算出される。
a2rec=a2iq+a2p ・・・(式A13)
b2rec=b2iq+b2p ・・・(式A14)
以下、本実施の形態に係るビットストリームのシンタックス例を説明する。図57は、本実施の形態に係る属性ヘッダ(attribute_header)のシンタックス例を示す図である。属性ヘッダは、属性情報のヘッダ情報である。図57に示すように、属性ヘッダは、階層数情報(NumLoD)と、三次元点数情報(NumOfPoint[i])と、階層閾値(Thres_Lod[i])と、周囲点数情報(NumNeighorPoint[i])と、予測閾値(THd[i])と、量子化スケール(QS[i])と、二値化閾値(R_TH[i])とを含む。
階層数情報(NumLoD)は、用いられるLoDの階層数を示す。
三次元点数情報(NumOfPoint[i])は、階層iに属する三次元点の数を示す。なお、三次元データ符号化装置は、三次元点の総数を示す三次元点総数情報(AllNumOfPoint)を別のヘッダに付加してもよい。この場合、三次元データ符号化装置は、最下層に属する三次元点の数を示すNumOfPoint[NumLoD-1]をヘッダに付加しなくてもよい。この場合、三次元データ復号装置は、(式A15)によりNumOfPoint[NumLoD-1]を算出できる。これにより、ヘッダの符号量を削減できる。
階層閾値(Thres_Lod[i])は、階層iの設定に用いられる閾値である。三次元データ符号化装置及び三次元データ復号装置は、LoDi内の各点の間の距離が閾値Thres_LoD[i]より大きくなるようにLoDiを構成する。また、三次元データ符号化装置は、Thres_Lod[NumLoD-1](最下層)の値をヘッダに付加しなくてもよい。この場合、三次元データ復号装置は、Thres_Lod[NumLoD-1]の値を0と推定する。これによりヘッダの符号量を削減できる。
周囲点数情報(NumNeighorPoint[i])は、階層iに属する三次元点の予測値の生成に用いる周囲の点数の上限値を示す。三次元データ符号化装置は、周囲の点数MがNumNeighorPoint[i]に満たない場合(M<NumNeighorPoint[i])は、M個の周囲の点数を用いて予測値を算出してもよい。また、三次元データ符号化装置は、各LoDでNumNeighorPoint[i]の値を分ける必要がない場合は、全てのLoDで使用される1個の周囲点数情報(NumNeighorPoint)をヘッダに付加してもよい。
予測閾値(THd[i])は、階層iにて符号化又は復号対象の対象三次元点の予測に用いる周囲の三次元点と対象三次元点との距離の上限値を示す。三次元データ符号化装置及び三次元データ復号装置は、対象三次元点からの距離がTHd[i]より離れている三次元点を予測に用いない。なお、三次元データ符号化装置は、各LoDでTHd[i]の値を分ける必要がない場合は、全てのLoDで使用される1個の予測閾値(THd)をヘッダに付加してもよい。
量子化スケール(QS[i])は、階層iの量子化及び逆量子化で用いられる量子化スケールを示す。
二値化閾値(R_TH[i])は、階層iに属する三次元点の予測残差の二値化方法を切替えるための閾値である。例えば、三次元データ符号化装置は、予測残差が閾値R_THより小さい場合は、固定ビット数で予測残差puを二値化し、予測残差が閾値R_TH以上の場合は、閾値R_THの二値化データと(pu-R_TH)の値を指数ゴロムを用いて二値化する。なお、各LoDでR_TH[i]の値を切替える必要がない場合は、三次元データ符号化装置は、全てのLoDで使用される1個の二値化閾値(R_TH)をヘッダに付加してもよい。
なお、R_TH[i]はnbitで表せる最大値であってもよい。例えば6bitではR_THは63であり、8bitではR_THは255である。また、三次元データ符号化装置は、二値化閾値としてnbitで表せる最大値を符号化する代わりに、ビット数を符号化してもよい。例えば、三次元データ符号化装置は、R_TH[i]=63の場合は値6を、R_TH[i]=255の場合は値8をヘッダに付加してもよい。また、三次元データ符号化装置は、R_TH[i]を表すビット数の最小値(最小ビット数)を定義し、最小値からの相対ビット数をヘッダに付加してもよい。例えば、三次元データ符号化装置は、R_TH[i]=63で最小ビット数が6の場合は値0をヘッダに付加し、R_TH[i]=255で最小ビット数が6の場合は値2をヘッダに付加してもよい。
また、三次元データ符号化装置は、NumLoD、Thres_Lod[i]、NumNeighborPoint[i]、THd[i]、QS[i]及びR_TH[i]の少なくとも一つをエントロピー符号化してヘッダに付加してもよい。例えば、三次元データ符号化装置は、各値を二値化して算術符号化してもよい。また、三次元データ符号化装置は、処理量を抑えるために各値を固定長で符号化してもよい。
また、三次元データ符号化装置は、NumLoD、Thres_Lod[i]、NumNeighborPoint[i]、THd[i]、QS[i]、及びR_TH[i]の少なくとも一つをヘッダに付加しなくてもよい。例えば、これらのうちの少なくとも一つの値が、規格等のprofile又はlevel等で規定されてもよい。これによりヘッダのビット量を削減することができる。
図58は、本実施の形態に係る属性データ(attribute_data)のシンタックス例を示す図である。この属性データは、複数の三次元点の属性情報の符号化データを含む。図58に示すように属性データは、nビット符号(n-bit code)と、残り符号(remaining code)とを含む。
nビット符号は(n-bit code)は、属性情報の値の予測残差の符号化データ又はその一部である。nビット符号のビット長はR_TH[i]の値に依存する。例えばR_TH[i]の示す値が63の場合、nビット符号は6bitであり、R_TH[i]の示す値が255の場合、nビット符号は8bitである。
残り符号(remaining code)は、属性情報の値の予測残差の符号化データのうち、指数ゴロムで符号化された符号化データである。この残り符号は、nビット符号がR_TH[i]と同じ場合に符号化又は復号される。また、三次元データ復号装置は、nビット符号の値と残り符号の値を加算して予測残差を復号する。なお、nビット符号がR_TH[i]と同じ値でない場合は、残り符号は符号化又は復号されなくてもよい。
以下、三次元データ符号化装置における処理の流れを説明する。図59は、三次元データ符号化装置による三次元データ符号化処理のフローチャートである。
まず、三次元データ符号化装置は、位置情報(geometry)を符号化する(S3001)。例えば、三次元データ符号化は、8分木表現を用いて符号化を行う。
三次元データ符号化装置は、位置情報の符号化後に、量子化等によって三次元点の位置が変化した場合に、変化後の三次元点に元の三次元点の属性情報を再割り当てする(S3002)。例えば、三次元データ符号化装置は、位置の変化量に応じて属性情報の値を補間することで再割り当てを行う。例えば、三次元データ符号化装置は、変化後の三次元位置に近い変化前の三次元点をN個検出し、N個の三次元点の属性情報の値を重み付け平均する。例えば、三次元データ符号化装置は、重み付け平均において、変化後の三次元位置から各N個の三次元までの距離に基づいて重みを決定する。そして、三次元データ符号化装置は、重み付け平均により得られた値を変化後の三次元点の属性情報の値に決定する。また、三次元データ符号化装置は、量子化等によって2個以上の三次元点が同一の三次元位置に変化した場合は、その変化後の三次元点の属性情報の値として、変化前の2個以上の三次元点の属性情報の平均値を割当ててもよい。
次に、三次元データ符号化装置は、再割り当て後の属性情報(Attribute)を符号化する(S3003)。例えば、三次元データ符号化装置は、複数種類の属性情報を符号化する場合は、複数種類の属性情報を順に符号化してもよい。例えば、三次元データ符号化装置は、属性情報として、色と反射率とを符号化する場合は、色の符号化結果の後に反射率の符号化結果を付加したビットストリームを生成してもよい。なお、ビットストリームに付加される属性情報の複数の符号化結果の順番は、この順に限らず、どのような順番でもよい。
また、三次元データ符号化装置は、ビットストリーム内の各属性情報の符号化データ開始場所を示す情報をヘッダ等に付加してもよい。これにより、三次元データ復号装置は、復号が必要な属性情報を選択的に復号できるので、復号が不必要な属性情報の復号処理を省略できる。よって、三次元データ復号装置の処理量を削減できる。また、三次元データ符号化装置は、複数種類の属性情報を並列に符号化し、符号化結果を1つのビットストリームに統合してもよい。これにより、三次元データ符号化装置は、高速に複数種類の属性情報を符号化できる。
図60は、属性情報符号化処理(S3003)のフローチャートである。まず、三次元データ符号化装置は、LoDを設定する(S3011)。つまり、三次元データ符号化装置は、各三次元点を複数のLoDのいずれかに割り当てる。
次に、三次元データ符号化装置は、LoD単位のループを開始する(S3012)。つまり、三次元データ符号化装置は、LoD毎にステップS3013~S3021の処理を繰り返し行う。
次に、三次元データ符号化装置は、三次元点単位のループを開始する(S3013)。つまり、三次元データ符号化装置は、三次元点毎にステップS3014~S3020の処理を繰り返し行う。
まず、三次元データ符号化装置は、処理対象の対象三次元点の予測値の算出に用いる、対象三次元点の周囲に存在する三次元点である複数の周囲点を探索する(S3014)。次に、三次元データ符号化装置は、複数の周囲点の属性情報の値の重み付け平均を算出し、得られた値を予測値Pに設定する(S3015)。次に、三次元データ符号化装置は、対象三次元点の属性情報と予測値との差分である予測残差を算出する(S3016)。次に、三次元データ符号化装置は、予測残差を量子化することで量子化値を算出する(S3017)。次に、三次元データ符号化装置は、量子化値を算術符号化する(S3018)。
また、三次元データ符号化装置は、量子化値を逆量子化することで逆量子化値を算出する(S3019)。次に、三次元データ符号化装置は、逆量子化値に予測値を加算することで復号値を生成する(S3020)。次に、三次元データ符号化装置は、三次元点単位のループを終了する(S3021)。また、三次元データ符号化装置は、LoD単位のループを終了する(S3022)。
以下、上記の三次元データ符号化装置により生成されたビットストリームを復号する三次元データ復号装置における三次元データ復号処理について説明する。
三次元データ復号装置は、三次元データ符号化装置によって生成されたビットストリーム内の属性情報の二値化データを、三次元データ符号化装置と同様の方法で算術復号することで、復号された二値化データを生成する。なお、三次元データ符号化装置において、nビットで二値化した部分(nビット符号)と、指数ゴロムを用いて二値化した部分(残り符号)とで算術符号化の適用方法を切替えた場合は、三次元データ復号装置は、算術復号適用時に、それに合わせて復号を行う。
例えば、三次元データ復号装置は、nビット符号の算術復号方法において、ビット毎に異なる符号化テーブル(復号テーブル)を用いて算術復号を行う。この際、三次元データ復号装置は、ビット毎に使用する符号化テーブルの数を変えてもよい。例えば、nビット符号の先頭ビットb0には1個の符号化テーブルを用いて算術復号を行う。また、三次元データ復号装置は、次のビットb1に対しては2個の符号化テーブルを用いる。また、三次元データ復号装置は、b0の値(0又は1)に応じてビットb1の算術復号に用いる符号化テーブルを切替える。同様に、三次元データ復号装置は、更に次のビットb2に対しては4個の符号化テーブルを用いる。また、三次元データ復号装置は、b0及びb1の値(0~3)に応じて、ビットb2の算術復号に用いる符号化テーブルを切替える。
このように、三次元データ復号装置は、nビット符号の各ビットbn-1を算術復号する際に、2n-1個の符号化テーブルを用いる。また、三次元データ復号装置は、bn-1より前のビットの値(発生パターン)に応じて、使用する符号化テーブルを切替える。これにより、三次元データ復号装置は、ビット毎に適切な符号化テーブルを使用して符号化効率を向上したビットストリームを適切に復号できる。
なお、三次元データ復号装置は、各ビットで使用する符号化テーブルの数を削減してもよい。例えば、三次元データ復号装置は、各ビットbn-1を算術復号する際に、bn-1より前のmビット(m<n-1)の値(発生パターン)に応じて2m個の符号化テーブルを切替えてもよい。これにより、三次元データ復号装置は、各ビットで使用する符号化テーブルの数を抑えつつ、符号化効率を向上したビットストリームを適切に復号できる。なお、三次元データ復号装置は、各符号化テーブルにおける0と1の発生確率を、実際に発生した二値化データの値に応じて更新してもよい。また、三次元データ復号装置は、一部のビットの符号化テーブルにおける0と1の発生確率を固定化してもよい。これにより、発生確率の更新回数を抑制できるので処理量を削減できる。
例えば、nビット符号がb0b1b2…bn-1である場合、b0用の符号化テーブルは1個(CTb0)である。b1用の符号化テーブルは2個(CTb10、CTb11)である。また、b0の値(0~1)に応じて符号化テーブルが切替えられる。b2用の符号化テーブルは4個(CTb20、CTb21、CTb22、CTb23)である。また、b0及びb1の値(0~3)に応じて符号化テーブルが切替えられる。bn-1用の符号化テーブルは、2n-1個(CTbn0、CTbn1、…、CTbn(2n-1-1))である。また、b0b1…bn-2の値(0~2n-1-1)に応じて符号化テーブルが切替えられる。
図61は、例えば、残り符号が指数ゴロム符号である場合の処理を説明するための図である。三次元データ符号化装置が指数ゴロムを用いて二値化して符号化した部分(残り符号)は、図61に示すようにprefix部とsuffix部とを含む。例えば、三次元データ復号装置は、prefix部とsuffix部とで符号化テーブルを切替える。つまり、三次元データ復号装置は、prefix部に含まれる各ビットを、prefix用の符号化テーブルを用いて算術復号し、suffix部に含まれる各ビットを、suffix用の符号化テーブルを用いて算術復号する。
なお、三次元データ復号装置は、各符号化テーブルにおける0と1の発生確率を、復号時に発生した二値化データの値に応じて更新してもよい。または、三次元データ復号装置は、どちらかの符号化テーブルにおける0と1の発生確率を固定化してもよい。これにより、発生確率の更新回数を抑制できるので処理量を削減できる。例えば、三次元データ復号装置は、prefix部に対して発生確率を更新し、suffix部に対して発生確率を固定化してもよい。
また、三次元データ復号装置は、算術復号した予測残差の二値化データを、三次元データ符号化装置で用いられた符号化方法に合わせて多値化することで量子化後の予測残差(符号なし整数値)を復号する。三次元データ復号装置は、まずnビット符号の二値化データを算術復号することで復号したnビット符号の値を算出する。次に、三次元データ復号装置は、nビット符号の値とR_THの値とを比較する。
三次元データ復号装置は、nビット符号の値とR_THの値とが一致した場合、指数ゴロムで符号化されたビットが次に存在すると判定し、指数ゴロムで符号化された二値化データである残り符号を算術復号する。そして、三次元データ復号装置は、復号した残り符号から、残り符号とその値との関係を示す逆引きテーブルを用いて残り符号の値を算出する。図62は、残り符号とその値との関係を示す逆引きテーブルの例を示す図である。次に、三次元データ復号装置は、得られた残り符号の値をR_THに加算することで多値化された量子化後の予測残差を得る。
一方、三次元データ復号装置は、nビット符号の値とR_THの値とが一致しない(R_THより値が小さい)場合、nビット符号の値をそのまま、多値化された量子化後の予測残差に決定する。これにより、三次元データ復号装置は、三次元データ符号化装置で予測残差の値に応じて二値化方法を切替えて生成したビットストリームを適切に復号できる。
なお、三次元データ復号装置は、閾値R_THがビットストリームのヘッダ等に付加されている場合は、閾値R_THの値をヘッダから復号し、復号した閾値R_THの値を用いて復号方法を切替えてもよい。また、三次元データ復号装置は、LoD毎に閾値R_THがヘッダ等に付加されている場合、LoD毎に復号した閾値R_THを用いて復号方法を切替える。
例えば、閾値R_THが63であり、復号したnビット符号の値が63である場合、三次元データ復号装置は、残り符号を指数ゴロムにより復号することで残り符号の値を得る。例えば、図62に示す例では、残り符号が00100であり、残り符号の値として3が得られる。次に、三次元データ復号装置は、閾値R_THの値63と、残り符号の値3とを加算することで予測残差の値66を得る。
また、復号したnビット符号の値が32である場合、三次元データ復号装置は、nビット符号の値32を予測残差の値に設定する。
また、三次元データ復号装置は、復号した量子化後の予測残差を、例えば、三次元データ符号化装置における処理と逆の処理により、符号なし整数値から符号付整数値に変換する。これにより、三次元データ復号装置は、予測残差をエントロピー符号化する場合に、負の整数の発生を考慮せずに生成したビットストリームを適切に復号できる。なお、三次元データ復号装置は、必ずしも符号なし整数値を符号付整数値に変換する必要はなく、例えば符号ビットを別途エントロピー符号化して生成されたビットストリームを復号する場合は、符号ビットを復号してもよい。
三次元データ復号装置は、符号付整数値に変換した量子化後の予測残差を、逆量子化及び再構成によって復号することで復号値を生成する。また、三次元データ復号装置は、生成した復号値を、復号対象の三次元点以降の予測に利用する。具体的には、三次元データ復号装置は、量子化後の予測残差に、復号した量子化スケールを乗算することで逆量子化値を算出し、逆量子化値と予測値とを加算して復号値を得る。
復号された符号なし整数値(符号なし量子化値)は、以下の処理により符号付整数値に変換される。三次元データ復号装置は、復号された符号なし整数値a2uのLSB(least significant bit)が1である場合、符号付整数値a2qを-((a2u+1)>>1)に設定する。三次元データ復号装置は、符号なし整数値a2uのLSBが1でない場合、符号付整数値a2qを(a2u>>1)に設定する。
同様に、三次元データ復号装置は、復号された符号なし整数値b2uのLSBが1である場合、符号付整数値b2qを-((b2u+1)>>1)に設定する。三次元データ復号装置は、符号なし整数値n2uのLSBが1でない場合、符号付整数値b2qを(b2u>>1)に設定する。
また、三次元データ復号装置による逆量子化及び再構成処理の詳細は、三次元データ符号化装置における逆量子化及び再構成処理と同様である。
以下、三次元データ復号装置における処理の流れを説明する。図63は、三次元データ復号装置による三次元データ復号処理のフローチャートである。まず、三次元データ復号装置は、ビットストリームから位置情報(geometry)を復号する(S3031)。例えば、三次元データ復号装置は、8分木表現を用いて復号を行う。
次に、三次元データ復号装置は、ビットストリームから属性情報(Attribute)を復号する(S3032)。例えば、三次元データ復号装置は、複数種類の属性情報を復号する場合は、複数種類の属性情報を順に復号してもよい。例えば、三次元データ復号装置は、属性情報として色と反射率とを復号する場合は、ビットストリームに付加されている順に従い、色の符号化結果と反射率の符号化結果とを復号する。例えば、ビットストリームにおいて、色の符号化結果の後に反射率の符号化結果が付加されている場合、三次元データ復号装置は、色の符号化結果を復号し、その後に反射率の符号化結果を復号する。なお、三次元データ復号装置は、ビットストリームに付加される属性情報の符号化結果をどのような順番で復号してもよい。
また、三次元データ復号装置は、ビットストリーム内の各属性情報の符号化データ開始場所を示す情報を、ヘッダ等を復号することで取得してもよい。これにより、三次元データ復号装置は、復号が必要な属性情報を選択的に復号できるので、復号が不必要な属性情報の復号処理を省略できる。よって、三次元データ復号装置の処理量を削減できる。また、三次元データ復号装置は、複数種類の属性情報を並列に復号し、復号結果を1つの三次元点群に統合してもよい。これにより、三次元データ復号装置は、高速に複数種類の属性情報を復号できる。
図64は、属性情報復号処理(S3032)のフローチャートである。まず、三次元データ復号装置は、LoDを設定する(S3041)。つまり、三次元データ復号装置は、復号された位置情報を有する複数の三次元点の各々を複数のLoDのいずれかに割り当てる。例えば、この割り当て方法は、三次元データ符号化装置で用いられた割り当て方法と同じ方法である。
次に、三次元データ復号装置は、LoD単位のループを開始する(S3042)。つまり、三次元データ復号装置は、LoD毎にステップS3043~S3049の処理を繰り返し行う。
次に、三次元データ復号装置は、三次元点単位のループを開始する(S3043)。つまり、三次元データ復号装置は、三次元点毎にステップS3044~S3048の処理を繰り返し行う。
まず、三次元データ復号装置は、処理対象の対象三次元点の予測値の算出に用いる、対象三次元点の周囲に存在する三次元点である複数の周囲点を探索する(S3044)。次に、三次元データ復号装置は、複数の周囲点の属性情報の値の重み付け平均を算出し、得られた値を予測値Pに設定する(S3045)。なお、これらの処理は三次元データ符号化装置における処理と同様である。
次に、三次元データ復号装置は、ビットストリームから量子化値を算術復号する(S3046)。また、三次元データ復号装置は、復号した量子化値を逆量子化することで逆量子化値を算出する(S3047)。次に、三次元データ復号装置は、逆量子化値に予測値を加算することで復号値を生成する(S3048)。次に、三次元データ復号装置は、三次元点単位のループを終了する(S3049)。また、三次元データ復号装置は、LoD単位のループを終了する(S3050)。
次に、本実施の形態に係る三次元データ符号化装置及び三次元データ復号装置の構成を説明する。図65は、本実施の形態に係る三次元データ符号化装置3000の構成を示すブロック図である。この三次元データ符号化装置3000は、位置情報符号化部3001と、属性情報再割り当て部3002と、属性情報符号化部3003とを備える。
属性情報符号化部3003は、入力点群に含まれる複数の三次元点の位置情報(geometry)を符号化する。属性情報再割り当て部3002は、入力点群に含まれる複数の三次元点の属性情報の値を、位置情報の符号化及び復号結果を用いて再割り当てする。属性情報符号化部3003は、再割り当てされた属性情報(attribute)を符号化する。また、三次元データ符号化装置3000は、符号化された位置情報及び符号化された属性情報を含むビットストリームを生成する。
図66は、本実施の形態に係る三次元データ復号装置3010の構成を示すブロック図である。この三次元データ復号装置3010は、位置情報復号部3011と、属性情報復号部3012とを含む。
位置情報復号部3011は、ビットストリームから複数の三次元点の位置情報(geometry)を復号する。属性情報復号部3012は、ビットストリームから複数の三次元点の属性情報(attribute)を復号する。また、三次元データ復号装置3010は、復号した位置情報と復号した属性情報とを結合することで出力点群を生成する。
(実施の形態5)
以下では、符号化対象の三次元点を第1三次元点と称し、その周囲の三次元点を第2三次元点と称する場合がある。
例えば、三次元点の属性情報の予測値の生成において、符号化対象の三次元点の符号化済みかつ復号済みの周囲の三次元点のうち、最も距離が近い三次元点の属性値をそのまま予測値として生成しても構わない。また、予測値の生成では、予測モード情報(PredMode)を三次元点毎に付加し、複数の予測値から1つの予測値を選択することで予測値を生成できるようにしても構わない。つまり、例えば、総数Mの予測モードにおいて、予測モード0に平均値、予測モード1に三次元点Aの属性値、・・・、予測モードM-1に三次元点Zの属性値を割り当て、予測に使用した予測モードを三次元点毎にビットストリームに付加することが考えられる。このように、周囲の三次元点の属性情報の平均が予測値として算出される第1予測モードを示す第1予測モード値は、周囲の三次元点の属性情報そのものが予測値として算出される第2予測モードを示す第2予測モード値よりも小さくてもよい。ここで、予測モード0において算出される予測値である「平均値」は、符号化対象の三次元点の周囲の三次元点の属性値の平均値である。
図67は、実施の形態5に係る各予測モードにおいて算出される予測値を示すテーブルの第1の例を示す図である。図68は、実施の形態5に係る予測値に用いる属性情報の例を示す図である。図69は、実施の形態5に係る各予測モードにおいて算出される予測値を示すテーブルの第2の例を示す図である。
予測モード数Mは、ビットストリームに付加されても構わない。また、予測モード数Mは、ビットストリームに付加されずに規格のprofile、level等で値が規定されても構わない。また、予測モード数Mは、予測に用いる三次元点数Nから算出された値が用いられても構わない。例えば予測モード数Mは、M=N+1により算出されても構わない。
なお、図67に示されるテーブルは、予測に用いる三次元点数N=4、かつ、予測モード数M=5の場合の例である。点b2の属性情報の予測値は、点a0、a1、a2、b1の属性情報を用いて生成され得る。複数の予測モードから1つの予測モードを選択する場合、点b2からの各点a0、a1、a2、b1までの距離情報を元に、各点a0、a1、a2、b1の属性値を予測値として生成する予測モードを選択してもよい。予測モードは、符号化対象の三次元点毎に付加される。予測値は、付加された予測モードに応じた値に応じて算出される。
図69に示されるテーブルは、図67と同様に、予測に用いる三次元点数N=4、かつ、予測モード数M=5の場合の例である。点a2の属性情報の予測値は、点a0、a1の属性情報を用いて生成され得る。複数の予測モードから1つの予測モードを選択する場合、点a2のからの各店a0、a1までの距離情報を元に、各点a0、a1の属性値を予測値として生成する予測モードを選択してもよい。予測モードは、符号化対象の三次元点毎に付加される。予測値は、付加された予測モードに応じた値に応じて算出される。
なお、上記の点a2のように隣接点数、つまり、周囲の三次元点数Nが4個に満たない場合、テーブルにおいて予測値が未割当てである予測モードをnot availableとしてもよい。
なお、予測モードの値の割当ては、符号化対象の三次元点からの距離順で決定しても構わない。例えば、複数の予測モードを示す予測モード値は、予測値として用いる属性情報を有する周囲の三次元点までの符号化対象の三次元点からの距離が近いほど小さい。図67の例では、点b1、a2、a1、a0の順に符号化対象の三次元点である点b2への距離が近いことが示される。例えば、予測値の算出では、2以上の予測モードのうちの予測モード値が「1」で示される予測モードにおいて点b1の属性情報を予測値として算出し、予測モード値が「2」で示される予測モードにおいて点a2の属性情報を予測値として算出する。このように、点b1の属性情報を予測値として算出する予測モードを示す予測モード値は、点b2からの距離が点b1よりも遠い位置にある点a2の属性情報を予測値として算出する予測モードを示す予測モード値よりも小さい。
これにより、距離が近いため予測が当たりやすく選ばれやすい可能性のある点に小さい予測モード値を割り振ることができ、予測モード値を符号化するためのビット数を削減することができる。また、符号化対象の三次元点と同一のLoDに属する三次元点に優先的に小さい予測モード値を割当ててもよい。
図70は、実施の形態5に係る各予測モードにおいて算出される予測値を示すテーブルの第3の例を示す図である。具体的には、第3の例は、予測値に用いられる属性情報が周囲の三次元点の色情報(YUV)による値である場合の例である。このように、予測値に用いられる属性情報は、三次元点の色を示す色情報であってもよい。
図70に示されるように、予測モード値が「0」で示される予測モードにおいて算出される予測値は、YUV色空間を定義するYUVそれぞれの成分の平均である。具体的には、当該予測値は、点b1、a2、a1、a0にそれぞれ対応するY成分の値であるYb1、Ya2、Ya1、Ya0の重み付き平均Yaveと、点b1、a2、a1、a0にそれぞれ対応するU成分の値であるUb1、Ua2、Ua1、Ua0の重み付き平均Uaveと、点b1、a2、a1、a0にそれぞれ対応するV成分の値であるVb1、Va2、Va1、Va0の重み付き平均Vaveと、を含む。また、予測モード値が「1」~「4」で示される予測モードにおいて算出される予測値は、それぞれ、周囲の三次元点b1、a2、a1、a0の色情報を含む。色情報は、Y成分、U成分およびV成分の値の組み合わせで示される。
なお、図70では、色情報は、YUV色空間で定義される値で示されているが、YUV色空間に限らずに、RGB色空間で定義される値で示されてもよいし、他の色空間で定義される値で示されてもよい。
このように、予測値の算出では、予測モードの予測値として、2以上の平均または属性情報を算出してもよい。また、2以上の平均または属性情報は、それぞれ、色空間を定義する2以上の成分の値を示していてもよい。
なお、例えば、図70のテーブルにおいて予測モード値が「2」で示される予測モードが選択された場合、符号化対象の三次元点の属性値のY成分、U成分およびV成分をそれぞれ予測値Ya2,Ua2,Va2として用いて符号化してもよい。この場合、予測モード値としての「2」がビットストリームに付加される。
図71は、実施の形態5に係る各予測モードにおいて算出される予測値を示すテーブルの第4の例を示す図である。具体的には、第4の例は、予測値に用いられる属性情報が周囲の三次元点の反射率情報による値である場合の例である。反射率情報は、例えば、反射率Rを示す情報である。
図71に示されるように、予測モード値が「0」で示される予測モードにおいて算出される予測値は、点b1、a2、a1、a0にそれぞれ対応する反射率Rb1、Ra2、Ra1、Ra0の重み付き平均Raveである。また、予測モード値が「1」~「4」で示される予測モードにおいて算出される予測値は、それぞれ、周囲の三次元点b1、a2、a1、a0の反射率Rb1、Ra2、Ra1、Ra0である。
なお、例えば、図71のテーブルにおいて予測モード値が「3」で示される予測モードが選択された場合、符号化対象の三次元点の属性値の反射率を予測値Ra1として用いて符号化してもよい。この場合、予測モード値としての「3」がビットストリームに付加される。
図70および図71で示されるように、属性情報は、第1属性情報と、第1属性情報とは異なる種類の第2属性情報とを含んでいてもよい。第1属性情報は、例えば、色情報である。第2属性情報は、例えば、反射率情報である。予測値の算出では、第1属性情報を用いて第1予測値を算出し、かつ、第2属性情報を用いて第2予測値を算出してもよい。
属性情報が、YUV色空間、RGB色空間などの色情報のように、複数の成分を有する場合、成分毎に分けた予測モードで予測値が算出されても構わない。例えばYUV空間の場合、Y成分、U成分およびV成分を用いた予測値のそれぞれは、それぞれの成分において選択された予測モードで算出されてもよい。例えば、Y成分を用いた予測値を算出するための予測モードY、U成分を用いた予測値を算出するための予測モードU、および、V成分を用いた予測値を算出するための予測モードVのそれぞれにおいて、予測モード値が選択されてもよい。この場合、各成分の予測モードを示す予測モード値には、後述する図72~図74のテーブルの値が用いられ、これらの予測モード値が、それぞれビットストリームに付加されてもよい。なお、上記では、YUV色空間について説明したが、RGB色空間についても同様に適用することができる。
また、属性情報の複数成分のうちの2以上の成分を含む予測値は、共通する予測モードで算出されてもよい。例えばYUV色空間の場合、Y成分を用いた予測値を算出するための予測モードYと、UV成分を用いた予測値を算出するための予測モードUVとのそれぞれにおいて、予測モード値が選択されてもよい。この場合、各成分の予測モードを示す予測モード値には、後述する図72および図75のテーブルの値が用いられ、これらの予測モード値が、それぞれビットストリームに付加されてもよい。
図72は、実施の形態5に係る各予測モードにおいて算出される予測値を示すテーブルの第5の例を示す図である。具体的には、第5の例は、予測値に用いられる属性情報が周囲の三次元点の色情報のY成分の値である場合の例である。
図72に示されるように、予測モード値が「0」で示される予測モードYにおいて算出される予測値は、点b1、a2、a1、a0にそれぞれ対応するY成分の値であるYb1、Ya2、Ya1、Ya0の重み付き平均Yaveである。また、予測モード値が「1」~「4」で示される予測モードにおいて算出される予測値は、それぞれ、周囲の三次元点b1、a2、a1、a0のY成分の値Yb1、Ya2、Ya1、Ya0である。
なお、例えば、図72のテーブルにおいて予測モード値が「2」で示される予測モードYが選択された場合、符号化対象の三次元点の属性値のY成分を予測値Ya2として用いて符号化してもよい。この場合、予測モード値としての「2」がビットストリームに付加される。
図73は、実施の形態5に係る各予測モードにおいて算出される予測値を示すテーブルの第6の例を示す図である。具体的には、第6の例は、予測値に用いられる属性情報が周囲の三次元点の色情報のU成分の値である場合の例である。
図73に示されるように、予測モード値が「0」で示される予測モードUにおいて算出される予測値は、点b1、a2、a1、a0にそれぞれ対応するU成分の値であるUb1、Ua2、Ua1、Ua0の重み付き平均Uaveである。また、予測モード値が「1」~「4」で示される予測モードにおいて算出される予測値は、それぞれ、周囲の三次元点b1、a2、a1、a0のU成分の値Ub1、Ua2、Ua1、Ua0である。
なお、例えば、図73のテーブルにおいて予測モード値が「1」で示される予測モードUが選択された場合、符号化対象の三次元点の属性値のU成分を予測値Ub1として用いて符号化してもよい。この場合、予測モード値としての「1」がビットストリームに付加される。
図74は、実施の形態5に係る各予測モードにおいて算出される予測値を示すテーブルの第7の例を示す図である。具体的には、第7の例は、予測値に用いられる属性情報が周囲の三次元点の色情報のV成分の値である場合の例である。
図74に示されるように、予測モード値が「0」で示される予測モードVにおいて算出される予測値は、点b1、a2、a1、a0にそれぞれ対応するV成分の値であるVb1、Va2、Va1、Va0の重み付き平均Vaveである。また、予測モード値が「1」~「4」で示される予測モードにおいて算出される予測値は、それぞれ、周囲の三次元点b1、a2、a1、a0のV成分の値Vb1、Va2、Va1、Va0である。
なお、例えば、図74のテーブルに置いて予測モード値が「4」で示される予測モードVが選択された場合、符号化対象の三次元点の属性値のV成分を予測値Va0として用いて符号化してもよい。この場合、予測モード値としての「4」がビットストリームに付加される。
図75は、実施の形態5に係る各予測モードにおいて算出される予測値を示すテーブルの第8の例を示す図である。具体的には、第8の例は、予測値に用いられる属性情報が周囲の三次元点の色情報のU成分の値およびV成分の値である場合の例である。
図75に示されるように、予測モード値が「0」で示される予測モードUにおいて算出される予測値は、点b1、a2、a1、a0にそれぞれ対応するU成分の値であるUb1、Ub2、Ua1、Ua0の重み付き平均Uaveと、点b1、a2、a1、a0にそれぞれ対応するV成分の値であるVb1、Vb2、Va1、Va0の重み付き平均Vaveとを含む。また、予測モード値が「1」~「4」で示される予測モードにおいて算出される予測値は、それぞれ、周囲の三次元点b1、a2、a1、a0のU成分の値およびV成分の値を含む。
なお、例えば、図75のテーブルに置いて予測モード値が「1」で示される予測モードUVが選択された場合、符号化対象の三次元点の属性値のU成分およびV成分をそれぞれ予測値Ub1、Vb1として用いて符号化してもよい。この場合、予測モード値としての「1」がビットストリームに付加される。
符号化時の予測モードは、RD最適化によって選択されてもよい。例えば、ある予測モードPを選択した場合のコストcost(P)を算出し、cost(P)が最小になる予測モードPを選択することが考えられる。コストcost(P)としては、例えば、予測モードPの予測値を用いた場合の予測残差residual(P)と、予測モードPを符号化するために必要なビット数bit(P)と、調整パラメータλ値とを用いて、式D1で算出してもよい。
cost(P)=abs(residual(P))+λ×bit(P)・・・(式D1)
abs(x)はxの絶対値を示す。abs(x)の代わりにxの2乗値を用いても構わない。
上記式D1を用いることにより、予測残差の大きさと予測モードを符号化するために必要なビット数とのバランスを考慮した予測モードを選択することが可能となる。なお、調整パラメータλは、量子化スケールの値に応じて異なる値が設定されてもよい。例えば量子化スケールが小さい場合(高ビットレート時)、λ値を小さくすることで予測残差residual(P)が小さくなる予測モードを選択して予測精度をなるべく向上し、量子化スケールが大きい場合(低ビットレート時)、λ値を大きくすることで予測モードPを符号化するために必要なビット数bit(P)を考慮しながら適切な予測モードが選択されるようにしてもよい。
なお、量子化スケールが小さい場合とは、例えば、第1の量子化スケールよりも小さい場合である。量子化スケールが大きい場合とは、例えば、第1の量子化スケール以上の第2の量子化スケールより大きい場合である。また、量子化スケールが小さいほどλ値を小さい値に設定してもよい。
予測残差residual(P)は、符号化対象の三次元点の属性値から予測モードPの予測値を減算することで算出される。なお、コスト算出時の予測残差residual(P)の代わりに、予測残差residual(P)を量子化、逆量子化し、予測値と加算して復号値を求め、元の三次元点の属性値と予測モードPを用いた場合の復号値との差分(符号化誤差)をコスト値に反映しても構わない。これにより、符号化誤差が小さい予測モードを選択することが可能となる。
予測モードPを符号化するために必要なビット数bit(P)は、例えば予測モードを二値化して符号化する場合は、二値化後のビット数を用いてもよい。例えば、予測モード数M=5の場合、図76のように、予測モード数Mを用いて最大値を5としたtruncated unary codeで予測モードを示す予測モード値を二値化してもよい。この場合、予測モード値が「0」の場合は1ビット、予測モード値が「1」の場合は2ビット、予測モード値が「2」の場合は3ビット、予測モード値が「4」および「5」の場合は4ビットが、それぞれの予測モード値の符号化に必要なビット数bit(P)として用いられる。truncated unary codeを用いることで予測モードの値が小さいほど少ないビット数となる。このため、予測モード値が「0」の場合に予測値として算出される平均値、または、予測モード値が「1」の場合に予測値として算出される三次元点の属性情報、つまり、符号化対象の三次元点に距離が近い三次元点の属性情報のように、選択されやすい、例えばcost(P)が最小になりやすい予測値を算出する予測モードを示す予測モード値の符号量を削減することができる。
また、予測モード数の最大値が決まっていない場合は、図77のように、予測モード示す予測モード値をunary codeで二値化してもよい。また、各予測モードの発生確率が近い場合は、図78のように、予測モードを示す予測モード値をfixed codeで二値化して符号量を削減するようにしてもよい。
なお、予測モードPを示す予測モード値を符号化するために必要なビット数bit(P)として、予測モードPを示す予測モード値の二値化データを算術符号化し、算術符号化後の符号量をbit(P)の値としても構わない。これにより、より正確な必要ビット数bit(P)を用いてコストが算出できるため、より適切な予測モードを選択することが可能となる。
なお、図76は、実施の形態5に係る予測モード値を二値化して符号化する場合の二値化テーブルの第1の例を示す図である。具体的には、第1の例は、予測モード数M=5の場合において、truncated unary codeで予測モード値を二値化する例である。
また、図77は、実施の形態5に係る予測モード値を二値化して符号化する場合の二値化テーブルの第2の例を示す図である。具体的には、第2の例は、予測モード数M=5の場合において、unary codeで予測モード値を二値化する例である。
また、図78は、実施の形態5に係る予測モード値を二値化して符号化する場合の二値化テーブルの第3の例を示す図である。具体的には、第3の例は、予測モード数M=5の場合において、fixed codeで予測モード値を二値化する例である。
予測モード(PredMode)を示す予測モード値は、二値化後に算術符号化してビットストリームに付加されてもよい。予測モード値は、上述したように、例えば予測モード数Mの値を用いたtruncated unary codeで二値化されてもよい。この場合、予測モード値の二値化後のビット数の最大数は、M-1となる。
また、二値化後の二値データは、符号化テーブルを用いて算術符号化されてもよい。この場合、例えば、二値データのビット毎に符号化テーブルを切替えて符号化することで符号化効率を向上させてもよい。また、符号化テーブル数を抑制するために、二値データのうち、先頭ビットone bitにone bit用の符号化テーブルAを用いて符号化し、残りのビットremaining bitの各ビットにremaining bit用の符号化テーブルBを用いて符号化してもよい。例えば、図79に示される予測モード値が「3」の二値化データ「1110」を符号化する場合、先頭ビットonebitの「1」に符号化テーブルAを用いて符号化し、残りのビットremaining bitの「110」のそれぞれのビットに符号化テーブルBを用いて符号化してもよい。
なお、図79は、実施の形態5に係る予測モードを二値化して符号化する場合の二値化テーブルの二値データを符号化する例について説明するための図である。図79における二値化テーブルは、予測モード数M=5において、truncated unary codeで予測モード値を二値化する例である。
これにより、符号化テーブル数を抑制しつつ、二値データのビット位置に応じて符号化テーブルを切替えることで符号化効率を向上させることができる。なお、Remaining bitの符号化時に、更に、ビット毎に符号化テーブルを切替えて算術符号化する、または、算術符号化された結果に応じて当該符号化テーブルを切り替えて復号してもよい。
予測モード数Mを用いたtruncated unary codeで予測モード値を二値化して符号化する場合、復号側で復号した二値データから予測モードが特定できるように、truncated unary codeに用いられた予測モード数Mがビットストリームのヘッダ等に付加されても構わない。また、予測モード数の取りうる値MaxMが規格等で規定されてもよく、MaxM-Mの値(M<=MaxM)がヘッダに付加されても構わない。また、予測モード数Mは、ストリームに付加されずに、規格等のprofileまたはlevelで規定されても構わない。
なお、truncated unary codeを用いて二値化した予測モード値は、上述のようにone bit部とremaining部で符号化テーブルを切替えて算術符号化することが考えられる。なお、各符号化テーブルにおける0と1の発生確率は、実際に発生した二値データの値に応じて更新されてもよい。また、どちらかの符号化テーブルにおける0と1の発生確率は、固定化されてもよい。これにより、発生確率の更新回数を抑制して処理量を削減しても構わない。例えばone bit部の発生確率は更新され、remaining bit部の発生確率は固定化されてもよい。
図80は、実施の形態5に係る予測モード値の符号化の一例を示すフローチャートである。図81は、実施の形態5に係る予測モード値の復号の一例を示すフローチャートである。
図80に示されるように、予測モード値の符号化では、まず、予測モード値を、予測モード数Mを用いたtruncated unary codeで二値化する(S3401)。
次に、truncated unary codeの二値データを算術符号化する(S3402)。これにより、ビットストリームには、二値データが予測モードとして含まれる。
また、図81に示されるように、予測モード値の復号では、まず、予測モード数Mを用いてビットストリームを算術復号し、truncated unary codeの二値データを生成する(S3403)。
次に、truncated unary codeの二値データから予測モード値を算出する(S3404)。
予測モード(PredMode)を示す予測モード値の二値化の方法として、予測モード数Mの値を用いたtruncated unary codeで二値化する例を示したが、必ずしもこれに限らない。例えば、予測モードに予測値が割当たった数L(L<=M)を用いたtruncated unary codeで予測モード値を二値化してもよい。例えば、予測モード数M=5の場合に、ある符号対象の三次元点の予測に利用可能な周囲の三次元点が2個の場合、図82に示されるように3個の予測モードがavailableとなり、残りの2個の予測モードがnot availableとなるケースがある。例えば、図82に示されるように予測モード数M=5の場合で、符号化対象の三次元点の周囲にある予測に利用可能な三次元点の数が2個であり、予測モード値が「3」および「4」を示す予測モードに予測値が割当たっていない場合がある。
この場合、図83に示されるように、予測モードが割当たった値Lを最大値としてtruncated unary codeで予測モード値を二値化することにより、予測モード数Mでtruncated unary codeした場合より二値化後のビット数を削減できる可能性がある。例えば、この場合L=3であるため、最大値3としてtruncated unary codeで二値化することでビット数を削減することができる。このように、予測モードに予測値が割当たった数Lを最大値としてtruncated unary codeにて二値化することで、予測モード値の二値化後のビット数を削減してもよい。
二値化後の二値データは符号化テーブルを用いて算術符号化されてもよい。この場合、例えば二値データのビット毎に符号化テーブルを切替えて符号化することで符号化効率を向上させてもよい。また、符号化テーブル数を抑制するために、二値化データのうち、先頭ビットone bitにone bit用の符号化テーブルAを用いて符号化し、残りのビットremaining bitの各ビットにremaining bit用の符号化テーブルBを用いて符号化してもよい。例えば、図83に示される予測モード値が「2」の二値化データ「11」を符号化する場合、先頭ビットonebitの「1」に符号化テーブルAを用いて符号化し、残りのビットremaining bitの「1」に符号化テーブルBを用いて符号化してもよい。
なお、図83は、実施の形態5に係る予測モードを二値化して符号化する場合の二値化テーブルの二値データを符号化する例について説明するための図である。図83における二値化テーブルは、予測モードに予測値が割り当たった数L=3において、truncated unary codeで予測モード値を二値化する例である。
これにより、符号化テーブル数を抑制しつつ、二値データのビット位置に応じて符号化テーブルを切替えることで符号化効率を向上させることができる。なお、Remaining bitの符号化時に、更に、ビット毎に符号化テーブルを切替えて算術符号化する、または、算術符号化された結果に応じて当該符号化テーブルを切り替えて復号してもよい。
予測モード値を、予測値が割り当たった数Lを用いたtruncated unary codeで二値化して符号化する場合、復号側で復号した二値データから予測モードが特定できるように、符号化時と同様の方法にて予測モードに予測値を割当てることで数Lを算出し、算出されたLを用いて予測モードを復号しても構わない。
なお、truncated unary codeを用いて二値化した予測モード値は、上述のようにone bit部とremaining部で符号化テーブルを切替えて算術符号化することが考えられる。なお、各符号化テーブルにおける0と1の発生確率は、実際に発生した二値データの値に応じて更新されてもよい。また、どちらかの符号化テーブルにおける0と1の発生確率は、固定化されてもよい。これにより、発生確率の更新回数を抑制して処理量を削減しても構わない。例えばone bit部の発生確率は更新され、remaining bit部の発生確率は固定化されてもよい。
図84は、実施の形態5に係る予測モード値の符号化の他の一例を示すフローチャートである。図85は、実施の形態5に係る予測モード値の復号の他の一例を示すフローチャートである。
図84に示されるように、予測モード値の符号化では、まず、予測モードに予測値が割り当たった数Lを算出する(S3411)。
次に、予測モード値を、数Lを用いたtruncated unary codeで二値化する(S3412)。
次に、truncated unary codeの二値データを算術符号化する(S3413)。
また、図85に示されるように、予測モード値の復号では、まず、予測モードに予測値が割り当たった数Lを算出する(S3414)。
次に、数Lを用いてビットストリームを算術復号し、truncated unary codeの二値データを生成する(S3415)。
次に、truncated unary codeの二値データから予測モード値を算出する(S3416)。
予測モード値は、全ての属性値毎に付加されなくてもよい。例えば、ある条件を満たせば予測モードを固定して、予測モード値をビットストリームに付加しないようにし、ある条件を満たさなければ、予測モードを選択してビットストリームに予測モード値を付加するようにしてもよい。例えば、条件Aを満たせば予測モード値を「0」に固定して周囲の三次元点の平均値から予測値を算出し、条件Aを満たさなければ複数の予測モードから1つの予測モードを選択してビットストリームに選択した予測モードを示す予測モード値を付加するようにしてもよい。
ある条件Aとしては、例えば、符号化対象の三次元点における周囲N個(符号化済み、復号済み)の三次元点の属性値(a[0]~a[N-1])の最大絶対差分値maxdiffを算出し、最大絶対差分値maxdiffが閾値Thfix未満であることである。周囲の三次元点の属性値の最大絶対差分値が閾値Thfix未満である場合、各三次元点の属性値に差が少なく、予測モードを選択しても予測値に差がないと判定し、予測モード値を「0」に固定して予測モード値を符号化しないことで、予測モードを符号化するための符号量を削減しつつ、適切な予測値を生成することが可能となる。
なお、閾値Thfixは、ビットストリームのヘッダ等に付加されてもよく、エンコーダは、閾値Thfixの値を変えて符号化できるようにしても構わない。例えば、エンコーダは、高ビットレートでの符号化時に、閾値Thfixの値を低ビットレート時よりも小さくしてヘッダに付加し、予測モードを選択して符号化するケースを増やすことで、少しでも予測残差が小さくなるように符号化してもよい。また、エンコーダは、低ビットレートでの符号化時に、閾値Thfixの値を高ビットレート時よりも大きくしてヘッダに付加し、予測モードを固定して符号化する。このように、低ビットレート時に予測モードが固定して符号化されるケースを増やすことで、予測モードを符号化するビット量を抑えつつ、符号化効率を向上することができる。また、閾値Thfixは、ビットストリームに付加されずに、規格のprofileまたはlevelで規定されてもよい。
予測に用いられる、符号化対象の三次元点の周囲のN個の三次元点は、符号化対象の三次元点からの距離が閾値THdより小さい符号化済みおよび復号済みのN個の三次元点である。Nの最大値は、NumNeighborPointとしてビットストリームに付加されてもよい。周囲の符号化済みおよび復号済みの三次元点数がNumNeighborPointの値に満たない場合など、Nの値は、常にNumNeighborPointの値に一致しなくてもよい。
予測に用いられる、符号化対象の三次元点の周囲の三次元点の属性値の最大絶対差分値maxdiffが閾値Thfix[i]より小さければ予測モード値が「0」に固定される例を示したが、必ずしもこれに限らず、予測モード値を「0」~「M-1」のいずれかに固定するようにしても構わない。また固定される予測モード値をビットストリームに付加しても構わない。
図86は、実施の形態5に係る符号化時に条件Aに応じて予測モード値を固定するか否かを決定する処理の一例を示すフローチャートである。図87は、実施の形態5に係る復号時に条件Aに応じて予測モード値を固定された値にするか復号するかを決定する処理の一例を示すフローチャートである。
図86に示されるように、まず、三次元データ符号化装置は、符号化対象の三次元点の周囲のN個の三次元点における属性値の最大絶対差分値maxdiffを算出する(S3421)。
次に、三次元データ符号化装置は、最大絶対差分値maxdiffが閾値Thfix未満であるか否かを判定する(S3422)。なお、閾値Thfixは、符号化され、ストリームのヘッダ等に付加されてもよい。
三次元データ符号化装置は、最大絶対差分値maxdiffが閾値Thfix未満である場合(S3422でYes)、予測モード値を「0」に決定する(S3423)。
一方で、三次元データ符号化装置は、最大絶対差分値maxdiffが閾値Thfix以上である場合(S3422でNo)、複数の予測モードから1つの予測モードを選択する(S3424)。予測モードの選択処理の詳細は、図94を用いて後述する。
そして、三次元データ符号化装置は、選択された予測モードを示す予測モード値を算術符号化する(S3425)。具体的には、三次元データ符号化装置は、図80で説明したステップS3401およびS3402を実行することで予測モード値を算術符号化する。なお、三次元データ符号化装置は、予測モードPredModeを、予測値が割当たった予測モード数を用いてtruncated unary codeで2値化して算術符号化してもよい。つまり、三次元データ符号化装置は、図84で説明したステップS3411~S3413を実行することで予測モード値を算術符号化してもよい。
三次元データ符号化装置は、ステップS3423において決定された予測モード、または、ステップS3425において選択された予測モードの予測値を算出し、算出された予測値を出力する(S3426)。三次元データ符号化装置は、ステップS3423で決定された予測モード値を用いる場合、予測モード値が「0」で示される予測モードの予測値として、周囲のN個の三次元点の属性値の平均を算出する。
また、図87に示されるように、まず、三次元データ復号装置は、復号対象の三次元点の周囲のN個の三次元点における属性値の最大絶対差分値maxdiffを算出する(S3431)。なお、最大絶対差分値maxdiffは、図88に示されるように算出されてもよい。最大絶対差分値maxdiffは、例えば、周囲のN個の三次元点のうちの2つをペアとして選んだ場合に取り得る全てのペアのそれぞれの差分の絶対値を算出し、算出された複数の絶対値のうちの最大値である。
次に、三次元データ復号装置は、最大絶対差分値maxdiffが閾値Thfix未満であるか否かを判定する(S3432)。なお、閾値Thfixは、ストリームのヘッダ等が復号されて設定されてもよい。
三次元データ復号装置は、最大絶対差分値maxdiffが閾値Thfix未満である場合(S3432でYes)、予測モード値を「0」に決定する(S3433)。
一方で、三次元データ復号装置は、最大絶対差分値maxdiffが閾値Thfix以上である場合(S3432でNo)、予測モード値をビットストリームから復号する(S3434)。
三次元データ復号装置は、ステップS3433で決定された予測モード値、または、ステップS3434で復号された予測モード値で示される予測モードの予測値を算出し、算出された予測値を出力する(S3435)。三次元データ復号装置は、ステップS3433で決定された予測モード値を用いる場合、予測モード値が「0」で示される予測モードの予測値として、周囲のN個の三次元点の属性値の平均を算出する。
図89は、実施の形態5に係るシンタックスの例を示す図である。図89のシンタックスにおける、NumLoD、NumNeighborPoint[i]、NumPredMode[i]、Thfix[i]およびNumOfPoint[i]について順に説明する。
NumLoDは、LoDの階層数を示す。
NumNeighborPoint[i]は、階層iに属する三次元点の予測値生成に用いる周囲の点数の上限値を示す。周囲の点数MがNumNeighborPoint[i]に満たない場合(M<NumNeighborPoint[i])、予測値は、M個の周囲の点数を用いて算出されてもよい。また、各LoDでNumNeighborPoint[i]の値を分ける必要がない場合は、1個のNumNeighborPointがヘッダに付加されてもよい。
NumPredMode[i]は、階層iの属性値の予測に用いる予測モードの総数(M)を示す。なお、予測モード数の取りうる値MaxMは、規格等で値を規定され、MaxM-Mの値(0<M<=MaxM)は、NumPredMode[i]としてヘッダに付加され、最大値MaxM-1のtruncated unary codeで二値化して符号化されても構わない。また、予測モード数NumPredMode[i]は、ストリームに付加されずに、規格等のprofileまたはlevelで値が規定されても構わない。また、予測モード数は、NumNeighborPoint[i]+NumPredMode[i]で規定されても構わない。また、各LoDでNumPredMode[i]の値を分ける必要がない場合は、1個のNumPredModeがヘッダに付加されてもよい。
Thfix[i]は、階層iの予測モードを固定するかどうかを判定するための最大絶対差分値の閾値を示す。予測に用いる周囲三次元点の属性値の最大絶対差分値がThfix[i]より小さければ予測モードが0に固定される。なお、Thfix[i]は、ストリームに付加されずに、規格等のprofileまたはlevelで規定されても構わない。また、各LoDでThfix[i]の値を分ける必要がない場合は、1個のThfixがヘッダに付加してもよい。
NumOfPoint[i]は、階層iに属する三次元点の数を示す。なお、三次元点の総数AllNumOfPointを別ヘッダに付加する場合は、NumOfPoint[NumLoD-1](最下層に属する三次元点の数)はヘッダに付加されず、
を計算して算出するようにしてもよい。これにより、ヘッダの符号量を削減できる。
なお、NumPredMode[i]の設定例として、LoDに属する三次元点の距離が離れているため予測が当たりにくい上位層ほどNumPredMode[i]の値を大きく設定し、選択できる予測モードを増やしてもよい。また、予測が当たりやすい下位層ほどNumPredMode[i]の値を小さく設定し、予測モードの符号化に必要なビット量を抑制してもよい。これら設定により、上位層では選択できる予測モードを増やして予測残差を小さくし、下位層では予測モードの符号量を抑えることができ符号化効率を向上させることができる。
また、Thfix[i]の設定例として、LoDに属する三次元点の距離が離れているため予測が当たりにくい上位層ほどThfix[i]の値を小さく設定し、予測モードを選択するケースを増やしてもよい。また、予測が当たりやすい下位層ほどThfix[i]の値を大きく設定し、予測モードを固定して予測モードの符号化に必要なビット量を抑制してもよい。これら設定により、上位層では予測モードを選択するケースを増やして予測残差を小さくし、下位層では予測モードを固定して予測モードの符号量を抑えることができ、符号化効率を向上させることができる。
上記NumLoD、NumNeighborPoint[i]、NumPredMode[i]、Thfix[i]またはNumOfPoint[i]は、エントロピー符号化されてヘッダに付加されてもよい。例えば各値は、二値化されて算術符号化されてもよい。また、各値は、処理量を抑えるために固定長で符号化されても構わない。
図90は、実施の形態5に係るシンタックスの例を示す図である。図90のシンタックスにおける、PredMode、n-bit codeおよびremaining codeについて順に説明する。
PredModeは、階層iのj番目の三次元点の属性値を符号化、復号するための予測モードを示す。PredModeは、「0」から「M-1」(Mは予測モードの総数)の値をとる。PredModeがビットストリームにない場合(条件であるmaxdiff >= Thfix[i] && NumPredMode[i] > 1を満たさない場合)、PredModeは値0と推定されてもよい。なお、PredModeは、「0」に限らず「0」から「M-1」のいずれかの値が推定値とされてもよい。また、PredModeがビットストリームにない場合の推定値は、別途ヘッダ等に付加されても構わない。また、PredModeは予測値が割当たった予測モード数を用いてtruncated unary codeで二値化して算術符号化されてもよい。
n-bit codeは、属性情報の値の予測残差の符号化データを示す。n-bit codeのビット長は、R_TH[i]の値に依存する。n-bit codeのビット長は、例えばR_TH[i]の示す値が63の場合は6bitとなり、R_TH[i]の示す値が255の場合は8bitとなる。
remaining codeは、属性情報の値の予測残差の符号化データのうち、Exponential-Golombで符号化された符号化データを示す。remaining codeは、n-bit codeがR_TH[i]と同じ場合に復号され、n-bit codeの値とremaining codeの値を加算して予測残差を復号する。なお、n-bit codeがR_TH[i]と同じ値でない場合は、remaining codeは復号されなくてよい。
以下、三次元データ符号化装置における処理の流れを説明する。図91は、実施の形態5に係る三次元データ符号化装置による三次元データ符号化処理のフローチャートである。
まず、三次元データ符号化装置は、位置情報(geometry)を符号化する(S3441)。例えば、三次元データ符号化は、8分木表現を用いて符号化を行う。
三次元データ符号化装置は、位置情報の符号化後に、量子化等によって三次元点の位置が変化した場合に、変化後の三次元点に元の三次元点の属性情報を再割り当てする(S3442)。例えば、三次元データ符号化装置は、位置の変化量に応じて属性情報の値を補間することで再割り当てを行う。例えば、三次元データ符号化装置は、変化後の三次元位置に近い変化前の三次元点をN個検出し、N個の三次元点の属性情報の値を重み付け平均する。例えば、三次元データ符号化装置は、重み付け平均において、変化後の三次元位置から各N個の三次元までの距離に基づいて重みを決定する。そして、三次元データ符号化装置は、重み付け平均により得られた値を変化後の三次元点の属性情報の値に決定する。また、三次元データ符号化装置は、量子化等によって2個以上の三次元点が同一の三次元位置に変化した場合は、その変化後の三次元点の属性情報の値として、変化前の2個以上の三次元点の属性情報の平均値を割当ててもよい。
次に、三次元データ符号化装置は、再割り当て後の属性情報(Attribute)を符号化する(S3443)。例えば、三次元データ符号化装置は、複数種類の属性情報を符号化する場合は、複数種類の属性情報を順に符号化してもよい。例えば、三次元データ符号化装置は、属性情報として、色と反射率とを符号化する場合は、色の符号化結果の後に反射率の符号化結果を付加したビットストリームを生成してもよい。なお、ビットストリームに付加される属性情報の複数の符号化結果の順番は、この順に限らず、どのような順番でもよい。
また、三次元データ符号化装置は、ビットストリーム内の各属性情報の符号化データ開始場所を示す情報をヘッダ等に付加してもよい。これにより、三次元データ復号装置は、復号が必要な属性情報を選択的に復号できるので、復号が不必要な属性情報の復号処理を省略できる。よって、三次元データ復号装置の処理量を削減できる。また、三次元データ符号化装置は、複数種類の属性情報を並列に符号化し、符号化結果を1つのビットストリームに統合してもよい。これにより、三次元データ符号化装置は、高速に複数種類の属性情報を符号化できる。
図92は、実施の形態5に係る属性情報符号化処理(S3443)のフローチャートである。まず、三次元データ符号化装置は、LoDを設定する(S3451)。つまり、三次元データ符号化装置は、各三次元点を複数のLoDのいずれかに割り当てる。
次に、三次元データ符号化装置は、LoD単位のループを開始する(S3452)。つまり、三次元データ符号化装置は、LoD毎にステップS3453~S3461の処理を繰り返し行う。
次に、三次元データ符号化装置は、三次元点単位のループを開始する(S3453)。つまり、三次元データ符号化装置は、三次元点毎にステップS3454~S3460の処理を繰り返し行う。
まず、三次元データ符号化装置は、処理対象の対象三次元点の予測値の算出に用いる、対象三次元点の周囲に存在する三次元点である複数の周囲点を探索する(S3454)。
次に、三次元データ符号化装置は、対象三次元点の予測値Pを算出する(S3455)。予測値Pの算出処理の具体例は、図93を用いて後述する。
次に、三次元データ符号化装置は、対象三次元点の属性情報と予測値との差分である予測残差を算出する(S3456)。
次に、三次元データ符号化装置は、予測残差を量子化することで量子化値を算出する(S3457)。
次に、三次元データ符号化装置は、量子化値を算術符号化する(S3458)。
また、三次元データ符号化装置は、量子化値を逆量子化することで逆量子化値を算出する(S3459)。
次に、三次元データ符号化装置は、逆量子化値に予測値を加算することで復号値を生成する(S3460)。
次に、三次元データ符号化装置は、三次元点単位のループを終了する(S3461)。
また、三次元データ符号化装置は、LoD単位のループを終了する(S3462)。
図93は、実施の形態5に係る三次元データ符号化装置における予測値の算出処理(S3455)のフローチャートである。
まず、三次元データ符号化装置は、処理対象の対象三次元点の予測値の予測に利用可能な、対象三次元点の周囲のN個の三次元点の属性値の重み付き平均を算出し、算出した重み付き平均を予測モード値が「0」の予測モードに割り当てる(S3420)。
次に、三次元データ符号化装置は、図86で説明したステップS3421~S3426を実行することで、対象三次元点の予測値を出力する。
図94は、実施の形態5に係る予測モードの選択処理(S3424)のフローチャートである。
まず、三次元データ符号化装置は、対象三次元点の周囲のN個の三次元点の属性情報を、対象三次元点に距離が近いものから順に予測モード値として「1」から「N」まで1ずつインクリメントした値を割り当てる(S3427)。なお、予測モード値は「0」から「N」まで割り当てられるため、全部でN+1個の予測モードが生成される。N+1がビットストリームに付加される最大予測モード数M(NumPredMode)を超える場合は、三次元データ符号化装置は、M個まで予測モードを生成するようにしてもよい。
次に、三次元データ符号化装置は、各予測モードのコストを算出し、コストが最小となる予測モードを選択する(S3428)。
図95は、実施の形態5に係るコストが最小となる予測モードを選択する処理(S3428)のフローチャートである。
まず、三次元データ符号化装置は、初期値として、i=0およびmincost=∞に設定する(S3471)。設定されたiおよびmincostの初期値は三次元データ符号化装置のメモリに記憶される。
次に、三次元データ符号化装置は、i番目の予測モードPredMode[i]のコストcost[i]を例えば、式D1を用いて算出する(S3472)。
次に、三次元データ符号化装置は、算出されたコストcost[i]がメモリに記憶されているmincostより小さいか否かを判定する(S3473)。
次に、三次元データ符号化装置は、算出されたコストcost[i]がメモリに記憶されているmincostより小さい場合(S3473でYes)、mincost=cost[i]に設定し、予測モードをpredmode[i]に設定し(S3474)、ステップS3475に進む。つまり、メモリに記憶されているmincostの値をcost[i]の値に更新し、かつ、predmode[i]を予測モードとしてメモリに記憶する。
一方で、三次元データ符号化装置は、算出されたコストcost[i]がメモリに記憶されているmincost以上である場合(S3473でNo)、ステップS3475に進む。
次に、三次元データ符号化装置は、iの値を1つインクリメントする(S3475)。
次に、三次元データ符号化装置は、iが予測モード数より小さいか否かを判定する(S3476)。
三次元データ符号化装置は、iが予測モード数より小さい場合(S3476でYes)、ステップS3472に戻り、そうでない場合(S3476でNo)、コストが最小となる予測モードを選択する処理を終了する。
以下、三次元データ復号装置における処理の流れを説明する。図96は、実施の形態5に係る三次元データ復号装置による三次元データ復号処理のフローチャートである。まず、三次元データ復号装置は、ビットストリームから位置情報(geometry)を復号する(S3444)。例えば、三次元データ復号装置は、8分木表現を用いて復号を行う。
次に、三次元データ復号装置は、ビットストリームから属性情報(Attribute)を復号する(S3445)。例えば、三次元データ復号装置は、複数種類の属性情報を復号する場合は、複数種類の属性情報を順に復号してもよい。例えば、三次元データ復号装置は、属性情報として色と反射率とを復号する場合は、ビットストリームに付加されている順に従い、色の符号化結果と反射率の符号化結果とを復号する。例えば、ビットストリームにおいて、色の符号化結果の後に反射率の符号化結果が付加されている場合、三次元データ復号装置は、色の符号化結果を復号し、その後に反射率の符号化結果を復号する。なお、三次元データ復号装置は、ビットストリームに付加される属性情報の符号化結果をどのような順番で復号してもよい。
また、三次元データ復号装置は、ビットストリーム内の各属性情報の符号化データ開始場所を示す情報を、ヘッダ等を復号することで取得してもよい。これにより、三次元データ復号装置は、復号が必要な属性情報を選択的に復号できるので、復号が不必要な属性情報の復号処理を省略できる。よって、三次元データ復号装置の処理量を削減できる。また、三次元データ復号装置は、複数種類の属性情報を並列に復号し、復号結果を1つの三次元点群に統合してもよい。これにより、三次元データ復号装置は、高速に複数種類の属性情報を復号できる。
図97は、実施の形態5に係る属性情報復号処理(S3445)のフローチャートである。まず、三次元データ復号装置は、LoDを設定する(S3481)。つまり、三次元データ復号装置は、復号された位置情報を有する複数の三次元点の各々を複数のLoDのいずれかに割り当てる。例えば、この割り当て方法は、三次元データ符号化装置で用いられた割り当て方法と同じ方法である。
次に、三次元データ復号装置は、LoD単位のループを開始する(S3482)。つまり、三次元データ復号装置は、LoD毎にステップS3483~S3489の処理を繰り返し行う。
次に、三次元データ復号装置は、三次元点単位のループを開始する(S3483)。つまり、三次元データ復号装置は、三次元点毎にステップS3484~S3488の処理を繰り返し行う。
まず、三次元データ復号装置は、処理対象の対象三次元点の予測値の算出に用いる、対象三次元点の周囲に存在する三次元点である複数の周囲点を探索する(S3484)。なお、この処理は三次元データ符号化装置における処理と同様である。
次に、三次元データ復号装置は、対象三次元点の予測値Pを算出する(S3485)。
次に、三次元データ復号装置は、ビットストリームから量子化値を算術復号する(S3486)。
また、三次元データ復号装置は、復号した量子化値を逆量子化することで逆量子化値を算出する(S3487)。
次に、三次元データ復号装置は、逆量子化値に予測値を加算することで復号値を生成する(S3488)。
次に、三次元データ復号装置は、三次元点単位のループを終了する(S3489)。
また、三次元データ復号装置は、LoD単位のループを終了する(S3490)。
図98は、実施の形態5に係る三次元データ復号装置における予測値の算出処理(S3485)のフローチャートである。
まず、三次元データ復号装置は、処理対象の対象三次元点の予測値の予測に利用可能な、対象三次元点の周囲のN個の三次元点の属性値の重み付き平均を算出し、算出した重み付き平均を予測モード値が「0」の予測モードに割り当てる(S3430)。
次に、三次元データ復号装置は、図87で説明したステップS3431~S3435を実行することで、対象三次元点の予測値を出力する。
なお、ステップS3430を実行する代わりに、ステップS3432においてYesと判定された後、または、ステップS3434において復号された予測モード値が「0」である場合に、処理対象の対象三次元点の予測値の予測に利用可能な、対象三次元点の周囲のN個の三次元点の属性値の重み付き平均を予測値として算出してもよい。これにより、予測モード値が「0」で示される予測モード以外の場合には、平均値を算出する必要がなくなり、処理量を削減することができる。
図99は、実施の形態5に係る予測モードの復号処理(S3434)のフローチャートである。
まず、三次元復号装置は、対象三次元点の周囲のN個の三次元点の属性情報を、対象三次元点に距離が近いものから順に予測モード値として「1」から「N」まで1ずつインクリメントした値を割り当てる(S3491)。なお、予測モード値は「0」から「N」まで割り当てられるため、全部でN+1個の予測モードが生成される。N+1がビットストリームに付加される最大予測モード数M(NumPredMode)を超える場合は、三次元データ復号装置は、M個まで予測モードを生成するようにしてもよい。
次に、三次元データ復号装置は、予測モード数を用いて予測モードを算術復号する(S3492)。具体的には、三次元データ復号装置は、図81で説明したステップS3403およびS3404を実行することで予測モードを算術復号してもよい。また、三次元データ復号装置は、図85で説明したステップS3414~S3416を実行することで予測モードを算術復号してもよい。
図100は、実施の形態5に三次元データ符号化装置が備える属性情報符号化部3400の構成を示すブロック図である。なお、図100には、三次元データ符号化装置が備える、位置情報符号化部と、属性情報再割り当て部と、属性情報符号化部とのうち、属性情報符号化部の詳細を示している。
属性情報符号化部3400は、LoD生成部3401と、周囲探索部3402と、予測部3403と、予測残差算出部3404と、量子化部3405と、算術符号化部3406と、逆量子化部3407と、復号値生成部3408と、メモリ3409と、を含む。
LoD生成部3401は、三次元点の位置情報(geometry)を用いてLoDを生成する。
周囲探索部3402は、LoD生成部3401によるLoDの生成結果と各三次元点間の距離を示す距離情報とを用いて、各三次元点に隣接する近隣三次元点を探索する。
予測部3403は、符号化対象の対象三次元点の属性情報の予測値を生成する。具体的には、予測部3403は、予測モード値が「0」~「M-1」で示される予測モードに予測値を割り当て、予測モードを選択する。予測部3403は、選択した予測モード、具体的には、予測モードを示す予測モード値を算術符号化部に出力する。予測部3403は、例えば、ステップS3455の処理を行う。
予測残差算出部3404は、予測部3403により生成された属性情報の予測値の予測残差を算出(生成)する。予測残差算出部3404は、ステップS3456の処理を行う。
量子化部3405は、予測残差算出部3404により算出された属性情報の予測残差を量子化する。
算術符号化部3406は、量子化部3405により量子化された後の予測残差を算術符号化する。算術符号化部3406は、算術符号化した予測残差を含むビットストリームを、例えば、三次元データ復号装置に出力する。
なお、予測残差は、算術符号化部3406によって算術符号化される前に、例えば量子化部3405によって二値化されてもよい。なお、算術符号化部3406は、各種ヘッダ情報を生成、符号化してもよい。また、算術符号化部3406は、Prediction blockから符号化に使用した予測モードを取得し、算術符号化してビットストリームに付加してもよい。
逆量子化部3407は、量子化部3405によって量子化された後の予測残差を逆量子化する。逆量子化部3407は、ステップS3459の処理を行う。
復号値生成部3408は、予測部3403により生成された属性情報の予測値と、逆量子化部3407により逆量子化された後の予測残差とを加算することで復号値を生成する。
メモリ3409は、復号値生成部3408により復号された各三次元点の属性情報の復号値を記憶するメモリである。例えば、予測部3403は、まだ符号化していない三次元点の予測値を生成する場合に、メモリ3409に記憶されている各三次元点の属性情報の復号値を利用して予測値を生成する。
図101は、実施の形態5に係る三次元データ復号装置が備える属性情報復号部3410の構成を示すブロック図である。なお、図101には、三次元データ復号装置が備える、位置情報復号部と、属性情報復号部とのうち、属性情報復号部の詳細を示している。
属性情報復号部3410は、LoD生成部3411と、周囲探索部3412と、予測部3413と、算術復号部3414と、逆量子化部3415と、復号値生成部3416と、メモリ3417と、を含む。
LoD生成部3411は、位置情報復号部(不図示)により復号された三次元点の位置情報(geometry情報)を用いてLoDを生成する。
周囲探索部3412は、LoD生成部3411によるLoDの生成結果と各三次元点間の距離を示す距離情報とを用いて、各三次元点に隣接する近隣三次元点を探索する。
予測部3413は、復号対象の対象三次元点の属性情報の予測値を生成する。予測部3413は、例えば、ステップS3485の処理を行う。
算術復号部3414は、属性情報符号化部3400より取得したビットストリーム内の予測残差を算術復号する。算術復号部3414は、各種ヘッダ情報を復号してもよい。また、算術復号部3414は、算術復号した予測モードを予測部3413に出力してもよい。この場合、予測部3413は、算術復号部3414において算術復号されることで得られた予測モードを用いて予測値を算出してもよい。
逆量子化部3415は、算術復号部3414が算術復号した予測残差を逆量子化する。
復号値生成部3416は、予測部3413により生成された予測値と逆量子化部3415により逆量子化された後の予測残差とを加算して復号値を生成する。復号値生成部3416は、復号された属性情報データを他の装置へ出力する。
メモリ3417は、復号値生成部3416により復号された各三次元点の属性情報の復号値を記憶するメモリである。例えば、予測部3413は、まだ復号していない三次元点の予測値を生成する場合に、メモリ3417に記憶されている各三次元点の属性情報の復号値を利用して予測値を生成する。
(実施の形態6)
上記のとおり、三次元データ符号化装置は、三次元データ符号化装置及び三次元データ復号装置のそれぞれで予測に利用可能な、符号化対象の対象三次元点の周囲のN個の三次元点(周囲三次元点)における属性値の最大絶対差分値(つまり、N個の三次元点のうちの任意の2個の三次元点の属性値の差分の絶対値の最大値)を算出する。また、三次元データ符号化装置は、算出したその値に応じて予測モードを固定する、つまり、予め任意に定められた予測モードを用いるか、予測モードを選択してビットストリームに付加するかを切替える。
しかしながら、三次元データ符号化装置は、最大絶対差分値に応じて予測モードを固定するか、予測モードを選択してビットストリームに付加するかを切り替えなくてもよい。例えば、三次元データ符号化装置は、上記した条件にて予測モードを固定するか予測モードを選択するかを選択し、その結果を予測モード固定フラグとしてビットストリームに付加するようにしてもよい。
これにより、三次元データ復号装置は、ビットストリームに付加された予測モード固定フラグを復号することで、三次元データ符号化装置が予測モードを固定したか、予測モードを選択して予測モードを符号化したかを判定することができる。
そして、三次元データ復号装置は、予測モードが三次元データ符号化装置で固定された場合は、ビットストリームに予測モードが符号化されていないと判断できる。一方、三次元データ復号装置は、予測モードが三次元データ符号化装置で選択された場合は、ビットストリームの予測モードを復号する必要があることを判断できる。これにより、三次元データ復号装置は、ビットストリームに含まれる符号化された予測モードを正しく復号することができる。
また、これにより、三次元データ復号装置は、予測に利用可能な、符号化対象の対象三次元点の周囲のN個の三次元点における属性値の最大絶対差分値の算出することなく、予測モードを算術復号することができる。これにより、三次元データ復号装置は、ビットストリームの算術復号と、LoD生成等とを並列に実行できる。そのため、三次元データ復号装置は、処理の全体のスループットを向上することができる。
なお、三次元データ符号化装置は、予測モード固定フラグを三次元点毎に付加してもよい。
これにより、三次元データ復号装置は、三次元点毎に予測モードを固定するか、選択するかを予測モード固定フラグに基づいて切替えることができる。そのため、三次元データ符号化装置は、符号化効率を向上できる。
なお、三次元データ符号化装置は、予測モード固定フラグをLoD毎に設定してもよい。例えば、三次元データ符号化装置は、LoDの各階層のうち、予測が当たりにくい上位層は予測モード固定フラグを0にして予測モードを選択できるようにし、予測が当たりやすい下位層では予測モード固定フラグを1にして予測モードを固定する。これにより、三次元データ符号化装置は、予測モードを付加する符号量を削減できる。
図102は、本実施の形態に係る三次元データ符号化装置が実行する予測モードの決定の処理を示すフローチャートである。
まず、三次元データ符号化装置は、符号化対象の対象三次元点の周囲のN個の三次元点における属性値の最大絶対差分値maxdiffを算出する(S3501)。
図103は、本実施の形態に係る三次元データ符号化装置が実行する予測モードの決定の処理のシンタックス例を示す図である。具体的には、図103は、図102のステップS3501のシンタックス例を示す図である。
なお、図103では、符号化対象の対象三次元点の周囲の属性値をa[0]~a[N-1]で示し、最大絶対差分値をmaxdiffで示す。また、ここでは、符号化対象の対象三次元点の周囲のN個の属性値は、三次元データ符号化装置で符号化され且つ三次元データ復号装置で復号された属性値である。
三次元データ符号化装置は、例えば、図103に示すシンタックス例によって最大絶対差分値maxdiffを算出する。
なお、三次元データ符号化装置が予測に用いる、符号化対象の対象三次元点の周囲のN個の三次元点は、符号化対象の対象三次元点からの距離が閾値THdより小さい符号化され且つ復号されたN個の三次元点である。
ここで、上記のとおり、三次元データ符号化装置は、Nの最大値を、NumNeighborPointとしてビットストリームに付加してもよい。なお、符号化対象の対象三次元点の周囲の三次元点の属性情報における符号化され且つ復号された三次元点の点数がNumNeighborPointの値に満たない場合等、Nの値は、NumNeighborPointの値に一致しなくてもよい。
再び図102を参照し、次に、三次元データ符号化装置は、maxdiff<Thfixを満たすか否かを判定する(S3502)。なお、Thfixは、予め任意に定められる定数である。
三次元データ符号化装置は、maxdiff<Thfixを満たすと判定した場合(S3502でYes)、予測モード固定フラグ(fixedPredMode)を1にして算術符号化する(S3503)。
次に、三次元データ符号化装置は、予測モードの値(PredMode/以下単に予測モードともいう)を0に決定する(S3504)。
一方、三次元データ符号化装置は、maxdiff<Thfixを満たさないと判定した場合(S3502でNo)、予測モード固定フラグを0にして算術符号化する(S3505)。
次に、三次元データ符号化装置は、予測モードを選択する(S3506)。
次に、三次元データ符号化装置は、選択した予測モードを算術符号化する(S3507)。
なお、上記では、三次元データ装置は、予測に用いる、符号化対象の対象三次元点の周囲の三次元点の属性値の最大絶対差分値がThfix[i]より小さければ予測モードを0に固定する例を示したが、必ずしもこれに限らない。例えば、三次元データ符号化装置は、予測モードを0~M-1までのいずれかに固定するようにしてもよい。
また、三次元データ符号化装置は、固定する予測モードの値(PredMode又はモード番号ともいう)をビットストリームに付加してもよい。
図104は、本実施の形態に係る三次元データ復号装置が実行する予測モードの決定の処理を示すフローチャートである。
まず、三次元データ復号装置は、ビットストリームに含まれる符号化された予測モード固定フラグを算術復号する(S3511)。
次に、三次元データ復号装置は、予測モード固定フラグ==1を満たすか否かを判定する(S3512)。
三次元データ復号装置は、予測モード固定フラグ==1を満たすと判定した場合(S3512でYes)、予測モードの値を0に決定する(S3513)。
一方、三次元データ復号装置は、予測モード固定フラグ==1を満たさないと判定した場合(S3512でNo)、予測モードの値をビットストリームから復号することで決定する(S3514)。
三次元データ復号装置は、決定した予測モードに基づいて予測値を決定する。
なお、予測モード固定フラグは、任意の位置に設けられてもよい。
図105は、予測モード固定フラグが三次元点毎に設けられている場合の属性データのシンタックス例を示す図である。
fixedPredModeは、三次元データ符号化装置が予測モードを固定するかどうかを示すフラグである。例えば、fixedPredModeの値が1の場合は、三次元データ符号化装置は予測モードを固定し、fixedPredModeの値が0の場合は、三次元データ符号化装置は予測モードを選択する、としてもよい。
また、fixedPredModeは、図106のようにLoDの階層毎に設定するようにされてもよい。
図106は、予測モード固定フラグがLoDの階層毎に設けられている場合の属性データのシンタックス例を示す図である。
fixedPredMode[i]は、LoDの階層iの予測モードを固定するかどうかを示すフラグである。
PredModeは、階層iのj番目の三次元点の属性値を符号化及び復号するための予測モードを示す値である。PredModeは、0からM-1(なお、Mは予測モードの総数)の値をとる。なお、三次元データ復号装置は、PredModeがビットストリームにない場合(具体的には、!fixedPredMode&&NumPredMode[i]>1を満たさない場合)、PredModeを0と推定してもよい。
また、三次元データ復号装置は、PredModeがビットストリームにない場合、PredModeを0にしなくてもよく、0からM-1までのいずれかの値を推定値として採用してもよい。
また、三次元データ符号化装置は、PredModeがビットストリームにない場合の推定値を別途ヘッダ等に付加しても構わない。
また、上記のとおり、三次元データ符号化装置は、PredModeを予測モード総数Mの値を用いてトランケーテッドユーナリ符号(truncated unary code)で二値化して、二値化した値を算術符号化してもよい。
なお、トランケーテッドユーナリ符号は、二値化の手法の一つである。トランケーテッドユーナリ符号では、最大値以外の値をとる多値信号については、多値信号が示す値と同じ数の1を並べ、最後に0を付与した信号が生成される。最大値をとる多値信号については、最大値を予め設定しておき、多値信号が示す値と同じ数の1を並べた信号(最後に0が付与されていない信号)が生成される。例えば、上記したとおり、予測モードの数が5つである場合、三次元データ符号化装置がトランケーテッドユーナリ符号でそれぞれの予測モードを二値化したとき、それぞれの予測モードは、予測モード0~4まで順に0、10、110、1110、1111となる。このように、三次元データ符号化装置は、予測モードの数を用いて(つまり、予測モードの数に応じて)、予測モードをトランケーテッドユーナリ符号で二値化する。
なお、トランケーテッドユーナリ符号では、最大値以外の値をとる多値信号については、多値信号が示す値と同じ数の0を並べ、最後に1を付与した信号が生成されてもよい。つまり、上記した0と1とが反転してもよい。
また、三次元データ符号化装置は、予測モード総数Mの値を、ヘッダにNumPredModeとして算術符号化して付加してもよい。
なお、NumPredModeは、予測モードの総数を示す値である。
これにより、三次元データ復号装置は、ヘッダ内のNumPredModeを復号して予測モード総数Mを算出し、予測モード総数Mを用いてPredModeを復号できる。そのため、三次元データ復号装置は、LoDを設定(生成)し、予測に利用可能な、復号対象の対象三次元点の周囲の三次元点を算出して予測値が割当たった予測モード数の算出を待つことなく、ビットストリームの算術復号を実行することができる。これにより、三次元データ復号装置は、ビットストリームの算術復号と、LoD生成等とを並列に実行できるため、処理の全体のスループットを向上することができる。
また、nビット符号(n-bit code)は、属性情報の値の予測残差の符号化データである。nビット符号のビット長は、R_TH[i]の値に依存する。例えば、R_TH[i]の示す値が63の場合は6ビットとなり、R_TH[i]の示す値が255の場合は8bitとなる。R_THの示す値は、予め任意に定められていればよい。
また、残り符号は、(remaining code)は、属性情報の値の予測残差の符号化データのうち、指数ゴロム符号で符号化された符号化データである。三次元データ復号装置は、nビット符号がR_TH[i]と同じ場合に残り符号を復号し、nビット符号の値と残り符号の値とを加算して予測残差を復号する。
なお、三次元データ復号装置は、nビット符号がR_TH[i]と同じ値でない場合は、残り符号を復号しなくてよい。
図107は、三次元データ符号化装置の予測モードの符号化の処理の一例を示すフローチャートである。
まず、三次元データ符号化装置は、予測モードを、予測モード総数Mを用いてトランケーテッドユーナリ符号で二値化する(S3521)。
次に、三次元データ符号化装置は、トランケーテッドユーナリ符号の二値化データを算術符号化する(S3522)。
次に、三次元データ符号化装置は、予測モード総数MをNumPredModeとしてヘッダに付加して符号化する(S3523)。
三次元データ符号化装置は、例えば、符号化されたNumPredModeを含むビットストリームを三次元データ復号装置へ送信する。
図108は、三次元データ復号装置の予測モードの復号の処理の一例を示すフローチャートである。
まず、三次元データ復号装置は、ビットストリームに含まれる符号化されたNumPredModeを復号して、予測モード総数Mを設定する(S3524)。
次に、三次元データ復号装置は、復号した予測モード総数Mを用いて、符号化されたPredModeを算術復号し、トランケーテッドユーナリ符号の二値化データを生成する(S3525)。
次に、三次元データ復号装置は、トランケーテッドユーナリ符号の二値化データから予測モードを算出する(S3526)。
また、三次元データ符号化装置は、上記したfixedPredModeを、符号化テーブルを用いて算術符号化してもよい。なお、各三次元データ符号化装置は、符号化テーブルにおける0と1との発生確率を、実際に発生したfixedPredModeの値に応じて更新してもよい。また、三次元データ符号化装置は、どちらかの符号化テーブルにおける0と1との発生確率を固定化してもよい。これにより、三次元データ符号化装置は、符号化テーブルにおける0と1との発生確率の更新回数を抑制して処理量を削減できる。
図109は、本実施の形態に係る三次元データ符号化装置による三次元データ符号化処理のフローチャートである。
まず、三次元データ符号化装置は、位置情報(geometry)を符号化する(S3531)。なお、ここでは、三次元データ符号化装置は、例えば、8分木表現を用いて符号化してもよい。
次に、三次元データ符号化装置は、位置情報の符号化後に、量子化等によって三次元点の位置が変化した場合に、変化後の三次元点に元の三次元点の属性情報を再割当てする(S3532)。
なお、三次元データ符号化装置は、位置の変化量に応じて属性情報の値を補間して再割当てを行ってもよい。例えば、三次元データ符号化装置は、変化後の三次元位置に近い変化前の符号化対象の対象三次元点の周囲の三次元点をN個検出し、検出したN個の三次元点の属性情報の値を、変化後の符号化対象の対象三次元位置からN個それぞれの三次元点までの距離に基づいて重み付け平均し、その値を変化後の三次元点の属性情報の値としてもよい。また、三次元データ符号化装置は、量子化等によって2個以上の三次元点が同一の三次元位置に変化した場合は、その変化後の属性情報の値として、変化前の2個以上の三次元点における属性情報の平均値を割当ててもよい。
次に、三次元データ符号化装置は、再割当て後の属性情報(Attribute)を符号化する(S3533)。例えば、三次元データ符号化装置は、属性情報として、複数の属性情報を符号化する場合は、順に符号化してもよい。
また、例えば、三次元データ符号化装置は、属性情報として、色と反射率とを符号化する場合は、色の符号化結果の後に反射率の符号化結果を付加したビットストリームを生成してもよい。
なお、三次元データ符号化装置は、属性情報の符号化結果をどのような順番でビットストリームに付加してもよい。また、三次元データ符号化装置は、ビットストリーム内の各属性情報の符号化データの開始場所をヘッダ等に付加してもよい。
これにより、三次元データ復号装置は、復号が必要な属性情報を復号できるようになる。そのため、三次元データ復号装置は、復号が不必要な属性情報の復号処理を省略することで処理量を削減することができる。
また、三次元データ符号化装置は、複数の属性情報を並列に符号化し、符号化結果を1つのビットストリームに統合してもよい。
これにより、三次元データ符号化装置は、高速に複数の属性情報を符号化することができる。
図110は、図109に示す属性情報符号化処理(S3533)のフローチャートである。
まず、三次元データ符号化装置は、LoDを設定する(S35331)。つまり、三次元データ符号化装置は、各三次元点を複数のLoDのいずれかに割り当てる。
次に、三次元データ符号化装置は、LoD単位のループを開始する(S35332)。つまり、三次元データ符号化装置は、LoD毎にステップS35333~S35341の処理を繰り返し行う。
次に、三次元データ符号化装置は、三次元点毎のループを開始する(S35333)。つまり、三次元データ符号化装置は、あるLoDについての三次元点毎にステップS35334~S35340の処理を繰り返し行う。なお、図110には、符号化対象の対象三次元点Pにおける符号化について示している。
次に、三次元データ符号化装置は、処理対象の対象三次元点Pの予測値の算出に用いる、対象三次元点Pの周囲に存在する三次元点である複数の周囲点を探索する(S35334)。
次に、三次元データ符号化装置は、対象三次元点Pの予測値を算出する(S35335)。
次に、三次元データ符号化装置は、対象三次元点Pの属性情報と予測値との差分である予測残差を算出する(S35336)。
次に、三次元データ符号化装置は、予測残差を量子化することで量子化値を算出する(S35337)。
次に、三次元データ符号化装置は、量子化値を算術符号化する(S35338)。
次に、三次元データ符号化装置は、量子化値を逆量子化することで逆量子化値を算出する(S35339)。
次に、三次元データ符号化装置は、逆量子化値に予測値を加算することで復号値を生成する(S35340)。
次に、三次元データ符号化装置は、三次元点毎のループを終了する(S35341)。
また、三次元データ符号化装置は、LoD毎のループを終了する(S35342)。
図111は、図110に示す予測値の算出処理(S35335)のフローチャートである。
まず、三次元データ符号化装置は、予測に利用可能な、符号化対象の対象三次元点のN個の周囲の三次元点の属性値の重み平均値を算出し、予測モード0に割当てる(S353351)。
次に、三次元データ符号化装置は、当該符号化対象の対象三次元点のN個の周囲の三次元点の属性値の最大絶対差分値maxdiffを算出する(S353352)。
次に、三次元データ符号化装置は、最大絶対差分値maxdiff<Thfixを満たすか否かを判定する(S353353)。
三次元データ符号化装置は、最大絶対差分値maxdiff<Thfixを満たすと判定した場合(S353353でYes)、予測モード固定フラグを1にして算術符号化する(S353354)。
次に、三次元データ符号化装置は、予測モードを0(重み平均値を予測値として示す予測モード)に決定する(S353355)。
次に、三次元データ符号化装置は、決定した予測モードの予測値を算術符号化して例えば、三次元データ復号装置に出力する(S353356)。
一方、三次元データ符号化装置は、最大絶対差分値maxdiff<Thfixを満たさないと判定した場合(S353353でNo)、予測モード固定フラグを0にして算術符号化する(S353357)。
次に、三次元データ符号化装置は、予測モードを選択して決定する(S353358)。
次に、三次元データ符号化装置は、選択して決定した予測モードを算術符号化する(S353359)。
なお、三次元データ符号化装置は、上記したように、予測モードPredModeを、予測モード総数Mを用いてトランケーテッドユーナリ符号で2値化して算術符号化してもよい。また、三次元データ符号化装置は、予測モード総数MをNumPredModeとしてヘッダに符号化して付加してもよい。
これにより、三次元データ復号装置は、ヘッダ内のNumPredModeを復号することで、予測モードPredModeを正しく復号することができる。
なお、三次元データ符号化装置は、NumPredMode=1の場合は、PredModeを符号化しなくてもよい。これにより、三次元データ符号化装置は、NumPredMode=1の場合の符号量を削減できる。
図112は、図111に示す予測モードの選択処理(S353358)のフローチャートである。
まず、三次元データ符号化装置は、符号化対象の対象三次元点の周囲のN個の三次元点の属性情報を、当該対象三次元点と距離が近いものから順に予測モード1からNまで割当てる(S3541)。例えば、三次元データ符号化装置は、N+1個の予測モードを生成する。なお、三次元データ符号化装置は、N+1がビットストリームに付加される予測モード総数M(NumPredMode)を超える場合には、M個まで予測モードを生成してもよい。
次に、三次元データ符号化装置は、各モードのコストを算出し、コストが最小となる予測モードを選択する(S3542)。
図113は、図112に示す予測モードの選択処理(S3542)の具体例を示すフローチャートである。
まず、三次元データ符号化装置は、i=0、mincost=∞を行う(S35421)。
次に、三次元データ符号化装置は、i番目の予測モードPredMode[i]のコスト(cost[i])を算出する(S35422)。
次に、三次元データ符号化装置は、cost[i]<mincostを満たすか否かを判定する(S35423)。
次に、三次元データ符号化装置は、cost[i]<mincostを満たすと判定した場合(S35423でYes)、mincost=cost[i]を行い、且つ、予測モードをPredMode[i]に設定する。(S35424)。
三次元データ符号化装置は、ステップS35424の次に、又は、cost[i]<mincostを満たさないと判定した場合(S35423でNo)、i=i+1を行う(S35425)。
次に、三次元データ符号化装置は、i<予測モード数(予測モードの総数)を満たすか否かを判定する(S35426)。
三次元データ符号化装置は、i<予測モード数を満たさないと判定した場合(S35426でNo)、選択処理を終了し、i<予測モード数を満たすと判定した場合(S35426でYes)処理をステップS35422に戻す。
図114は、本実施の形態に係る三次元データ復号装置による三次元データ復号処理のフローチャートである。
三次元データ復号装置は、符号化された三次元点の位置情報(geometry)を復号する(S3551)。三次元データ復号装置は、例えば、8分木表現を用いて位置情報を復号してもよい。
次に、三次元データ復号装置は、符号化された三次元点の属性情報を復号する(S3552)。
なお、三次元データ復号装置は、属性情報として、複数の属性情報を復号する場合は、順に復号してもよい。例えば、三次元データ復号装置は、属性情報として、色と反射率とを復号する場合は、色の符号化結果の後に反射率の符号化結果を付加されているビットストリームをこの順に復号してもよい。
また、三次元データ復号装置は、ビットストリームに付加されている属性情報の符号化結果をどのような順番で復号してもよい。
また、三次元データ復号装置は、ビットストリーム内の各属性情報の符号化データの開始場所を、ヘッダ等を復号して得てもよい。
これにより、三次元データ復号装置は、復号が必要な属性情報を復号できる。そのため、三次元データ復号装置は、復号が不必要な属性情報の復号処理を省略することで、処理量を削減することができる。
また、三次元データ復号装置は、複数の属性情報を並列に復号し、復号結果を1つの三次元点群に統合してもよい。
これにより、三次元データ復号装置は、高速に複数の属性情報を復号することができる。
図115は、図114に示すPの予測値の算出処理(S3552)のフローチャートである。
まず、三次元データ復号装置は、ビットストリームに含まれる三次元点の復号された位置情報を取得する(S35520)。具体的には、三次元データ復号装置は、三次元データ符号化装置から送信されたビットストリームに含まれる三次元点の符号化された位置情報を復号することで、復号された位置情報を取得する。
次に、三次元データ復号装置は、LoDを設定する(S35521)。つまり、三次元データ復号装置は、各三次元点を複数のLoDのいずれかに割当てる。
次に、三次元データ復号装置は、LoD単位のループを開始する(S35522)。つまり、三次元データ復号装置は、LoD毎にステップS35523~S35528の処理を繰り返し行う。
また、三次元データ復号装置は、例えば、ステップS35520以降の処理と平行して、ビットストリームに含まれる属性情報を取得する(S355201)。
また、三次元データ復号装置は、PredMode及びPの量子化値を復号する(S355211)。
例えば、図115に示す破線部のステップ(より具体的には、ステップS35521及びステップS355211)について、三次元データ復号装置は、LoDの階層毎の三次元点の数NumOfPointをヘッダ部等に付加されていることで、ビットストリーム内のPredModeの復号処理と、LoD生成後の予測に利用可能な、復号対象の対象三次元点の周囲の三次元点を算出する処理を独立化できる。こうすることで、三次元データ復号装置は、LoD生成(LoD generation)及びPの隣接点の探索と、PredMode、nビット符号及び残り符号の算術復号処理(decode PredMode and quantized value of P)とを独立化して実行できる。そのため、三次元データ復号装置は、それぞれ並列に処理してもよい。
これにより、三次元データ復号装置は、全体の処理時間を削減することができる。
次に、三次元データ復号装置は、三次元点毎のループを開始する(S35523)。つまり、三次元データ復号装置は、あるLoDについての三次元点毎にステップS35524~S35527の処理を繰り返し行う。なお、図115には、復号対象の対象三次元点Pにおける復号について示している。
次に、三次元データ復号装置は、処理対象の対象三次元点Pの予測値の算出に用いる、対象三次元点Pの周囲に存在する三次元点である複数の周囲点を探索する(S35524)。
次に、三次元データ復号装置は、ステップS355211で復号したPredMode(つまり、予測モードの値)に基づいて、対象三次元点Pの予測値を算出する(S35525)。
次に、三次元データ復号装置は、ステップS355211で復号したPの量子化値に基づいて、量子化値を逆量子化することで逆量子化値を算出する(S35526)。
次に、三次元データ復号装置は、逆量子化値に予測値を加算することで復号値を生成する(S35527)。
次に、三次元データ復号装置は、三次元点毎のループを終了する(S35527)。
また、三次元データ復号装置は、LoD毎のループを終了する(S35528)。
図116は、図115に示すPの予測値の算出処理(S35525)の詳細を示すフローチャートである。
まず、三次元データ復号装置は、予測に利用可能な、復号対象の対象三次元点の周囲のN個の三次元点の属性値の重み平均を算出し、予測モード0に割当てる(S355251)。
次に、三次元データ復号装置は、N個の三次元点の属性情報を、復号対象の対象三次元点から近い三次元点から順に予測モード1からNまで割当てる(S355252)。
次に、三次元データ復号装置は、図115に示すステップS355211で復号した予測モードの予測値を出力する(S355253)。
なお、三次元データ符号化装置は、予測モードを0と決定した後に、つまり、maxdiff<Thfixが真、又は、復号した予測モードが0の場合に、符号化対象の対象三次元点の周囲N個の三次元点の属性値の重み付き平均を算出するようにしてもよい。
これにより、三次元データ復号装置は、予測モードが0以外の場合には、重み付き平均値を算出する必要がなくなる。そのため、三次元データ復号装置は、処理量を削減することができる。
図117は、図116に示す予測モード及びPの量子化値の算出処理(S355211)のフローチャートである。
まず、三次元データ復号装置は、予測モード固定フラグを算術復号する(S3561)。
次に、三次元データ復号装置は、算術復号した予測モード固定フラグが、予測モード固定フラグ==1を満たすか否かを判定する(S3562)。
次に、三次元データ復号装置は、予測モード固定フラグ==1を満たすと判定した場合(S3562でYes)、予測モードを0(重み付け平均値)に固定する(S3563)。
一方、三次元データ復号装置は、予測モード固定フラグ==1を満たさないと判定した場合(S3562でNo)、予測モードをビットストリームから復号する(S3564)。
三次元データ復号装置は、上記したように、予測モードPredModeを、ビットストリームのヘッダを復号して得た予測モード総数Mを用いて算術復号してもよい。
なお、三次元データ復号装置は、予測モード総数M=1の場合は、PredModeを復号せずに、PredMode=0と推定してもよい。
次に、三次元データ復号装置は、nビット符号の値==R_TH[LoDN]を満たすか否かを判定する(S3565)。
三次元データ復号装置は、nビット符号の値==R_TH[LoDN]を満たすと判定した場合(S3565でYes)、残り符号を算術復号する(S3566)。
次に、三次元データ復号装置は、指数ゴロム符号のテーブルを用いて残り符号の値を算出する(S3567)。
次に、三次元データ復号装置は、予測残差に(R_TH[LoDN]+残り符号の値)を設定する(S3568)。
次に、三次元データ復号装置は、復号した予測残差を符号なし整数値から符号付き整数値に変換する(S3569)。
一方、三次元データ復号装置は、nビット符号の値==R_TH[LoDN]を満さないと判定した場合(S3565でNo)、予測モードをビットストリームから復号して(S3570)、ステップS3569を実行する。
上記のとおり、三次元データ符号化装置は、三次元データ符号化装置及び三次元データ復号装置のそれぞれで予測に利用可能な、符号化対象の対象三次元点の周囲のN個の三次元点における属性値の最大絶対差分値を算出する。また、三次元データ符号化装置は、算出した値に応じて予測モードを固定するか、予測モードを選択してビットストリームに付加するかを切替える。
しかしながら、三次元データ符号化装置は、最大絶対差分値に応じて予測モードを固定するか、予測モードを選択してビットストリームに付加するかを切り替えなくてもよい。例えば、三次元データ符号化装置は、常に予測モードを選択し、その予測モードをビットストームに付加するようにしてもよい。
これにより、三次元データ復号装置は、ビットストリームに付加された予測モードを常に復号することで、正しくビットストリームを復号することができる。
また、三次元データ復号装置は、予測に利用可能な、復号対象の対象三次元点の周囲のN個の三次元点における属性値の最大絶対差分値を算出することなく予測モードを算術復号することができるようになる。そのため、三次元データ復号装置は、ビットストリームの算術復号と、LoD生成等とを並列に実行できる。これにより、三次元データ復号装置は、処理の全体のスループットを向上することができる。
なお、予測モード総数M=1の場合は、三次元データ復号装置は、値を参照することなく予測モードの値を0と推定できる。そのため、予測モード総数M=1の場合は、三次元データ符号化装置は、予測モードをビットストリームに付加しないようにしてもよい。
これにより、三次元データ符号化装置は、予測モード総数M=1の場合の符号量を削減することができる。
図118は、本実施の形態に係る三次元データ符号化装置が予測モードを固定しない場合における処理のフローチャートである。
まず、三次元データ符号化装置は、予測モードを選択する(S3571)。
次に、三次元データ符号化装置は、選択した予測モードを算術符号化する(S3572)。
図119は、本実施の形態に係る三次元データ復号装置が予測モードを固定しない場合における処理のフローチャートである。
三次元データ復号装置は、予測モードをビットストリームから復号する(S3573)。
なお、三次元データ符号化装置が常に予測モードを選択する方法は、特に限定されない。例えば、図110に示すシンタックス例のThfix[i]=0としてもよい。こうすることで、三次元データ符号化装置は、maxdiffの最小値が0であるために、PredModeを常にビットストリームに付加することができる。
なお、三次元データ符号化装置が常にPredModeをビットストリームに付加するためには、Thfix[i]の値は、maxdiff≧Thfix[i]を真にする値であれば、どのような値でもよい。
図120は、本実施の形態に係る属性データのシンタックスの別の一例を示す図である。
PredModeは、LoDの階層iのj番目の三次元点の属性値を符号化及び復号するための予測モードを示す値である。PredModeは、値を0からM-1(なお、Mは予測モードの総数)までのいずれかの値をとる。
なお、三次元データ復号装置は、PredModeがビットストリームにない場合(具体的には、NumPredMode[i]>1を満たさない場合)、PredModeを0と推定してもよい。
なお、三次元データ復号装置は、PredModeがビットストリームにない場合、PredModeを0にしなくてもよく、0からM-1までのいずれかの値を推定値として採用してもよい。
また、三次元データ符号化装置は、PredModeがビットストリームにない場合の推定値を別途ヘッダ等に付加してもよい。
また、上記のとおり、三次元データ符号化装置は、PredModeを予測モード総数Mの値を用いてトランケーテッドユーナリ符号で二値化し、二値化した値を算術符号化してもよい。
また、三次元データ符号化装置は、予測モード総数Mの値を、ビットストリームのヘッダにNumPredModeとして符号化して付加してもよい。
これにより、三次元データ復号装置は、ヘッダ内のNumPredModeを復号して予測モード総数Mを算出し、予測モード総数Mを用いてPredModeを復号できる。そのため、三次元データ復号装置は、LoDを生成し、予測に利用可能な、復号対象の対象三次元点の周囲の三次元点を算出して予測値が割当たった予測モード数の算出を待つことなくビットストリームの算術復号を実行することができる。
これにより、三次元データ復号装置は、ビットストリームの算術復号と、LoD生成等とを並列に実行できる。そのため、三次元データ復号装置は、処理の全体のスループットを向上することができる。
nビット符号(n-bit code)は、属性情報の値の予測残差の符号化データである。nビット符号のビット長は、R_TH[i]の値に依存する。例えば、R_TH[i]の示す値が63の場合は6bitとなり、R_TH[i]の示す値が255の場合は8bitとなる。
残り符号(remaining code)は、属性情報の値の予測残差の符号化データのうち、指数ゴロム符号で符号化された符号化データである。三次元データ復号装置は、nビット符号がR_TH[i]と同じ場合に残り符号を復号し、nビット符号の値と残り符号の値とを加算して予測残差を復号する。
なお、三次元データ復号装置は、nビット符号がR_TH[i]と同じ値でない場合は、残り符号を復号しなくてよい。
図121は、本実施の形態に係る三次元データ符号化装置の予測モードの符号化処理の例を示すフローチャートである。
まず、三次元データ符号化装置は、予測モードを、予測モード総数Mを用いてトランケーテッドユーナリ符号で二値化する(S3574)。
次に、三次元データ符号化装置は、トランケーテッドユーナリ符号の二値化データを算術符号化する(S3575)。
次に、三次元データ符号化装置は、予測モード総数MをNumPredModeとしてヘッダに付加して符号化する(S3576)。
図122は、本実施の形態に係る三次元データ復号装置の予測モードの復号処理の例を示すフローチャートである。
まず、三次元データ復号装置は、ビットストリームに含まれる符号化されたNumPredModeを復号して、予測モード総数Mを設定する(S3577)。
次に、三次元データ復号装置は、復号した予測モード総数Mを用いて、符号化されたPredModeを算術復号し、トランケーテッドユーナリ符号の二値化データを生成する(S3578)。
次に、三次元データ復号装置は、トランケーテッドユーナリ符号の二値化データから予測モードを算出する(S3579)。
図123は、図110に示す予測値の算出処理(ステップS35335)の別の一例を示すフローチャートである。
まず、三次元データ符号化装置は、予測に利用可能な、符号化対象の対象三次元点のN個の周囲の三次元点の属性値の重み平均値を算出し、予測モード0に割当てる(S3581)。
次に、三次元データ符号化装置は、予測モードを選択して決定する(S3582)。
次に、三次元データ符号化装置は、選択して決定した予測モードを算術符号化する(S3583)。
また、三次元データ符号化装置は、決定した予測モードの予測値を出力する(S3584)。
上記のとおり、三次元データ符号化装置は、予測モードPredModeを、予測モード総数Mを用いてで二値化して算術符号化してもよい。また、三次元データ符号化装置は、予測モード総数MをNumPredModeとしてヘッダに符号化して付加してもよい。
これにより、三次元データ復号装置は、ヘッダ内のNumPredModeを復号することで、予測モードPredModeを正しく復号することができる。
なお、三次元データ符号化装置は、NumPredMode=1の場合は、PredModeを符号化しなくてもよい。
これにより、三次元データ符号化装置は、NumPredMode=1の場合の符号量を削減できる。
図124は、図123に示す予測モードの選択処理(S3582)のフローチャートである。
まず、三次元データ符号化装置は、符号化対象の対象三次元点の周囲のN個の三次元点の属性情報を、当該対象三次元点と距離が近いものから順に予測モード1からNまで割当てる(S35821)。例えば、三次元データ符号化装置は、N+1個の予測モードを生成する。なお、三次元データ符号化装置は、N+1がビットストリームに付加される予測モード総数M(NumPredMode)を超える場合には、M個まで予測モードを生成してもよい。
次に、三次元データ符号化装置は、各モードのコストを算出し、コストが最小となる予測モードを選択する(S35822)。
図125は、図124に示す予測モードの選択処理(S35822)の具体例を示すフローチャートである。
まず、三次元データ符号化装置は、i=0、mincost=∞を行う(S358221)。
次に、三次元データ符号化装置は、i番目の予測モードPredMode[i]のcost[i]を算出する(S358222)。
次に、三次元データ符号化装置は、cost[i]<mincostを満たすか否かを判定する(S358223)。
次に、三次元データ符号化装置は、cost[i]<mincostを満たすと判定した場合(S358223でYes)、mincost=cost[i]を行い、且つ、予測モードをPredMode[i]に設定する。(S358224)。
三次元データ符号化装置は、ステップS358224の次に、又は、cost[i]<mincostを満たさないと判定した場合(S358223でNo)、i=i+1を行う(S358225)。
次に、三次元データ符号化装置は、i<予測モード数を満たすか否かを判定する(S358226)。
三次元データ符号化装置は、i<予測モード数を満たさないと判定した場合(S358226でNo)、選択処理を終了し、i<予測モード数を満たすと判定した場合(S358226でYes)、処理をステップS358222に戻す。
三次元データ符号化装置は、符号化対象の対象三次元点の周囲の三次元点の数がN個の場合、N+1個の予測モードを生成する。なお、三次元データ符号化装置は、N+1がビットストリームに付加される予測モード総数M(NumPredMode)を超える場合は、M個まで予測モードを生成するようにしてもよい。
図126は、図115に示す予測モード及びPの量子化値の算出処理(S355211)の別の一例を示すフローチャートである。
まず、三次元データ復号装置は、予測モードをビットストリームから復号する(S3552111)。
上記のとおり、三次元データ復号装置は、予測モードPredModeを、ヘッダを復号して得た予測モード総数Mを用いて算術復号してもよい。
なお、三次元データ復号装置は、予測モード総数M=1の場合は、PredModeを復号せずに、PredMode=0と推定してもよい。
次に、酸塩現データ符号化装置は、nビット符号を算術復号する(S3552112)。
次に、三次元データ復号装置は、nビット符号の値==R_TH[LoDN]を満たすか否かを判定する(S3552113)。
三次元データ復号装置は、nビット符号の値==R_TH[LoDN]を満たすと判定した場合(S3552113でYes)、残り符号を算術復号する(S3552114)。
次に、三次元データ復号装置は、指数ゴロム符号のテーブルを用いて残り符号の値を算出する(S3552115)。
次に、三次元データ復号装置は、予測残差に(R_TH[LoDN]+残り符号の値)を設定する(S3552116)。
次に、三次元データ復号装置は、復号した予測残差を符号なし整数値から符号付き整数値に変換する(S3552117)。
一方、三次元データ復号装置は、nビット符号の値==R_TH[LoDN]を満さないと判定した場合(S3552113でNo)、予測モードをビットストリームから復号して(S3552118)、ステップS3552117を実行する。
図127は、予測値に用いる属性情報の例を示す図である。
例えば、図127に示す点a2の属性情報の予測値は、点a0及びa1の属性情報を用いて生成される。また、例えば、図127に示す点a5の属性情報の予測値は、点a0、a1、a2、a3、及び、a4の属性情報を用いて生成される。
なお、上述したNの値に応じて、選択される周囲点は変化する。例えば、N=5の場合には、点a5の周囲点としてa0、a1、a2、a3、及び、a4が選択される。また、N=4の場合には、距離情報を元に点a0、a1、a2、及び、a4が選択される。
また、三次元データ符号化装置は、LoDを上位層(例えば、LoD0)から生成してもよい。また、三次元データ符号化装置は、LoDを下位層(例えば、LoD2)から生成してもよい。
予測値は、隣接点の重み付け平均に基づく属性値により算出される。
例えば、図127に示す例では、点a2の予測値a2pは、以下の(式F1)、(式F2)、及び、(式F3)に示すように、点a0及び点a1の属性値の重み付け平均により算出される。
なお、Aiは、点aiの属性情報の値である。また、aveは、Aiの平均値である。
なお、平均値の代わりに、Aiの中間値(median)が用いられてもよい。また、|ai-ave|、及び、|aj-ave|の代わりに、(ai-ave)2、及び、(ai-ave)2が用いられてもよい。
また、例えば、点a5の予測値a5pは、以下の(式F4)、(式F5)、及び、(式F6)に示すように、点a0、a1、a2、a3、及び、a4の属性情報の重み付け平均により算出される。
ここで、aiとaveとの値が同じ場合、|ai-ave|=0となり、wiの値を適切に算出することが難しい。そこで、三次元データ符号化装置は、例えば、|ai-ave|=0の場合には、|ai-ave|=1として計算する。
これにより、三次元データ符号化装置は、wiの値を計算することができる。
また、ajとaveとの値が同じ場合、|aj-ave|=0となり、wiの値を適切に算出することが難しい。そこで、三次元データ符号化装置は、例えば、|aj-ave|=0の場合は|aj-ave|=1として計算する。
これにより、三次元データ符号化装置は、wiの値を計算することができる。
また、例えば、点aNの予測値aNpは、以下の(式F7)、(式F8)、及び、(式F9)に示すように、点N-4、N-3、N-2、及び、N-1の属性情報の重み付け平均により算出される。なお、Nは、5以上の正の整数である。
例えば、三次元データ符号化装置は、|ai-ave|==0の場合には、|ai-ave|=1として計算し、そうでない場合は、|ai-ave|=|ai-ave|として計算する。
また、例えば、三次元データ符号化装置は、|aj-ave|==0の場合には、|aj-ave|=1として計算し、そうでない場合は、|aj-ave|=|aj-ave|として計算する。
(実施の形態7)
三次元点の属性情報をLoDの情報を用いて符号化する別の例として、LoDの最下層に含まれる三次元点から順に複数の三次元点を符号化する方法を説明する。例えば、三次元データ符号化装置は、LoDの最下層LoDnに含まれる三次元点から順に複数の三次元点を符号化する場合、LoDnに含まれる三次元点の予測値を、LoDnより上位層のLoDに含まれる三次元点の属性情報を用いて算出してもよい。
図128は、参照関係の例を示す図である。例えば、図128に示す例の場合、三次元データ符号化装置は、LoD2に含まれる三次元点の予測値を、LoD0又はLoD1に含まれる三次元点の属性情報を用いて算出する。また、三次元データ符号化装置は、LoD1に含まれる三次元点の予測値を、LoD0に含まれる三次元点の属性情報を用いて算出する。この場合、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の上位層に属する三次元点間の距離は、LoDの上位層に属する三次元点間の距離より離れる。よって、上位層では、Nの値を大きく設定することで、周囲の多くの三次元点を平均化することで予測精度を向上できる可能性がある。また、LoDの下位層に属する三次元点間の距離は近い。よって、下位層では、Nの値を小さく設定することで、平均化の処理量を抑えつつ、効率的な予測を行うことが可能となる。
上述したように、LoDNに含まれる点Pの予測値は、LoDN’(N’<=N)に含まれる符号化済みの周囲点P’を用いて生成される。ここで、周囲点P’は、点Pとの距離に基づき選択される。例えば、図128に示す点b2の属性情報の予測値は、点a0、a1、a2の属性情報を用いて生成される。
上述したNの値に応じて、選択される周囲の点は変化する。例えばN=3の場合は点b2の周囲点として点a0、a1、a2が選択される。N=2の場合は距離情報を元に点a1、a2が選択される。
予測値は、距離依存の重み付け平均により算出される。例えば、図128に示す例では、点b2の予測値b2pは、(式J1)及び(式J2)に示すように、点a0及び点a1の属性情報の重み付け平均により算出される。なお、Aiは点aiの属性情報の値である。また、d(p,q)は、例えば、三次元点pと三次元点qとのユークリッド距離である。
また、点aNの予測値aNpは、(式J3)及び(式A4)に示すように、点aN-4、aN-3、aN-2、aN-1の属性情報の重み付け平均により算出される。
また、三次元データ符号化装置は、三次元点の属性情報の値と、周囲点から生成した予測値との差分値(予測残差)を算出し、算出した予測残差を量子化してもよい。例えば、三次元データ符号化装置は、予測残差を量子化スケール(量子化ステップとも呼ぶ)で除算することで量子化を行う。この場合、量子化スケールが小さいほど量子化によって発生しうる誤差(量子化誤差)が小さくなる。逆に量子化スケールが大きいほど量子化誤差は大きくなる。
なお、三次元データ符号化装置は、使用する量子化スケールをLoD毎に変えてもよい。例えば、三次元データ符号化装置は、上位層ほど量子化スケールを小さくし、下位層ほど量子化スケールを大きくする。上位層に属する三次元点の属性情報の値は、下位層に属する三次元点の属性情報の予測値として使用される可能性があるため、上位層の量子化スケールを小さくして上位層で発生しうる量子化誤差を抑え、予測値の精度を高めることで符号化効率を向上できる。なお、三次元データ符号化装置は、LoD毎に使用する量子化スケールをヘッダ等に付加してもよい。これにより、三次元データ復号装置は、正しく量子化スケールを復号できるので、ビットストリームを適切に復号できる。
また、三次元データ符号化装置は、使用する量子化スケールを、対象三次元点の重要度に応じて適応的に切替えてもよい。例えば、三次元データ符号化装置は、重要度が高い三次元点には小さい量子化スケールを用い、重要度が低い三次元点には大きい量子化スケールを用いる。ここで重要度は、例えば、対象三次元点が他の三次元点から予測値の算出時に参照された回数、又はその際の重み等から算出されてもよい。例えば、重要度として、下記QW(Quantization Weight)の値を用いられる。三次元データ符号化装置は、重要度が高い三次元点のQWの値を大きく設定し、量子化スケールを小さくする。これにより、重要度が高い三次元点の量子化誤差が小さくなるので、符号化効率を改善できる。
図129は、QWの算出例を示す図である。QS(量子化ステップ)は、LoDに応じて変更されてもよい。QS_LoD0は、LoD0用のQSであり、QS_LoD1は、LoD1用のQSである。
QWは、対象三次元点の重要度を表す値である。例えば、点b2が点c0の予測値の算出に用いられた場合、点c0のQWの値に、点c0の予測値の生成時に算出した点b2に対する重みWb2_c0を乗じ、得られた値を点b2のQWの値に加算してもよい。これにより、予測値の生成に多く用いられた三次元点のQWの値が大きくなり、その三次元点の量子化誤差を抑えることで予測効率を改善できる。
例えば、三次元データ符号化装置は、最初に全ての三次元点のQWの値を1で初期化し、予測構造に従って各三次元点のQWを更新してもよい。または、三次元データ符号化装置は、全ての三次元点のQWを値1で初期化せずに、LoDの階層に応じて初期値を変更してもよい。例えば、三次元データ符号化装置は、上位層ほどQWの初期値を大きく設定することで上位層の量子化スケールを小さくしてもよい。これにより、上位層の予測誤差を抑えることができるので下位層の予測精度を高め、符号化効率を改善できる。
また、三次元データ符号化装置は、量子化後の予測残差である符号付整数値(符号付量子化値)を符号なし整数値(符号なし量子化値)に変換してもよい。これにより予測残差をエントロピー符号化する場合に、負の整数の発生を考慮する必要がなくなる。なお、三次元データ符号化装置は、必ずしも符号付整数値を符号なし整数値に変換する必要はなく、例えば符号ビットを別途エントロピー符号化してもよい。
図130は、予測残差の算出例を示す図である。予測残差は、元の値から予測値を減算することにより算出される。例えば、点b2の予測残差b2rは、(式J5)に示すように、点b2の属性情報の値B2から、点b2の予測値b2pを減算することで算出される。
b2r=B2-b2p ・・・(式J5)
また、予測残差は、QS(量子化ステップ(Quantization Step))で除算されることで量子化される。例えば、点b2の量子化値b2qは、(式J6)により算出される。ここで、QS_LoD1は、LoD1用のQSである。つまり、LoDに応じてQSが変更されてもよい。
b2q=b2r/QS_LoD1 ・・・(式J6)
また、上述したようにQWを用いる場合、点b2の量子化値b2qは、(式J7)及び(式J8)により算出される。
また、三次元データ符号化装置は、以下のように、上記量子化値である符号付整数値を符号なし整数値に変換する。三次元データ符号化装置は、符号付整数値b2qが0より小さい場合、符号なし整数値b2uを-1-(2×b2q)に設定する。三次元データ符号化装置は、符号付整数値b2qが0以上の場合、符号なし整数値b2uを2×b2qに設定する。
また、三次元データ符号化装置は、量子化後の予測残差(符号なし整数値)を、ある順番に応じてスキャンし、符号化する。例えば、三次元データ符号化装置は、LoDの上位層に含まれる三次元点から順に下位層に向かって複数の三次元点を符号化する。
(実施の形態8)
実施の形態8に係る三次元データ符号化方法では、複数の三次元点の位置情報を、当該位置情報に基づいて生成した予測木を用いて符号化する。
図131は、実施の形態8に係る、三次元データ符号化方法に用いられる予測木の一例を示す図である。図132は、実施の形態8に係る三次元データ符号化方法の一例を示すフローチャートである。図133は、実施の形態8に係る三次元データ復号方法の一例を示すフローチャートである。
図131及び図132に示されるように、三次元データ符号化方法においては、複数の三次元点を用いて予測木を生成し、その後、予測木の各ノードが含むノード情報を符号化する。これにより、符号化されたノード情報を含むビットストリームが得られる。各ノード情報は、例えば、予測木の1つのノードに関する情報である。各ノード情報は、例えば、1つのノードの位置情報、当該1つのノードのインデックス、当該1つのノードが有する子ノードの数、当該1つのノードの位置情報を符号化するために用いられる予測モード、及び、予測残差を含む。
また、図131及び図133に示される様に、三次元データ復号方法においては、ビットストリームに含まれる符号化された各ノード情報を復号し、その後、予測木を生成しながら位置情報を復号する。
次に、予測木の生成方法について、図134を用いて説明する。
図134は、実施の形態8に係る予測木の生成方法を説明するための図である。
予測木の生成方法では、図134の(a)に示すように、三次元データ符号化装置は、まず、予測木の初期点として点0を追加する。点0の位置情報は、(x0、y0、z0)の3つの要素を含む座標で示される。点0の位置情報は、三軸直交座標系の座標で示されてもよいし、極座標系の座標で示されてもよい。
child_countは、当該child_countが設定されているノードに1つの子ノードが追加される度に+1される。予測木の生成完了後の各ノードのchild_countは、各ノードが有する子ノードの数を示すこととなり、ビットストリームに付加される。pred_modeは、各ノードの位置情報の値を予測するための予測モードを示す。予測モードの詳細は、後述する。
次に、図134の(b)に示すように、三次元データ符号化装置は、点1を予測木に追加する。この際、三次元データ符号化装置は、既に予測木に追加されている点群から点1の最近傍点を探索し、その最近傍点の子ノードとして点1を追加してもよい。点1の位置情報は、(x1、y1、z1)の3つの要素を含む座標で示される。点1の位置情報は、三軸直交座標系の座標で示されてもよいし、極座標系の座標で示されてもよい。図134の場合、点0が点1の最近傍点となり、点0の子ノードとして点1が追加される。そして、三次元データ符号化装置は、点0のchild_countで示される値を1増加させる。
なお、各ノードの位置情報の予測値は、予測木にノードを追加した際に算出されてもよい。例えば、図134の(b)の場合、三次元データ符号化装置は、点1を点0の子ノードとして追加し、点0の位置情報を予測値として算出してもよい。その場合、pred_mode=1と設定されてもよい。pred_modeは、予測モードを示す予測モード情報(予測モード値)である。また、三次元データ符号化装置は、予測値の算出後、点1のresidual_value(予測残差)を算出してもよい。ここで、residual_valueは、各ノードの位置情報からpred_modeで示される予測モードで算出された予測値を引いた差分値である。このように、三次元データ符号化方法では、位置情報そのものではなく、予測値からの差分値を符号化することで符号化効率を向上できる。
次に、図134の(c)に示すように、三次元データ符号化装置は、点2を予測木に追加する。この際、三次元データ符号化装置は、既に予測木に追加されている点群から点2の最近傍点を探索し、その最近傍点の子ノードとして点2を追加してもよい。点2の位置情報は、(x2、y2、z2)の3つの要素を含む座標で示される。点2の位置情報は、三軸直交座標系の座標で示されてもよいし、極座標系の座標で示されてもよい。図134の場合、点1が点2の最近傍点となり、点1の子ノードとして点2が追加される。そして、三次元データ符号化装置は、点1のchild_countで示される値を1増加させる。
次に、図134の(d)に示すように、三次元データ符号化装置は、点3を予測木に追加する。この際、三次元データ符号化装置は、既に予測木に追加されている点群から点3の最近傍点を探索し、その最近傍点の子ノードとして点3を追加してもよい。点3の位置情報は、(x3、y3、z3)の3つの要素を含む座標で示される。点3の位置情報は、三軸直交座標系の座標で示されてもよいし、極座標系の座標で示されてもよい。図134の場合、点0が点3の最近傍点となり、点0の子ノードとして点3が追加される。そして、三次元データ符号化装置は、点0のchild_countで示される値を1増加させる。
このように、三次元データ符号化装置は、全ての点を予測木に追加し、予測木の生成を完了する。予測木の生成が完了すると、最終的にchild_count=0を有するノードが予測木のleafとなる。三次元データ符号化装置は、予測木の生成が完了後、rootのノードからdepth優先順に選択した各ノードのchild_count、pred_mode、及び、residual_valueを符号化する。つまり、三次元データ符号化装置は、depth優先順にノードを選択する場合、選択したノードの次のノードとして、当該選択したノードの1以上の子ノードのうちまだ選択されていない子ノードを選択する。三次元データ符号化装置は、選択したノードに子ノードがない場合、選択したノードの親ノードの未選択の他の子ノードを選択する。
なお、符号化順は、depth優先順に限らずに、例えば幅優先(width first)順でも構わない。三次元データ符号化装置は、幅優先順にノードを選択する場合、選択したノードの次のノードとして、当該選択したノードと同一のdepth(階層)の1以上のノードのうちまだ選択されていないノードを選択する。三次元データ符号化装置は、選択したノードと同一のdepthのノードがない場合、次のdepthの1以上のノードのうちまだ選択されていないノードを選択する。
なお、点0~3は、複数の三次元点の一例である。
なお、上記の三次元データ符号化方法では、child_count、pred_mode、及び、residual_valueを、各点を予測木に追加した際に算出するとしたが、必ずしもこれに限らず、例えば、予測木の生成完了後に、それらを算出してもよい。
複数の三次元点の三次元データ符号化装置への入力順は、入力された三次元点をMorton orderの昇順または降順に並べ替えて、その先頭の三次元点から順に処理してもよい。これにより、三次元データ符号化装置は、処理対象の三次元点の最近傍点を効率よく探索でき、符号化効率を向上できる。また、三次元データ符号化装置は、三次元点を並べ替えずに入力された順に処理してもよい。例えば、三次元データ符号化装置は、複数の三次元点の入力順に分岐の無い予測木を生成してもよい。具体的には、三次元データ符号化装置は、複数の三次元点の入力順において、入力されたの三次元点の次に入力された三次元点を所定の三次元点の子ノードとして追加してもよい。
次に、予測モードの第1の例について、図135を用いて説明する。図135は、実施の形態8に係る予測モードの第1の例を説明するための図である。図135は、予測木の一部を示す図である。
予測モードは、以下に示すとおり、8つ設定されてもよい。例えば、図135に示すように、点cの予測値を算出する場合を例に説明する。予測木では、点cの親ノードは点p0であり、点cの祖父ノードは点p1であり、点cの曾祖父ノードは点p2であることが示されている。なお、点c、点p0、点p1、及び、点p2は、複数の三次元点の一例である。
予測モード値が0である予測モード(以下、予測モード0という)は、予測なしに設定されてもよい。つまり、三次元データ符号化装置は、予測モード0において、入力された点cの位置情報を、当該点cの予測値として算出してもよい。
また、予測モード値が1である予測モード(以下、予測モード1という)は、点p0との差分予測に設定されてもよい。つまり、三次元データ符号化装置は、点cの親ノードである点p0の位置情報を、当該点cの予測値として算出してもよい。
また、予測モード値が2である予測モード(以下、予測モード2という)は、点p0と、点p1とによる線形予測に設定されてもよい。つまり、三次元データ符号化装置は、点cの親ノードである点p0の位置情報と、点cの祖父ノードである点p1の位置情報とを用いた線形予測による予測結果を、点cの予測値として算出してもよい。具体的には、三次元データ符号化装置は、下記の式T1を用いて予測モード2における点cの予測値を算出する。
予測値=2×p0-p1 (式T1)
式T1において、p0は点p0の位置情報を示し、p1は点p1の位置情報を示す。
また、予測モード値が3である予測モード(以下、予測モード3という)は、点p0、点p1及び点p2を用いたParallelogram予測に設定されてもよい。つまり、三次元データ符号化装置は、点cの親ノードである点p0の位置情報と、点cの祖父ノードである点p1の位置情報と、点cの曾祖父ノードである点p2の位置情報とを用いたParallelogram予測による予測結果を、点cの予測値として算出してもよい。具体的には、三次元データ符号化装置は、下記の式T2を用いて予測モード3における点cの予測値を算出する。
予測値=p0+p1-p2 (式T2)
式T2において、p0は点p0の位置情報を示し、p1は点p1の位置情報を示し、p2は点p2の位置情報を示す。
また、予測モード値が4である予測モード(以下、予測モード4という)は、点p1との差分予測に設定されてもよい。つまり、三次元データ符号化装置は、点cの祖父ノードである点p1の位置情報を、当該点cの予測値として算出してもよい。
また、予測モード値が5である予測モード(以下、予測モード5という)は、点p2との差分予測に設定されてもよい。つまり、三次元データ符号化装置は、点cの曾祖父ノードである点p2の位置情報を、当該点cの予測値として算出してもよい。
また、予測モード値が6である予測モード(以下、予測モード6という)は、点p0、点p1、及び、点p2のいずれか2個以上の位置情報の平均に設定されてもよい。つまり、三次元データ符号化装置は、点cの親ノードである点p0の位置情報と、点cの祖父ノードである点p1の位置情報と、点cの曾祖父ノードである点p2の位置情報とのうちの2以上の位置情報の平均値を、点cの予測値として算出してもよい。例えば、三次元データ符号化装置は、点p0の位置情報と、点p1の位置情報とを予測値の算出に用いる場合、次の式T3を用いて予測モード6における点cの予測値を算出する。
予測値=(p0+p1)/2 (式T3)
式T3において、p0は点p0の位置情報を示し、p1は点p1の位置情報を示す。
また、予測モード値が7である予測モード(以下、予測モード7という)は、点p0及び点p1の間の距離d0と、点p2及び点p1の間の距離d1とを用いた非線形予測に設定されてもよい。つまり、三次元データ符号化装置は、距離d0と、距離d1とを用いた非線形予測による予測結果を、点cの予測値として算出してもよい。
なお、各予測モードに割当てる予測方法は、上記例に限らない。また、上記の8つの予測モードと、上記の8つの予測方法とは、上記の組み合わせでなくてもよく、どのような組み合わせであってもよい。例えば、予測モードを算術符号化などのエントロピー符号化を用いて符号化する場合、予測モード0に使用頻度が高い予測方法が割り当てられてもよい。これにより、符号化効率を向上できる。また、三次元データ符号化装置は、符号化処理を進めながら、予測モードの使用頻度に合わせて動的に予測モードの割り当てを変更することで符号化効率を向上させてもよい。三次元データ符号化装置は、例えば、符号化時の各予測モードの使用頻度をカウントし、使用頻度が高い予測方法ほどより小さい値で示される予測モードを割り当ててもよい。これにより符号化効率を向上できる。なお、Mは、予測モードの数を示す予測モード数であり、上記例の場合、予測モードは、予測モード0~7の8つあるため、M=8となる。
三次元データ符号化装置は、三次元点の位置情報(x,y,z)の予測値(px,py,pz)として、符号化対象の三次元点の周囲の三次元点のうち、符号化対象の三次元点に距離が近い三次元点の位置情報を用いて、符号化対象の三次元点の位置情報の算出に用いる予測値を算出してもよい。また、三次元データ符号化装置は、予測モード情報(pred_mode)を三次元点毎に付加し、予測モードに応じて算出される予測値を選択できるようにしてもよい。
例えば、総数がMの予測モードにおいて、予測モード0に最近傍点の三次元点p0の位置情報を割り当て、・・・、予測モードM-1に三次元点p2の位置情報を割り当て、予測に使用した予測モードを三次元点毎にビットストリームに付加することが考えられる。
なお、予測モード数Mは、ビットストリームに付加されても構わない。また、予測モード数Mは、ビットストリームに付加されずに規格のprofile、level等で値が規定されても構わない。また、予測モード数Mは、予測に用いる三次元点数Nから算出された値が用いられても構わない。例えば予測モード数Mは、M=N+1により算出されても構わない。
図136は、実施の形態8に係る、各予測モードにおいて算出される予測値を示すテーブルの第2の例を示す図である。
図136に示されるテーブルは、予測に用いる三次元点数N=4、かつ、予測モード数M=5の場合の例である。
第2の例において、点cの位置情報の予測値は、点p0、点p1、及び、点p2の少なくともいずれか1つの位置情報を用いて算出される。予測モードは、符号化対象の三次元点毎に付加される。予測値は、付加された予測モードに応じた値に算出される。
図137は、実施の形態8に係る、各予測モードにおいて算出される予測値を示すテーブルの第2の例の具体例を示す図である。
三次元データ符号化装置は、例えば、予測モード1を選択し、符号化対象の三次元点の位置情報(x、y、z)を、それぞれ予測値(p0x、p0y、p0z)を用いて符号化してもよい。この場合、選択された予測モード1を示す予測モード値である「1」がビットストリームに付加される。
このように、三次元データ符号化装置は、予測モードの選択において、符号化対象の三次元点の位置情報が含む3つの要素の各要素の予測値を算出するための1つの予測モードとして、3つの要素について共通した予測モードを選択してもよい。
図138は、実施の形態8に係る、各予測モードにおいて算出される予測値を示すテーブルの第3の例を示す図である。
図138に示されるテーブルは、予測に用いる三次元点数N=2、かつ、予測モード数M=5の場合の例である。
第3の例において、点cの位置情報の予測値は、点p0及び点p1の少なくともいずれか1つの位置情報を用いて算出される。予測モードは、符号化対象の三次元点毎に付加される。予測値は、付加された予測モードに応じた値に算出される。
なお、第3の例のように、点cの周囲の点の数(隣接点数)が3個に満たない場合、予測値が未割当てである予測モードは、not availableに設定されてもよい。また、not availableが設定された予測モードが発生した場合、その予測モードには、別の予測方法が割り当てられてもよい。例えば、その予測モードには、予測値として点p2の位置情報が割り当てられてもよい。また、その予測モードには、他の予測モードに割り当てられた予測値が割り当てられてもよい。例えば、not availableが設定された予測モード3に、予測モード4に割り当てられている点p1の位置情報が割り当てられてもよい。その際、予測モード4には、新たに点p2の位置情報が割り当てられてもよい。このように、not availableが設定された予測モードが発生した場合、当該予測モードに新たな予測方法を割り当てることで符号化効率を向上できる。
なお、位置情報が三軸直交座標系、極座標系などのように3つの要素を有する場合、3つの要素毎に分けた予測モードで予測値が算出されても構わない。例えば、3つの要素が三軸直交座標系の座標(x、y、z)のx、y、zで表される場合、3つの要素の予測値のそれぞれは、それぞれの要素において選択された予測モードで算出されてもよい。例えば、要素x(つまりx座標)の予測値を算出するための予測モードpred_mode_x、要素y(つまりy座標)の予測値を算出するための予測モードpred_mode_y、要素zの(つまりz座標予測値を算出するための予測モードpred_mode_zのそれぞれにおいて、予測モード値が選択されてもよい。この場合、各要素の予測モードを示す予測モード値には、後述する図139~図141のテーブルの値が用いられ、これらの予測モード値が、それぞれビットストリームに付加されてもよい。なお、上記では、位置情報の一例として、三軸直交座標系の座標について説明したが、極座標系の座標についても同様に適用することができる。
このように、三次元データ符号化装置は、予測モードの選択において、符号化対象の三次元点の位置情報が含む3つの要素の各要素の予測値を算出するための1つの予測モードとして、3つの要素それぞれについて独立した予測モードを選択してもよい。
また、位置情報の複数の要素のうちの2以上の要素を含む予測値は、共通する予測モードで算出されてもよい。例えば、3つの要素が三軸直交座標系の座標(x、y、z)のx、y、zで表される場合、要素xを用いた予測値を算出するための予測モードpred_mode_xと、要素y及び要素zを用いた予測値を算出するための予測モードpred_mode_yzとのそれぞれにおいて、予測モード値が選択されてもよい。この場合、各成分の予測モードを示す予測モード値には、後述する図139及び図142のテーブルの値が用いられ、これらの予測モード値が、それぞれビットストリームに付加されてもよい。
このように、三次元データ符号化装置は、予測モードの選択において、符号化対象の三次元点の位置情報が含む3つの要素の各要素の予測値を算出するための1つの予測モードとして、3つの要素のうちの2つの要素について共通した予測モードを選択し、残りの1つの要素について上記2つの要素とは独立した予測モードを選択してもよい。
図139は、各予測モードにおいて算出される予測値を示すテーブルの第4の例を示す図である。具体的には、第4の例は、予測値に用いられる位置情報が周囲の三次元点の位置情報の要素xの値である場合の例である。
図139に示されるように、予測モード値が「0」で示される予測モードpred_mode_xにおいて算出される予測値は、0である。また、予測モード値が「1」で示される予測モードpred_mode_xにおいて算出される予測値は、点p0のx座標であり、p0xである。また、予測モード値が「2」で示される予測モードpred_mode_xにおいて算出される予測値は、点p0のx座標及び点p1のx座標による線形予測の予測結果であり、(2×p0x-p1x)である。また、予測モード値が「3」で示される予測モードpred_mode_xにおいて算出される予測値は、点p0のx座標、点p1のx座標、及び、点p2のx座標によるParallelogram予測の予測結果であり、(p0x+p1x-p2x)である。また、予測モード値が「4」で示される予測モードpred_mode_xにおいて算出される予測値は、点p1のx座標であり、p1xである。
なお、例えば、図139のテーブルにおいて予測モード値が「1」で示される予測モードpred_mode_xが選択された場合、符号化対象の三次元点の位置情報のx座標を、予測値p0xを用いて符号化してもよい。この場合、予測モード値としての「1」がビットストリームに付加される。
図140は、各予測モードにおいて算出される予測値を示すテーブルの第5の例を示す図である。具体的には、第5の例は、予測値に用いられる位置情報が周囲の三次元点の位置情報の要素yの値である場合の例である。
図140に示されるように、予測モード値が「0」で示される予測モードpred_mode_yにおいて算出される予測値は、0である。また、予測モード値が「1」で示される予測モードpred_mode_yにおいて算出される予測値は、点p0のy座標であり、p0yである。また、予測モード値が「2」で示される予測モードpred_mode_yにおいて算出される予測値は、点p0のy座標及び点p1のy座標による線形予測の予測結果であり、(2×p0y-p1y)である。また、予測モード値が「3」で示される予測モードpred_mode_yにおいて算出される予測値は、点p0のy座標、点p1のy座標、及び、点p2のy座標によるParallelogram予測の予測結果であり、(p0y+p1y-p2y)である。また、予測モード値が「4」で示される予測モードpred_mode_yにおいて算出される予測値は、点p1のy座標であり、p1yである。
なお、例えば、図140のテーブルにおいて予測モード値が「1」で示される予測モードpred_mode_yが選択された場合、符号化対象の三次元点の位置情報のy座標を、予測値p0yを用いて符号化してもよい。この場合、予測モード値としての「1」がビットストリームに付加される。
図141は、各予測モードにおいて算出される予測値を示すテーブルの第6の例を示す図である。具体的には、第6の例は、予測値に用いられる位置情報が周囲の三次元点の位置情報の要素zの値である場合の例である。
図141に示されるように、予測モード値が「0」で示される予測モードpred_mode_zにおいて算出される予測値は、0である。また、予測モード値が「1」で示される予測モードpred_mode_zにおいて算出される予測値は、点p0のz座標であり、p0zである。また、予測モード値が「2」で示される予測モードpred_mode_zにおいて算出される予測値は、点p0のz座標及び点p1のz座標による線形予測の予測結果であり、(2×p0z-p1z)である。また、予測モード値が「3」で示される予測モードpred_mode_zにおいて算出される予測値は、点p0のz座標、点p1のz座標、及び、点p2のz座標によるParallelogram予測の予測結果であり、(p0z+p1z-p2z)である。また、予測モード値が「4」で示される予測モードpred_mode_zにおいて算出される予測値は、点p1のz座標であり、p1zである。
なお、例えば、図141のテーブルにおいて予測モード値が「1」で示される予測モードpred_mode_zが選択された場合、符号化対象の三次元点の位置情報のz座標を、予測値p0zを用いて符号化してもよい。この場合、予測モード値としての「1」がビットストリームに付加される。
図142は、各予測モードにおいて算出される予測値を示すテーブルの第7の例を示す図である。具体的には、第7の例は、予測値に用いられる位置情報が周囲の三次元点の位置情報の要素y及び要素zの値である場合の例である。
図142に示されるように、予測モード値が「0」で示される予測モードpred_mode_yzにおいて算出される予測値は、0である。また、予測モード値が「1」で示される予測モードpred_mode_yzにおいて算出される予測値は、点p0のy座標及びz座標であり、(p0y、p0z)である。また、予測モード値が「2」で示される予測モードpred_mode_yzにおいて算出される予測値は、点p0のy座標及びz座標と点p1のy座標及びz座標とによる線形予測の予測結果であり、(2×p0y-p1y、2×p0z-p1z)である。また、予測モード値が「3」で示される予測モードpred_mode_yzにおいて算出される予測値は、点p0のy座標及びz座標と、点p1のy座標及びz座標と、点p2のy座標及びz座標とによるParallelogram予測の予測結果であり、(p0y+p1y-p2y、p0z+p1z-p2z)である。また、予測モード値が「4」で示される予測モードpred_mode_yzにおいて算出される予測値は、点p1のy座標及びz座標であり、(p1y、p1z)である。
なお、例えば、図142のテーブルにおいて予測モード値が「1」で示される予測モードpred_mode_yzが選択された場合、符号化対象の三次元点の位置情報のy座標及びz座標を、予測値(p0y、p0z)を用いて符号化してもよい。この場合、予測モード値としての「1」がビットストリームに付加される。
第4~第7の例におけるテーブルにおいて、予測モードと、算出される予測値の予測方法との対応関係は、第2の例のテーブルにおける上記対応関係と同様である。
符号化時の予測モードは、RD最適化によって選択されてもよい。例えば、ある予測モードPを選択した場合のコストcost(P)を算出し、cost(P)が最小になる予測モードPを選択することが考えられる。コストcost(P)としては、例えば、予測モードPの予測値を用いた場合の予測残差residual_value(P)と、予測モードPを符号化するために必要なビット数bit(P)と、調整パラメータλ値とを用いて、式D1で算出してもよい。
cost(P)=abs(residual(P))+λ×bit(P)・・・(式D1)
abs(x)はxの絶対値を示す。
abs(x)の代わりにxの2乗値を用いても構わない。
上記式D1を用いることにより、予測残差の大きさと予測モードを符号化するために必要なビット数とのバランスを考慮した予測モードを選択することが可能となる。なお、調整パラメータλは、量子化スケールの値に応じて異なる値が設定されてもよい。例えば量子化スケールが小さい場合(高ビットレート時)、λ値を小さくすることで予測残差residual_value(P)が小さくなる予測モードを選択して予測精度をなるべく向上し、量子化スケールが大きい場合(低ビットレート時)、λ値を大きくすることで予測モードPを符号化するために必要なビット数bit(P)を考慮しながら適切な予測モードが選択されるようにしてもよい。
なお、量子化スケールが小さい場合とは、例えば、第1の量子化スケールよりも小さい場合である。量子化スケールが大きい場合とは、例えば、第1の量子化スケール以上の第2の量子化スケールより大きい場合である。また、量子化スケールが小さいほどλ値を小さい値に設定してもよい。
予測残差residual_value(P)は、符号化対象の三次元点の位置情報から予測モードPの予測値を減算することで算出される。なお、コスト算出時の予測残差residual_value(P)の代わりに、予測残差residual_value(P)を量子化、逆量子化し、予測値と加算して復号値を求め、元の三次元点の位置情報と予測モードPを用いた場合の復号値との差分(符号化誤差)をコスト値に反映しても構わない。これにより、符号化誤差が小さい予測モードを選択することが可能となる。
予測モードPを符号化するために必要なビット数bit(P)は、例えば予測モードを二値化して符号化する場合は、二値化後のビット数を用いてもよい。
例えば、予測モード数M=5の場合、図143のように、予測モード数Mを用いて最大値を5としたtruncated unary codeで予測モードを示す予測モード値を二値化してもよい。この場合、予測モード値が「0」の場合は1ビット、予測モード値が「1」の場合は2ビット、予測モード値が「2」の場合は3ビット、予測モード値が「3」および「4」の場合は4ビットが、それぞれの予測モード値の符号化に必要なビット数bit(P)として用いられる。truncated unary codeを用いることで予測モードの値が小さいほど少ないビット数となる。このため、予測モード値が「0」の場合に予測値として算出される0、または、予測モード値が「1」の場合に予測値として算出される三次元点p0の位置情報、つまり、符号化対象の三次元点に距離が近い三次元点の位置情報のように、選択されやすい、例えばcost(P)が最小になりやすい予測値を算出する予測モードを示す予測モード値の符号量を削減することができる。
このように三次元データ符号化装置は、選択された予測モードを示す予測モード値を、予測モード数を用いて符号化してもよい。具体的には、三次元データ符号化装置は、予測モード数を最大値としたtruncated unary codeで予測モード値を符号化してもよい。
また、予測モード数の最大値が決まっていない場合は、図144のように、予測モードを示す予測モード値をunary codeで二値化してもよい。また、各予測モードの発生確率が近い場合は、図145のように、予測モードを示す予測モード値をfixed codeで二値化して符号量を削減するようにしてもよい。
なお、予測モードPを示す予測モード値を符号化するために必要なビット数bit(P)として、予測モードPを示す予測モード値の二値データを算術符号化し、算術符号化後の符号量をbit(P)の値としても構わない。これにより、より正確な必要ビット数bit(P)を用いてコストが算出できるため、より適切な予測モードを選択することが可能となる。
なお、図143は、実施の形態8に係る予測モード値を二値化して符号化する場合の二値化テーブルの第1の例を示す図である。具体的には、第1の例は、予測モード数M=5の場合において、truncated unary codeで予測モード値を二値化する例である。
また、図144は、実施の形態8に係る予測モード値を二値化して符号化する場合の二値化テーブルの第2の例を示す図である。具体的には、第2の例は、予測モード数M=5の場合において、unary codeで予測モード値を二値化する例である。
また、図145は、実施の形態8に係る予測モード値を二値化して符号化する場合の二値化テーブルの第3の例を示す図である。具体的には、第3の例は、予測モード数M=5の場合において、fixed codeで予測モード値を二値化する例である。
予測モード(pred_mode)を示す予測モード値は、二値化後に算術符号化してビットストリームに付加されてもよい。予測モード値は、上述したように、例えば予測モード数Mの値を用いたtruncated unary codeで二値化されてもよい。この場合、予測モード値の二値化後のビット数の最大数は、M-1となる。
また、二値化後の二値データは、符号化テーブルを用いて算術符号化されてもよい。この場合、例えば、二値データのビット毎に符号化テーブルを切替えて符号化することで符号化効率を向上させてもよい。また、符号化テーブル数を抑制するために、二値データのうち、先頭ビットone bitにone bit用の符号化テーブルAを用いて符号化し、残りのビットremaining bitの各ビットにremaining bit用の符号化テーブルBを用いて符号化してもよい。例えば、図146に示される予測モード値が「3」の二値データ「1110」を符号化する場合、先頭ビットone bitの「1」に符号化テーブルAを用いて符号化し、残りのビットremaining bitの「110」のそれぞれのビットに符号化テーブルBを用いて符号化してもよい。
なお、図146は、実施の形態8に係る予測モードを二値化して符号化する場合の二値化テーブルの二値データを符号化する例について説明するための図である。図146における二値化テーブルは、予測モード数M=5において、truncated unary codeで予測モード値を二値化する例である。
これにより、符号化テーブル数を抑制しつつ、二値データのビット位置に応じて符号化テーブルを切替えることで符号化効率を向上させることができる。なお、Remaining bitの符号化時に、更に、ビット毎に符号化テーブルを切替えて算術符号化する、または、算術符号化された結果に応じて当該符号化テーブルを切り替えて復号してもよい。
予測モード数Mを用いたtruncated unary codeで予測モード値を二値化して符号化する場合、復号側で復号した二値データから予測モードが特定できるように、truncated unary codeに用いられた予測モード数Mがビットストリームのヘッダ等に付加されても構わない。ビットストリームのヘッダは、例えば、シーケンスパラメータセット(SPS)、位置パラメータセット(GPS)、スライスヘッダ等である。また、予測モード数の取りうる値MaxMが規格等で規定されてもよく、MaxM-Mの値(M<=MaxM)がヘッダに付加されても構わない。また、予測モード数Mは、ストリームに付加されずに、規格等のprofileまたはlevelで規定されても構わない。
なお、truncated unary codeを用いて二値化した予測モード値は、上述のようにone bit部とremaining部で符号化テーブルを切替えて算術符号化することが考えられる。なお、各符号化テーブルにおける0と1の発生確率は、実際に発生した二値データの値に応じて更新されてもよい。また、どちらかの符号化テーブルにおける0と1の発生確率は、固定化されてもよい。これにより、発生確率の更新回数を抑制して処理量を削減しても構わない。例えばone bit部の発生確率は更新され、remaining bit部の発生確率は固定化されてもよい。
図147は、実施の形態8に係る予測モード値の符号化の一例を示すフローチャートである。図148は、実施の形態8に係る予測モード値の復号の一例を示すフローチャートである。
図147に示されるように、予測モード値の符号化では、まず、予測モード値を、予測モード数Mを用いたtruncated unary codeで二値化する(S9701)。
次に、truncated unary codeの二値データを算術符号化する(S9702)。これにより、ビットストリームには、二値データが予測モードとして含まれる。
また、図148に示されるように、予測モード値の復号では、まず、予測モード数Mを用いてビットストリームを算術復号し、truncated unary codeの二値データを生成する(S9711)。
次に、truncated unary codeの二値データから予測モード値を算出する(S9712)。
予測モード(pred_mode)を示す予測モード値の二値化の方法として、予測モード数Mの値を用いたtruncated unary codeで二値化する例を示したが、必ずしもこれに限らない。例えば、予測モードに予測値が割当たった数L(L<=M)を用いたtruncated unary codeで予測モード値を二値化してもよい。例えば、予測モード数M=5の場合に、ある符号対象の三次元点の予測に利用可能な周囲の三次元点が1個の場合、図149に示されるように2個の予測モードがavailableとなり、残りの3個の予測モードがnot availableとなるケースがある。例えば、図149に示されるように予測モード数M=5の場合で、符号化対象の三次元点の周囲にある予測に利用可能な三次元点の数が1個であり、予測モード値が「2」、「3」及び「4」を示す予測モードに予測値が割当たっていない場合がある。
この場合、図150に示されるように、予測モードが割当たった値Lを最大値としてtruncated unary codeで予測モード値を二値化することにより、予測モード数Mでtruncated unary codeした場合より二値化後のビット数を削減できる可能性がある。例えば、この場合L=3であるため、最大値3としてtruncated unary codeで二値化することでビット数を削減することができる。このように、予測モードに予測値が割当たった数Lを最大値としてtruncated unary codeにて二値化することで、予測モード値の二値化後のビット数を削減してもよい。
二値化後の二値データは符号化テーブルを用いて算術符号化されてもよい。この場合、例えば二値データのビット毎に符号化テーブルを切替えて符号化することで符号化効率を向上させてもよい。また、符号化テーブル数を抑制するために、二値データのうち、先頭ビットone bitにone bit用の符号化テーブルAを用いて符号化し、残りのビットremaining bitの各ビットにremaining bit用の符号化テーブルBを用いて符号化してもよい。例えば、図150に示される予測モード値が「1」の二値データ「1」を符号化する場合、先頭ビットone bitの「1」に符号化テーブルAを用いて符号化する。残りのビットremaining bitはないので符号化しなくてもよい。残りのビットremaining bitがある場合、残りのビットremaining bitに符号化テーブルBを用いて符号化してもよい。
なお、図150は、実施の形態8に係る予測モードを二値化して符号化する場合の二値化テーブルの二値データを符号化する例について説明するための図である。図150における二値化テーブルは、予測モードに予測値が割り当たった数L=2において、truncated unary codeで予測モード値を二値化する例である。
これにより、符号化テーブル数を抑制しつつ、二値データのビット位置に応じて符号化テーブルを切替えることで符号化効率を向上させることができる。なお、Remaining bitの符号化時に、更に、ビット毎に符号化テーブルを切替えて算術符号化する、または、算術符号化された結果に応じて当該符号化テーブルを切り替えて復号してもよい。
予測モード値を、予測値が割り当たった数Lを用いたtruncated unary codeで二値化して符号化する場合、復号側で復号した二値データから予測モードが特定できるように、符号化時と同様の方法にて予測モードに予測値を割当てることで数Lを算出し、算出されたLを用いて予測モードを復号しても構わない。
なお、truncated unary codeを用いて二値化した予測モード値は、上述のようにone bit部とremaining部で符号化テーブルを切替えて算術符号化することが考えられる。なお、各符号化テーブルにおける0と1の発生確率は、実際に発生した二値データの値に応じて更新されてもよい。また、どちらかの符号化テーブルにおける0と1の発生確率は、固定化されてもよい。これにより、発生確率の更新回数を抑制して処理量を削減しても構わない。例えばone bit部の発生確率は更新され、remaining bit部の発生確率は固定化されてもよい。
図151は、実施の形態8に係る予測モード値の符号化の他の一例を示すフローチャートである。図152は、実施の形態8に係る予測モード値の復号の他の一例を示すフローチャートである。
図151に示されるように、予測モード値の符号化では、まず、予測モードに予測値が割り当たった数Lを算出する(S9721)。
次に、予測モード値を、数Lを用いたtruncated unary codeで二値化する(S9722)。
次に、truncated unary codeの二値データを算術符号化する(S9723)。
また、図152に示されるように、予測モード値の復号では、まず、予測モードに予測値が割り当たった数Lを算出する(S9731)。
次に、数Lを用いてビットストリームを算術復号し、truncated unary codeの二値データを生成する(S9732)。
次に、truncated unary codeの二値データから予測モード値を算出する(S9733)。
予測モード値は、全ての位置情報毎に付加されなくてもよい。例えば、ある条件を満たせば予測モードを固定して、予測モード値をビットストリームに付加しないようにし、ある条件を満たさなければ、予測モードを選択してビットストリームに予測モード値を付加するようにしてもよい。例えば、条件Aを満たせば予測モード値を「2」に固定して周囲の三次元点の線形予測から予測値を算出し、条件Aを満たさなければ複数の予測モードから1つの予測モードを選択してビットストリームに選択した予測モードを示す予測モード値を付加するようにしてもよい。
ある条件Aとしては、例えば、点p1及び点P0の間の距離d0と、点p2及び点p1の間の距離d1を算出し、その差分絶対値distdiff=|d0-d1|が閾値Thfix未満であることである。三次元データ符号化装置は、差分絶対値が閾値Thfix未満である場合、線形予測による予測値と処理対象の点の位置情報との差が小さいと判定し、予測モード値を「2」に固定して予測モード値を符号化しないことで、予測モードを符号化するための符号量を削減しつつ、適切な予測値を生成することが可能となる。なお、三次元データ符号化装置は、差分絶対値が閾値Thfix以上である場合、予測モードを選択して、選択した予測モードを示す予測モード値を符号化してもよい。
なお、閾値Thfixは、ビットストリームのヘッダ等に付加されてもよく、エンコーダは、閾値Thfixの値を変えて符号化できるようにしても構わない。例えば、エンコーダは、高ビットレートでの符号化時に、閾値Thfixの値を低ビットレート時よりも小さくしてヘッダに付加し、予測モードを選択して符号化するケースを増やすことで、少しでも予測残差が小さくなるように符号化してもよい。また、エンコーダは、低ビットレートでの符号化時に、閾値Thfixの値を高ビットレート時よりも大きくしてヘッダに付加し、予測モードを固定して符号化する。このように、低ビットレート時に予測モードが固定して符号化されるケースを増やすことで、予測モードを符号化するビット量を抑えつつ、符号化効率を向上することができる。また、閾値Thfixは、ビットストリームに付加されずに、規格のprofileまたはlevelで規定されてもよい。
予測に用いられる、符号化対象の三次元点の周囲のN個の三次元点は、符号化対象の三次元点からの距離が閾値THdより小さい符号化済みおよび復号済みのN個の三次元点である。Nの最大値は、NumNeighborPointとしてビットストリームに付加されてもよい。周囲の符号化済みおよび復号済みの三次元点数がNumNeighborPointの値に満たない場合など、Nの値は、常にNumNeighborPointの値に一致しなくてもよい。
予測に用いられる、差分絶対値distdiffが閾値Thfix[i]より小さければ予測モード値が「2」に固定される例を示したが、必ずしもこれに限らず、予測モード値を「0」~「M-1」のいずれかに固定するようにしても構わない。また固定される予測モード値をビットストリームに付加しても構わない。
図153は、実施の形態8に係る符号化時に条件Aに応じて予測モード値を固定するか否かを決定する処理の一例を示すフローチャートである。図154は、実施の形態8に係る復号時に条件Aに応じて予測モード値を固定された値にするか復号するかを決定する処理の一例を示すフローチャートである。
図153に示されるように、まず、三次元データ符号化装置は、点p1及び点p0の間の距離d0と、点p2及び点p1の間の距離d1を算出し、その差分絶対値distdiff=|d0-d1|を算出する(S9741)。
次に、三次元データ符号化装置は、差分絶対値distdiffが閾値Thfix未満であるか否かを判定する(S9742)。なお、閾値Thfixは、符号化され、ストリームのヘッダ等に付加されてもよい。
三次元データ符号化装置は、差分絶対値distdiffが閾値Thfix未満である場合(S9742でYes)、予測モード値を「2」に決定する(S9743)。
一方で、三次元データ符号化装置は、差分絶対値distdiffが閾値Thfix以上である場合(S9742でNo)、複数の予測モードのうちの1つの予測モードを設定する(S9744)。
そして、三次元データ符号化装置は、設定された予測モードを示す予測モード値を算術符号化する(S9745)。具体的には、三次元データ符号化装置は、図147で説明したステップS9701及びS9702を実行することで予測モード値を算術符号化する。なお、三次元データ符号化装置は、予測モードpred_modeを、予測値が割当たった予測モード数を用いてtruncated unary codeで二値化して算術符号化してもよい。つまり、三次元データ符号化装置は、図151で説明したステップS9721~S9723を実行することで予測モード値を算術符号化してもよい。
三次元データ符号化装置は、ステップS9743において決定された予測モード、または、ステップS9745において設定された予測モードの予測値を算出し、算出された予測値を出力する(S9746)。三次元データ符号化装置は、ステップS9743で決定された予測モード値を用いる場合、予測モード値が「2」で示される予測モードの予測値を、周囲のN個の三次元点の位置情報の線形予測により算出する。
また、図154に示されるように、まず、三次元データ復号装置は、点p1及び点p0の間の距離d0と、点p2及び点p1の間の距離d1を算出し、その差分絶対値distdiff=|d0-d1|を算出する(S9751)。
次に、三次元データ復号装置は、差分絶対値distdiffが閾値Thfix未満であるか否かを判定する(S9752)。なお、閾値Thfixは、ストリームのヘッダ等が復号されて設定されてもよい。
三次元データ復号装置は、差分絶対値distdiffが閾値Thfix未満である場合(S9752でYes)、予測モード値を「2」に決定する(S9753)。
一方で、三次元データ復号装置は、差分絶対値distdiffが閾値Thfix以上である場合(S9752でNo)、予測モード値をビットストリームから復号する(S9754)。
三次元データ復号装置は、ステップS9753で決定された予測モード値、または、ステップS9754で復号された予測モード値で示される予測モードの予測値を算出し、算出された予測値を出力する(S9755)。三次元データ復号装置は、ステップS9753で決定された予測モード値を用いる場合、予測モード値が「2」で示される予測モードの予測値を、周囲のN個の三次元点の位置情報の線形予測により算出する。
図155は、位置情報のヘッダのシンタックスの一例を示す図である。図155のシンタックスにおけるNumNeighborPoint、NumPredMode、Thfix、QP、及び、unique_point_per_leafについて順に説明する。
NumNeighborPointは、三次元点の位置情報の予測値の生成に用いる周囲の点数の上限値を示す。周囲の点数MがNumNeighborPointに満たない場合(M<NumNeighborPoint)、予測値の算出処理では、M個の周囲の点数を用いて予測値が算出されてもよい。
NumPredModeは、位置情報の予測に用いる予測モードの総数Mを示す。なお、予測モード数の取りうる値の最大値MaxMは、規格等で値が規定されてもよい。三次元データ符号化装置は、(MaxM-M)の値(0<M<=MaxM)をNumPredModeとしてヘッダに付加し、(MaxM-1)をtruncated unary codeで二値化して符号化しても構わない。また、予測モード数NumPredModeは、ビットストリームに付加されなくてもよく、規格等のprofileまたはlevelで値が規定されても構わない。また、予測モード数は、NumNeighborPoint+NumPredModeで規定されても構わない。
Thfixは、予測モードを固定するか否かを判定するための閾値である。予測に用いる点p1及び点p0の間の距離d0と、点p2及び点p1の間の距離d1とを算出し、その差分絶対値distdiff=|d0-d1|が閾値Thfix[i]より小さければ予測モードがαに固定される。αは、予測モードが線形予測を用いた予測値を算出するための予測モードであり、上記実施の形態では「2」である。なお、Thfixはビットストリームに付加されなくてもよく、規格等のprofileまたはlevelで値が規定されても構わない。
QPは、位置情報を量子化する際に用いる量子化パラメータを示す。三次元データ符号化装置は、量子化パラメータから量子化ステップを算出し、算出した量子化ステップを用いて位置情報を量子化してもよい。
unique_point_per_leafは、ビットストリーム内にduplicated point(位置情報が同じ点)が含まれるか否かを示す情報である。unique_point_per_leaf=1であることは、ビットストリーム内にduplicated pointがないことを示す。unique_point_per_leaf=0であることは、ビットストリーム内にduplicated pointが1つ以上存在することを示す。
なお、本実施の形態では、予測モードを固定するか否かの判断は、距離d0と距離d1との差分絶対値を用いて行われるとしたが、必ずしもこれに限らず、どのような方法で判断しても構わない。例えば、この判断は、点p1及び点p0の間の距離d0を算出し、距離d0が閾値よりも大きい場合、点p1は予測に使えないと判定し、予測モード値を「1」(予測値p0)に固定し、そうでなければ、予測モードを設定するようにしても構わない。これにより、オーバーヘッドを抑えつつ、符号化効率を向上できる。
上記NumNeighborPoint、NumPredMode、Thfix、unique_point_per_leafは、エントロピー符号化されてヘッダに付加されてもよい。例えば各値は、二値化されて算出符号化されてもよい。また、各値は、処理量を抑えるために固定長で符号化されても構わない。
図156は、位置情報のシンタックスの一例を示す図である。図156のシンタックスにおけるNumOfPoint、child_count、pred_mode、及び、residual_value[j]について順に説明する。
NumOfPointは、ビットストリームに含まれる三次元点の総数を示す。
child_countは、i番目の三次元点(node[i])が持つ子ノードの数を示す。
pred_modeは、i番目の三次元点の位置情報を符号化又は復号するための予測モードを示す。pred_modeは、値0からM-1(Mは予測モードの総数)までの値をとる。pred_modeがビットストリームにない場合(条件であるdistdiff >= Thfix[i] &&NumPredMode > 1を満たさない場合)、pred_modeは、固定値αと推定されてもよい。αは、予測モードが線形予測を用いた予測値を算出するための予測モードであり、上記実施の形態では「2」である。なお、αは、「2」に限らずに0からM-1までのいずれかの値が推定値として設定されてもよい。また、pred_modeがビットストリームにない場合の推定値は、別途ヘッダ等に付加されても構わない。また、pred_modeは予測値が割当たった予測モード数を用いてtruncated unary codeで二値化して算術符号化されてもよい。
なお、NumPredMode=1である場合、つまり、予測モード数が1である場合、三次元データ符号化装置は、予測モードを示す予測モード値を符号化せずに、予測モード値を含まないビットストリームを生成してもよい。また、三次元データ復号装置は、予測モード値を含まないビットストリームを取得した場合、予測値の算出において、特定の予測モードの予測値を算出してもよい。特定の予測モードは、予め定められた予測モードである。
residual_value[j]は、位置情報の予測値との間の予測残差の符号化データを示す。residual_value[0]は、位置情報の要素xを示し、residual_value[1]が位置情報の要素yを示し、residual_value[2]が位置情報の要素zを示してもよい。
図157は、位置情報のシンタックスの他の一例を示す図である。図157の例は、図156の例の変形例である。
pred_modeは、図157に示すように、位置情報(x、y、z)の3つの要素毎の予測モードを示していてもよい。つまり、pred_mode[0]は、要素xの予測モードを示し、pred_mode[1]は要素yの予測モードを示し、pred_mode[2]は要素zの予測モードを示す。pred_mode[0]、pred_mode[1]、及び、pred_mode[2]は、ビットストリームに付加されてもよい。
(実施の形態9)
図158は、実施の形態9に係る、三次元データ符号化方法に用いられる予測木の一例を示す図である。
実施の形態9では、実施の形態8と比較して、予測木の生成方法において、予測木を生成する際に各ノードのdepthを算出してもよい。
例えば、予測木のrootはdepth=0に設定され、rootの子ノードはdepth=1に設定され、その子ノードはdepth=2に設定されてもよい。なお、この際、depthの値に応じてpred_modeの取り得る値は、変更されてもよい。つまり、予測モードの設定では、三次元データ符号化装置は、各三次元点の階層構造の深さに基づいて、当該三次元点を予測するための予測モードを設定してもよい。例えば、pred_modeは、depthの値以下の値に制限されてもよい。つまり、設定される予測モード値は、各三次元点の階層構造の深さの値以下に設定されてもよい。
また、pred_modeは、予測モード数に応じてtruncated unary codeで二値化されて算術符号化される場合、予測モード数=min(depth,予測モード数M)としてtruncated unary codeで二値化されてもよい。これにより、depth<Mの場合のpred_modeの二値データのビット長を小さくでき、符号化効率を向上できる。
予測木の生成方法において、三次元点Aを予測木に追加する際に、その最近傍点Bを探索して、三次元点Bの子ノードに三次元点Aを追加する例を示した。ここで、最近傍点の探索方法には、どのような方法が用いられても構わない。例えば、kd-tree法を用いて最近傍点の探索が行われてもよい。これにより、効率的に最近傍点を探索でき、符号化効率を向上できる。
また、nearest neighbour法を用いて、最近傍点の探索が行われてもよい。これにより、処理負荷を抑えつつ、最近傍点を探索でき、処理量と符号化効率のバランスをとることができる。また、nearest neighbour法を用いた最近傍点の探索の際に、探索範囲が設定されてもよい。これにより処理量を削減することができる。
また、三次元データ符号化装置は、予測残差residual_valueを量子化して符号化してもよい。例えば、三次元データ符号化装置は、量子化パラメータQPをスライス等のヘッダに付加し、QPから算出されるQstepを用いてresidual_valueを量子化し、量子化値を二値化して算術符号化してもよい。なお、この場合、三次元データ復号装置は、residual_valueの量子化値に、同じQstepを用いて逆量子化を適用し、予測値に加算することで位置情報を復号してもよい。なおその場合、予測木には、復号した位置情報を追加してもよい。これにより、量子化を適用した場合でも、三次元データ符号化装置又は三次元データ復号装置は復号した位置情報を用いて予測値を算出することができるため、三次元データ復号装置が正しく復号できるビットストリームを三次元データ符号化装置は生成することができる。なお、予測木の生成時に三次元点の最近傍点を探索して予測木に追加する例を示したが、必ずしもこれに限らず、どのような方法や順番で予測木を生成してもよい。例えば、入力された三次元点がlidarで取得されたデータである場合は、lidarでスキャンされた順に三次元点を追加して予測木を生成してもよい。これにより、予測精度が向上し、符号化効率を向上することができる。
図159は、位置情報のシンタックスの他の例を示す図である。図159のシンタックスにおけるresidual_is_zero、residual_sign、residual_bitcount_minus1、及び、residual_bit[k]について順に説明する。
residual_is_zeroはresidual_valueが0か否かを示す情報である。例えば、residual_is_zero=1であることは、residual_valueが0であることを示し、residual_is_zero=0であることは、residual_valueが0でないことを示す。なお、pred_mode=0(予測なし、予測値0)の場合、residual_valueが0になる可能性が低いため、residual_is_zeroを符号化してビットストリームに付加しなくてもよい。pred_mode=0の場合、三次元データ復号装置は、residual_is_zeroをビットストリームから復号せず、residual_is_zero=0であると推定してもよい。
residual_signは、residual_valueが正であるか負であるかを示す正負情報(符号ビット)である。例えば、residual_sign=1であることはresidual_valueが負であることを示し、residual_sign=0はresidual_valueが正であることを示す。
なお、pred_mode=0の場合、予測値が0となるためresidual_valueは必ず正又は0になる。このため、三次元データ符号化装置は、residual_signを符号化してビットストリームに付加しなくてもよい。つまり、三次元データ符号化装置は、予測値が0に算出される予測モードに設定されている場合、予測残差が正であるか負であるかを示す正負情報を符号化せずに、正負情報を含まないビットストリームを生成してもよい。pred_mode=0の場合、三次元データ復号装置は、residual_signをビットストリームから復号せず、residual_sign=0であると推定してもよい。つまり、三次元データ復号装置は、予測残差が正であるか負であるかを示す正負情報を含まないビットストリームを取得した場合、予測残差を0又は正の数として扱ってもよい。
residual_bitcount_minus1は、residual_bitのビット数から1引いた数を示す。つまり、residual_bitcountは、residual_bitcount_minus1に1足した数と等しい。
residual_bit[k]は、residual_valueの絶対値をresidual_bitcountの値に合わせて固定長で二値化した際の、k番目のビット情報を示す。
なお、条件Aが「予測モード1のように、点p0、点p1、及び、点p2のいずれか1つの点の位置情報を直接予測値とする場合にunique_point_per_leaf=1(duplicated pointがない)である」と規定される場合、要素xのresidual_is_zero[0]と、要素yのresidual_is_zero[1]と、要素zのresidual_is_zero[2]が全て同時に0になることはないため、いずれか一つの要素のresidual_is_zeroをビットストリームに付加しなくてもよい。
例えば、三次元データ符号化装置は、条件Aが真であり、かつ、residual_is_zero[0]及びresidual_is_zero[1]が0である場合、residual_is_zero[2]をビットストリームに付加しなくてもよい。また、この場合、三次元データ復号装置は、ビットストリームに付加されなかったresidual_is_zero[2]=1であると推定してもよい。
(変形例)
本実施の形態では、三次元点の位置情報(x,y,z)を用いて予測木を生成し、位置情報を符号化及び復号する例を示したが、必ずしもこれに限らない。例えば、三次元点の属性情報(色、反射率等)の符号化に、予測木を用いた予測符号化が適用されても構わない。また、位置情報の符号化において生成された予測木は、属性情報の符号化時にも利用されても構わない。これにより、属性情報の符号化時に予測木を生成する必要がなくなり、処理量を削減できる。
図160は、位置情報及び属性情報の符号化に共通して用いられる予測木の構成の一例を示す図である。
図160に示すように、この予測木の各ノードは、child_count、g_pred_mode、g_residual_value、a_pred_mode、及び、a_residual_valueを含む。g_pred_modeは位置情報の予測モードを示す。g_residual_valueは位置情報の予測残差を示す。a_pred_modeは属性情報の予測モードを示す。a_residual_valueは属性情報の予測モードを示す。
ここで、child_countは位置情報及び属性情報で共有されてもよい。これにより、オーバーヘッドを抑制でき、符号化効率を向上できる。
なお、child_countは位置情報及び属性情報でそれぞれ独立して付加されてもよい。これにより、三次元データ復号装置は、位置情報及び属性情報を独立して復号することができる。例えば、三次元データ復号装置は、属性情報だけを復号することも可能となる。
なお、三次元データ符号化装置は、位置情報及び属性情報で別々の予測木を生成してもよい。これにより、三次元データ符号化装置は、位置情報及び属性情報のそれぞれに適した予測木を生成することができ、符号化効率を向上できる。この場合、三次元データ符号化装置は、位置情報及び属性情報のそれぞれの予測木を三次元データ復号装置が再構成するために必要な情報(child_countなど)をそれぞれビットストリームに付加してもよい。なお、三次元データ符号化装置は、予測木を位置情報及び属性情報で共有するか否かを示す識別情報をヘッダ等に付加してもよい。これにより、予測木を位置情報及び属性情報で共有するかを適応的に切替えることができ、符号化効率と低処理量化とのバランスを制御することができる。
図161は、実施の形態9の変形例に係る三次元データ符号化方法の一例を示すフローチャートである。
三次元データ符号化装置は、複数の三次元点の位置情報を用いて予測木を生成する(S9761)。
次に、三次元データ符号化装置は、予測木の各ノードが含むノード情報と位置情報の予測残差とを符号化する(S9762)。三次元データ符号化装置は、具体的には、各ノードの位置情報を予測するための予測値を算出し、算出した予測値と、当該ノードの位置情報との差分である予測残差を算出し、ノード情報及び位置情報の予測残差を符号化する。
次に、三次元データ符号化装置は、予測木の各ノードが含むノード情報と属性情報の予測残差とを符号化する(S9763)。三次元データ符号化装置は、具体的には、各ノードの属性情報を予測するための予測値を算出し、算出した予測値と、当該ノードの属性情報との差分である予測残差を算出し、ノード情報及び属性情報の予測残差を符号化する。
図162は、実施の形態9の変形例に係る三次元データ復号方法の一例を示すフローチャートである。
三次元データ復号装置は、ノード情報を復号して予測木を再構成する(S9771)。
次に、三次元データ復号装置は、ノードの位置情報を復号する(S9772)。三次元データ復号装置は、具体的には、各ノードの位置情報の予測値を算出し、算出した予測値と、取得した予測残差とを加算することで、位置情報を復号する。
次に、三次元データ復号装置は、ノードの属性情報を復号する(S9773)。三次元データ復号装置は、具体的には、各ノードの属性情報の予測値を算出し、算出した予測値と、取得した予測残差とを加算することで、位置情報を復号する。
次に、三次元データ復号装置は、全てのノードの復号が完了したか否かを判定する(S9774)。三次元データ復号装置は、全てのノードの復号が完了した場合、三次元データ復号方法を終了し、全てのノードの復号が完了していない場合、未処理のノードについてステップS9771~S9773を実行する。
図163は、属性情報のヘッダのシンタックスの一例を示す図である。図163のシンタックスにおけるNumNeighborPoint、NumPredMode、Thfix、QP、及び、unique_point_per_leafについて順に説明する。
NumNeighborPointは、三次元点の属性情報の予測値の生成に用いる周囲の点数の上限値を示す。周囲の点数MがNumNeighborPointに満たない場合(M<NumNeighborPoint)、予測値の算出処理では、M個の周囲の点数を用いて予測値が算出されてもよい。
NumPredModeは、属性情報の予測に用いる予測モードの総数Mを示す。なお、予測モード数の取りうる値の最大値MaxMは、規格等で値が規定されてもよい。三次元データ符号化装置は、(MaxM-M)の値(0<M<=MaxM)をNumPredModeとしてヘッダに付加し、(MaxM-1)をtruncated unary codeで二値化して符号化しても構わない。また、予測モード数NumPredModeは、ビットストリームに付加されなくてもよく、規格等のprofileまたはlevelで値が規定されても構わない。また、予測モード数は、NumNeighborPoint+NumPredModeで規定されても構わない。
Thfixは、予測モードを固定するか否かを判定するための閾値である。予測に用いる点p1及び点p0の間の距離d0と、点p2及び点p1の間の距離d1とを算出し、その差分絶対値distdiff=|d0-d1|が閾値Thfix[i]より小さければ予測モードがαに固定される。αは、予測モードが線形予測を用いた予測値を算出するための予測モードであり、上記実施の形態では「2」である。なお、Thfixはビットストリームに付加されなくてもよく、規格等のprofileまたはlevelで値が規定されても構わない。
QPは、属性情報を量子化する際に用いる量子化パラメータを示す。三次元データ符号化装置は、量子化パラメータから量子化ステップを算出し、算出した量子化ステップを用いて属性情報を量子化してもよい。
unique_point_per_leafは、ビットストリーム内にduplicated point(位置情報が同じ点)が含まれるか否かを示す情報である。unique_point_per_leaf=1であることは、ビットストリーム内にduplicated pointがないことを示す。unique_point_per_leaf=0であることは、ビットストリーム内にduplicated pointが1つ以上存在することを示す。
なお、本実施の形態では、予測モードを固定するか否かの判断は、距離d0と距離d1との差分絶対値を用いて行われるとしたが、必ずしもこれに限らず、どのような方法で判断しても構わない。例えば、この判断は、点p1及び点p0の間の距離d0を算出し、距離d0が閾値よりも大きい場合、点p1は予測に使えないと判定し、予測モード値を「1」(予測値p0)に固定し、そうでなければ、予測モードを設定するようにしても構わない。これにより、オーバーヘッドを抑えつつ、符号化効率を向上できる。
上記NumNeighborPoint、NumPredMode、Thfix、または、unique_point_per_leafは、位置情報と共通化し、attribute_headerには追加しなくてもよい。これによりオーバーヘッドを削減できる。
上記NumNeighborPoint、NumPredMode、Thfix、unique_point_per_leafは、エントロピー符号化されてヘッダに付加されてもよい。例えば各値は、二値化されて算出符号化されてもよい。また、各値は、処理量を抑えるために固定長で符号化されても構わない。
図164は、属性情報のシンタックスの他の一例を示す図である。図164のシンタックスにおけるNumOfPoint、child_count、pred_mode、dimension、residual_is_zero、residual_sign、residual_bitcount_minus1、及び、residual_bit[k]について順に説明する。
NumOfPointは、ビットストリームに含まれる三次元点の総数を示す。NumOfPointは、位置情報のNumOfPointと共通化されてもよい。
child_countは、i番目の三次元点(node[i])が持つ子ノードの数を示す。なお、child_countは、位置情報のchild_countと共通化されてもよい。child_countは、位置情報のchild_countと共通化される場合、attribute_dataにはchild_countが付加されなくてもよい。これによりオーバーヘッドを削減できる。
pred_modeは、i番目の三次元点の位置情報を符号化又は復号するための予測モードを示す。pred_modeは、値0からM-1(Mは予測モードの総数)までの値をとる。pred_modeがビットストリームにない場合(条件であるdistdiff >= Thfix[i] &&NumPredMode > 1を満たさない場合)、pred_modeは、固定値αと推定されてもよい。αは、予測モードが線形予測を用いた予測値を算出するための予測モードであり、上記実施の形態では「2」である。なお、αは、「2」に限らずに0からM-1までのいずれかの値が推定値として設定されてもよい。また、pred_modeがビットストリームにない場合の推定値は、別途ヘッダ等に付加されても構わない。また、pred_modeは予測値が割当たった予測モード数を用いてtruncated unary codeで二値化して算術符号化されてもよい。
dimensionは、属性情報の次元を示す情報である。dimensionは、SPS等のヘッダに付加されてもよい。例えば、属性情報が色の場合にdimensionは「3」に設定され、反射率の場合にdimensionは「1」に設定されてもよい。
residual_is_zeroはresidual_valueが0か否かを示す情報である。例えば、residual_is_zero=1であることは、residual_valueが0であることを示し、residual_is_zero=0であることは、residual_valueが0でないことを示す。なお、pred_mode=0(予測なし、予測値0)の場合、residual_valueが0になる可能性が低いため、residual_is_zeroを符号化してビットストリームに付加しなくてもよい。pred_mode=0の場合、三次元データ復号装置は、residual_is_zeroをビットストリームから復号せず、residual_is_zero=0であると推定してもよい。
residual_signは、residual_valueが正であるか負であるかを示す正負情報(符号ビット)である。例えば、residual_sign=1であることはresidual_valueが負であることを示し、residual_sign=0はresidual_valueが正であることを示す。
なお、pred_mode=0(予測なし、予測値0)の場合、residual_valueは正になるため、三次元データ符号化装置は、residual_signを符号化してビットストリームに付加しなくてもよい。つまり、三次元データ符号化装置は、予測残差が正である場合、予測残差が正であるか負であるかを示す正負情報を符号化せずに、正負情報を含まないビットストリームを生成し、予測残差が負である場合、正負情報を含むビットストリームを生成してもよい。pred_mode=0の場合、三次元データ復号装置は、residual_signをビットストリームから復号せず、residual_sign=0であると推定してもよい。つまり、三次元データ復号装置は、予測残差が正であるか負であるかを示す正負情報を含まないビットストリームを取得した場合、予測残差を正の数として扱い、正負情報を含むビットストリームを取得した場合、予測残差を負の数として扱ってもよい。
residual_bitcount_minus1は、residual_bitのビット数から1引いた数を示す。つまり、residual_bitcountは、residual_bitcount_minus1に1足した数と等しい。
residual_bit[k]は、residual_valueの絶対値をresidual_bitcountの値に合わせて固定長で二値化した際の、k番目のビット情報を示す。
なお、条件Aが「予測モード1のように、点p0、点p1、及び、点p2のいずれか1つの点の属性情報を直接予測値とする場合にunique_point_per_leaf=1(duplicated pointがない)である」と規定される場合、要素xのresidual_is_zero[0]と、要素yのresidual_is_zero[1]と、要素zのresidual_is_zero[2]が全て同時に0になることはないため、いずれか一つの要素のresidual_is_zeroをビットストリームに付加しなくてもよい。
例えば、三次元データ符号化装置は、条件Aが真であり、かつ、residual_is_zero[0]及びresidual_is_zero[1]が0である場合、residual_is_zero[2]をビットストリームに付加しなくてもよい。また、この場合、三次元データ復号装置は、ビットストリームに付加されなかったresidual_is_zero[2]=1であると推定してもよい。
図165は、位置情報及び属性情報のシンタックスの一例を示す図である。
図165に示すように、1つのデータユニットに、位置情報及び属性情報の符号化情報が格納されてもよい。ここで、g_*はgeometryに関する符号化情報を示し、a_*は属性情報に関する符号化情報を示す。これにより、位置情報及び属性情報を同時に復号することができる。
以上のように、本実施の形態の一態様に係る三次元データ符号化装置は、図166に示す処理を行う。三次元データ符号化装置は、階層構造を有する複数の三次元点を符号化する三次元データ符号化方法を実行する。三次元データ符号化装置は、第1三次元点の周囲の1以上の第2三次元点の第2位置情報を用いて、前記第1三次元点の第1位置情報の予測値を算出するための2以上の予測モードのうちの1つの予測モードを設定する(S9781)。次に、三次元データ符号化装置は、設定された前記予測モードの予測値を算出する(S9782)。次に、三次元データ符号化装置は、前記第1位置情報と、算出された前記予測値との差分である予測残差を算出する(S9783)。次に、三次元データ符号化装置は、前記設定された予測モードと前記予測残差とを含む第1ビットストリームを生成する(S9784)。前記設定(S9781)では、前記第1三次元点の前記階層構造の深さに基づいて、前記予測モードを設定する。
これによれば、2以上の予測モードのうちで、階層構造の深さに基づいて設定された1つの予測モードの予測値を用いて位置情報を符号化できるため、位置情報の符号化効率を向上させることができる。
例えば、三次元データ符号化装置は、前記設定(S9784)では、前記第1三次元点の前記階層構造の深さの値以下の、予測モード値を設定する。前記予測モード値は、前記予測モードを示す。
例えば、前記第1ビットストリームは、さらに、前記2以上の予測モードの数を示す予測モード数を含む。
例えば、三次元データ符号化装置は、前記生成(S9784)では、設定された前記予測モードを示す予測モード値を、前記予測モード数を用いて符号化する。前記第1ビットストリームは、符号化された前記予測モード値を、前記設定された予測モードとして含む。
例えば、前記生成(S9784)では、前記予測モード数を最大値としたtruncated unary codeで前記予測モード値を符号化する。このため、予測モード値の符号量を低減することができる。
例えば、前記第1位置情報、及び、前記第2位置情報のそれぞれは、3つの要素を含む。三次元データ符号化装置は、前記設定(S9781)では、前記第1位置情報が含む3つの要素の各要素の予測値を算出するための前記1つの予測モードとして、前記3つの要素について共通した予測モードを設定する。このため、予測モード値の符号量を低減することができる。
例えば、前記第1位置情報、及び、前記第2位置情報のそれぞれは、3つの要素を含む。三次元データ符号化装置は、前記設定では、前記第1位置情報が含む3つの要素の各要素の予測値を算出するための前記1つの予測モードとして、前記3つの要素それぞれについて独立した予測モードを設定する。このため、三次元データ復号装置は、各要素を独立して復号することができる。
例えば、前記第1位置情報、及び、前記第2位置情報のそれぞれは、3つの要素を含む。三次元データ符号化装置は、前記設定では、前記第1位置情報が含む3つの要素の各要素の予測値を算出するための前記1つの予測モードとして、前記3つの要素のうちの2つの要素について共通した予測モードを設定し、残りの1つの要素について前記2つの要素とは独立した予測モードを設定する。このため、2つの要素についての予測モード値の符号量を低減することができる。また、三次元データ復号装置は、残りの1つの要素を独立して復号することができる。
例えば、三次元データ符号化装置は、前記生成では、前記予測モード数が1である場合、前記予測モードを示す予測モード値を符号化せずに、前記予測モード値を含まない第2ビットストリームを生成する。このため、ビットストリームの符号量を低減することができる。
例えば、三次元データ符号化装置は、前記生成では、前記算出において算出される予測値が0となる予測モードが設定されている場合、前記予測残差が正であるか負であるかを示す正負情報を符号化せずに、前記正負情報を含まない第3ビットストリームを生成する。このため、ビットストリームの符号量を低減することができる。
例えば、三次元データ符号化装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態の一態様に係る三次元データ復号装置は、図167に示す処理を行う。三次元データ復号装置は、階層構造を有する複数の三次元点を復号する三次元データ復号方法を実行する。三次元データ復号装置は、符号化された前記複数の三次元点のうちの第1三次元点の予測モード、及び、符号化された予測残差を含む第1ビットストリームを取得する(S9791)。次に、三次元データ復号装置は、前記符号化された予測モードを示す予測モード値、及び、前記符号化された予測残差を復号する(S9792)。次に、三次元データ復号装置は、復号することで得られた前記予測モード値で示される予測モードの予測値を算出する(S9793)。次に、三次元データ復号装置は、前記予測値と、復号することで得られた予測残差とを加算することで、前記第1三次元点の第1位置情報を算出する(S9794)。前記第1ビットストリームに含まれる、符号化された前記予測モードは、前記第1三次元点の前記階層構造の深さに基づいて設定された予測モードである。
これによれば、2以上の予測モードのうちで、階層構造の深さに基づいて設定された1つの予測モードの予測値を用いて符号化された位置情報を適切に復号することができる。
例えば、前記第1ビットストリームに含まれる、符号化された予測モードを示す予測モード値は、前記第1三次元点の前記階層構造の深さの値以下である。
例えば、前記第1ビットストリームは、前記2以上の予測モードの数を示す予測モード数を含む。
例えば、三次元データ復号装置は、前記復号(S9792)では、前記予測モード数を最大値としたtruncated unary codeで前記符号化された予測モード値を復号する。
例えば、前記第1位置情報、及び、前記第1三次元点の周囲の1以上の第2三次元点の第2位置情報のそれぞれは、3つの要素を含む。前記予測モードは、前記第1位置情報が含む3つの要素の各要素の予測値を算出するために用いられ、前記3つの要素について共通して設定されている。
例えば、前記第1位置情報、及び、前記第1三次元点の周囲の1以上の第2三次元点の第2位置情報のそれぞれは、3つの要素を含む。前記予測モードは、前記第1位置情報が含む3つの要素の各要素の予測値を算出するために用いられ、前記3つの要素それぞれについて独立して設定されている。
例えば、前記第1位置情報、及び、前記第1三次元点の周囲の1以上の第2三次元点の第2位置情報のそれぞれは、3つの要素を含む。前記予測モードは、前記第1位置情報が含む3つの要素の各要素の予測値を算出するために用いられ、前記3つの要素のうちの2つの要素について共通して設定されており、かつ、残りの1つの要素について前記2つの要素とは独立して設定されている。
例えば、三次元データ復号装置は、前記取得(S9791)において、前記予測モード値を含まない第2ビットストリームを取得した場合、前記予測値の算出では、特定の予測モードの予測値を算出する。
例えば、三次元データ復号装置は、前記取得(S9791)において、前記予測残差が正であるか負であるかを示す正負情報を含まない第3ビットストリームを取得した場合、前記第1位置情報の算出(S9794)では、前記予測残差を0又は正の数として扱う。
例えば、三次元データ復号装置は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
(実施の形態10)
次に、本実施の形態に係る三次元データ作成装置810の構成を説明する。図168は、本実施の形態に係る三次元データ作成装置810の構成例を示すブロック図である。この三次元データ作成装置810は、例えば、車両に搭載される。三次元データ作成装置810は、外部の交通監視クラウド、前走車両又は後続車両と三次元データの送受信を行うとともに、三次元データを作成及び蓄積する。
三次元データ作成装置810は、データ受信部811と、通信部812と、受信制御部813と、フォーマット変換部814と、複数のセンサ815と、三次元データ作成部816と、三次元データ合成部817と、三次元データ蓄積部818と、通信部819と、送信制御部820と、フォーマット変換部821と、データ送信部822とを備える。
データ受信部811は、交通監視クラウド又は前走車両から三次元データ831を受信する。三次元データ831は、例えば、自車両のセンサ815で検知不能な領域を含む、ポイントクラウド、可視光映像、奥行き情報、センサ位置情報、又は速度情報などの情報を含む。
通信部812は、交通監視クラウド又は前走車両と通信し、データ送信要求などを交通監視クラウド又は前走車両に送信する。
受信制御部813は、通信部812を介して、対応フォーマット等の情報を通信先と交換し、通信先との通信を確立する。
フォーマット変換部814は、データ受信部811が受信した三次元データ831にフォーマット変換等を行うことで三次元データ832を生成する。また、フォーマット変換部814は、三次元データ831が圧縮又は符号化されている場合には、伸張又は復号処理を行う。
複数のセンサ815は、LiDAR、可視光カメラ又は赤外線カメラなどの、車両の外部の情報を取得するセンサ群であり、センサ情報833を生成する。例えば、センサ情報833は、センサ815がLiDARなどのレーザセンサである場合、ポイントクラウド(点群データ)等の三次元データである。なお、センサ815は複数でなくてもよい。
三次元データ作成部816は、センサ情報833から三次元データ834を生成する。三次元データ834は、例えば、ポイントクラウド、可視光映像、奥行き情報、センサ位置情報、又は速度情報などの情報を含む。
三次元データ合成部817は、自車両のセンサ情報833に基づいて作成された三次元データ834に、交通監視クラウド又は前走車両等が作成した三次元データ832を合成することで、自車両のセンサ815では検知できない前走車両の前方の空間も含む三次元データ835を構築する。
三次元データ蓄積部818は、生成された三次元データ835等を蓄積する。
通信部819は、交通監視クラウド又は後続車両と通信し、データ送信要求などを交通監視クラウド又は後続車両に送信する。
送信制御部820は、通信部819を介して、対応フォーマット等の情報を通信先と交換し、通信先と通信を確立する。また、送信制御部820は、三次元データ合成部817で生成された三次元データ832の三次元データ構築情報と、通信先からのデータ送信要求とに基づき、送信対象の三次元データの空間である送信領域を決定する。
具体的には、送信制御部820は、交通監視クラウド又は後続車両からのデータ送信要求に応じて、後続車両のセンサでは検知できない自車両の前方の空間を含む送信領域を決定する。また、送信制御部820は、三次元データ構築情報に基づいて送信可能な空間又は送信済み空間の更新有無等を判断することで送信領域を決定する。例えば、送信制御部820は、データ送信要求で指定された領域であり、かつ、対応する三次元データ835が存在する領域を送信領域に決定する。そして、送信制御部820は、通信先が対応するフォーマット、及び送信領域をフォーマット変換部821に通知する。
フォーマット変換部821は、三次元データ蓄積部818に蓄積されている三次元データ835のうち、送信領域の三次元データ836を、受信側が対応しているフォーマットへ変換することで三次元データ837を生成する。なお、フォーマット変換部821は、三次元データ837を圧縮又は符号化することでデータ量を削減してもよい。
データ送信部822は、三次元データ837を交通監視クラウド又は後続車両に送信する。この三次元データ837は、例えば、後続車両の死角になる領域を含む、自車両の前方のポイントクラウド、可視光映像、奥行き情報、又はセンサ位置情報などの情報を含む。
なお、ここでは、フォーマット変換部814及び821にてフォーマット変換等が行われる例を述べたが、フォーマット変換は行われなくてもよい。
このような構成により、三次元データ作成装置810は、自車両のセンサ815では検知できない領域の三次元データ831を外部から取得し、三次元データ831と自車両のセンサ815で検知したセンサ情報833に基づく三次元データ834とを合成することで三次元データ835を生成する。これにより、三次元データ作成装置810は、自車両のセンサ815で検知できない範囲の三次元データを生成できる。
また、三次元データ作成装置810は、交通監視クラウド又は後続車両からのデータ送信要求に応じて、後続車両のセンサでは検知できない自車両の前方の空間を含む三次元データを、交通監視クラウド又は後続車両等へ送信できる。
次に、三次元データ作成装置810における後続車両への三次元データの送信手順について説明する。図169は、三次元データ作成装置810による交通監視クラウド又は後続車両へ三次元データを送信する手順の一例を示すフローチャートである。
まず、三次元データ作成装置810は、自車両の前方道路上の空間を含む空間の三次元データ835を生成及び更新する(S801)。具体的には、三次元データ作成装置810は、自車両のセンサ情報833に基づいて作成した三次元データ834に、交通監視クラウド又は前走車両等が作成した三次元データ831を合成するなどして、自車両のセンサ815では検知できない前走車両の前方の空間も含む三次元データ835を構築する。
次に、三次元データ作成装置810は、送信済みの空間に含まれる三次元データ835が変化したかを判定する(S802)。
送信済みの空間に外部から車両又は人が進入するなどして、当該空間に含まれる三次元データ835に変化が生じた場合には(S802でYes)、三次元データ作成装置810は、変化が生じた空間の三次元データ835を含む三次元データを交通監視クラウド又は後続車両に送信する(S803)。
なお、三次元データ作成装置810は、変化が生じた空間の三次元データを、所定間隔で送信する三次元データの送信タイミングに合わせて送信してもよいが、変化を検知した後すぐに送信してもよい。つまり、三次元データ作成装置810は、変化が生じた空間の三次元データを、所定間隔で送信する三次元データよりも優先して送信してもよい。
また、三次元データ作成装置810は、変化が生じた空間の三次元データとして、変化が生じた空間の三次元データの全てを送信してもよいし、三次元データの差分(例えば出現又は消失した三次元点の情報、又は三次元点の変位情報など)のみを送信してもよい。
また、三次元データ作成装置810は、変化が生じた空間の三次元データに先行して、急制動警報など自車両の危険回避動作に関するメタデータを後続車両へ送信してもよい。これによれば、後続車両は前走車両の急制動などを早期に認知でき、より早期に減速などの危険回避動作を開始できる。
送信済みの空間に含まれる三次元データ835に変化が生じていない場合(S802でNo)、又は、ステップS803の後、三次元データ作成装置810は、自車両の前方距離Lにある所定の形状の空間に含まれる三次元データを、交通監視クラウド又は後続車両へ送信する(S804)。
また、例えば、ステップS801~S804の処理は、所定の時間間隔で繰り返し行われる。
また、三次元データ作成装置810は、現在の送信対象の空間の三次元データ835と、三次元地図とに差がない場合には、空間の三次元データ837を送信しなくてもよい。
本実施の形態では、クライアント装置は、サーバ又は他のクライアント装置にセンサで得られたセンサ情報を送信する。
まず、本実施の形態に係るシステムの構成を説明する。図170は、本実施の形態に係る三次元マップ及びセンサ情報の送受信システムの構成を示す図である。このシステムは、サーバ901と、クライアント装置902A及び902Bを含む。なお、クライアント装置902A及び902Bを特に区別しない場合には、クライアント装置902とも記す。
クライアント装置902は、例えば、車両等の移動体に搭載される車載機器である。サーバ901は、例えば、交通監視クラウド等であり、複数のクライアント装置902と通信可能である。
サーバ901は、クライアント装置902に、ポイントクラウドから構成される三次元マップを送信する。なお、三次元マップの構成はポイントクラウドに限定されず、メッシュ構造等、他の三次元データを表すものであってもよい。
クライアント装置902は、サーバ901に、クライアント装置902が取得したセンサ情報を送信する。センサ情報は、例えば、LiDAR取得情報、可視光画像、赤外画像、デプス画像、センサ位置情報及び速度情報のうち少なくとも一つを含む。
サーバ901とクライアント装置902との間で送受信されるデータは、データ削減のために圧縮されてもよいし、データの精度を維持するために非圧縮のままでも構わない。データを圧縮する場合、ポイントクラウドには例えば8分木構造に基づく三次元圧縮方式を用いることができる。また、可視光画像、赤外画像、及びデプス画像には二次元の画像圧縮方式を用いることできる。二次元の画像圧縮方式とは、例えば、MPEGで規格化されたMPEG-4 AVC又はHEVC等である。
また、サーバ901は、クライアント装置902からの三次元マップの送信要求に応じてサーバ901で管理する三次元マップをクライアント装置902に送信する。なお、サーバ901はクライアント装置902からの三次元マップの送信要求を待たずに三次元マップを送信してもよい。例えば、サーバ901は、予め定められた空間にいる1つ以上のクライアント装置902に三次元マップをブロードキャストしても構わない。また、サーバ901は、一度送信要求を受けたクライアント装置902に、一定時間毎にクライアント装置902の位置に適した三次元マップを送信してもよい。また、サーバ901は、サーバ901が管理する三次元マップが更新される度にクライアント装置902に三次元マップを送信してもよい。
クライアント装置902は、サーバ901に三次元マップの送信要求を出す。例えば、クライアント装置902が、走行時に自己位置推定を行いたい場合に、クライアント装置902は、三次元マップの送信要求をサーバ901に送信する。
なお、次のような場合に、クライアント装置902はサーバ901に三次元マップの送信要求を出してもよい。クライアント装置902の保持する三次元マップが古い場合に、クライアント装置902はサーバ901に三次元マップの送信要求を出してもよい。例えば、クライアント装置902が三次元マップを取得してから一定期間が経過した場合に、クライアント装置902はサーバ901に三次元マップの送信要求を出してもよい。
クライアント装置902が保持する三次元マップで示される空間から、クライアント装置902が外に出る一定時刻前に、クライアント装置902はサーバ901に三次元マップの送信要求を出してもよい。例えば、クライアント装置902が、クライアント装置902が保持する三次元マップで示される空間の境界から予め定められた距離以内に存在する場合に、クライアント装置902はサーバ901に三次元マップの送信要求を出してもよい。また、クライアント装置902の移動経路及び移動速度が把握できている場合には、これらに基づき、クライアント装置902が保持する三次元マップで示される空間から、クライアント装置902が外に出る時刻を予測してもよい。
クライアント装置902がセンサ情報から作成した三次元データと三次元マップとの位置合せ時の誤差が一定以上の場合に、クライアント装置902はサーバ901に三次元マップの送信要求を出してもよい。
クライアント装置902は、サーバ901から送信されたセンサ情報の送信要求に応じて、サーバ901にセンサ情報を送信する。なお、クライアント装置902はサーバ901からのセンサ情報の送信要求を待たずにセンサ情報をサーバ901に送ってもよい。例えば、クライアント装置902は、一度サーバ901からセンサ情報の送信要求を得た場合、一定期間の間、定期的にセンサ情報をサーバ901に送信してもよい。また、クライアント装置902は、クライアント装置902がセンサ情報を元に作成した三次元データと、サーバ901から得た三次元マップとの位置合せ時の誤差が一定以上の場合、クライアント装置902の周辺の三次元マップに変化が生じた可能性があると判断し、その旨とセンサ情報とをサーバ901に送信してもよい。
サーバ901は、クライアント装置902にセンサ情報の送信要求を出す。例えば、サーバ901は、クライアント装置902から、GPS等のクライアント装置902の位置情報を受信する。サーバ901は、クライアント装置902の位置情報に基づき、サーバ901が管理する三次元マップにおいて情報が少ない空間にクライアント装置902が近づいていると判断した場合、新たな三次元マップを生成するためにクライアント装置902にセンサ情報の送信要求を出す。また、サーバ901は、三次元マップを更新したい場合、積雪時或いは災害時などの道路状況を確認したい場合、渋滞状況、或いは事件事故状況等を確認したい場合に、センサ情報の送信要求を出してもよい。
また、クライアント装置902は、サーバ901から受け取るセンサ情報の送信要求の受信時における通信状態又は帯域に応じて、サーバ901に送信するセンサ情報のデータ量を設定してもよい。サーバ901に送信するセンサ情報のデータ量を設定するというのは、例えば、当該データそのものを増減させること、又は圧縮方式を適宜選択することである。
図171は、クライアント装置902の構成例を示すブロック図である。クライアント装置902は、サーバ901からポイントクラウド等で構成される三次元マップを受信し、クライアント装置902のセンサ情報に基づいて作成した三次元データからクライアント装置902の自己位置を推定する。また、クライアント装置902は、取得したセンサ情報をサーバ901に送信する。
クライアント装置902は、データ受信部1011と、通信部1012と、受信制御部1013と、フォーマット変換部1014と、複数のセンサ1015と、三次元データ作成部1016と、三次元画像処理部1017と、三次元データ蓄積部1018と、フォーマット変換部1019と、通信部1020と、送信制御部1021と、データ送信部1022とを備える。
データ受信部1011は、サーバ901から三次元マップ1031を受信する。三次元マップ1031は、WLD又はSWLD等のポイントクラウドを含むデータである。三次元マップ1031には、圧縮データ、及び非圧縮データのどちらが含まれていてもよい。
通信部1012は、サーバ901と通信し、データ送信要求(例えば、三次元マップの送信要求)などをサーバ901に送信する。
受信制御部1013は、通信部1012を介して、対応フォーマット等の情報を通信先と交換し、通信先との通信を確立する。
フォーマット変換部1014は、データ受信部1011が受信した三次元マップ1031にフォーマット変換等を行うことで三次元マップ1032を生成する。また、フォーマット変換部1014は、三次元マップ1031が圧縮又は符号化されている場合には、伸張又は復号処理を行う。なお、フォーマット変換部1014は、三次元マップ1031が非圧縮データであれば、伸張又は復号処理を行わない。
複数のセンサ1015は、LiDAR、可視光カメラ、赤外線カメラ、又はデプスセンサなど、クライアント装置902が搭載されている車両の外部の情報を取得するセンサ群であり、センサ情報1033を生成する。例えば、センサ情報1033は、センサ1015がLiDARなどのレーザセンサである場合、ポイントクラウド(点群データ)等の三次元データである。なお、センサ1015は複数でなくてもよい。
三次元データ作成部1016は、センサ情報1033に基づいて自車両の周辺の三次元データ1034を作成する。例えば、三次元データ作成部1016は、LiDARで取得した情報と、可視光カメラで得られた可視光映像とを用いて自車両の周辺の色情報付きのポイントクラウドデータを作成する。
三次元画像処理部1017は、受信したポイントクラウド等の三次元マップ1032と、センサ情報1033から生成した自車両の周辺の三次元データ1034とを用いて、自車両の自己位置推定処理等を行う。なお、三次元画像処理部1017は、三次元マップ1032と三次元データ1034とを合成することで自車両の周辺の三次元データ1035を作成し、作成した三次元データ1035を用いて自己位置推定処理を行ってもよい。
三次元データ蓄積部1018は、三次元マップ1032、三次元データ1034及び三次元データ1035等を蓄積する。
フォーマット変換部1019は、センサ情報1033を、受信側が対応しているフォーマットへ変換することでセンサ情報1037を生成する。なお、フォーマット変換部1019は、センサ情報1037を圧縮又は符号化することでデータ量を削減してもよい。また、フォーマット変換部1019は、フォーマット変換をする必要がない場合は処理を省略してもよい。また、フォーマット変換部1019は、送信範囲の指定に応じて送信するデータ量を制御してもよい。
通信部1020は、サーバ901と通信し、データ送信要求(センサ情報の送信要求)などをサーバ901から受信する。
送信制御部1021は、通信部1020を介して、対応フォーマット等の情報を通信先と交換し、通信を確立する。
データ送信部1022は、センサ情報1037をサーバ901に送信する。センサ情報1037は、例えば、LiDARで取得した情報、可視光カメラで取得した輝度画像、赤外線カメラで取得した赤外画像、デプスセンサで取得したデプス画像、センサ位置情報、及び速度情報など、複数のセンサ1015によって取得した情報を含む。
次に、サーバ901の構成を説明する。図172は、サーバ901の構成例を示すブロック図である。サーバ901は、クライアント装置902から送信されたセンサ情報を受信し、受信したセンサ情報に基づいて三次元データを作成する。サーバ901は、作成した三次元データを用いて、サーバ901が管理する三次元マップを更新する。また、サーバ901は、クライアント装置902からの三次元マップの送信要求に応じて、更新した三次元マップをクライアント装置902に送信する。
サーバ901は、データ受信部1111と、通信部1112と、受信制御部1113と、フォーマット変換部1114と、三次元データ作成部1116と、三次元データ合成部1117と、三次元データ蓄積部1118と、フォーマット変換部1119と、通信部1120と、送信制御部1121と、データ送信部1122とを備える。
データ受信部1111は、クライアント装置902からセンサ情報1037を受信する。センサ情報1037は、例えば、LiDARで取得した情報、可視光カメラで取得した輝度画像、赤外線カメラで取得した赤外画像、デプスセンサで取得したデプス画像、センサ位置情報、及び速度情報などを含む。
通信部1112は、クライアント装置902と通信し、データ送信要求(例えば、センサ情報の送信要求)などをクライアント装置902に送信する。
受信制御部1113は、通信部1112を介して、対応フォーマット等の情報を通信先と交換し、通信を確立する。
フォーマット変換部1114は、受信したセンサ情報1037が圧縮又は符号化されている場合には、伸張又は復号処理を行うことでセンサ情報1132を生成する。なお、フォーマット変換部1114は、センサ情報1037が非圧縮データであれば、伸張又は復号処理を行わない。
三次元データ作成部1116は、センサ情報1132に基づいてクライアント装置902の周辺の三次元データ1134を作成する。例えば、三次元データ作成部1116は、LiDARで取得した情報と、可視光カメラで得られた可視光映像とを用いてクライアント装置902の周辺の色情報付ポイントクラウドデータを作成する。
三次元データ合成部1117は、センサ情報1132を元に作成した三次元データ1134を、サーバ901が管理する三次元マップ1135に合成することで三次元マップ1135を更新する。
三次元データ蓄積部1118は、三次元マップ1135等を蓄積する。
フォーマット変換部1119は、三次元マップ1135を、受信側が対応しているフォーマットへ変換することで三次元マップ1031を生成する。なお、フォーマット変換部1119は、三次元マップ1135を圧縮又は符号化することでデータ量を削減してもよい。また、フォーマット変換部1119は、フォーマット変換をする必要がない場合は処理を省略してもよい。また、フォーマット変換部1119は、送信範囲の指定に応じて送信するデータ量を制御してもよい。
通信部1120は、クライアント装置902と通信し、データ送信要求(三次元マップの送信要求)などをクライアント装置902から受信する。
送信制御部1121は、通信部1120を介して、対応フォーマット等の情報を通信先と交換し、通信を確立する。
データ送信部1122は、三次元マップ1031をクライアント装置902に送信する。三次元マップ1031は、WLD又はSWLD等のポイントクラウドを含むデータである。三次元マップ1031には、圧縮データ、及び非圧縮データのどちらが含まれていてもよい。
次に、クライアント装置902の動作フローについて説明する。図173は、クライアント装置902による三次元マップ取得時の動作を示すフローチャートである。
まず、クライアント装置902は、サーバ901へ三次元マップ(ポイントクラウド等)の送信を要求する(S1001)。このとき、クライアント装置902は、GPS等で得られたクライアント装置902の位置情報を合わせて送信することで、その位置情報に関連する三次元マップの送信をサーバ901に要求してもよい。
次に、クライアント装置902は、サーバ901から三次元マップを受信する(S1002)。受信した三次元マップが圧縮データであれば、クライアント装置902は、受信した三次元マップを復号して非圧縮の三次元マップを生成する(S1003)。
次に、クライアント装置902は、複数のセンサ1015で得られたセンサ情報1033からクライアント装置902の周辺の三次元データ1034を作成する(S1004)。次に、クライアント装置902は、サーバ901から受信した三次元マップ1032と、センサ情報1033から作成した三次元データ1034とを用いてクライアント装置902の自己位置を推定する(S1005)。
図174は、クライアント装置902によるセンサ情報の送信時の動作を示すフローチャートである。まず、クライアント装置902は、サーバ901からセンサ情報の送信要求を受信する(S1011)。送信要求を受信したクライアント装置902は、センサ情報1037をサーバ901に送信する(S1012)。なお、クライアント装置902は、センサ情報1033が複数のセンサ1015で得られた複数の情報を含む場合、各情報を、各情報に適した圧縮方式で圧縮することでセンサ情報1037を生成してもよい。
次に、サーバ901の動作フローについて説明する。図175は、サーバ901によるセンサ情報の取得時の動作を示すフローチャートである。まず、サーバ901は、クライアント装置902へセンサ情報の送信を要求する(S1021)。次に、サーバ901は、当該要求に応じてクライアント装置902から送信されたセンサ情報1037を受信する(S1022)。次に、サーバ901は、受信したセンサ情報1037を用いて三次元データ1134を作成する(S1023)。次に、サーバ901は、作成した三次元データ1134を三次元マップ1135に反映する(S1024)。
図176は、サーバ901による三次元マップの送信時の動作を示すフローチャートである。まず、サーバ901は、クライアント装置902から三次元マップの送信要求を受信する(S1031)。三次元マップの送信要求を受信したサーバ901は、クライアント装置902へ三次元マップ1031を送信する(S1032)。このとき、サーバ901は、クライアント装置902の位置情報に合わせてその付近の三次元マップを抽出し、抽出した三次元マップを送信してもよい。また、サーバ901は、ポイントクラウドで構成される三次元マップを、例えば8分木構造による圧縮方式等を用いて圧縮し、圧縮後の三次元マップを送信してもよい。
以下、本実施の形態の変形例について説明する。
サーバ901は、クライアント装置902から受信したセンサ情報1037を用いてクライアント装置902の位置付近の三次元データ1134を作成する。次に、サーバ901は、作成した三次元データ1134と、サーバ901が管理する同エリアの三次元マップ1135とのマッチングを行うことによって、三次元データ1134と三次元マップ1135との差分を算出する。サーバ901は、差分が予め定められた閾値以上の場合は、クライアント装置902の周辺で何らかの異常が発生したと判断する。例えば、地震等の自然災害によって地盤沈下等が発生した際などに、サーバ901が管理する三次元マップ1135と、センサ情報1037を基に作成した三次元データ1134との間に大きな差が発生することが考えられる。
センサ情報1037は、センサの種類、センサの性能、及びセンサの型番のうち少なくとも一つを示す情報を含んでもよい。また、センサ情報1037に、センサの性能に応じたクラスID等が付加されてもよい。例えば、センサ情報1037がLiDARで取得された情報である場合、数mm単位の精度で情報を取得できるセンサをクラス1、数cm単位の精度で情報を取得できるセンサをクラス2、数m単位の精度で情報を取得できるセンサをクラス3のように、センサの性能に識別子を割り当てることが考えられる。また、サーバ901は、センサの性能情報等を、クライアント装置902の型番から推定してもよい。例えば、クライアント装置902が車両に搭載されている場合、サーバ901は、当該車両の車種からセンサのスペック情報を判断してもよい。この場合、サーバ901は、車両の車種の情報を事前に取得していてもよいし、センサ情報に、当該情報が含まれてもよい。また、サーバ901は取得したセンサ情報1037を用いて、センサ情報1037を用いて作成した三次元データ1134に対する補正の度合いを切り替えてもよい。例えば、センサ性能が高精度(クラス1)である場合、サーバ901は、三次元データ1134に対する補正を行わない。センサ性能が低精度(クラス3)である場合、サーバ901は、三次元データ1134に、センサの精度に応じた補正を適用する。例えば、サーバ901は、センサの精度が低いほど補正の度合い(強度)を強くする。
サーバ901は、ある空間にいる複数のクライアント装置902に同時にセンサ情報の送信要求を出してもよい。サーバ901は、複数のクライアント装置902から複数のセンサ情報を受信した場合に、全てのセンサ情報を三次元データ1134の作成に利用する必要はなく、例えば、センサの性能に応じて、利用するセンサ情報を選択してもよい。例えば、サーバ901は、三次元マップ1135を更新する場合、受信した複数のセンサ情報の中から高精度なセンサ情報(クラス1)を選別し、選別したセンサ情報を用いて三次元データ1134を作成してもよい。
サーバ901は、交通監視クラウド等のサーバのみに限定されず、他のクライアント装置(車載)であってもよい。図177は、この場合のシステム構成を示す図である。
例えば、クライアント装置902Cが近くにいるクライアント装置902Aにセンサ情報の送信要求を出し、クライアント装置902Aからセンサ情報を取得する。そして、クライアント装置902Cは、取得したクライアント装置902Aのセンサ情報を用いて三次元データを作成し、クライアント装置902Cの三次元マップを更新する。これにより、クライアント装置902Cは、クライアント装置902Aから取得可能な空間の三次元マップを、クライアント装置902Cの性能を活かして生成できる。例えば、クライアント装置902Cの性能が高い場合に、このようなケースが発生すると考えられる。
また、この場合、センサ情報を提供したクライアント装置902Aは、クライアント装置902Cが生成した高精度な三次元マップを取得する権利が与えられる。クライアント装置902Aは、その権利に従ってクライアント装置902Cから高精度な三次元マップを受信する。
また、クライアント装置902Cは近くにいる複数のクライアント装置902(クライアント装置902A及びクライアント装置902B)にセンサ情報の送信要求を出してもよい。クライアント装置902A又はクライアント装置902Bのセンサが高性能である場合には、クライアント装置902Cは、この高性能なセンサで得られたセンサ情報を用いて三次元データを作成できる。
図178は、サーバ901及びクライアント装置902の機能構成を示すブロック図である。サーバ901は、例えば、三次元マップを圧縮及び復号する三次元マップ圧縮/復号処理部1201と、センサ情報を圧縮及び復号するセンサ情報圧縮/復号処理部1202とを備える。
クライアント装置902は、三次元マップ復号処理部1211と、センサ情報圧縮処理部1212とを備える。三次元マップ復号処理部1211は、圧縮された三次元マップの符号化データを受信し、符号化データを復号して三次元マップを取得する。センサ情報圧縮処理部1212は、取得したセンサ情報から作成した三次元データの代わりに、センサ情報そのものを圧縮し、圧縮したセンサ情報の符号化データをサーバ901へ送信する。この構成により、クライアント装置902は、三次元マップ(ポイントクラウド等)を復号する処理を行う処理部(装置又はLSI)を内部に保持すればよく、三次元マップ(ポイントクラウド等)の三次元データを圧縮する処理を行う処理部を内部に保持する必要がない。これにより、クライアント装置902のコスト及び消費電力等を抑えることができる。
以上のように、本実施の形態に係るクライアント装置902は、移動体に搭載され、移動体に搭載されたセンサ1015により得られた、移動体の周辺状況を示すセンサ情報1033から、移動体の周辺の三次元データ1034を作成する。クライアント装置902は、作成された三次元データ1034を用いて移動体の自己位置を推定する。クライアント装置902は、取得したセンサ情報1033をサーバ901又は他のクライアント装置902に送信する。
これによれば、クライアント装置902は、センサ情報1033をサーバ901等に送信する。これにより、三次元データを送信する場合に比べて、送信データのデータ量を削減できる可能性がある。また、三次元データの圧縮又は符号化等の処理をクライアント装置902で行う必要がないので、クライアント装置902の処理量を削減できる。よって、クライアント装置902は、伝送されるデータ量の削減、又は、装置の構成の簡略化を実現できる。
また、クライアント装置902は、さらに、サーバ901に三次元マップの送信要求を送信し、サーバ901から三次元マップ1031を受信する。クライアント装置902は、自己位置の推定では、三次元データ1034と三次元マップ1032とを用いて、自己位置を推定する。
また、センサ情報1033は、レーザセンサで得られた情報、輝度画像、赤外画像、デプス画像、センサの位置情報、及びセンサの速度情報のうち少なくとも一つを含む。
また、センサ情報1033は、センサの性能を示す情報を含む。
また、クライアント装置902は、センサ情報1033を符号化又は圧縮し、センサ情報の送信では、符号化又は圧縮後のセンサ情報1037を、サーバ901又は他のクライアント装置902に送信する。これによれば、クライアント装置902は、伝送されるデータ量を削減できる。
例えば、クライアント装置902は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
また、本実施の形態に係るサーバ901は、移動体に搭載されるクライアント装置902と通信可能であり、移動体に搭載されたセンサ1015により得られた、移動体の周辺状況を示すセンサ情報1037をクライアント装置902から受信する。サーバ901は、受信したセンサ情報1037から、移動体の周辺の三次元データ1134を作成する。
これによれば、サーバ901は、クライアント装置902から送信されたセンサ情報1037を用いて三次元データ1134を作成する。これにより、クライアント装置902が三次元データを送信する場合に比べて、送信データのデータ量を削減できる可能性がある。また、三次元データの圧縮又は符号化等の処理をクライアント装置902で行う必要がないので、クライアント装置902の処理量を削減できる。よって、サーバ901は、伝送されるデータ量の削減、又は、装置の構成の簡略化を実現できる。
また、サーバ901は、さらに、クライアント装置902にセンサ情報の送信要求を送信する。
また、サーバ901は、さらに、作成された三次元データ1134を用いて三次元マップ1135を更新し、クライアント装置902からの三次元マップ1135の送信要求に応じて三次元マップ1135をクライアント装置902に送信する。
また、センサ情報1037は、レーザセンサで得られた情報、輝度画像、赤外画像、デプス画像、センサの位置情報、及びセンサの速度情報のうち少なくとも一つを含む。
また、センサ情報1037は、センサの性能を示す情報を含む。
また、サーバ901は、さらに、センサの性能に応じて、三次元データを補正する。これによれば、当該三次元データ作成方法は、三次元データの品質を向上できる。
また、サーバ901は、センサ情報の受信では、複数のクライアント装置902から複数のセンサ情報1037を受信し、複数のセンサ情報1037に含まれるセンサの性能を示す複数の情報に基づき、三次元データ1134の作成に用いるセンサ情報1037を選択する。これによれば、サーバ901は、三次元データ1134の品質を向上できる。
また、サーバ901は、受信したセンサ情報1037を復号又は伸張し、復号又は伸張後のセンサ情報1132から、三次元データ1134を作成する。これによれば、サーバ901は、伝送されるデータ量を削減できる。
例えば、サーバ901は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行う。
以下、変形例について説明する。図179は、本実施の形態に係るシステムの構成を示す図である。図179に示すシステムは、サーバ2001と、クライアント装置2002Aと、クライアント装置2002Bとを含む。
クライアント装置2002A及びクライアント装置2002Bは、車両等の移動体に搭載され、センサ情報をサーバ2001に送信する。サーバ2001は、三次元マップ(ポイントクラウド)をクライアント装置2002A及びクライアント装置2002Bに送信する。
クライアント装置2002Aは、センサ情報取得部2011と、記憶部2012と、データ送信可否判定部2013とを備える。なお、クライアント装置2002Bの構成も同様である。また、以下ではクライアント装置2002Aとクライアント装置2002Bとを特に区別しない場合には、クライアント装置2002とも記載する。
図180は、本実施の形態に係るクライアント装置2002の動作を示すフローチャートである。
センサ情報取得部2011は、移動体に搭載されたセンサ(センサ群)を用いて各種センサ情報を取得する。つまり、センサ情報取得部2011は、移動体に搭載されたセンサ(センサ群)により得られた、移動体の周辺状況を示すセンサ情報を取得する。また、センサ情報取得部2011は、取得したセンサ情報を記憶部2012に記憶する。このセンサ情報は、LiDAR取得情報、可視光画像、赤外画像及びデプス画像の少なくとも一つを含む。また、センサ情報は、センサ位置情報、速度情報、取得時刻情報、及び取得場所情報の少なくとも一つを含んでもよい。センサ位置情報は、センサ情報を取得したセンサの位置を示す。速度情報は、センサがセンサ情報を取得した際の移動体の速度を示す。取得時刻情報は、センサ情報がセンサにより取得された時刻を示す。取得場所情報は、センサ情報がセンサにより取得された際の移動体又はセンサの位置を示す。
次に、データ送信可否判定部2013は、移動体(クライアント装置2002)がサーバ2001へセンサ情報を送信可能な環境に存在するかを判定する(S2002)。例えば、データ送信可否判定部2013は、GPS等の情報を用いて、クライアント装置2002がいる場所及び時刻を特定し、データを送信可能かどうかを判定してもよい。また、データ送信可否判定部2013は、特定のアクセスポイントに接続できるかどうかで、データを送信可能かどうかを判定してもよい。
クライアント装置2002は、移動体がサーバ2001へセンサ情報を送信可能な環境に存在すると判定した場合(S2002でYes)、センサ情報をサーバ2001に送信する(S2003)。つまり、クライアント装置2002がセンサ情報をサーバ2001に送信できるような状況になった時点で、クライアント装置2002は、保持しているセンサ情報をサーバ2001に送信する。例えば、交差点等に高速通信が可能なミリ波のアクセスポイントが設置される。クライアント装置2002は、交差点内に入った時点で、ミリ波通信を用いてクライアント装置2002が保持するセンサ情報を高速にサーバ2001に送信する。
次に、クライアント装置2002は、サーバ2001に送信済みのセンサ情報を記憶部2012から削除する(S2004)。なお、クライアント装置2002は、サーバ2001に送信していないセンサ情報が所定の条件を満たした場合に、当該センサ情報を削除してもよい。例えば、クライアント装置2002は、保持するセンサ情報の取得時刻が現在時刻から一定時刻前より古くなった時点でそのセンサ情報を記憶部2012から削除してもよい。つまり、クライアント装置2002は、センサ情報がセンサにより取得された時刻と、現在の時刻との差が、予め定められた時間を超えた場合にセンサ情報を記憶部2012から削除してもよい。また、クライアント装置2002は、保持するセンサ情報の取得場所が現在地点から一定距離より離れた時点でそのセンサ情報を記憶部2012から削除してもよい。つまり、クライアント装置2002は、センサ情報がセンサにより取得された際の移動体又はセンサの位置と、現在の移動体又はセンサの位置との差が、予め定められた距離を超えた場合にセンサ情報を記憶部2012から削除してもよい。これにより、クライアント装置2002の記憶部2012の容量を抑制することができる。
クライアント装置2002によるセンサ情報の取得が終了していない場合(S2005でNo)、クライアント装置2002は、ステップS2001以降の処理を再度行う。また、クライアント装置2002によるセンサ情報の取得が終了した場合(S2005でYes)、クライアント装置2002は処理を終了する。
また、クライアント装置2002はサーバ2001に送信するセンサ情報を通信状況に合わせて選択してもよい。例えば、クライアント装置2002は、高速通信が可能な場合は、記憶部2012に保持されるサイズが大きいセンサ情報(例えばLiDAR取得情報等)を優先して送信する。また、クライアント装置2002は、高速通信が難しい場合は、記憶部2012に保持されるサイズが小さく優先度の高いセンサ情報(例えば可視光画像)を送信する。これにより、クライアント装置2002は記憶部2012に保持したセンサ情報をネットワークの状況に応じて効率的にサーバ2001に送信できる。
また、クライアント装置2002は、上記現在時刻を示す時刻情報、及び、現在地点を示す場所情報をサーバ2001から取得してもよい。また、クライアント装置2002は、取得した時刻情報及び場所情報に基づきセンサ情報の取得時刻及び取得場所を決定してもよい。つまり、クライアント装置2002は、サーバ2001から時刻情報を取得し、取得した時刻情報を用いて取得時刻情報を生成してもよい。また、クライアント装置2002は、サーバ2001から場所情報を取得し、取得した場所情報を用いて取得場所情報を生成してもよい。
例えば時刻情報については、サーバ2001とクライアント装置2002とはNTP(Network Time Protocol)、又はPTP(Precision Time Protocol)等の仕組みを用いて時刻同期を行う。これにより、クライアント装置2002は正確な時刻情報を取得できる。また、サーバ2001と複数のクライアント装置との間で時刻を同期できるので、別々のクライアント装置2002が取得したセンサ情報内の時刻を同期できる。よって、サーバ2001は、同期された時刻を示すセンサ情報を取り扱える。なお、時刻同期の仕組みはNTP又はPTP以外のどのような方法でも構わない。また、上記時刻情報及び場所情報としてGPSの情報が用いられてもよい。
サーバ2001は、時刻又は場所を指定して複数のクライアント装置2002からセンサ情報を取得しても構わない。例えば何らかの事故が発生した場合に、その付近にいたクライアントを探すため、サーバ2001は、事故発生時刻と場所を指定して複数のクライアント装置2002にセンサ情報送信要求をブロードキャスト送信する。そして、該当する時刻と場所のセンサ情報を持つクライアント装置2002は、サーバ2001にセンサ情報を送信する。つまり、クライアント装置2002は、サーバ2001から場所及び時刻を指定する指定情報を含むセンサ情報送信要求を受信する。クライアント装置2002は、記憶部2012に、指定情報で示される場所及び時刻において得られたセンサ情報が記憶されており、かつ、移動体がサーバ2001へセンサ情報を送信可能な環境に存在すると判定した場合、指定情報で示される場所及び時刻において得られたセンサ情報をサーバ2001に送信する。これにより、サーバ2001は、事故の発生に関連するセンサ情報を複数のクライアント装置2002から取得し、事故解析等に利用できる。
なお、クライアント装置2002は、サーバ2001からのセンサ情報送信要求を受信した場合に、センサ情報の送信を拒否してもよい。また、複数のセンサ情報のうち、どのセンサ情報を送信可能かどうかを事前にクライアント装置2002が設定してもよい。または、サーバ2001は、センサ情報の送信の可否を都度クライアント装置2002に問い合わせてもよい。
また、サーバ2001にセンサ情報を送信したクライアント装置2002にはポイントが付与されてもよい。このポイントは、例えば、ガソリン購入費、EV(Electric Vehicle)の充電費、高速道路の通行料、又はレンタカー費用などの支払いに使用できる。また、サーバ2001は、センサ情報を取得した後、センサ情報の送信元のクライアント装置2002を特定するための情報を削除してもよい。例えば、この情報は、クライアント装置2002のネットワークアドレスなどの情報である。これによりセンサ情報を匿名化することができるので、クライアント装置2002のユーザは安心して、クライアント装置2002からセンサ情報をサーバ2001に送信できる。また、サーバ2001は、複数のサーバから構成されてもよい。例えば複数のサーバでセンサ情報が共有化されることで、あるサーバが故障しても他のサーバがクライアント装置2002と通信できる。これにより、サーバ故障によるサービスの停止を回避できる。
また、センサ情報送信要求で指定される指定場所は事故の発生位置などを示すものであり、センサ情報送信要求で指定される指定時刻におけるクライアント装置2002の位置とは異なることがある。よって、サーバ2001は、例えば、指定場所として周辺XXm以内などの範囲を指定することで、当該範囲内に存在するクライアント装置2002に対して情報取得を要求できる。指定時刻についても同様に、サーバ2001は、ある時刻から前後N秒以内など範囲を指定してもよい。これにより、サーバ2001は、「時刻:t-Nからt+Nにおいて、場所:絶対位置SからXXm以内」に存在していたクライアント装置2002からセンサ情報が取得できる。クライアント装置2002は、LiDARなどの三次元データを送信する際に、時刻tの直後に生成したデータを送信してもよい。
また、サーバ2001は、指定場所として、センサ情報取得対象となるクライアント装置2002の場所を示す情報と、センサ情報が欲しい場所とをそれぞれ別に指定してもよい。例えば、サーバ2001は、絶対位置SからYYmの範囲を少なくとも含むセンサ情報を、絶対位置SからXXm以内に存在したクライアント装置2002から取得することを指定する。クライアント装置2002は、送信する三次元データを選択する際には、指定された範囲のセンサ情報を少なくとも含むように、1つ以上のランダムアクセス可能な単位の三次元データを選択する。また、クライアント装置2002は、可視光画像を送信する際は、少なくとも時刻tの直前又は直後のフレームを含む、時間的に連続した複数の画像データを送信してもよい。
クライアント装置2002が5G或いはWiFi、又は、5Gにおける複数モードなど、複数の物理ネットワークをセンサ情報の送信に利用できる場合には、クライアント装置2002は、サーバ2001から通知された優先順位に従って利用するネットワークを選択してもよい。または、クライアント装置2002自身が送信データのサイズに基づいて適切な帯域を確保できるネットワークを選択してもよい。または、クライアント装置2002は、データ送信にかかる費用等に基づいて利用するネットワークを選択してもよい。また、サーバ2001からの送信要求には、クライアント装置2002が時刻Tまでに送信を開始可能な場合に送信を行う、など、送信期限を示す情報が含まれてもよい。サーバ2001は、期限内に十分なセンサ情報が取得できなければ再度送信要求を発行してもよい。
センサ情報は、圧縮又は非圧縮のセンサデータと共に、センサデータの特性を示すヘッダ情報を含んでもよい。クライアント装置2002は、ヘッダ情報を、センサデータとは異なる物理ネットワーク又は通信プロトコルを介してサーバ2001に送信してもよい。例えば、クライアント装置2002は、センサデータの送信に先立ってヘッダ情報をサーバ2001に送信する。サーバ2001は、ヘッダ情報の解析結果に基づいてクライアント装置2002のセンサデータを取得するかどうかを判断する。例えば、ヘッダ情報は、LiDARの点群取得密度、仰角、或いはフレームレート、又は、可視光画像の解像度、SN比、或いはフレームレートなどを示す情報を含んでもよい。これにより、サーバ2001は、決定した品質のセンサデータを有するクライアント装置2002からセンサ情報を取得できる。
以上のように、クライアント装置2002は、移動体に搭載され、移動体に搭載されたセンサにより得られた、移動体の周辺状況を示すセンサ情報を取得し、センサ情報を記憶部2012に記憶する。クライアント装置2002は、移動体がサーバ2001へセンサ情報を送信可能な環境に存在するかを判定し、移動体がサーバへセンサ情報を送信可能な環境に存在すると判定した場合、センサ情報をサーバ2001に送信する。
また、クライアント装置2002は、さらに、センサ情報から、移動体の周辺の三次元データを作成し、作成された三次元データを用いて移動体の自己位置を推定する。
また、クライアント装置2002は、さらに、サーバ2001に三次元マップの送信要求を送信し、サーバ2001から三次元マップを受信する。クライアント装置2002は、自己位置の推定では、三次元データと三次元マップとを用いて、自己位置を推定する。
なお、上記クライアント装置2002による処理は、クライアント装置2002における情報送信方法として実現されてもよい。
また、クライアント装置2002は、プロセッサと、メモリとを備え、プロセッサは、メモリを用いて、上記の処理を行ってもよい。
次に、本実施の形態に係るセンサ情報収集システムについて説明する。図181は、本実施の形態に係るセンサ情報収集システムの構成を示す図である。図181に示すように本実施の形態に係るセンサ情報収集システムは、端末2021Aと、端末2021Bと、通信装置2022Aと、通信装置2022Bと、ネットワーク2023と、データ収集サーバ2024と、地図サーバ2025と、クライアント装置2026とを含む。なお、端末2021A及び端末2021Bを特に区別しない場合には端末2021とも記載する。通信装置2022A及び通信装置2022Bを特に区別しない場合には通信装置2022とも記載する。
データ収集サーバ2024は、端末2021が備えるセンサで得られたセンサデータなどのデータを三次元空間中の位置と対応付けられた位置関連データとして収集する。
センサデータとは、例えば、端末2021の周囲の状態または端末2021の内部の状態などを、端末2021が備えるセンサを用いて取得したデータである。端末2021は、端末2021と直接通信可能、又は同一の通信方式で一或いは複数の中継装置を中継して通信可能な位置にある一又は複数のセンサ機器から収集したセンサデータをデータ収集サーバ2024に送信する。
位置関連データに含まれるデータは、例えば、端末自身又は端末が備える機器の動作状態、動作ログ、サービスの利用状況などを示す情報を含んでいてもよい。また、位置関連データに含まれるデータは、端末2021の識別子と端末2021の位置又は移動経路などとを対応付けた情報などを含んでもよい。
位置関連データに含まれる、位置を示す情報は、例えば三次元地図データなどの三次元データにおける位置を示す情報と対応付けられている。位置を示す情報の詳細については後述する。
位置関連データは、位置を示す情報である位置情報に加えて、前述した時刻情報と、位置関連データに含まれるデータの属性、又は当該データを生成したセンサの種類(例えば型番など)を示す情報とのうち少なくとも一つを含んでいてもよい。位置情報及び時刻情報は、位置関連データのヘッダ領域又は位置関連データを格納するフレームのヘッダ領域に格納されていてもよい。また、位置情報及び時刻情報は、位置関連データと対応付けられたメタデータとして位置関連データとは別に送信及び/又は格納されてもよい。
地図サーバ2025は、例えば、ネットワーク2023に接続されており、端末2021などの他の装置からの要求に応じて三次元地図データなどの三次元データを送信する。また、前述した各実施の形態で説明したように、地図サーバ2025は、端末2021から送信されたセンサ情報を用いて、三次元データを更新する機能などを備えていてもよい。
データ収集サーバ2024は、例えば、ネットワーク2023に接続されており、端末2021などの他の装置から位置関連データを収集し、収集した位置関連データを内部又は他のサーバ内の記憶装置に格納する。また、データ収集サーバ2024は、収集した位置関連データ又は位置関連データに基づいて生成した三次元地図データのメタデータなどを、端末2021からの要求に応じて端末2021に対して送信する。
ネットワーク2023は、例えばインターネットなどの通信ネットワークである。端末2021は、通信装置2022を介してネットワーク2023に接続されている。通信装置2022は、一つの通信方式、又は複数の通信方式を切り替えながら端末2021と通信を行う。通信装置2022は、例えば、(1)LTE(Long Term Evolution)などの基地局、(2)WiFi或いはミリ波通信などのアクセスポイント(AP)、(3)SIGFOX、LoRaWAN或いはWi-SUNなどのLPWA(Low Power Wide Area) Networkのゲートウェイ、又は、(4)DVB-S2などの衛星通信方式を用いて通信を行う通信衛星である。
なお、基地局は、NB-IoT(Narrow Band-IoT)又はLTE-MなどのLPWAに分類される方式で端末2021との通信を行っていてもよいし、これらの方式を切り替えながら端末2021との通信を行っていてもよい。
ここでは、端末2021が2種類の通信方式を用いる通信装置2022と通信する機能を備え、これらの通信方式のいずれかを用いて、またはこれらの複数の通信方式及び直接の通信相手となる通信装置2022を切り替えながら地図サーバ2025又はデータ収集サーバ2024と通信を行う場合を例に挙げるが、センサ情報収集システム及び端末2021の構成はこれに限らない。例えば、端末2021は、複数の通信方式での通信機能を有さず、いずれか一つの通信方式で通信を行う機能を備えてもよい。また、端末2021は、3つ以上の通信方式に対応していてもよい。また、端末2021ごとに対応する通信方式が異なっていてもよい。
端末2021は、例えば図171に示したクライアント装置902の構成を備える。端末2021は、受信した三次元データを用いて自己位置などの位置推定を行う。また、端末2021は、センサから取得したセンサデータと位置推定の処理により得られた位置情報とを対応付けて位置関連データを生成する。
位置関連データに付加される位置情報は、例えば、三次元データで用いられている座標系における位置を示す。例えば、位置情報は、緯度及び経度の値で表される座標値である。このとき、端末2021は、座標値と共に当該座標値の基準となる座標系、及び位置推定に用いた三次元データを示す情報を位置情報に含めてもよい。また、座標値は高度の情報を含んでいてもよい。
また、位置情報は、前述した三次元データの符号化に用いることができるデータの単位又は空間の単位に対応付けられていてもよい。この単位とは、例えば、WLD、GOS、SPC、VLM、又はVXLなどである。このとき、位置情報は、例えば位置関連データに対応するSPCなどのデータ単位を特定するための識別子で表現される。なお、位置情報は、SPCなどのデータ単位を特定するための識別子に加えて、当該SPCなどのデータ単位を含む三次元空間を符号化した三次元データを示す情報、又は当該SPC内での詳細な位置を示す情報などを含んでいてもよい。三次元データを示す情報とは、例えば、当該三次元データのファイル名である。
このように、当該システムは、三次元データを用いた位置推定に基づく位置情報と対応付けた位置関連データを生成することにより、GPSを用いて取得されたクライアント装置(端末2021)の自己位置に基づく位置情報をセンサ情報に付加する場合よりも精度の高い位置情報をセンサ情報に付与することができる。その結果、位置関連データを他の装置が他のサービスにおいて利用する場合においても、同じ三次元データに基づいて位置推定を行うことで、位置関連データに対応する位置を実空間でより正確に特定できる可能性がある。
なお、本実施の形態では、端末2021から送信されるデータが位置関連データの場合を例に挙げて説明したが、端末2021から送信されるデータは位置情報と関連付けられていないデータであってもよい。すなわち、他の実施の形態で説明した三次元データ又はセンサデータの送受信が本実施の形態で説明したネットワーク2023を介して行われてもよい。
次に、三次元又は二次元の実空間又は地図空間における位置を示す位置情報の異なる例について説明する。位置関連データに付加される位置情報は、三次元データ中の特徴点に対する相対位置を示す情報であってもよい。ここで、位置情報の基準となる特徴点は、例えばSWLDとして符号化され、三次元データとして端末2021に通知された特徴点である。
特徴点に対する相対位置を示す情報は、例えば、特徴点から位置情報が示す点までのベクトルで表され、特徴点から位置情報が示す点までの方向と距離を示す情報であってもよい。または、特徴点に対する相対位置を示す情報は、特徴点から位置情報が示す点までのX軸、Y軸、Z軸のそれぞれの変位量を示す情報であってもよい。また、特徴点に対する相対位置を示す情報は、3以上の特徴点のそれぞれから位置情報が示す点までの距離を示す情報であってもよい。なお、相対位置は、各特徴点を基準として表現された位置情報が示す点の相対位置ではなく、位置情報が示す点を基準として表現された各特徴点の相対位置であってもよい。特徴点に対する相対位置に基づく位置情報の一例は、基準となる特徴点を特定するための情報と、当該特徴点に対する位置情報が示す点の相対位置を示す情報とを含む。また、特徴点に対する相対位置を示す情報が三次元データとは別に提供される場合、特徴点に対する相対位置を示す情報は、相対位置の導出に用いた座標軸、三次元データの種類を示す情報、又は/及び相対位置を示す情報の値の単位量あたりの大きさ(縮尺など)を示す情報などを含んでいてもよい。
また、位置情報は、複数の特徴点について、各特徴点に対する相対位置を示す情報を含んでいてもよい。位置情報を複数の特徴点に対する相対位置で表した場合、実空間において当該位置情報が示す位置を特定しようとする端末2021は、特徴点ごとにセンサデータから推定した当該特徴点の位置から位置情報が示す位置の候補点を算出し、算出された複数の候補点を平均して求めた点を位置情報が示す点であると判定してもよい。この構成によると、センサデータから特徴点の位置を推定する際の誤差の影響を軽減できるため、実空間における位置情報が示す点の推定精度を向上できる。また、位置情報が複数の特徴点に対する相対位置を示す情報を含む場合、端末2021が備えるセンサの種類又は性能などの制約で検出できない特徴点がある場合であっても、複数の特徴点のいずれか一つでも検出することができれば位置情報が示す点の値を推定することが可能となる。
特徴点として、センサデータから特定可能な点を用いことができる。センサデータから特定可能な点とは、例えば、前述した三次元特徴量又は可視光データの特徴量が閾値以上であるなど特徴点検出用の所定の条件を満たす点又は領域内の点である。
また、実空間に設置されたマーカなどを特徴点として用いてもよい。この場合、マーカは、LiDER又はカメラなどのセンサを用いて取得されたデータから検出及び位置の特定が可能であればよい。例えば、マーカは、色或いは輝度値(反射率)の変化、又は、三次元形状(凹凸など)で表現される。また、当該マーカの位置を示す座標値、又は当該マーカの識別子から生成された二次元コード又はバーコードなどが用いられてもよい。
また、光信号を送信する光源をマーカとして用いてもよい。光信号の光源をマーカとして用いる場合、座標値又は識別子などの位置を取得するための情報だけでなく、その他のデータが光信号により送信されてもよい。例えば、光信号は、当該マーカの位置に応じたサービスのコンテンツ、コンテンツを取得するためのurlなどのアドレス、又はサービスの提供を受けるための無線通信装置の識別子と、当該無線通信装置と接続するための無線通信方式などを示す情報を含んでもよい。光通信装置(光源)をマーカとして用いることで、位置を示す情報以外のデータの送信が容易になると共に、当該データを動的に切り替えることが可能となる。
端末2021は、互いに異なるデータ間での特徴点の対応関係を、例えば、データ間で共通に用いられる識別子、又は、データ間の特徴点の対応関係を示す情報或いはテーブルを用いて把握する。また、特徴点間の対応関係を示す情報がない場合、端末2021は、一方の三次元データにおける特徴点の座標を他方の三次元データ空間上の位置に変換した場合に最も近い距離にある特徴点を対応する特徴点であると判定してもよい。
以上で説明した相対位置に基づく位置情報を用いた場合、互いに異なる三次元データを用いる端末2021又はサービス間であっても、各三次元データに含まれる、又は各三次元データと対応付けられた共通の特徴点を基準に位置情報が示す位置を特定、又は推定することができる。その結果、互いに異なる三次元データを用いる端末2021又はサービス間で、同じ位置をより高い精度で特定又は推定することが可能となる。
また、互いに異なる座標系を用いて表現された地図データ又は三次元データを用いる場合であっても、座標系の変換に伴う誤差の影響を低減できるため、より高精度な位置情報に基づくサービスの連携が可能となる。
以下、データ収集サーバ2024が提供する機能の例について説明する。データ収集サーバ2024は、受信した位置関連データを他のデータサーバに転送してもよい。データサーバが複数ある場合、データ収集サーバ2024は、受信した位置関連データをどのデータサーバに転送するかを判定して、転送先として判定されたデータサーバ宛に位置関連データを転送する。
データ収集サーバ2024は、転送先の判定を、例えば、データ収集サーバ2024に事前に設定された転送先サーバの判定ルールに基づいて行う。転送先サーバの判定ルールとは、例えば、各端末2021に対応付けられた識別子と転送先のデータサーバとを対応付けた転送先テーブルなどで設定される。
端末2021は、送信する位置関連データに対して当該端末2021に対応付けられた識別子を付加してデータ収集サーバ2024に送信する。データ収集サーバ2024は、位置関連データに付加された識別子に対応する転送先のデータサーバを転送先テーブルなどを用いた転送先サーバの判定ルールに基づいて特定し、当該位置関連データを特定されたデータサーバに送信する。また、転送先サーバの判定ルールは、位置関連データが取得された時間又は場所などを用いた判定条件で指定されてもよい。ここで、上述した送信元の端末2021に対応付けられた識別子とは、例えば各端末2021に固有の識別子、又は端末2021が属するグループを示す識別子などである。
また、転送先テーブルは、送信元の端末に対応付けられた識別子と転送先のデータサーバとを直接対応付けたものでなくてもよい。例えば、データ収集サーバ2024は、端末2021に固有の識別子毎に付与されたタグ情報を格納した管理テーブルと、当該タグ情報と転送先のデータサーバを対応付けた転送先テーブルとを保持する。データ収集サーバ2024は、管理テーブルと転送先テーブルとを用いてタグ情報に基づく転送先のデータサーバを判定してもよい。ここで、タグ情報は、例えば当該識別子に対応する端末2021の種類、型番、所有者、所属するグループ又はその他の識別子に付与された管理用の制御情報又はサービス提供用の制御情報である。また、転送先テーブルに、送信元の端末2021に対応付けられた識別子の代わりに、センサ毎に固有の識別子が用いられてもよい。また、転送先サーバの判定ルールは、クライアント装置2026から設定できてもよい。
データ収集サーバ2024は、複数のデータサーバを転送先として判定し、受信した位置関連データを当該複数のデータサーバに転送してもよい。この構成によると、例えば、位置関連データを自動的にバックアップする場合、又は位置関連データを異なるサービスで共通に利用するために、各サービスを提供するためのデータサーバに対して位置関連データを送信する必要がある場合に、データ収集サーバ2024に対する設定を変更ことで意図通りのデータの転送を実現できる。その結果、個別の端末2021に位置関連データの送信先を設定する場合と比較して、システムの構築及び変更に要する工数を削減することができる。
データ収集サーバ2024は、データサーバから受信した転送要求信号に応じて、転送要求信号で指定されたデータサーバを新たな転送先として登録し、以降に受信した位置関連データを当該データサーバに転送してもよい。
データ収集サーバ2024は、端末2021から受信した位置関連データを記録装置に保存し、端末2021又はデータサーバから受信した送信要求信号に応じて、送信要求信号で指定された位置関連データを、要求元の端末2021又はデータサーバに送信してもよい。
データ収集サーバ2024は、要求元のデータサーバ又は端末2021に対する位置関連データの提供の可否を判断し、提供可能と判断された場合に要求元のデータサーバ又は端末2021に位置関連データの転送又は送信を行ってもよい。
クライアント装置2026から現在の位置関連データの要求を受け付けた場合、端末2021による位置関連データの送信タイミングでなくても、データ収集サーバ2024が端末2021に対して位置関連データの送信要求を行い、端末2021が当該送信要求に応じて位置関連データを送信してもよい。
上記の説明では、端末2021がデータ収集サーバ2024に対して位置情報データを送信するとしたが、データ収集サーバ2024は、例えば、端末2021を管理する機能など、端末2021から位置関連データを収集するために必要な機能又は端末2021から位置関連データを収集する際に用いられる機能などを備えてもよい。
データ収集サーバ2024は、端末2021に対して位置情報データの送信を要求するデータ要求信号を送信し、位置関連データを収集する機能を備えてもよい。
データ収集サーバ2024には、データ収集の対象となる端末2021と通信を行うためのアドレス又は端末2021固有の識別子などの管理情報が事前に登録されている。データ収集サーバ2024は、登録されている管理情報に基づいて端末2021から位置関連データを収集する。管理情報は、端末2021が備えるセンサの種類、端末2021が備えるセンサの数、及び端末2021が対応する通信方式などの情報を含んでいてもよい。
データ収集サーバ2024は、端末2021の稼働状態又は現在位置などの情報を端末2021から収集してもよい。
管理情報の登録は、クライアント装置2026から行われてもよいし、端末2021が登録要求をデータ収集サーバ2024に送信することで、登録のための処理が開始されてもよい。データ収集サーバ2024は、端末2021との間の通信を制御する機能を備えてもよい。
データ収集サーバ2024と端末2021とを結ぶ通信は、MNO(Mobile Network Operator)、或いはMVNO(Mobile Virtual Network Operator)などのサービス事業者が提供する専用回線、又は、VPN(Virtual Private Network)で構成された仮想の専用回線などであってもよい。この構成によると、端末2021とデータ収集サーバ2024との間の通信を安全に行うことができる。
データ収集サーバ2024は、端末2021を認証する機能、又は端末2021との間で送受信されるデータを暗号化する機能を備えてもよい。ここで、端末2021の認証の処理又はデータの暗号化の処理は、データ収集サーバ2024と端末2021との間で事前に共有された、端末2021に固有の識別子又は複数の端末2021を含む端末グループに固有の識別子などを用いて行われる。この識別子とは、例えば、SIM(Subscriber Identity Module)カードに格納された固有の番号であるIMSI(International Mobile Subscriber Identity)などである。認証処理に用いられる識別子とデータの暗号化処理に用いる識別子とは、同じであってもよいし、異なっていてもよい。
データ収集サーバ2024と端末2021との間の認証又はデータの暗号化の処理は、データ収集サーバ2024と端末2021との両方が当該処理を実施する機能を備えていれば提供可能であり、中継を行う通信装置2022が用いる通信方式に依存しない。よって、端末2021が通信方式を用いるかを考慮することなく、共通の認証又は暗号化の処理を用いることができるので、ユーザのシステム構築の利便性が向上する。ただし、中継を行う通信装置2022が用いる通信方式に依存しないとは、通信方式に応じて変更することが必須ではないことを意味している。つまり、伝送効率の向上又は安全性の確保の目的で、中継装置が用いる通信方式に応じてデータ収集サーバ2024と端末2021との間の認証又はデータの暗号化の処理が切り替えられてもよい。
データ収集サーバ2024は、端末2021から収集する位置関連データの種類及びデータ収集のスケジュールなどのデータ収集ルールを管理するUIをクライアント装置2026に提供してもよい。これにより、ユーザはクライアント装置2026を用いてデータを収集する端末2021、並びに、データの収集時間及び頻度などを指定できる。また、データ収集サーバ2024は、データを収集したい地図上の領域などを指定し、当該領域に含まれる端末2021から位置関連データを収集してもよい。
データ収集ルールを端末2021単位で管理する場合、クライアント装置2026は、例えば、管理対象となる端末2021又はセンサのリストを画面に提示する。ユーザはリストの項目毎にデータの収集の要否又は収集スケジュールなどを設定する。
データを収集したい地図上の領域などを指定する場合、クライアント装置2026は、例えば、管理対象となる地域の二次元又は三次元の地図を画面に提示する。ユーザは、表示された地図上でデータを収集する領域を選択する。地図上で選択される領域は、地図上で指定された点を中心とする円形又は矩形の領域であってもよいし、ドラッグ動作で特定可能な円形又は矩形の領域であってもよい。また、クライアント装置2026は、都市、都市内のエリア、ブロック、又は主要な道路など予め設定された単位で領域を選択してもよい。また、地図を用いて領域を指定するのではなく、緯度及び経度の数値を入力して領域が設定されてもよいし、入力されたテキスト情報に基づいて導出した候補領域のリストから領域が選択されてもよい。テキスト情報は、例えば、地域、都市、又はランドマークの名前などである。
また、ユーザが一又は複数の端末2021を指定して、当該端末2021の周囲100メートルの範囲内などの条件を設定することで、指定領域を動的に変更しながらデータの収集が行われてもよい。
また、クライアント装置2026がカメラなどのセンサを備える場合、センサデータから得られたクライアント装置2026の実空間での位置に基づいて地図上の領域が指定されてもよい。例えば、クライアント装置2026は、センサデータを用いて自己位置を推定し、推定された位置に対応する地図上の点から予め定められた距離、又はユーザが指定した距離の範囲内の領域を、データを収集する領域として指定してもよい。また、クライアント装置2026は、センサのセンシング領域、すなわち取得されたセンサデータに対応する領域を、データを収集する領域として指定してもよい。または、クライアント装置2026は、ユーザの指定したセンサデータに対応する位置に基づく領域を、データを収集する領域として指定してもよい。センサデータに対応する地図上の領域、又は位置の推定は、クライアント装置2026が行ってもよいし、データ収集サーバ2024が行ってもよい。
地図上の領域で指定を行う場合、データ収集サーバ2024は、各端末2021の現在位置情報を収集することで、指定された領域内の端末2021を特定し、特定された端末2021に対して位置関連データの送信を要求してもよい。また、データ収集サーバ2024が領域内の端末2021を特定するのではなく、データ収集サーバ2024が指定された領域を示す情報を端末2021に送信し、端末2021が自身が指定された領域内にあるか否かを判定して、指定された領域内にあると判断された場合に位置関連データを送信してもよい。
データ収集サーバ2024は、クライアント装置2026が実行するアプリケーションにおいて上述したUI(User Interface)を提供するためのリスト又は地図などのデータをクライアント装置2026に送信する。データ収集サーバ2024は、リスト又は地図などのデータだけでなく、アプリケーションのプログラムをクライアント装置2026に送信してもよい。また、上述したUIは、ブラウザで表示可能なHTMLなどで作成されたコンテンツとして提供されてもよい。なお、地図データなど一部のデータは地図サーバ2025などのデータ収集サーバ2024以外のサーバから提供されてもよい。
クライアント装置2026は、ユーザによる設定ボタンの押下など、入力が完了したことを通知する入力が行われると、入力された情報を設定情報としてデータ収集サーバ2024に送信する。データ収集サーバ2024は、クライアント装置2026から受信した設定情報に基づいて各端末2021に対して、位置関連データの要求又は位置関連データの収集ルールを通知する信号を送信し、位置関連データの収集を行う。
次に、三次元又は二次元の地図データに付加された付加情報に基づいて端末2021の動作を制御する例について説明する。
本構成では、道路又は駐車場に埋設された無線給電の給電アンテナ又は給電コイルなどの給電部の位置を示すオブジェクト情報が、三次元データに含まれて、又は三次元データに対応付けられて、車又はドローンなどである端末2021に提供される。
充電を行うために当該オブジェクト情報を取得した車両又はドローンは、車両が備える充電アンテナ又は充電コイルなどの充電部の位置が、当該オブジェクト情報が示す領域と対向する位置になるよう自動運転で車両自身の位置を移動させ、充電を開始する。なお、自動運転機能を備えていない車両又はドローンの場合は、画面上に表示された画像又は音声などを利用して、移動すべき方向又は行うべき操作を運転手又は操縦者に対して提示される。そして、推定された自己位置に基づいて算出した充電部の位置が、オブジェクト情報で示された領域又は当該領域から所定の距離の範囲内に入った判断されると、運転又は操縦を中止させる内容へと提示する画像又は音声が切り替えられ、充電が開始される。
また、オブジェクト情報は給電部の位置を示す情報ではなく、当該領域内に充電部を配置すると所定の閾値以上の充電効率が得られる領域を示す情報であってもよい。オブジェクト情報の位置は、オブジェクト情報が示す領域の中心の点で表されてもよいし、二次元平面内の領域或いは線、又は、三次元空間内の領域、線或いは平面などで表されてもよい。
この構成によると、LiDERのセンシングデータ又はカメラで撮影した映像では把握できない給電アンテナの位置を把握することができるので、車などの端末2021が備える無線充電用のアンテナと道路などに埋設された無線給電アンテナとの位置合わせをより高精度に行うことができる。その結果、無線充電時の充電速度を短くしたり、充電効率を向上させることができる。
オブジェクト情報は、給電アンテナの以外の対象物であってもよい。例えば、三次元データは、ミリ波無線通信のAPの位置などをオブジェクト情報として含む。これにより、端末2021は、APの位置を事前に把握することができるので、当該オブジェクト情報の方向にビームの指向性を向けて通信を開始することができる。その結果、伝送速度の向上、通信開始までの時間の短縮、及び通信可能な期間を延ばすなどの通信品質の向上を実現できる。
オブジェクト情報は、当該オブジェクト情報に対応する対象物のタイプを示す情報を含んでもよい。また、オブジェクト情報は、当該オブジェクト情報の三次元データ上の位置に対応する実空間上の領域内、又は領域から所定の距離の範囲内に端末2021が含まれる場合に、端末2021が実施すべき処理を示す情報を含んでもよい。
オブジェクト情報は、三次元データを提供するサーバとは異なるサーバから提供されてもよい。オブジェクト情報を三次元データとは別に提供する場合、同一のサービスで使用されるオブジェクト情報が格納されたオブジェクトグループが、対象サービス又は対象機器の種類に応じてそれぞれ別のデータとして提供されてもよい。
オブジェクト情報と組み合わせて用いられる三次元データは、WLDの点群データであってもよいし、SWLDの特徴点データであってもよい。
三次元データ符号化装置において、符号化対象の三次元点である対象三次元点の属性情報をLoD(Level of Detail)を用いて階層符号化した場合、三次元データ復号装置は、当該三次元データ復号装置で必要なLoDの階層まで属性情報を復号し、必要でない階層の属性情報を復号しなくてもよい。例えば、三次元データ符号化装置が符号化したビットストリーム内の属性情報のLoDの総数がN個の場合、三次元データ復号装置は、最上位層のLoD0からLoD(M-1)までのM個(M<N)のLoDを復号し、残りのLoD(N-1)までのLoDを復号しなくてもよい。これにより、三次元データ復号装置は、処理負荷を抑制しつつ、三次元データ復号装置で必要なLoD0からLoD(M-1)までの属性情報を復号できる。
図182は、上記のユースケースを示す図である。図182に例では、サーバは、三次元位置情報と属性情報とを符号化することで得られた三次元地図を保持する。サーバ(三次元データ符号化装置)は、サーバが管理する領域のクライアント装置(三次元データ復号装置:例えば車両又はドローン等)に対し、三次元地図をブロードキャスト送信し、クライアント装置はサーバから受信した三次元地図を用いてクライアント装置の自己位置を特定する処理、又は、クライアント装置を操作するユーザ等に地図情報を表示する処理を行う。
以下、この例における動作例を説明する。まず、サーバは、三次元地図の位置情報を8分木構成などを用いて符号化する。そして、サーバは、位置情報をベースに構築されたN個のLoDを用いて三次元地図の属性情報を階層符号化する。サーバは、階層符号化により得られた三次元地図のビットストリームを保存する。
次にサーバは、サーバが管理する領域のクライアント装置から送信された地図情報の送信要求に応じて、符号化された三次元地図のビットストリームをクライアント装置に送信する。
クライアント装置は、サーバから送信された三次元地図のビットストリームを受信し、クライアント装置の用途に応じて三次元地図の位置情報と属性情報とを復号する。例えば、クライアント装置が位置情報とN個のLoDの属性情報とを用いて高精度な自己位置推定を行う場合は、クライアント装置は、属性情報として密な三次元点までの復号結果が必要と判断し、ビットストリーム内の全ての情報を復号する。
また、クライアント装置が三次元地図の情報をユーザ等に表示する場合は、クライアント装置は、属性情報として疎な三次元点までの復号結果までが必要と判断し、位置情報とLoDの上位層であるLoD0からM個(M<N)までのLoDの属性情報とを復号する。
このようにクライアント装置の用途に応じて復号する属性情報のLoDを切替えることによって、クライアント装置の処理負荷を削減できる。
図182に示す例では、例えば、三次元点地図は、位置情報と属性情報とを含む。位置情報は、8分木で符号化される。属性情報は、N個のLoDで符号化される。
クライアント装置Aは、高精度な自己位置推定を行う。この場合、クライアント装置Aは、全ての位置情報と属性情報とが必要と判断し、ビットストリーム内の位置情報とN個のLoDで構成される属性情報とを全て復号する。
クライアント装置Bは、三次元地図をユーザへ表示する。この場合、クライアント装置Bは、位置情報とM個(M<N)のLoDの属性情報とが必要と判断し、ビットストリーム内の位置情報とM個のLoDで構成される属性情報とを復号する。
なお、サーバは、三次元地図をクライアント装置にブロードキャスト送信してもよいし、マルチキャスト送信、又はユニキャスト送信してもよい。
以下、本実施の形態に係るシステムの変形例について説明する。三次元データ符号化装置において、符号化対象の三次元点である対象三次元点の属性情報をLoDを用いて階層符号化する場合、三次元データ符号化装置は、当該三次元データ復号装置で必要なLoDの階層まで属性情報を符号化し、必要でない階層の属性情報を符号化しなくてもよい。例えば、LoDの総数がN個の場合に、三次元データ符号化装置は、最上位層LoD0からLoD(M-1)までのM個(M<N)のLoDを符号化し、残りLoD(N-1)までのLoDを符号化しないことによりビットストリームを生成してもよい。これにより、三次元データ符号化装置は、三次元データ復号装置からの要望に応じて、三次元データ復号装置で必要なLoD0からLoD(M-1)までの属性情報を符号化したビットストリームを提供できる。
図183は、上記ユースケースを示す図である。図183に示す例では、サーバは、三次元位置情報と属性情報とを符号化することで得られた三次元地図を保持する。サーバ(三次元データ符号化装置)は、サーバが管理する領域のクライアント装置(三次元データ復号装置:例えば車両又はドローン等)に対し、クライアント装置の要望に応じて三次元地図をユニキャスト送信し、クライアント装置はサーバから受信した三次元地図を用いてクライアント装置の自己位置を特定する処理、又は地図情報をクライアント装置を操作するユーザ等に表示する処理を行う。
以下、この例における動作例を説明する。まず、サーバは、三次元地図の位置情報を8分木構成などを用いて符号化する。そして、サーバは、三次元地図の属性情報を、位置情報をベースに構築されたN個のLoDを用いて階層符号化することで三次元地図Aのビットストリームを生成し、生成したビットストリームを当該サーバに保存する。また、サーバは、三次元地図の属性情報を、位置情報をベースに構築されたM個(M<N)のLoDを用いて階層符号化することで三次元地図Bのビットストリームを生成し、生成したビットストリームを当該サーバに保存する。
次にクライアント装置は、クライアント装置の用途に応じて三次元地図の送信をサーバに要求する。例えば、クライアント装置は、位置情報とN個のLoDの属性情報とを用いて高精度な自己位置推定を行う場合は、属性情報として密な三次元点までの復号結果が必要と判断し、三次元地図Aのビットストリームの送信をサーバへ要求する。また、クライアント装置は、三次元地図の情報をユーザ等に表示する場合は、属性情報として疎な三次元点までの復号結果までが必要と判断し、位置情報とLoDの上位層LoD0からM個(M<N)までのLoDの属性情報とを含む三次元地図Bのビットストリームの送信をサーバへ要求する。そしてサーバは、クライアント装置からの地図情報の送信要求に応じて、符号化された三次元地図A又は三次元地図Bのビットストリームをクライアント装置に送信する。
クライアント装置は、クライアント装置の用途に応じてサーバから送信された三次元地図A又は三次元地図Bのビットストリームを受信し、当該ビットストリームを復号する。このようにサーバは、クライアント装置の用途に応じて送信するビットストリームを切替える。これにより、クライアント装置の処理負荷を削減できる。
図183に示す例では、サーバは、三次元地図A及び三次元地図Bを保持する。サーバは、三次元地図の位置情報を、例えば8分木で符号化し、三次元地図の属性情報をN個のLoDで符号化することで三次元地図Aを生成する。つまり、三次元地図Aのビットストリームに含まれるNumLoDはNを示す。
また、サーバは、三次元地図の位置情報を、例えば8分木で符号化し、三次元地図の属性情報をM個のLoDで符号化することで三次元地図Bを生成する。つまり、三次元地図Bのビットストリームに含まれるNumLoDはMを示す。
クライアント装置Aは、高精度な自己位置推定を行う。この場合クライアント装置Aは、全ての位置情報と属性情報とが必要と判断し、全ての位置情報とN個のLoDで構成される属性情報とを含む三次元地図Aの送信要求をサーバに送る。クライアント装置Aは、三次元地図Aを受信し、全ての位置情報とN個のLoDで構成される属性情報とを復号する。
クライアント装置Bは、三次元地図をユーザへ表示する。この場合、クライアント装置Bは、位置情報とM個(M<N)のLoDの属性情報とが必要と判断し、全ての位置情報とM個のLoDで構成される属性情報とを含む三次元地図Bの送信要求をサーバに送る。クライアント装置Bは、三次元地図Bを受信して、全ての位置情報とM個のLoDで構成される属性情報とを復号する。
なお、サーバ(三次元データ符号化装置)は、三次元地図Bに加え、残りのN-M個のLoDの属性情報を符号化した三次元地図Cを符号化しておき、クライアント装置Bの要望に応じて三次元地図Cをクライアント装置Bに送信してもよい。また、クライアント装置Bは、三次元地図Bと三次元地図Cとのビットストリームを用いて、N個のLoDの復号結果を得てもよい。
以下、アプリケーション処理の例を説明する。図184は、アプリケーション処理の例を示すフローチャートである。アプリ操作が開始されると、三次元データ逆多重化装置は、点群データ及び複数の符号化データを含むISOBMFFファイルを取得する(S7301)。例えば、三次元データ逆多重化装置は、ISOBMFFファイルを、通信により取得してもよいし、蓄積しているデータから読み込んでもよい。
次に、三次元データ逆多重化装置は、ISOBMFFファイルにおける全体構成情報を解析し、アプリケーションに使用するデータを特定する(S7302)。例えば、三次元データ逆多重化装置は、処理に用いるデータを取得し、処理に用いないデータは取得しない。
次に、三次元データ逆多重化装置は、アプリケーションに使用する1以上のデータを抽出し、当該データの構成情報を解析する(S7303)。
データの種別が符号化データである場合(S7304で符号化データ)、三次元データ逆多重化装置は、ISOBMFFを符号化ストリームに変換し、タイムスタンプを抽出する(S7305)。また、三次元データ逆多重化装置は、データ間の同期がそろっているか否かを、例えば、データ間の同期がそろっているか否かを示すフラグを参照して判定し、揃っていなければ同期処理を行ってもよい。
次に、三次元データ逆多重化装置は、タイムスタンプ及びその他の指示に従い、所定の方法でデータを復号し、復号したデータを処理する(S7306)。
一方、データの種別が符号化データである場合(S7304でRAWデータ)、三次元データ逆多重化装置は、データ及びタイムスタンプを抽出する(S7307)。また、三次元データ逆多重化装置は、データ間の同期がそろっているか否かを、例えば、データ間の同期がそろっているか否かを示すフラグを参照して判定し、揃っていなければ同期処理を行ってもよい。次に、三次元データ逆多重化装置は、タイムスタンプ及びその他の指示に従い、データを処理する(S7308)。
例えば、ビームLiDAR、FLASH LiDAR、及びカメラで取得されたセンサ信号が、それぞれ異なる符号化方式で符号化及び多重化されている場合の例を説明する。図185は、ビームLiDAR、FLASH LiDAR及びカメラのセンサ範囲の例を示す図である。例えば、ビームLiDARは、車両(センサ)の周囲の全方向を検知し、FLASH LiDAR及びカメラは、車両の一方向(例えば前方)の範囲を検知する。
LiDAR点群を統合的に扱うアプリケーションの場合、三次元データ逆多重化装置は、全体構成情報を参照して、ビームLiDARとFLASH LiDARの符号化データを抽出して復号する。また、三次元データ逆多重化装置は、カメラ映像は抽出しない。
三次元データ逆多重化装置は、LiDARとFLASH LiDARのタイムスタンプに従い、同一のタイムスタンプの時刻のそれぞれの符号化データを同時に処理する。
例えば、三次元データ逆多重化装置は、処理したデータを提示装置で提示したり、ビームLiDARとFLASH LiDARの点群データを合成したり、レンダリングなどの処理を行ってもよい。
また、データ間でキャリブレーションをするアプリケーションの場合には、三次元データ逆多重化装置は、センサ位置情報を抽出してアプリケーションで用いてもよい。
例えば、三次元データ逆多重化装置は、アプリケーションにおいて、ビームLiDAR情報を使用するか、FLASH LiDARを使用するかを選択し、選択結果に応じて処理を切り替えてもよい。
このように、アプリケーションの処理に応じて適応的にデータの取得及び符号処理を変えることができるので、処理量及び消費電力を削減できる。
以下、自動運転におけるユースケースについて説明する。図186は、自動運転システムの構成例を示す図である。この自動運転システムは、クラウドサーバ7350と、車載装置又はモバイル装置等のエッジ7360とを含む。クラウドサーバ7350は、逆多重化部7351と、復号部7352A、7352B及び7355と、点群データ合成部7353と、大規模データ蓄積部7354と、比較部7356と、符号化部7357とを備える。エッジ7360は、センサ7361A及び7361Bと、点群データ生成部7362A及び7362Bと、同期部7363と、符号化部7364A及び7364Bと、多重化部7365と、更新データ蓄積部7366と、逆多重化部7367と、復号部7368と、フィルタ7369と、自己位置推定部7370と、運転制御部7371とを備える。
このシステムでは、エッジ7360は、クラウドサーバ7350に蓄積されている大規模点群地図データである大規模データをダウンロードする。エッジ7360は、大規模データとエッジ7360で得られたセンサ情報とをマッチングすることで、エッジ7360(車両又は端末)の自己位置推定処理を行う。また、エッジ7360は、取得したセンサ情報をクラウドサーバ7350へアップロードし、大規模データを最新の地図データに更新する。
また、システム内における点群データを扱う様々なアプリケーションにおいて、符号化方法の異なる点群データが扱われる。
クラウドサーバ7350は、大規模データを符号化及び多重化する。具体的には、符号化部7357は、大規模点群を符号化するために適した第3の符号化方法を用いて符号化を行う。また、符号化部7357は、符号化データを多重化する。大規模データ蓄積部7354は、符号化部7357で符号化及び多重化されたデータを蓄積する。
エッジ7360は、センシングを行う。具体的には、点群データ生成部7362Aは、センサ7361Aで取得されるセンシング情報を用いて、第1の点群データ(位置情報(ジオメトリ)及び属性情報)を生成する。点群データ生成部7362Bは、センサ7361Bで取得されるセンシング情報を用いて、第2の点群データ(位置情報及び属性情報)を生成する。生成された第1の点群データ及び第2の点群データは、自動運転の自己位置推定或いは車両制御、又は地図更新に用いられる。それぞれの処理において、第1の点群データ及び第2の点群データのうちの一部の情報が用いられてもよい。
エッジ7360は、自己位置推定を行う。具体的には、エッジ7360は、大規模データをクラウドサーバ7350からダウンロードする。逆多重化部7367は、ファイルフォーマットの大規模データを逆多重化することで符号化データを取得する。復号部7368は、取得された符号化データを復号することで大規模点群地図データである大規模データを取得する。
自己位置推定部7370は、取得された大規模データと、点群データ生成部7362A及び7362Bで生成された第1の点群データ及び第2の点群データとをマッチングすることで、車両の地図における自己位置を推定する。また、運転制御部7371は、当該マッチング結果又は自己位置推定結果を運転制御に用いる。
なお、自己位置推定部7370及び運転制御部7371は、大規模データのうち、位置情報などの特定の情報を抽出し、抽出した情報を用いて処理を行ってもよい。また、フィルタ7369は、第1の点群データ及び第2の点群データに補正又は間引き等の処理を行う。自己位置推定部7370及び運転制御部7371は、当該処理が行われた後の第1の点群データ及び第2の点群データを用いてもよい。また、自己位置推定部7370及び運転制御部7371は、センサ7361A及び7361Bで得られたセンサ信号を用いてもよい。
同期部7363は、複数のセンサ信号又は複数の点群データのデータ間の時間同期及び位置補正を行う。また、同期部7363は、自己位置推定処理によって生成された、大規模データとセンサデータとの位置補正情報に基づき、センサ信号又は点群データの位置情報を大規模データに合わせるように補正してもよい。
なお、同期及び位置補正はエッジ7360でなく、クラウドサーバ7350で行われてもよい。この場合、エッジ7360は、同期情報及び位置情報を多重化してクラウドサーバ7350へ送信してもよい。
エッジ7360は.センサ信号又は点群データを符号化及び多重化する。具体的には、センサ信号又は点群データは、それぞれの信号を符号化するために適した第1の符号化方法又は第2の符号化方法を用いて符号化される。例えば、符号化部7364Aは、第1の符号化方法を用いて第1の点群データを符号化することで第1の符号化データを生成する。符号化部7364Bは、第2の符号化方法を用いて第2の点群データを符号化することで第2の符号化データを生成する。
多重化部7365は、第1の符号化データ、第2の符号化データ、及び同期情報などを多重化することで多重化信号を生成する。更新データ蓄積部7366は、生成された多重化信号を蓄積する。また、更新データ蓄積部7366は、多重化信号をクラウドサーバ7350へアップロードする。
クラウドサーバ7350は、点群データを合成する。具体的には、逆多重化部7351は、クラウドサーバ7350にアップロードされた多重化信号を逆多重化することで第1の符号化データ及び第2の符号化データを取得する。復号部7352Aは、第1の符号化データを復号することで第1の点群データ(又はセンサ信号)を取得する。復号部7352Bは、第2の符号化データを復号することで第2の点群データ(又はセンサ信号)を取得する。
点群データ合成部7353は、第1の点群データと第2の点群データとを所定の方法で合成する。多重化信号に同期情報及び位置補正情報が多重化されている場合には、点群データ合成部7353は、それらの情報を用いて合成を行ってもよい。
復号部7355は、大規模データ蓄積部7354に蓄積されている大規模データを逆多重化及び復号する。比較部7356は、エッジ7360で得られたセンサ信号に基づき生成された点群データとクラウドサーバ7350が有する大規模データとを比較し、更新が必要な点群データを判断する。比較部7356は、大規模データのうち、更新が必要と判断された点群データを、エッジ7360から得られた点群データに更新する。
符号化部7357は、更新された大規模データを符号化及び多重化し、得られたデータを大規模データ蓄積部7354に蓄積する。
以上のように、使用する用途又はアプリケーションに応じて、取り扱う信号が異なり、多重化する信号又は符号化方法が異なる場合がある。このような場合であっても、本実施の形態を用いて様々な符号化方式のデータを多重化することで、柔軟な復号及びアプリケーション処理が可能となる。また、信号の符号化方式が異なる場合であっても、逆多重化、復号、データ変換、符号化、多重の処理により適した符号化方式を変換することで、様々なアプリケーションやシステムを構築し、柔軟なサービスの提供が可能となる。
以下、分割データの復号及びアプリケーションの例を説明する。まず、分割データの情報について説明する。図187は、ビットストリームの構成例を示す図である。分割データの全体情報は、分割データ毎に、当該分割データのセンサID(sensor_id)とデータID(data_id)とを示す。なお、データIDは各符号化データのヘッダにも示される。
なお、図187に示す分割データの全体情報は、図41と同様に、センサIDに加え、センサ情報(Sensor)と、センサのバージョン(Version)と、センサのメーカー名(Maker)と、センサの設置情報(Mount Info.)と、センサの位置座標(World Coordinate)とのうち少なく一つを含んでもよい。これにより、三次元データ復号装置は、構成情報から各種センサの情報を取得できる。
分割データの全体情報は、メタデータであるSPS、GPS又はAPSに格納されてもよいし、符号化に必須でないメタデータであるSEIに格納されてもよい。また、三次元データ符号化装置は、多重化の際に、当該SEIをISOBMFFのファイルに格納する。三次元データ復号装置は、当該メタデータに基づき、所望の分割データを取得できる。
図187において、SPSは符号化データ全体のメタデータであり、GPSは位置情報のメタデータであり、APSは属性情報毎のメタデータであり、Gは分割データ毎の位置情報の符号化データであり、A1等は分割データ毎の属性情報の符号化データである。
次に、分割データのアプリケーション例を説明する。点群データから、任意の点群を選択し、選択した点群を提示するアプリケーションの例を説明する。図188は、このアプリケーションにより実行される点群選択処理のフローチャートである。図189~図191は、点群選択処理の画面例を示す図である。
図189に示すように、アプリケーションを実行する三次元データ復号装置は、例えば、任意の点群を選択するための入力UI(ユーザインタフェース)8661を表示するUI部を有する。入力UI8661は、選択された点群を提示する提示部8662と、ユーザの操作を受け付ける操作部(ボタン8663及び8664)を有する。三次元データ復号装置は、UI8661で点群が選択された後、蓄積部8665から所望のデータを取得する。
まず、ユーザの入力UI8661に対する操作に基づき、ユーザが表示したい点群情報が選択される(S8631)。具体的には、ボタン8663が選択されることで、センサ1に基づく点群が選択される。ボタン8664が選択されることで、センサ2に基づく点群が選択される。または、ボタン8663及びボタン8664の両方が選択されることで、センサ1に基づく点群とセンサ2に基づく点群の両方が選択される。なお、点群の選択方法は一例であり、これに限らない。
次に、三次元データ復号装置は、多重化信号(ビットストリーム)又は符号化データに含まれる分割データの全体情報を解析し、選択されたセンサのセンサID(sensor_id)から、選択された点群を構成する分割データのデータID(data_id)を特定する(S8632)。次に、三次元データ復号装置は、多重化信号から、特定された所望のデータIDを含む符号化データを抽出し、抽出した符号化データを復号することで、選択されたセンサに基づく点群を復号する(S8633)。なお、三次元データ復号装置は、その他の符号化データは復号しない。
最後に、三次元データ復号装置は、復号された点群を提示(例えば表示)する(S8634)。図190は、センサ1のボタン8663が押下された場合の例を示し、センサ1の点群が提示される。図191は、センサ1のボタン8663とセンサ2のボタン8664の両方が押下された場合の例を示し、センサ1及びセンサ2の点群が提示される。
以上、本開示の実施の形態に係る三次元データ符号化装置及び三次元データ復号装置等について説明したが、本開示は、この実施の形態に限定されるものではない。
また、上記実施の形態に係る三次元データ符号化装置及び三次元データ復号装置等に含まれる各処理部は典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されてもよいし、一部又は全てを含むように1チップ化されてもよい。
また、集積回路化はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)、又はLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
また、上記各実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPU又はプロセッサ等のプログラム実行部が、ハードディスク又は半導体メモリ等の記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。
また、本開示は、三次元データ符号化装置及び三次元データ復号装置等により実行される三次元データ符号化方法又は三次元データ復号方法等として実現されてもよい。
また、ブロック図における機能ブロックの分割は一例であり、複数の機能ブロックを一つの機能ブロックとして実現したり、一つの機能ブロックを複数に分割したり、一部の機能を他の機能ブロックに移してもよい。また、類似する機能を有する複数の機能ブロックの機能を単一のハードウェア又はソフトウェアが並列又は時分割に処理してもよい。
また、フローチャートにおける各ステップが実行される順序は、本開示を具体的に説明するために例示するためのものであり、上記以外の順序であってもよい。また、上記ステップの一部が、他のステップと同時(並列)に実行されてもよい。
以上、一つ又は複数の態様に係る三次元データ符号化装置及び三次元データ復号装置等について、実施の形態に基づいて説明したが、本開示は、この実施の形態に限定されるものではない。本開示の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、一つ又は複数の態様の範囲内に含まれてもよい。