本開示の態様は、点群コーディング(PCC)技術を提供する。PCCは、G-PCCと呼ばれるジオメトリベースの方式、V-PCCと呼ばれるビデオコーディングベースの方式など、様々な方式に応じて実行することができる。本開示のいくつかの態様によれば、G-PCCは、3Dジオメトリを直接符号化し、ビデオコーディングとあまり共通する要素がなく純粋にジオメトリベースの手法であり、V-PCCはビデオコーディングに多大に基づいている。たとえば、V-PCCは、3Dクラウドの点を2Dグリッド(画像)の画素にマッピングすることができる。V-PCC方式は、点群圧縮のために汎用ビデオコーデックを利用することができる。動画専門家集団(MPEG)は、それぞれG-PCC方式とV-PCC方式を使用したG-PCC規格とV-PCC規格に取り組んでいる。
本開示の態様は、現在のノードが単一孤立点で符号化されているか否かを示すための単一孤立点フラグを符号化するための技術を提供する。
点群は、多くの用途で広く使用され得る。たとえば、点群は、オブジェクト検出および位置特定のために自動運転車両で使用することができ、点群は、マッピングのための地理情報システム(GIS)で使用することができ、ならびに文化遺産のオブジェクトおよびコレクションなどを視覚化およびアーカイブするために文化遺産において使用することができる。
以下、点群は一般に、3D空間内の点のセットを指してもよく、点の各々が、たとえば、色、材料特性、テクスチャ情報、強度属性、反射率属性、動き関連属性、モダリティ属性、および様々な他の属性などの関連付けられた属性を有する。点群は、このような点の構成としてオブジェクトまたはシーンを再構成するために使用され得る。点は、様々な設定で複数のカメラ、深度センサ、またはLIDARを使用してキャプチャすることができ、再構成されたシーンを現実的に表現するために数千から最大数十億の点で構成され得る。パッチは、一般に、点群によって記述される表面の連続したサブセットを指すことができる。一例では、パッチは、閾値量未満で互いにずれた表面法線ベクトルを伴う点を含む。
圧縮技術は、より高速な伝送またはストレージの削減のために点群を表すために必要なデータ量を削減することができる。したがって、リアルタイム通信および6自由度(6 DoF)の仮想現実で使用するための点群の非可逆圧縮のための技術が必要とされている。加えて、自動運転および文化的伝統の用途などのための動的マッピングのコンテキストにおいて、可逆点群圧縮のための技術が求められている。
本開示の一態様によれば、V-PCCの背後にある主な考え方は、既存のビデオコーデックを活用して、動的点群のジオメトリ、占有率、およびテクスチャを3つの別々のビデオシーケンスとして圧縮することである。3つのビデオシーケンスを解釈するために必要な追加のメタデータは、別々に圧縮される。ビットストリーム全体の一部分がメタデータであり、ソフトウェア実装形態を使用して効率的に符号化/復号することができる。情報の大部分はビデオコーデックによって処理される。
図1は、本開示の一実施形態による通信システム(100)の簡略ブロック図を示す。通信システム(100)は、たとえばネットワーク(150)を介して互いに通信することができる複数の端末デバイスを含む。たとえば、通信システム(100)は、ネットワーク(150)を介して相互接続された端末デバイス(110)および(120)のペアを含む。図1の例では、端末デバイス(110)および(120)の第1のペアは、点群データの単方向の伝送を実行することができる。たとえば、端末デバイス(110)は、端末デバイス(110)に接続されたセンサ(105)によってキャプチャされた点群(たとえば、構造を表す点)を圧縮することができる。圧縮された点群は、たとえばビットストリームの形態で、ネットワーク(150)を介して他の端末デバイス(120)に送信され得る。端末デバイス(120)は、ネットワーク(150)から圧縮された点群を受信し、点群を再構成するためにビットストリームを解凍し、再構成された点群を適切に表示してもよい。単方向データ送信は、メディアサービング用途などで一般的であり得る。
図1の例では、端末デバイス(110)および(120)は、サーバ、およびパーソナルコンピュータとして示される場合があるが、本開示の原理はそのように限定されなくてもよい。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲーム端末、メディアプレーヤ、および/または専用3次元(3D)機器による用途であることが分かる。ネットワーク(150)は、端末デバイス(110)と端末デバイス(120)との間で圧縮された点群を送信する任意の数のネットワークを表す。ネットワーク(150)は、たとえば、有線通信(有線)ネットワークおよび/または無線通信ネットワークを含むことができる。ネットワーク(150)は、回路交換通信路および/またはパケット交換通信路において、データを交換してもよい。代表的なネットワークは、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはインターネットを含む。本考察の目的では、ネットワーク(150)のアーキテクチャおよびトポロジーは、以下で説明されない限り、本開示の動作にとって重要ではない場合がある。
図2は、一実施形態によるストリーミングシステム(200)の簡略化されたブロック図を示している。図2の例は、点群の開示された主題のアプリケーションである。開示された主題は、3Dテレプレゼンスアプリケーション、仮想現実アプリケーションなどの他の点群対応アプリケーションにも等しく適用可能であり得る。
ストリーミングシステム(200)は、キャプチャサブシステム(213)を含むことができる。キャプチャサブシステム(213)は、点群源(201)、たとえば光検出と測距(LIDAR)システム、3Dカメラ、3Dスキャナ、たとえば非圧縮の点群(202)を生成するソフトウェアの非圧縮の点群を生成するグラフィックス生成コンポーネントなどを含むことができる。一例では、点群(202)は、3Dカメラによってキャプチャされた点を含む。点群(202)は、圧縮された点群(204)(圧縮された点群のビットストリーム)と比較して高いデータ量を強調するために太線として図示されている。圧縮された点群(204)は、点群源(201)に接続されたエンコーダ(203)を含む電子デバイス(220)によって生成してもよい。エンコーダ(203)は、以下でより詳細に説明されるように、開示の主題の態様を可能にし、または実装するためのハードウェア、ソフトウェア、またはそれらの組み合わせを含むことができる。点群(202)のストリームと比較してより低いデータ量を強調するために細い線として図示されている、圧縮された点群(204)(または圧縮された点群(204)のビットストリーム)は、将来の使用のためにストリーミングサーバ(205)に記憶することができる。図2のクライアントサブシステム(206)および(208)などの1つ以上のストリーミングクライアントサブシステムは、ストリーミングサーバ(205)にアクセスして、圧縮された点群(204)のコピー(207)および(209)を取得することができる。クライアントサブシステム(206)は、たとえば電子デバイス(230)のデコーダ(210)を含むことができる。デコーダ(210)は、圧縮された点群の入力コピー(207)を復号し、レンダリングデバイス(212)上にレンダリングすることができる、再構成された点群(211)の出力ストリームを作成する。
電子デバイス(220)および(230)は、他のコンポーネント(図示せず)を含むことができることに留意されたい。たとえば、電子デバイス(220)はデコーダ(図示せず)を含むことができ、電子デバイス(230)はエンコーダ(図示せず)も含むことができる。
いくつかのストリーミングシステムでは、圧縮された点群(204)、(207)、および(209)(たとえば、圧縮された点群のビットストリーム)は、特定の規格により圧縮され得る。いくつかの例では、点群の圧縮にビデオコーディング規格が使用される。そのような規格としては、たとえば、HEVC(High Efficiency Video Coding)、VVC(Versatile Video Coding)などがある。
図3は、いくつかの実施形態による、点群フレームを符号化するためのV-PCCエンコーダ(300)のブロック図を示す。いくつかの実施形態では、V-PCCエンコーダ(300)は、通信システム(100)およびストリーミングシステム(200)で使用してもよい。たとえば、エンコーダ(203)は、V-PCCエンコーダ(300)と同様に構成され、動作され得る。
V-PCCエンコーダ(300)は、非圧縮入力として点群フレームを受信し、圧縮された点群フレームに対応するビットストリームを生成する。いくつかの実施形態では、V-PCCエンコーダ(300)は、点群源(201)などの点群源から点群フレームを受信することができる。
図3の例では、V-PCCエンコーダ(300)は、パッチ生成モジュール(306)と、パッチパッキングモジュール(308)と、ジオメトリ画像生成モジュール(310)と、テクスチャ画像生成モジュール(312)と、パッチ情報モジュール(304)と、占有マップモジュール(314)と、平滑化モジュール(336)と、画像パディングモジュール(316)および(318)と、グループ拡張モジュール(320)と、ビデオ圧縮モジュール(322)、(323)および(332)と、補助パッチ情報圧縮モジュール(338)と、エントロピー圧縮モジュール(334)と、マルチプレクサ(324)とを含む。
本開示の一態様によれば、V-PCCエンコーダ(300)は、圧縮された点群を解凍された点群に変換するために使用されるいくつかのメタデータ(たとえば、占有マップおよびパッチ情報)と共に、3D点群フレームを画像ベースの表現に変換する。いくつかの例では、V-PCCエンコーダ(300)は、3D点群フレームをジオメトリ画像、テクスチャ画像および占有マップに変換し、次いでビデオコーディング技術を使用してジオメトリ画像、テクスチャ画像および占有マップをビットストリームに符号化することができる。一般に、ジオメトリ画像は、画素に投影された点に関連付けられたジオメトリ値で満たされた画素を有する2D画像であり、ジオメトリ値で満たされた画素は、ジオメトリサンプルと呼ばれてもよい。テクスチャ画像は、画素に投影された点に関連付けられたテクスチャ値で満たされた画素を有する2D画像であり、テクスチャ値で満たされた画素はテクスチャサンプルと呼ばれてもよい。占有マップは、パッチによって占有されているか、または占有されていないかを示す値で満たされた画素を有する2D画像である。
パッチ生成モジュール(306)は、各パッチが2D空間の平面に対する深度場によって記述され得るように、点群を、重なり合っていてもいなくてもよいパッチのセット(例えば、パッチは、点群によって記述される表面の連続したサブセットとして定義される)にセグメント化する。いくつかの実施形態では、パッチ生成モジュール(306)は、再構成エラーを最小化しながら、点群を滑らかな境界を有する最小数のパッチに分解することを目的とする。
パッチ情報モジュール(304)は、パッチのサイズおよび形状を示すパッチ情報を収集することができる。いくつかの例では、パッチ情報は画像フレームにパッキングされ、次いで補助パッチ情報圧縮モジュール(338)によって符号化され、圧縮された補助パッチ情報を生成することができる。
パッチパッキングモジュール(308)は、抽出されたパッチを2次元(2D)グリッド上にマッピングすると同時に、未使用空間を最小限に抑え、グリッドのすべてのM×M(たとえば、16×16)個のブロックが固有のパッチと関連付けられることを保証するように構成される。効率的なパッチパッキングは、未使用の空間を最小化するか、または時間的一貫性を確保することのいずれかによって、圧縮効率に直接影響を与える可能性がある
ジオメトリ画像生成モジュール(310)は、所与のパッチ位置での点群のジオメトリに関連付けられた2Dジオメトリ画像を生成することができる。テクスチャ画像生成モジュール(312)は、所与のパッチ位置における点群のテクスチャと関連付けられた2Dテクスチャ画像を生成することができる。ジオメトリ画像生成モジュール(310)およびテクスチャ画像生成モジュール(312)は、パッキング処理中に計算された3Dから2Dへのマッピングを利用して、点群のジオメトリおよびテクスチャを画像として記憶する。複数の点が同じサンプルに投影される場合をより良好に処理するために、各パッチは、層と呼ばれる2つの画像に投影される。一例では、ジオメトリ画像は、YUV420-8ビットフォーマットのWxHの単色フレームによって表される。テクスチャ画像を生成するために、テクスチャ生成手順は、再サンプリングされた点に関連付けられる色を計算するために、再構成/平滑化されたジオメトリを利用する。
占有マップモジュール(314)は、各単位でパディング情報を記述する占有マップを生成することができる。たとえば、占有画像は、グリッドの各セルについて、セルが空の空間に属するか点群に属するかを示すバイナリマップを含む。一例では、占有マップは、画素がパディングされているか否かを画素ごとに記述するバイナリ情報を使用する。別の例では、占有マップは、画素のブロックがパディングされているか否かを画素のブロックごとに記述するバイナリ情報を使用する。
占有マップモジュール(314)によって生成された占有マップは、可逆符号化または非可逆符号化を使用して圧縮され得る。可逆符号化が使用されるとき、エントロピー圧縮モジュール(334)は、占有マップを圧縮するために使用される。非可逆符号化が使用されるとき、ビデオ圧縮モジュール(332)は、占有マップを圧縮するために使用される。
パッチパッキングモジュール(308)は、画像フレームでパッキングされた2Dパッチ間にいくつかの空き空間を残すことができることに留意されたい。画像パディングモジュール(316)および(318)は、2Dビデオおよび画像コーデックに適し得る画像フレームを生成するために、空き空間を埋めることができる(パディングと呼ばれる)。画像パディングは、未使用の空間を冗長な情報で埋めることができる背景充填とも呼ばれる。いくつかの例では、良好な背景充填はビットレートを最小限に増加させるが、パッチ境界の周りに著しい符号化歪みを導入しない。
ビデオ圧縮モジュール(322)、(323)、および(332)は、HEVC、VVCなどの適切なビデオコーディング規格に基づいて、パディングされたジオメトリ画像、パディングされたテクスチャ画像、および占有マップなどの2D画像を符号化することができる。一例では、ビデオ圧縮モジュール(322)、(323)、および(332)は、別々に動作する個々のコンポーネントである。別の例では、ビデオ圧縮モジュール(322)、(323)、および(332)を単一のコンポーネントとして実装できることに留意されたい。
いくつかの例では、平滑化モジュール(336)は、再構成されたジオメトリ画像の平滑化画像を生成するように構成される。平滑化された画像は、テクスチャ画像生成(312)に提供され得る。次に、テクスチャ画像生成(312)は、再構成されたジオメトリ画像に基づいてテクスチャ画像の生成を調整することができる。たとえば、符号化および復号の際にパッチ形状(たとえば、ジオメトリ)に多少の歪みがある場合には、テクスチャ画像を生成する際にその歪みを考慮して、パッチ形状の歪みを補正するようにしてもよい。
いくつかの実施形態では、グループ拡張(320)は、符号化利得ならびに再構成された点群の視覚的品質を改善するために、冗長な低周波数コンテンツでオブジェクト境界の周りに画素をパディングするように構成される。
マルチプレクサ(324)は、圧縮されたジオメトリ画像、圧縮されたテクスチャ画像、圧縮された占有マップ、圧縮された補助パッチ情報を圧縮されたビットストリームに多重化することができる。
図4は、いくつかの実施形態による、点群フレームに対応する圧縮されたビットストリームを復号するためのV-PCCデコーダ(400)のブロック図を示す。いくつかの実施形態では、V-PCCデコーダ(400)は、通信システム(100)およびストリーミングシステム(200)で使用され得る。たとえば、デコーダ(210)は、V-PCCデコーダ(400)と同様に動作するように構成され得る。V-PCCデコーダ(400)は、圧縮されたビットストリームを受信し、圧縮されたビットストリームに基づいて再構成された点群を生成する。
図4の例では、V-PCCデコーダ(400)は、デマルチプレクサ(432)と、ビデオ解凍モジュール(434)および(436)と、占有マップ解凍モジュール(438)と、補助パッチ情報解凍モジュール(442)と、ジオメトリ再構成モジュール(444)と、平滑化モジュール(446)と、テクスチャ再構成モジュール(448)と、色平滑化モジュール(452)とを含む。
デマルチプレクサ(432)は、圧縮されたビットストリームを受信し、圧縮されたテクスチャ画像、圧縮されたジオメトリ画像、圧縮された占有マップ、および圧縮された補助パッチ情報に分離することができる。
ビデオ解凍モジュール(434)および(436)は、適切な規格(たとえば、HEVC、VVCなど)により圧縮された画像を復号し、解凍された画像を出力することができる。たとえば、ビデオ解凍モジュール(434)は、圧縮されたテクスチャ画像を復号して、解凍されたテクスチャ画像を出力し、ビデオ解凍モジュール(436)は、圧縮されたジオメトリ画像を復号し、解凍されたジオメトリ画像を出力する。
占有マップ解凍モジュール(438)は、適切な規格(たとえば、HEVC、VVCなど)により圧縮された占有マップを復号し、解凍された占有マップを出力することができる。
補助パッチ情報解凍モジュール(442)は、適切な規格(たとえば、HEVC、VVCなど)により圧縮された補助パッチ情報を復号し、解凍された補助パッチ情報を出力することができる。
ジオメトリ再構成モジュール(444)は、解凍されたジオメトリ画像を受信し、解凍された占有マップおよび解凍された補助パッチ情報に基づいて再構成された点群ジオメトリを生成することができる。
平滑化モジュール(446)は、パッチのエッジでの不一致を平滑化することができる。平滑化手順は、圧縮アーチファクトに起因してパッチ境界で生じる可能性がある潜在的な不連続性を緩和することを目的とする。いくつかの実施形態では、パッチ境界上に配置される画素に平滑化フィルタが適用され、圧縮/解凍によって生じる可能性がある歪みを緩和することができる。
テクスチャ再構成モジュール(448)は、解凍されたテクスチャ画像および平滑化ジオメトリに基づいて点群の点についてテクスチャ情報を決定することができる。
色平滑化モジュール(452)は、色の不一致を平滑化することができる。3D空間内の隣接していないパッチは、2Dビデオ内で互いに隣接してパッキングされることが多い。いくつかの例では、隣接していないパッチからの画素値は、ブロックベースのビデオコーデックによって混合される場合がある。色平滑化の目的は、パッチ境界に現れる可視アーチファクトを低減することである。
図5は、本開示の一実施形態によるビデオデコーダ(510)のブロック図を示す。ビデオデコーダ(510)は、V-PCCデコーダ(400)で使用され得る。たとえば、ビデオ解凍モジュール(434)および(436)、占有マップ解凍モジュール(438)は、ビデオデコーダ(510)と同様に構成され得る。
ビデオデコーダ(510)は、たとえば符号化されたビデオシーケンスのような、圧縮された画像からシンボル(521)を再構成するためのパーサ(520)を含み得る。これらのシンボルのカテゴリは、ビデオデコーダ(510)の動作を管理するために使用される情報を含む。パーサ(520)は、受信した符号化されたビデオシーケンスを解析/エントロピー復号し得る。符号化されたビデオシーケンスの符号化は、ビデオコーディング技術または規格に従うことができ、可変長符号化、ハフマン符号化、文脈依存の有無にかかわらず算術符号化などを含む様々な原則に従うことができる。パーサ(520)は、グループに対応する少なくとも1つのパラメータに基づいて、符号化されたビデオシーケンスから、ビデオデコーダ内の画素のサブグループの少なくとも1つのサブグループパラメータのセットを抽出し得る。サブグループは、ピクチャグループ(GOP)、ピクチャ、タイル、スライス、マクロブロック、符号化ユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含むことができる。パーサ(520)はまた、変換係数、量子化パラメータ値、動きベクトルなどのような符号化されたビデオシーケンス情報から抽出することができる。
パーサ(520)は、シンボル(521)を作成するために、バッファメモリから受信したビデオシーケンスに対してエントロピー復号/解析動作を実行することができる。
シンボル(521)の再構成は、符号化されたビデオピクチャまたはその一部のタイプ(たとえば、ピクチャ間およびピクチャ内、ブロック間およびブロック内)、および他の要因に応じて、複数の異なるユニットを含み得る。どのユニットがどのように関与するかは、パーサ(520)によって符号化されたビデオシーケンスから解析されたサブグループ制御情報によって制御することができる。パーサ(520)と以下の複数のユニットとのそのようなサブグループ制御情報の流れは、明確にするために図示されていない。
既に言及した機能ブロックを超えて、ビデオデコーダ(510)は、以下で説明されるように、概念的にいくつかの機能ユニットに細分され得る。商業的制約の下で動作する実際の実装では、これらのユニットの多くは互いに密接に相互作用し、少なくとも部分的には互いに統合することができる。しかしながら、開示されている主題を説明するためには、以下の機能ユニットへの概念的細分が適切である。
第1のユニットはスケーラ/逆変換ユニット(551)である。スケーラ/逆変換ユニット(551)は、量子化された変換係数、ならびに使用する変換、ブロックサイズ、量子化係数、量子化スケーリング行列などを含む制御情報を、パーサ(520)からシンボル(521)として受信する。スケーラ/逆変換ユニット(551)は、アグリゲータ(555)に入力され得るサンプル値を含むブロックを出力できる。
場合によっては、スケーラ/逆変換(551)の出力サンプルは、イントラ符号化されたブロックに関係する場合があり、すなわち、それは、以前に再構成されたピクチャからの予測情報を使用していないが、現在のピクチャの以前に再構成された部分からの予測情報を使用できるブロックである。そのような予測情報は、イントラピクチャ予測ユニット(552)によって提供され得る。場合によっては、イントラピクチャ予測ユニット(552)は、現在のピクチャバッファ(558)からフェッチされた周囲の既に再構成された情報を使用して、再構成中のブロックと同じサイズおよび形状のブロックを生成する。現在のピクチャバッファ(558)は、たとえば、部分的に再構成された現在のピクチャおよび/または完全に再構成された現在のピクチャをバッファに入れる。アグリゲータ(555)は、場合によっては、サンプルごとに、イントラ予測ユニット(552)が生成した予測情報を、スケーラ/逆変換ユニット(551)によって提供される出力サンプル情報に追加する。
他の場合では、スケーラ/逆変換ユニット(551)の出力サンプルは、インター符号化され、潜在的に動き補償されたブロックに関係する場合がある。このような場合、動き補償予測ユニット(553)は、参照ピクチャメモリ(557)にアクセスして、予測に使用されるサンプルをフェッチすることができる。ブロックに関連するシンボル(521)に従ってフェッチされたサンプルを動き補償した後、これらのサンプルは、出力サンプル情報を生成するために、アグリゲータ(555)によってスケーラ/逆変換ユニット(551)の出力に追加できる(この場合、残差サンプルまたは残差信号と呼ばれる)。動き補償予測ユニット(553)が予測サンプルをフェッチする参照ピクチャメモリ(557)内のアドレスは、たとえばX、Y、および参照画像成分を有することができるシンボル(521)の形で動き補償予測ユニット(553)に利用可能な動きベクトルによって制御することができる。動き補償はまた、サブサンプルの正確な動きベクトルが使用されているときに参照ピクチャメモリ(557)からフェッチされたサンプル値の補間、動きベクトル予測機構などを含むことができる。
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)で様々なループフィルタリング技術に依存する場合がある。ビデオ圧縮技術は、符号化されたビデオシーケンス(符号化されたビデオビットストリームとも呼ばれる)に含まれるパラメータによって制御され、パーサ(520)からのシンボル(521)としてループフィルタユニット(556)に利用可能になるインループフィルタ技術を含むことができるが、符号化されたピクチャまたは符号化されたビデオシーケンスの(復号順で)前の部分の復号中に取得されたメタ情報に応答することもできるほか、以前に再構成およびループフィルタリングされたサンプル値に応答することもできる。
ループフィルタユニット(556)の出力は、レンダリングデバイスに出力され得るほか、将来のピクチャ間予測で使用するために参照ピクチャメモリ(557)にも記憶され得るサンプルストリームであってもよい。
特定の符号化されたピクチャは、十分に再構成されると、将来の予測のための参照ピクチャとして使用され得る。現在のピクチャに対応する符号化されたピクチャが完全に再構成され、符号化されたピクチャが参照画像として識別されると(たとえば、パーサ(520)によって)、現在のピクチャバッファ(558)は、参照ピクチャメモリ(557)の一部になることができ、次の符号化されたピクチャの再構成を開始する前に、新しい現在のピクチャバッファが再割り当てされ得る。
ビデオデコーダ(510)は、ITU-T Rec.H.265などの規格における所定のビデオ圧縮技術に従って復号動作を実行し得る。符号化されたビデオシーケンスは、符号化されたビデオシーケンスがビデオ圧縮技術または規格の構文と、ビデオ圧縮技術または規格に文書化されたプロファイルの両方に準拠するという意味で、使用されているビデオ圧縮技術または規格によって指定された構文に準拠し得る。具体的には、プロファイルは、ビデオ圧縮技術または規格で利用可能なすべてのツールの中から、そのプロファイルの下での使用に利用可能な唯一のツールとして特定のツールを選択し得る。また、コンプライアンスのために必要なのは、符号化されたビデオシーケンスの複雑さが、ビデオ圧縮技術または規格のレベルによって定義された範囲内にあることであり得る。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構成サンプルレート(たとえば毎秒メガサンプルで測定される)、および最大参照ピクチャサイズなどを制限する。レベルによって設定される制限は、場合によっては、仮想参照デコーダ(HRD)仕様および符号化されたビデオシーケンスでシグナリングされたHRDバッファ管理のためのメタデータによってさらに制限することができる。
図6は、本開示の一実施形態によるビデオエンコーダ(603)のブロック図を示す。ビデオエンコーダ(603)は、点群を圧縮するV-PCCエンコーダ(300)において使用され得る。一例では、ビデオ圧縮モジュール(322)および(323)と、ビデオ圧縮モジュール(332)とは、エンコーダ(603)と同様に構成されている。
ビデオエンコーダ(603)は、パディングされたジオメトリ画像、パディングされたテクスチャ画像などの画像を受信し、圧縮された画像を生成することができる。
一実施形態によれば、エンコーダ(603)は、リアルタイムで、またはアプリケーションによって必要とされる他の任意の時間制約の下で、ソースビデオシーケンスのピクチャ(画像)を符号化して符号化されたビデオシーケンス(圧縮画像)に圧縮することができる。適切な符号化速度を強制することは、コントローラ(650)の1つの機能である。いくつかの実施形態では、コントローラ(650)は、以下に説明するように他の機能ユニットを制御し、他の機能ユニットに機能的に結合される。分かりやすくするために、結合は描かれていない。コントローラ(650)によって設定されるパラメータは、レート制御関連のパラメータ(ピクチャスキップ、量子化器、レート歪み最適化手法のラムダ値など)、ピクチャサイズ、ピクチャグループ(GOP)レイアウト、最大動きベクトル検索範囲などを含むことができる。コントローラ(650)は、特定のシステム設計に最適化されたビデオエンコーダ(603)に関する他の適切な機能を有するように構成され得る。
いくつかの実施形態では、ビデオエンコーダ(603)は、符号化ループで動作するように構成される。過度に簡略化された説明として、一例では、符号化ループは、ソースコーダ(630)(たとえば、符号化される入力ピクチャと、(1つまたは複数の)参照ピクチャとに基づいて、シンボルストリームのようなシンボルを生成することを担当する)と、ビデオエンコーダ(603)に組み込まれた(ローカル)デコーダ(633)とを含むことができる。デコーダ(633)は、(リモート)デコーダも作成するのと同様の方法でサンプルデータを作成するためにシンボルを再構成する(開示された主題で考慮されるビデオ圧縮技術では、シンボルと符号化されたビデオビットストリームとの間の任意の圧縮が可逆的であるため)。再構成されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(634)に入力される。シンボルストリームの復号により、デコーダ位置(ローカルまたはリモート)に関係なくビットイグザクト(bit-exact)な結果が得られるため、参照ピクチャメモリ(634)内のコンテンツもまたローカルエンコーダとリモートエンコーダとの間でビットイグザクトになる。言い換えると、エンコーダの予測部分は、復号中に予測を使用するときにデコーダが「見る」のとまったく同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャの同期性(および、たとえばチャネルエラーのために同期性を維持できない場合に生じるドリフト)のこの基本原理は、いくつかの関連技術でも同様に使用されている。
「ローカル」デコーダ(633)の動作は、図5に関連して上記で既に詳細に説明された、ビデオデコーダ(510)などの「リモート」デコーダの動作と同じであり得る。しかしながら、図5も簡単に参照すると、シンボルが利用可能であり、エントロピーコーダ(645)およびパーサ(520)による符号化されたビデオシーケンスへのシンボルの符号化/復号化は可逆的であり得るため、パーサ(520)を含むビデオデコーダ(510)のエントロピー復号部分は、ローカルデコーダ(633)に十分実装されていない場合がある。
現時点で行うことができる観察は、デコーダに存在する解析/エントロピー復号以外のデコーダ技術も、対応するエンコーダに実質的に同一の機能形式で必ず存在する必要があるということである。このため、開示されている主題はデコーダ動作に焦点を当てている。エンコーダ技術の説明は、包括的に説明されているデコーダ技術の逆であるため、省略され得る。特定の領域でのみ、より詳細な説明が必要であり、以下に提供される。
動作中、いくつかの例では、ソースコーダ(630)は、「参照画像」として指定されたビデオシーケンスからの1つ以上の以前に符号化された画像を参照して入力画像を予測的に符号化する動き補償された予測符号化を実行することができる。このようにして、符号化エンジン(632)は、入力ピクチャの画素ブロックと、入力ピクチャへの(1つまたは複数の)予測参照として選択され得る(1つまたは複数の)参照ピクチャの画素ブロックとの間の差異を符号化する。
ローカルビデオデコーダ(633)は、ソースコーダ(630)によって作成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャの符号化されたビデオデータを復号することができる。符号化エンジン(632)の動作は、有利には、非可逆プロセスであってもよい。符号化されたビデオデータがビデオデコーダ(図6には示されていない)で復号され得るとき、再構成されたビデオシーケンスは、通常、多少の誤差を伴うソースビデオシーケンスの複製であり得る。ローカルビデオデコーダ(633)は、参照ピクチャ上でビデオデコーダによって実行され得る復号プロセスを複製し、再構成された参照ピクチャを参照ピクチャキャッシュ(634)に記憶させてもよい。このようにして、ビデオエンコーダ(603)は、遠端ビデオデコーダによって取得される(伝送エラーがない)再構成された参照ピクチャとして共通のコンテンツを有する再構成された参照ピクチャのコピーをローカルに記憶することができる。
予測子(635)は、符号化エンジン(632)の予測検索を実行することができる。すなわち、符号化される新しいピクチャに対して、予測子(635)は、サンプルデータ(候補参照画素ブロックとして)または新しいピクチャの適切な予測参照として役立ち得る参照ピクチャ動きベクトル、ブロック形状などの特定のメタデータについて、参照ピクチャメモリ(634)を検索し得る。予測子(635)は、適切な予測参照を見つけるために、画素ブロックごとに1つのサンプルブロックで動作し得る。場合によっては、予測子(635)によって取得された検索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(634)に記憶された複数の参照ピクチャから引き出された予測参照を有することができる。
コントローラ(650)は、たとえば、ビデオデータを符号化するために使用されるパラメータおよびサブグループパラメータの設定を含む、ソースコーダ(630)の符号化動作を管理することができる。
前述のすべての機能ユニットの出力は、エントロピーコーダ(645)でエントロピー符号化を受けることがある。エントロピーコーダ(645)は、ハフマン符号化、可変長符号化、算術符号化などの技術に従ってシンボルを可逆圧縮することにより、様々な機能ユニットによって生成されたシンボルを符号化されたビデオシーケンスに変換する。
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理することができる。符号化中に、コントローラ(650)は、それぞれの符号化されたピクチャに特定の符号化されたピクチャタイプを割り当てることがあり、これは、それぞれのピクチャに適用され得る符号化技術に影響を及ぼし得る。たとえば、ピクチャは多くの場合、次のピクチャタイプのいずれかとして割り当てられ得る。
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス内の他のピクチャを使用せずに符号化および復号され得るものであり得る。一部のビデオコーデックは、たとえば独立デコーダリフレッシュ(「IDR:Independent Decoder Refresh」)ピクチャを含む様々なタイプのイントラピクチャに対応する。当業者は、Iピクチャの変形、ならびに、それらのそれぞれの用途および機能を認識している。
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために、最大で1つの動きベクトルおよび参照インデックスを使用するイントラ予測またはインター予測を使用して、符号化および復号され得るピクチャであり得る。
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために、最大で2つの動きベクトルおよび参照インデックスを使用するイントラ予測またはインター予測を使用して、符号化および復号され得るピクチャであり得る。同様に、複数予測ピクチャは、単一ブロックの再構成のために3つ以上の参照ピクチャおよび関連するメタデータを使用し得る。
ソースピクチャは、一般的には、複数のサンプルブロック(たとえば、4×4、8×8、4×8、または16×16のサンプルそれぞれのブロック)に空間的に細分され、ブロックごとに符号化され得る。ブロックは、ブロックのそれぞれのピクチャに適用される符号化割り当てによって決定されるように、他の(既に符号化された)ブロックを参照して予測的に符号化され得る。たとえば、Iピクチャのブロックは、非予測的に符号化され得るか、または同じピクチャの既に符号化されたブロックを参照して予測的に符号化され得る(空間予測またはイントラ予測)。Pピクチャの画素ブロックは、以前に符号化された1つの参照ピクチャを参照して、空間予測を介して、または時間予測を介して、予測的に符号化され得る。Bピクチャのブロックは、1つまたは2つの以前に符号化された参照ピクチャを参照して、空間予測を介して、または時間予測を介して、予測的に符号化され得る。
ビデオエンコーダ(603)は、ITU-T Rec.H.265などの所定のビデオコーディング技術または規格により符号化動作を実行することができる。その動作において、ビデオエンコーダ(603)は、入力ビデオシーケンスにおける時間的および空間的冗長性を利用する予測符号化動作を含む、様々な圧縮動作を実行し得る。したがって、符号化されたビデオデータは、使用されているビデオコーディング技術または規格によって指定された構文に準拠し得る。
ビデオは、時系列における複数のソース画像(画像)の形態であってもよい。イントラピクチャ予測(しばしばイントラ予測と略される)は、所与のピクチャにおける空間的相関を利用し、インターピクチャ予測は、ピクチャ間の(時間的または他の)相関を利用する。一例では、現在のピクチャと呼ばれる、符号化/復号中の特定のピクチャがブロックに分割される。対象のピクチャ中のブロックがビデオ内の、以前に符号化されて依然としてバッファリングされている参照ピクチャ内の参照ブロックに類似する場合、対象のピクチャ中のブロックを、動きベクトルと称されているベクトルによって符号化することができる。動きベクトルは、参照ピクチャの参照ブロックを指し、複数の参照ピクチャが使用されている場合、参照ピクチャを識別する第3の次元を有することができる。
いくつかの実施形態では、インター画像予測において双予測技術を使用することができる。双予測技術によれば、両方とも復号順においてビデオ内で現在のピクチャより前にある(が、表示順でそれぞれ過去および未来のものであってもよい)第1の参照ピクチャおよび第2の参照ピクチャなどの2つの参照ピクチャが使用される。現在のピクチャ内のブロックは、第1の参照ピクチャ内の第1の参照ブロックを指す第1の動きベクトル、および第2の参照ピクチャ内の第2の参照ブロックを指す第2の動きベクトルによって符号化することができる。ブロックは、第1の参照ブロックと第2の参照ブロックとの組み合わせによって予測され得る。
さらに、符号化効率を改善するために、インターピクチャ予測にマージモード技術を使用することができる。
本開示の一部の実施形態によれば、インターピクチャ予測およびイントラピクチャ予測などの予測は、ブロック単位で実行される。たとえば、HEVC規格によれば、ビデオピクチャのシーケンス内のピクチャは、圧縮のためにコーディングツリーユニット(CTU:coding tree unit)に分割され、ピクチャ内のCTUは、64×64画素、32×32画素、または16×16画素などの同じサイズを有する。一般に、CTUは、1つのルマ符号化ツリーブロック(CTB)および2つのクロマCTBである3つのCTBを含む。各CTUは、1つまたは複数の符号化ユニット(CU)に再帰的に四分木分割され得る。たとえば、64x64画素のCTUは、64x64画素の1つのCU、または32x32画素の4つのCU、または16x16画素の16個のCUに分割され得る。一例では、各CUは、インター予測タイプまたはイントラ予測タイプなどのCUの予測タイプを決定するために分析される。CUは、時間的および/または空間的な予測可能性に応じて、1つ以上の予測ユニット(PU:prediction unit)に分割される。一般に、各PUは、ルマ予測ブロック(PB:prediction block)と、2つのクロマPBとを含む。一実施形態では、符号化(符号化/復号)における予測動作は、予測ブロックの単位で実行される。予測ブロックの例としてルマ予測ブロックを使用すると、予測ブロックは、8×8画素、16×16画素、8×16画素、および16×8画素などの画素の値(たとえば、ルマ値)の行列を含む。
図7は、いくつかの実施形態によるG-PPCエンコーダ(700)のブロック図を示す。エンコーダ(700)は、点群データを受信し、点群データを圧縮して、圧縮された点群データを搬送するビットストリームを生成するように構成され得る。一実施形態では、エンコーダ(700)は、位置量子化モジュール(710)、重複点除去モジュール(712)、八分木符号化モジュール(730)、属性転送モジュール(720)、詳細レベル(LOD)生成モジュール(740)、属性予測モジュール(750)、残差量子化モジュール(760)、算術符号化モジュール(770)、逆残差量子化モジュール(780)、加算モジュール(781)、および再構成された属性値を記憶するためのメモリ(790)を含むことができる。
図示されるように、入力点群(701)はエンコーダ(700)で受信され得る。点群(701)の位置(たとえば、3D座標)が量子化モジュール(710)に提供される。量子化モジュール(710)は、座標を量子化して量子化された位置を生成するように構成される。重複点除去モジュール(712)は、量子化された位置を受信し、フィルタ処理を実行して重複点を識別および除去するように構成される。八分木符号化モジュール(730)は、重複点除去モジュール(712)からフィルタリングされた位置を受信し、八分木ベースの符号化プロセスを実行して、ボクセルの3Dグリッドを記述する占有コードのシーケンスを生成するように構成される。占有コードは算術符号化モジュール(770)に提供される。
属性転送モジュール(720)は、入力点群の属性を受信し、複数の属性値がそれぞれのボクセルに関連付けられているときに、各ボクセルの属性値を決定するための属性転送プロセスを実行するように構成される。属性転送処理は、八分木符号化モジュール(730)から出力された並べ替えられた点に対して実行することができる。転送動作後の属性は、属性予測モジュール(750)に提供される。LOD生成モジュール(740)は、八分木符号化モジュール(730)から出力された並べ替えられた点に対して動作し、点を異なるLODに再編成するように構成される。LOD情報は属性予測モジュール(750)に供給される。
属性予測モジュール(750)は、LOD生成モジュール(740)からのLOD情報によって示されるLODベースの順序により点を処理する。属性予測モジュール(750)は、メモリ(790)に記憶された現在点の隣接点のセットの再構成された属性に基づいて、現在点の属性予測を生成する。続いて、属性転送モジュール(720)から受信した元の属性値およびローカルに生成された属性予測に基づいて、予測残差が取得され得る。候補インデックスがそれぞれの属性予測プロセスで使用されるとき、選択された予測候補に対応するインデックスが算術符号化モジュール(770)に提供され得る。
残差量子化モジュール(760)は、属性予測モジュール(750)から予測残差を受信し、量子化を実行して量子化された残差を生成するように構成される。量子化された残差は算術符号化モジュール(770)に提供される。
逆残差量子化モジュール(780)は、残差量子化モジュール(760)から量子化された残差を受信し、残差量子化モジュール(760)で実行された量子化演算の逆を実行することによって再構成された予測残差を生成するように構成される。加算モジュール(781)は、逆残差量子化モジュール(780)からの再構成された予測残差、および属性予測モジュール(750)からのそれぞれの属性予測を受信するように構成される。再構成された予測残差と属性予測とを組み合わせることによって、再構成された属性値が生成され、メモリ(790)に記憶される。
算術符号化モジュール(770)は、占有コード、候補インデックス(使用される場合)、量子化された残差(生成される場合)、および他の情報を受信し、受信した値または情報をさらに圧縮するためにエントロピー符号化を実行するように構成される。これにより、圧縮された情報を搬送する圧縮されたビットストリーム(702)が生成され得る。ビットストリーム(702)は、圧縮されたビットストリームを復号するデコーダに送信されるか、あるいは提供されてもよく、またはストレージデバイスに記憶されてもよい。
図8は、一実施形態によるG-PCCデコーダ(800)のブロック図を示す。デコーダ(800)は、圧縮されたビットストリームを受信し、点群データ解凍を実行してビットストリームを解凍し、復号化された点群データを生成するように構成され得る。一実施形態では、デコーダ(800)は、算術復号モジュール(810)、逆残差量子化モジュール(820)、八分木復号モジュール(830)、LOD生成モジュール(840)、属性予測モジュール(850)、および再構成された属性値を記憶するためのメモリ(860)を含むことができる。
図示されるように、圧縮されたビットストリーム(801)は、算術復号モジュール(810)で受信され得る。算術復号モジュール(810)は、圧縮されたビットストリーム(801)を復号して、量子化された残差(生成された場合)および点群の占有コードを取得するように構成される。八分木復号モジュール(830)は、占有コードにより点群の点の再構成位置を決定するように構成される。LOD生成モジュール(840)は、再構成位置に基づいて点を異なるLODに再編成し、LODベースの順序を決定するように構成される。逆残差量子化モジュール(820)は、算術復号モジュール(810)から受信した量子化された残差に基づいて再構成された残差を生成するように構成される。
属性予測モジュール(850)は、LODベースの順序により点の属性予測を決定するための属性予測プロセスを実行するように構成される。たとえば、現在点の属性予測は、メモリ(860)に記憶された現在点の隣接点の再構成された属性値に基づいて決定され得る。属性予測モジュール(850)は、属性予測をそれぞれの再構成された残差と組み合わせて、現在点の再構成された属性を生成することができる。
属性予測モジュール(850)から生成された再構成された属性のシーケンスは、八分木復号モジュール(830)から生成された再構成位置と共に、一例では、デコーダ(800)から出力される復号された点群(802)に対応する。加えて、再構成された属性もメモリ(860)に記憶され、その後の点の属性予測を導出するためにその後使用され得る。
様々な実施形態において、エンコーダ(300)、デコーダ(400)、エンコーダ(700)、および/またはデコーダ(800)は、ハードウェア、ソフトウェア、またはそれらの組み合わせで実装され得る。たとえば、エンコーダ(300)、デコーダ(400)、エンコーダ(700)、および/またはデコーダ(800)は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)などの、ソフトウェアを用いても、用いなくても動作する1つ以上の集積回路(IC)などの処理回路を用いて実装され得る。別の例では、エンコーダ(300)、デコーダ(400)、エンコーダ(700)、および/またはデコーダ(800)は、不揮発性(または非一時的)コンピュータ可読ストレージ媒体に記憶された命令を含むソフトウェアまたはファームウェアとして実装され得る。命令は、1つ以上のプロセッサなどの処理回路によって実行されると、処理回路に、エンコーダ(300)、デコーダ(400)、エンコーダ(700)、および/またはデコーダ(800)の機能を実行させる。
本明細書で開示された属性予測技術を実装するように構成された属性予測モジュール(750)および(850)は、図7および図8に示されたものと同様または異なる構造を有し得る他のデコーダまたはエンコーダに含まれ得ることに留意されたい。加えて、エンコーダ(700)およびデコーダ(800)は、同じデバイス、または様々な例では別個のデバイスに含まれ得る。
本開示のいくつかの態様によれば、ジオメトリ情報と、色、反射率などの点群の関連する属性とは、別々に圧縮され得る(たとえば、テストモデル13(TMC13)モデル)。点群内の点の3D座標を含む点群のジオメトリ情報は、分割の占有情報を用いて八分木分割によって符号化され得る。属性は、たとえば、予測、リフティングおよび領域適応型階層変換技術などの技術を使用して、再構成されたジオメトリに基づいて圧縮され得る。
本開示のいくつかの態様によれば、3次元空間は、八分木分割を使用して分割され得る。八分木は、2次元空間における四分木の3次元類似体である。八分木分割技術とは、3次元空間を8つの八分円に再帰的に細分する分割技術を指し、八分木構造とは、分割を表すツリー構造を指す。一例では、八分木構造の各ノードは3次元空間に対応し、ノードは、エンドノード(分割なし、いくつかの例では葉ノードとも呼ばれる)またはさらなる分割を伴うノードとすることができる。ノードでの分割は、ノードによって表される3次元空間を8つの八分円に分割することができる。いくつかの例では、特定のノードの分割に対応するノードは、特定のノードの子ノードと呼ばれ得る。
図9は、本開示のいくつかの実施形態による、八分木分割技術に基づく3Dキューブ(900)の分割(ノードに対応する)を描写する図を示す。分割は、図9に示されるように、3Dキューブ(900)を8つのより小さい等しいサイズのキューブ0~7に分割することができる。
八分木分割技術(たとえば、TMC13では)は、元の3D空間をより小さい単位に再帰的に分割することができ、すべてのサブ空間の占有情報は符号化されてジオメトリ位置を表すことができる。
いくつかの実施形態(たとえば、TMC13)では、八分木ジオメトリコーデックが使用される。八分木ジオメトリコーデックは、ジオメトリ符号化を実行することができる。いくつかの例では、ジオメトリ符号化は立方体ボックス上で実行される。たとえば、立方体ボックスは、2つの点(0、0、0)および(2M-1、2M-1、2M-1)によって定義される軸に整列した境界ボックスBとすることができ、2M-1は境界ボックスBのサイズを定義し、Mはビットストリームで指定され得る。
次いで、立方体ボックスを再帰的に細分して八分木構造が構築される。たとえば、2点(0、0、0)および(2M-1、2M-1、2M-1)によって定義される立方体ボックスは、8つのサブ立方体ボックスに分割され、次いで占有コードと呼ばれる8ビットコードが生成される。占有コードの各ビットは、サブ立方体ボックスに関連付けられ、ビットの値は、関連するサブ立方体ボックスが点群の任意の点を含むか否かを示すために使用される。たとえば、ビットの値1は、ビットに関連付けられたサブ立方体ボックスが点群の1つまたは複数の点を含むことを示し、ビットの値0は、ビットに関連付けられたサブ立方体ボックスが点群の点を含まないことを示す。
さらに、空のサブ立方体ボックス(たとえば、サブ立方体ボックスに関連付けられたビットの値は0である)の場合、それ以上の分割はサブ立方体ボックスに適用されない。サブ立方体ボックスが点群の1つ以上の点を有する場合(たとえば、サブ立方体ボックスに関連付けられたビットの値は1である)、サブ立方体ボックスは8つのより小さいサブ立方体ボックスにさらに分割され、サブ立方体ボックスについて占有コードが生成され、より小さいサブ立方体ボックスの占有を示すことができる。いくつかの例では、サブ立方体ボックスのサイズが1であるなどの所定の閾値に等しくなるまで、空でないサブ立方体ボックスに対して再分割演算が繰り返し実行され得る。いくつかの例では、サイズが1のサブ立方体ボックスはボクセルと呼ばれ、ボクセルよりも大きいサイズを有するサブ立方体ボックスは非ボクセルと呼ばれることがある。
図10は、本開示のいくつかの実施形態による、八分木分割(1010)および八分木分割(1010)に対応する八分木構造(1020)の一例を示す。図10は、八分木分割(1010)における2つのレベルの分割を示す。八分木構造(1020)は、八分木分割(1010)のための立方体ボックスに対応するノード(N0)を含む。第1のレベルでは、立方体ボックスは、図9に示される番号付け技術により0~7の番号が付けられた8つのサブ立方体ボックスに分割される。ノードN0の分割の占有コードはバイナリで「10000001」であり、これは、ノードN0-0によって表される第1のサブ立方体ボックスおよびノードN0-7によって表される第8のサブ立方体ボックスが点群の点を含み、他のサブ立方体ボックスが空であることを示す。
次に、第2のレベルの分割では、第1のサブ立方体ボックス(ノードN0-0によって表される)および第8のサブ立方体ボックス(ノードN0-7によって表される)は、それぞれ8つの八分円にさらに細分される。たとえば、第1のサブ立方体ボックス(ノードN0-0によって表される)は、図9に示される番号付け技術により0~7の番号が付けられた8つのより小さいサブ立方体ボックスに分割される。ノードN0-0の分割の占有コードはバイナリで「00011000」であり、これは第4のより小さいサブ立方体ボックス(ノードN0-0-3によって表される)および第5のより小さいサブ立方体ボックス(ノードN0-0-4によって表される)が点群の点を含み、他のより小さいサブ立方体ボックスが空であることを示す。第2のレベルでは、第8のサブ立方体ボックス(ノードN0-7によって表される)は、図10に示されるように、8つのより小さいサブ立方体ボックスに同様に分割される。
図10の例では、空でない立方体空間(たとえば、立方体ボックス、サブ立方体ボックス、より小さいサブ立方体ボックスなど)に対応するノードは灰色に着色され、陰影付きノードと呼ばれる。
本開示のいくつかの態様によれば、占有コードは、適切な符号化技術を使用して適切に圧縮され得る。いくつかの実施形態では、八分木構造における現在のノードの占有コードを圧縮するために、算術エンコーダが使用される。占有コードは、8ビット整数であるSとして表すことができ、S内の各ビットは、現在のノードの子ノードの占有状態を示す。一実施形態では、占有コードはビット単位の符号化を使用して符号化される。別の実施形態では、占有コードはバイト単位の符号化を使用して符号化される。いくつかの例(たとえば、TMC13)では、ビット単位の符号化はデフォルトで有効にされている。ビット単位の符号化およびバイト単位の符号化の両方とも、占有コードを符号化するためにコンテキストモデリングを用いて算術符号化を実行することができる。コンテキスト状態は、占有コードの符号化プロセス全体の開始時に初期化することができ、占有コードの符号化プロセス中に更新される。
現在のノードの占有コードを符号化するためのビット単位の符号化の一実施形態では、現在のノードのSの8つのビンが特定の順序で符号化される。Sの各ビンは、現在のノードの隣接ノードおよび/または隣接ノードの子ノードの占有状態を参照することによって符号化される。隣接ノードは、現在のノードと同じレベルにあり、現在のノードの兄弟ノードと呼ぶことができる。
現在のノードの占有コードを符号化するためのバイト単位の符号化の一実施形態では、占有コードS(1バイト)は、(1)P(たとえば、32)個の最も頻繁に使用される占有コードを追跡する適応ルックアップテーブル(A-LUT)、および(2)最後の異なる観察されたQ(たとえば、16)個の占有コードを追跡するキャッシュを参照することによって符号化することができる。
バイト単位の符号化のいくつかの例では、SがA-LUT内にあるか否かを示すバイナリフラグが符号化される。SがA-LUT内にある場合、A-LUT内のインデックスは、バイナリ算術エンコーダを使用して符号化される。SがA-LUT内にない場合、Sがキャッシュ内にあるか否かを示すバイナリフラグが符号化される。Sがキャッシュ内にある場合、キャッシュ内のそのインデックスのバイナリ表現は、バイナリ算術エンコーダを使用して符号化される。そうではなく、Sがキャッシュ内にない場合、Sのバイナリ表現は、バイナリ算術エンコーダを使用して符号化される。
いくつかの実施形態では、デコーダ側で、復号プロセスは、ビットストリームから境界ボックスの寸法を解析することによって開始することができる。境界ボックスは、点群のジオメトリ情報(たとえば、点群の点の占有情報)に従って立方体ボックスを分割するための八分木構造におけるルートノードに対応する立方体ボックスを示す。次いで、復号された占有コードに従って立方体ボックスを分割することにより、八分木構造が構築される。
本開示の一態様によれば、単一孤立点は、ノード内の単一の点として定義され、単一孤立点のジオメトリ座標を使用して符号化することができる。いくつかの例では、現在のノードが単一孤立点を符号化するのに的確であるとき(たとえば、高レベル構文において孤立モードがオンにされ、他の適切な条件が満たされているとき)、現在のノードが単一孤立点を有する(単一孤立点モードにあると言われる)か否かを示すためにフラグ(たとえば、単一孤立点フラグと呼ばれる)がシグナリングされる。現在のノードにおける単一孤立点フラグが真である場合、現在のノードは単一孤立点モードで符号化され、単一孤立点のジオメトリ座標は、さらなる八分木分割を伴わずに直接符号化される。単一孤立点フラグが偽である場合、現在のノードは、葉ノードに到達するまでさらに分割することができる。
いくつかの関連する例では、単一孤立点フラグは、単一のコンテキストを用いる算術符号化によって符号化される。単一のコンテキストは、単一孤立点フラグ自体の確率を参照する。本開示の態様は、親ノードの占有情報、隣接ノード(兄弟ノードとも呼ばれる)の情報など、他のノードの情報を利用して単一孤立点フラグを符号化するための技術を提供し、単一孤立点フラグの符号化効率を改善することができる。
本開示の一態様によれば、現在のノードの親ノードが孤立モードに適格であり、親ノードが1つのみの子ノード(たとえば、現在のノード)を有する場合には、現在のノードを単一孤立点モードで符号化することはできない。現在のノードが単一孤立点モードで符号化されている場合、現在のノードは親ノードの唯一の子であるため、親ノードは単一孤立点を有する。このため、親ノードは単一孤立点モードで符号化されるべきであり、さらに分割されることはなく、現在のノードに到達しない。上記の推論を利用することにより、現在のノードの単一孤立点フラグは、明示的にシグナリングされる代わりに偽である(たとえば、「0」の値を有する)と推論することができ、したがって、単一孤立点フラグを符号化するためのビットを節約することができる。
図11は、本開示のいくつかの実施形態による構文テーブル(1100)の一例を示す。構文テーブル(1100)は、現在のノードにおけるジオメトリ情報を復号および決定するために使用することができる。
構文テーブル(1100)において、変数「depth」は現在のノードの分割深度を示し、現在のノードは、インデックス「nodeIdx」を使用して識別することができる。構文テーブル(1100)において、変数「numSiblings」の値などの情報が、親ノードから受信される。変数「numSiblings」は、兄弟ノードの数(たとえば、現在のノードを含む)を現在のノードとして指定し、正の整数である。変数「numSiblings」の値は、親ノードの占有コードからの空でない子ノードの合計である。たとえば、親ノードの占有コードが「10000011」であるとき、変数「numSiblings」の値は3であり、親ノードの占有コードが「00000010」であるとき、変数「numSiblings」の値は1である。
構文テーブル(1100)において、孤立モードが許容されるか否かを示すために、高レベル構文においてパラメータ「geomIsolatedModeFlag」が指定され、孤立モードの最大分割深度を示すために、高レベル構文においてパラメータ「geomIsolatedModeMaxDepth」が指定される。(1101)によって示される条件は、現在のノードの孤立モードの適格性をチェックする。たとえば、パラメータ「geomIsolatedModeFlag」が真(たとえば、「1」の値を有する)であり、変数「depth」がパラメータ「geomIsolatedModeMaxDepth」以下であるとき、現在のノードにおいて孤立モードが適格である。なお、適格性テストは(1101)によって示される条件に限定されず、他の適切な形態をとることができることに留意されたい。
図11の例では、現在のノードが孤立モードに適格であるとき、および変数「numSiblings」が1に等しい場合(親ノードが、現在のノードである1つのみの子ノードを有することを示す)、図11で(1102)によって示される、単一孤立点モードを示すためのフラグ「geom_isolated_flag」は、現在のノードが単一孤立点モードで符号化されていないことを示すために、偽である(たとえば、「0」の値を有する)と推論することができる。
図11の例では、現在のノードが孤立モードに適格であるとき、および変数「numSiblings」が1に等しくない場合には(1より大きい場合、親ノードは2つ以上の子ノードを有する)、図11の(1103)によって示されるように、フラグ「geom_isolated_flag」がシグナリングされ、ビットストリームから復号することができる。
さらに、図11の例では、変数「isolated_position_x」、「isolated_position_y」、および「isolated_position_z」は、単一孤立点の位置の座標を指定するために使用される。たとえば、フラグ「geom_isolated_flag」が真である(たとえば、「1」の値を有する)とき、図11の(1104)によって示されるように、ビットストリームから変数「isolated_position_x」、「isolated_position_y」、および「isolated_position_z」を復号することができる。
さらに、図11の例では、フラグ「geom_isolated_flag」が偽である(たとえば、「0」の値を有する)とき、図11の(1105)によって示されるように、現在のノードはさらに分割され、次いで占有コードはビットストリームから復号される。
本開示の別の態様によれば、単一孤立点フラグは、追加のコンテキストを用いて、算術符号化で符号化することができる。追加のコンテキストに基づいて、コンテキストモデルが決定され、より良好な符号化効率で単一孤立点フラグを符号化することができる。たとえば、隣接する符号化されたノードからの情報および/または親ノードからの情報を、追加のコンテキストとして使用することができる。一実施形態では、変数「numSiblings」などの兄弟ノードの数は、単一孤立点フラグを符号化するための追加のコンテキストとして使用される。別の例では、親ノードが複数の子ノードを有し、現在のノードがいくつかの兄弟ノードの後に符号化されるときには、現在のノードの前の符号化された兄弟ノードの情報を、単一孤立点フラグを符号化するための追加のコンテキストとして使用することができる。
図12は、本開示の一実施形態によるプロセス(1200)の概要を示すフローチャートを示している。プロセス(1200)は、点群の復号プロセス中に使用することができる。様々な実施形態では、プロセス(1200)は、端末デバイス(110)の処理回路、エンコーダ(203)および/またはデコーダ(210)の機能を実行する処理回路、エンコーダ(300)、デコーダ(400)、エンコーダ(700)、および/またはデコーダ(800)の機能を実行する処理回路などの処理回路によって実行される。いくつかの実施形態では、プロセス(1200)はソフトウェア命令で実施され、したがって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(1200)を実行する。プロセスは(S1201)から始まり、(S1210)に進む。
(S1210)において、点群の圧縮データを搬送するビットストリームが受信される。
(S1220)において、点群の空間の3次元(3D)分割に対応する八分木構造内の現在のノードは、孤立モードに適格であると判定される。
(S1230)において、現在のノードが単一孤立点で符号化されているか否かを示す現在のノードの単一孤立点フラグは、別のノードの情報に基づいて決定される。
いくつかの実施形態では、現在のノードの親ノードの情報に基づいて単一孤立点フラグが決定される。いくつかの例では、現在のノードの単一孤立点フラグは、1つのみの子ノードを有する親ノードに応答して、偽の値(たとえば、「0」)を有すると推論される。いくつかの例では、親ノードの子ノードの数に基づいてコンテキストモデルが決定され、現在のノードの単一孤立点フラグは、コンテキストモデルに基づいてビットストリームから復号される。
いくつかの実施形態では、現在のノードの兄弟ノードの情報に基づいて単一孤立点フラグが決定される。たとえば、現在のノードの兄弟ノードの情報に基づいてコンテキストモデルが決定され、現在のノードの単一孤立点フラグは、コンテキストモデルに基づいてビットストリームから復号される。
いくつかの実施形態では、真の値を有する単一孤立点フラグに応答して、単一孤立点の座標がビットストリームから復号される。
いくつかの実施形態では、偽の値を有する単一孤立点フラグに応答して、現在のノードの占有コードがビットストリームから復号される。
次いで、処理は(S1299)に進み、終了する。
本開示で開示された技術は、別々に使用されてもよく、任意の順序で組み合わされてもよい。さらに、技術(たとえば、方法、実施形態)、エンコーダ、およびデコーダの各々は、処理回路(たとえば、1つもしくは複数のプロセッサまたは1つ以上の集積回路)によって実装されてもよい。いくつかの例では、1つ以上のプロセッサは、非一時的コンピュータ可読媒体に記憶されたプログラムを実行する。
上記で説明された技術は、1つ以上のコンピュータ可読媒体に物理的に記憶された、コンピュータ可読命令を使用するコンピュータソフトウェアとして実施され得る。たとえば、図13は、開示されている主題の特定の実施形態を実施するのに適したコンピュータシステム(1300)を示す。
コンピュータソフトウェアは、1つ以上のコンピュータ中央処理装置(CPU)、グラフィック処理装置(GPU)などによって、直接実行することができるか、または解釈、マイクロコード実行などを介して実行することができる命令を含むコードを作成するために、アセンブリ、コンパイル、リンクなどのメカニズムを受けることができる任意の適切な機械コードまたはコンピュータ言語を使用して符号化され得る。
命令は、たとえば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーミングデバイス、モノのインターネットデバイスなどを含む、様々なタイプのコンピュータまたはそのコンポーネント上で実行され得る。
コンピュータシステム(1300)に関して図13に示されているコンポーネントは、本質的に例示であり、本開示の実施形態を実装するコンピュータソフトウェアの使用または機能の範囲に関する限定を示唆することを意図されていない。コンポーネントの構成も、コンピュータシステム(1300)の例示的な実施形態に示されるコンポーネントのいずれか1つまたは組み合わせに関連する依存関係または要件を有すると解釈されるべきではない。
コンピュータシステム(1300)は、特定のヒューマンインターフェース入力デバイスを含み得る。このようなヒューマンインターフェース入力デバイスは、たとえば触覚入力(キーストローク、スワイプ、データグローブの動きなど)、オーディオ入力(声、拍手など)、視覚入力(ジェスチャなど)、嗅覚入力(図示せず)を用いた1人以上の人間のユーザによる入力に応答し得る。ヒューマンインターフェースデバイスは、オーディオ(音声、音楽、環境音など)、画像(走査画像、写真画像は静止画像カメラから取得など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)などの、必ずしも人間による意識的な入力に直接関連しない特定の媒体をキャプチャするためにも使用され得る。
入力ヒューマンインターフェースデバイスは、キーボード(1301)、マウス(1302)、トラックパッド(1303)、タッチスクリーン(1310)、データグローブ(図示せず)、ジョイスティック(1305)、マイク(1306)、スキャナ(1307)、カメラ(1308)のうちの1つ以上(それぞれの1つのみを図示)を含み得る。
コンピュータシステム(1300)は、特定のヒューマンインターフェース出力デバイスも含み得る。このようなヒューマンインターフェース出力デバイスは、たとえば触覚出力、音、光、および臭い/味によって1人以上の人間のユーザの感覚を刺激し得る。そのようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(たとえば、タッチスクリーン(1310)、データグローブ(図示せず)、またはジョイスティック(1305)による触覚フィードバックであるが、入力デバイスとして機能しない触覚フィードバックデバイスもあり得る)、音声出力デバイス(スピーカ(1309)、ヘッドホン(図示せず)など)、視覚出力デバイス(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(1310)など、それぞれタッチスクリーン入力機能の有無にかかわらず、それぞれ触覚フィードバック機能の有無にかかわらず、そのいくつかはステレオグラフィック出力などの手段を通して、2次元視覚出力または3次元を超える出力を出力できるものもある、仮想現実グラス(図示せず)、ホログラフィックディスプレイ、およびスモークタンク(図示せず))、およびプリンタ(図示せず)を含み得る。
コンピュータシステム(1300)はまた、人間がアクセス可能なストレージデバイスおよびそれらに関連付けられた媒体、たとえば、CD/DVDもしくは類似の媒体と共にCD/DVDのROM/RW(1320)を含む光学媒体(1321)、USBメモリ(1322)、外付けハードドライブまたは外付けソリッドステートドライブ(1323)、テープおよびフロッピーディスク(図示せず)などのレガシー磁気媒体、セキュリティドングル(図示せず)などの専用ROM/ASIC/PLDに基づくデバイスなどを含み得る。
当業者はまた、本開示の主題に関連して使用される「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、または他の一時的信号を包含しないことを理解すべきである。
コンピュータシステム(1300)はまた、1つ以上の通信ネットワーク(1355)に対するインターフェース(1354)も含むことができる。ネットワークはたとえば、無線ネットワーク、有線ネットワーク、光学ネットワークであり得る。ネットワークはさらに、ローカル、広域、メトロポリタン、車両および産業、リアルタイム、遅延耐性などであり得る。ネットワークの例は、イーサネットなどのローカルエリアネットワーク、無線LAN、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルTV、衛星TV、地上波放送TVを含むTV有線または無線ワイドエリアデジタルネットワーク、およびCANBusを含む車両および産業用などを含む。特定のネットワークは、一般に、特定の汎用データポートまたは周辺機器用バス(1349)に取り付けられた外部ネットワークインターフェースアダプタを必要とし(たとえば、コンピュータシステム(1300)のUSBポートなど)、他のネットワークは、一般に、以下で説明するようなシステムバスへの取り付け(たとえば、PCコンピュータシステムへのイーサネットインターフェース、またはスマートフォンコンピュータシステムへの移動体通信ネットワークインターフェース)によってコンピュータシステム(1300)のコアに統合される。これらのネットワークのいずれかを使用して、コンピュータシステム(1300)は、他のエンティティと通信することができる。このような通信は、たとえば、ローカルデジタルネットワークまたは広域デジタルネットワークを使用する他のコンピュータシステムに対して、単方向受信のみ(たとえば、放送TV)、単方向送信のみ(たとえば、特定のCANbusデバイスへのCANbus)、または双方向であってもよい。特定のプロトコルおよびプロトコルスタックは、上記で説明されたように、これらのネットワークおよびネットワークインターフェースの各々で使用され得る。
前述のヒューマンインターフェースデバイス、人間がアクセス可能なストレージデバイス、およびネットワークインターフェースは、コンピュータシステム(1300)のコア(1340)に接続され得る。
コア(1340)は、1つ以上の中央処理装置(CPU)(1341)、グラフィック処理装置(GPU)(1342)、フィールドプログラマブルゲートアレイ(FPGA:Field Programmable Gate Array)(1343)の形式の専用のプログラマブル処理装置、特定のタスク用のハードウェアアクセラレータ(1344)、およびグラフィックアダプタ(1350)などを含み得る。これらのデバイスは、読み取り専用メモリ(ROM)(1345)、ランダムアクセスメモリ(1346)、ユーザがアクセスできない内部ハードドライブ、SSDなどの内部大容量ストレージ(1347)と共に、システムバス(1348)を通して接続されてもよい。いくつかのコンピュータシステムでは、システムバス(1348)は、1つ以上の物理プラグの形でアクセス可能であり、追加のCPU、GPUなどによる拡張を可能にする。周辺デバイスは、コアのシステムバス(1348)に直接接続され得るか、または周辺バス(1349)を介して接続され得る。一例では、スクリーン(1310)はグラフィックアダプタ(1350)に接続され得る。周辺バスのアーキテクチャは、PCIおよびUSBなどを含む。
CPU(1341)、GPU(1342)、FPGA(1343)、およびアクセラレータ(1344)は、組み合わせて前述のコンピュータコードを構成し得る、特定の命令を実行することができる。このコンピュータコードは、ROM(1345)またはRAM(1346)に記憶することができる。移行データはまた、RAM(1346)に記憶することもできるが、永続データは、たとえば内部大容量ストレージ(1347)に記憶することができる。1つ以上のCPU(1341)、GPU(1342)、大容量ストレージ(1347)、ROM(1345)、RAM(1346)などと密接に関連付けられ得るキャッシュメモリを使用することにより、任意のメモリデバイスへの高速ストレージおよび検索が有効にされ得る。
コンピュータ可読媒体は、様々なコンピュータ実施動作を実行するためのコンピュータコードを有し得る。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構成されたものであってもよく、またはこれらは、コンピュータソフトウェア技術の当業者に周知の利用可能な種類のものであってもよい。
限定ではなく一例として、アーキテクチャ(1300)、特にコア(1340)を有するコンピュータシステムは、(1つまたは複数の)プロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)は、1つ以上の有形のコンピュータ可読媒体に組み込まれたソフトウェアを実行した結果として機能性を提供することができる。このようなコンピュータ可読媒体は、前述のようなユーザアクセス可能な大容量ストレージに関連付けられた媒体、ならびに中心部内部大容量ストレージ(1347)またはROM(1345)などの非一時的な性質の、コア(1340)の特定のストレージに関連付けられた媒体であってもよい。本開示の様々な実施形態を実装するソフトウェアは、このような装置に記憶され、コア(1340)によって実行されてもよい。コンピュータ可読媒体は、特定の必要性に応じて、1つ以上のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(1340)に、具体的にはその中のプロセッサ(CPU、GPU、およびFPGAなどを含む)に、RAM(1346)に記憶されたデータ構造を定義すること、およびソフトウェアによって定義されたプロセスに従ってこのようなデータ構造を変更することを含む、本明細書に記載されている特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えて、または代替として、コンピュータシステムは、ハードワイヤードまたは他の方法で回路(たとえば、アクセラレータ(1344))に実施されたロジックの結果として機能を提供することができ、このロジックは、ソフトウェアの代わりに、またはソフトウェアと共に動作して、本明細書に記載されている特定の処理または特定の処理の特定の部分を実行することができる。ソフトウェアへの言及は、適切な場合には、ロジックを包含することができ、逆もまた同様である。適切な場合には、コンピュータ可読媒体への言及は、実行のためのソフトウェアを記憶する回路(集積回路(IC:integrated circuit)など)、実行のための論理を具現化する回路、またはこれらの両方を包含することができる。本開示は、ハードウェアとソフトウェアとの任意の適切な組み合わせを包含する。
本開示ではいくつかの典型的な実施形態を説明してきたが、変形例、置換例、および様々な代替均等例が存在し、これらは本開示の範囲に含まれる。したがって、当業者は、本明細書では明示的に示されていないか、または説明されていないが、本開示の原理を具現化し、したがってその精神および範囲内にある多数のシステムおよび方法を考案できることが理解されよう。