本開示の態様は、3次元(3D)メディア処理の分野における技術を提供する。
3次元(3D)キャプチャ、3Dモデリング、および3Dレンダリングなどの進歩などの3Dメディア処理における技術開発は、いくつかのプラットフォームおよびデバイスにわたって3Dメディアコンテンツの普遍的な存在を促進している。一例では、赤ん坊の最初の一歩が1つの大陸でキャプチャされ、メディア技術は、祖父母が別の大陸で赤ん坊との没入体験を、眺め、(そして、おそらく対話し)、そして楽しむ、ことを可能にできる。本開示の一態様によれば、没入体験を改善するために、3Dモデルはますます洗練されてきており、3Dモデルの作成および消費は、データストレージ、データ送信リソースなどのかなりの量のデータリソースを占有する。
本開示のいくつかの態様によれば、点群およびメッシュを3Dモデルとして使用して、没入型コンテンツを表現できる。
点群は一般に、3D空間内の点のセットを指してもよく、各点が、色、材料特性、テクスチャ情報、強度属性、反射率属性、動き関連属性、モダリティ属性、および様々な他の属性などの関連付けられた属性を有する。点群は、このような点の構成としてオブジェクトまたはシーンを再構築するために使用され得る。
オブジェクトのメッシュ(メッシュモデルとも呼ばれる)は、オブジェクトの表面を記述するポリゴンを含むことができる。各ポリゴンは、3D空間内のポリゴンの頂点と、頂点がポリゴンにどのように接続されているかの情報とによって定義され得る。頂点がどのように接続されているかの情報は接続性情報と呼ばれる。いくつかの例では、メッシュはまた、頂点に関連付けられた色、法線などの属性を含むことができる。
本開示のいくつかの態様によれば、点群圧縮(PCC)のためのいくつかのコーディングツールが、メッシュ圧縮のために使用され得る。例えば、メッシュを再メッシュ化して、新しいメッシュの接続性情報を推測できる新しいメッシュを生成することができる。新しいメッシュの頂点、および新しいメッシュの頂点に関連付けられた属性は、点群内の点と見なすことができ、PCCコーデックを使用して圧縮することができる。
点群を使用して、点の構成として、オブジェクトまたはシーンを再構築することができる。点は、様々な設定において、複数のカメラ、深度センサ、またはLidarを使用してキャプチャすることができ、再構築されたシーンまたはオブジェクトを現実的に表現するために数千から最大数十億の点で構成することができる。パッチは、一般に、点群によって記述される表面の連続したサブセットを指してもよい。一例では、パッチは、閾値量未満で互いにずれた表面法線ベクトルを有する点を含む。
PCCは、G-PCCと呼ばれるジオメトリベースの方式、V-PCCと呼ばれるビデオコーディングベースの方式など、様々な方式に従って実行され得る。本開示のいくつかの態様によれば、G-PCCは、3Dジオメトリを直接エンコードし、ビデオコーディングとあまり共通する要素がない純粋にジオメトリベースの手法であり、V-PCCはビデオコーディングに多大に基づいている。例えば、V-PCCは、3Dクラウドの点を2Dグリッド(画像)のピクセルにマッピングすることができる。V-PCC方式は、点群圧縮のために汎用ビデオコーデックを利用することができる。本開示におけるPCCコーデック(エンコーダ/デコーダ)は、G-PCCコーデック(エンコーダ/デコーダ)またはV-PCCコーデックであり得る。
本開示の一態様によれば、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)は、回線交換および/またはパケット交換チャネルでデータを交換することができる。代表的なネットワークには、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、インターネットなどが含まれる。
図2は、いくつかの例におけるストリーミングシステム(200)のブロック図を示す。ストリーミングシステム(200)は、点群の適用である。開示された主題は、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)、またはVersatile Video Coding(VVC)などを含む。
図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)から(1つまたは複数の)シンボル(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)に入力される。シンボルストリームのデコードは、デコーダの位置(ローカルまたはリモート)に関係なくビットイグザクトな結果をもたらすため、参照ピクチャメモリ(634)の内容も、ローカルエンコーダとリモートエンコーダとの間でビットイグザクトである。言い換えれば、エンコーダの予測部分は、デコード中に予測を使用するときにデコーダが「見る」ことになるのと全く同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャの同期性(および、例えばチャネル誤差が原因で同期性を維持することができない場合には、結果として生じるドリフト)のこの基本原理は、いくつかの関連技術においても使用される。
「ローカル」デコーダ(633)の動作は、図5と併せて上記で詳細にすでに説明されている、ビデオデコーダ(510)などの「リモート」デコーダの動作と同じであり得る。しかしながら、図5も簡単に参照すると、シンボルが利用可能であり、エントロピーコーダ(645)およびパーサ(520)によるコードされたビデオシーケンスへのシンボルのエンコード/デコードは可逆的であり得るため、パーサ(520)を含む、ビデオデコーダ(510)のエントロピーデコード部分は、ローカルデコーダ(633)に十分実装されない場合がある。
いくつかの例では、動作中、ソースコーダ(630)は、「参照画像」として指定されたビデオシーケンスからの1つまたは複数の以前にコードされたピクチャを参照して入力ピクチャを予測的にコードする動き補償予測コーディングを実行し得る。このようにして、コーディングエンジン(632)は、入力ピクチャのピクセルブロックと、入力ピクチャへの予測参照として選択され得る参照ピクチャのピクセルブロックとの間の差をコーディングする。
ローカルビデオデコーダ(633)は、ソースコーダ(630)によって作成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャのコーディングされたビデオデータをデコードすることができる。コーディングエンジン(632)の動作は、有利には、非可逆プロセスであってもよい。コーディングされたビデオデータが(図6には示されていない)ビデオデコーダでデコードされ得るとき、再構築されたビデオシーケンスは、典型的には、いくつかの誤差を伴うソースビデオシーケンスのレプリカであり得る。ローカルビデオデコーダ(633)は、参照ピクチャに対してビデオデコーダによって実行され得るデコードプロセスを複製し、再構築された参照ピクチャを参照ピクチャキャッシュ(634)に格納させてもよい。このようにして、ビデオエンコーダ(603)は、(送信エラーがない)遠端ビデオデコーダによって取得される復元された参照ピクチャとして共通のコンテンツを有する、復元された参照ピクチャのコピーをローカルに格納することができる。
予測器(635)は、コーディングエンジン(632)のための予測検索を実行することができる。すなわち、コーディングされる新しいピクチャの場合、予測器(635)は、新しい画素のための適切な予測参照として役立つことができる、(候補参照画素ブロックとしての)サンプルデータまたは参照ピクチャ動きベクトル、ブロック形状などの特定のメタデータを求めて、参照ピクチャメモリ(634)を検索することができる。予測器(635)は、適切な予測参照を見つけるために、画素ブロックごとにサンプルブロックに対して動作することができる場合によっては、予測器(635)によって取得された検索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(634)に記憶された複数の参照ピクチャから引き出された予測参照を有することができる。
コントローラ(650)は、例えば、ビデオデータをエンコードするために使用されるパラメータおよびサブグループパラメータの設定を含む、ソースコーダ(630)のコーディング動作を管理することができる。
すべての前述の機能ユニットの出力は、エントロピーコーダ(645)内でエントロピーコーディングを受けることができる。エントロピーコーダ(645)は、ハフマンコーディング、可変長コーディング、算術コーディングなどの技術に従ってシンボルを可逆圧縮することにより、様々な機能ユニットによって生成されたシンボルをコーディングされたビデオシーケンスに変換する。
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理することができる。コーディング中、コントローラ(650)は、各コーディングされたピクチャに特定のコーディングされたピクチャタイプを割り当てることができ、これは、それぞれのピクチャに適用され得るコーディング技術に影響を及ぼす場合がある。例えば、ピクチャは、しばしば、以下のピクチャタイプのうちの1つとして割り当てられてもよい。
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス内の他のピクチャを使用せずにコーディングおよびデコードされ得るものであり得る。いくつかのビデオコーデックは、例えば、独立デコーダリフレッシュ(「IDR」)ピクチャを含む、異なるタイプのイントラピクチャを可能にする。当業者は、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)に分割され、ピクチャ内のCTUは、64×64ピクセル、32×32ピクセル、16×16ピクセルなどの同じサイズを有する。一般に、CTUは3つのコーディングツリーブロック(CTB)を含み、それらは1つのルマCTBおよび2つのクロマCTBである。各CTUは、1つまたは複数のコーディングユニット(CU)に再帰的に四分木分割されることが可能である。例えば、64×64ピクセルのCTUは、64×64ピクセルの1つのCUに、または32×32ピクセルの4つのCUに、または16×16ピクセルの16個のCUに分割されることが可能である。一例では、各CUが、インター予測タイプやイントラ予測タイプなどのCUの予測タイプを決定するために解析される。CUは、時間的予測可能性および/または空間的予測可能性に応じて、1つまたは複数の予測ユニット(PU)に分割される。一般に、各PUは、1つのルマ予測ブロック(PB)および2つのクロマPBを含む。一実施形態では、コーディング(エンコード/デコード)における予測動作は、予測ブロックの単位で実行される。予測ブロックの一例として輝度予測ブロックを使用すると、予測ブロックは、8×8ピクセル、16×16ピクセル、8×16ピクセル、16×8ピクセルなどのピクセルの値(例えば、輝度値)の行列を含む。
図7は、いくつかの例におけるG-PCCエンコーダ(700)のブロック図を示す。G-PCCエンコーダ(700)は、点群データを受信し、点群データを圧縮して、圧縮された点群データを搬送するビットストリームを生成するように構成することができる。一実施形態では、G-PCCエンコーダ(700)は、位置量子化モジュール(710)、重複点除去モジュール(712)、八分木エンコーディングモジュール(730)、属性転送モジュール(720)、詳細レベル(LOD)生成モジュール(740)、属性予測モジュール(750)、残差量子化モジュール(760)、算術コーディングモジュール(770)、逆残差量子化モジュール(780)、加算モジュール(781)、および再構築された属性値を格納するためのメモリ(790)を含むことができる。
図示のように、入力点群(701)は、G-PCCエンコーダ(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)のブロック図を示す。G-PCCデコーダ(800)は、圧縮されたビットストリームを受信し、点群データ展開を実行してビットストリームを展開し、デコードされた点群データを生成するように構成され得る。一実施形態では、G-PCCデコーダ(800)は、算術デコードモジュール(810)、逆残差量子化モジュール(820)、八分木デコードモジュール(830)、LOD生成モジュール(840)、属性予測モジュール(850)、および再構築された属性値を格納するためのメモリ(860)を含むことができる。
図示されるように、圧縮されたビットストリーム(801)は、算術デコードモジュール(810)で受信され得る。算術デコードモジュール(810)は、圧縮されたビットストリーム(801)をデコードして、量子化された残差(生成された場合)および点群の占有コードを取得するように構成される。八分木デコードモジュール(830)は、占有コードに従って点群の点の再構築された位置を決定するように構成される。LOD生成モジュール(840)は、再構築された位置に基づいて点を異なるLODに再編成し、LODベースの順序を決定するように構成される。逆残差量子化モジュール(820)は、算術デコードモジュール(810)から受信された量子化された残差に基づいて再構築された残差を生成するように構成される。
属性予測モジュール(850)は、LODベースの順序に従って点の属性予測を決定するための属性予測プロセスを実行するように構成される。例えば、現在点の属性予測は、メモリ(860)に記憶された現在点の近傍点の再構築された属性値に基づいて決定され得る。いくつかの例では、属性予測はそれぞれの再構築された残差と組み合わされて、現在点の再構築された属性を生成することができる。
属性予測モジュール(850)から生成された再構築された属性のシーケンスは、八分木デコードモジュール(830)から生成された再構築された位置と共に、一例では、G-PCCデコーダ(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)は、同じデバイス、または様々な例では別個のデバイスに含まれ得る。
本開示のいくつかの態様によれば、メッシュ圧縮は、PCCコーディングツールとは異なるコーディングツールを使用することができ、または上記PCC(例えば、G-PCC、V-PCC)エンコーダ、上記PCC(例えば、G-PCC、V-PCC)デコーダなどのPCCコーディングツールを使用することができる。
オブジェクトのメッシュ(メッシュモデル、メッシュフレームとも呼ばれる)は、オブジェクトの表面を記述するポリゴンを含むことができる。各ポリゴンは、3D空間内のポリゴンの頂点と、頂点をポリゴンに接続するエッジとによって定義することができる。頂点がどのように接続されているかの情報(例えば、エッジの情報)は、接続性情報と呼ばれる。いくつかの例では、オブジェクトのメッシュは、オブジェクトの表面を表す接続された三角形によって形成される。エッジを共有する2つの三角形は、2つの接続された三角形と呼ばれる。いくつかの他の例では、オブジェクトのメッシュは、接続された四角形によって形成される。エッジを共有する2つの四角形は、2つの接続された四角形と呼ばれることができる。メッシュは、他の適切な多角形によって形成できることに留意されたい。
いくつかの例では、メッシュはまた、頂点に関連付けられた色、法線などの属性を含むことができる。属性は、メッシュを2D属性マップでパラメータ化するマッピング情報を利用することによって、メッシュの表面に関連付けることができる。マッピング情報は、通常、メッシュ頂点に関連付けられたUV座標またはテクスチャ座標と呼ばれるパラメトリック座標のセットによって記述される。2D属性マップ(一部の例ではテクスチャマップと呼ばれる)は、テクスチャ、法線、ディスプレイスメントなどの高解像度属性情報を格納するために使用される。このような情報は、テクスチャマッピングおよびシェーディングなどの様々な目的に使用できる。
いくつかの実施形態では、メッシュは、ジオメトリ情報、接続性情報、マッピング情報、頂点属性、および属性マップと呼ばれる成分を含むことができる。いくつかの例では、ジオメトリ情報は、メッシュの頂点に関連付けられた3D位置のセットによって記述される。一例では、頂点の3D位置を記述するために(x,y,z)座標を使用することができ、3D座標とも呼ばれる。いくつかの例では、接続性情報は、3D表面を作成するために頂点をどのように接続するかを記述する頂点インデックスのセットを含む。いくつかの例では、マッピング情報は、メッシュ表面を平面の2D領域にマッピングする方法を記述する。一例では、マッピング情報は、接続性情報と共にメッシュ頂点に関連付けられたUVパラメトリック/テクスチャ座標(u,v)のセットによって記述される。いくつかの例では、頂点属性は、メッシュ頂点に関連付けられたスカラーまたはベクトル属性値を含む。いくつかの例では、属性マップは、メッシュ表面に関連付けられ、2D画像/ビデオとして記憶される属性を含む。一例では、ビデオ(例えば、2D画像/ビデオ)とメッシュ表面との間のマッピングは、マッピング情報によって定義される。
本開示の一態様によれば、UVマッピングまたはメッシュパラメータ化と呼ばれるいくつかの技術が、3Dドメイン内のメッシュの表面を2Dドメインにマッピングするために使用される。いくつかの例では、メッシュは3Dドメインでパッチに分割される。パッチは、境界エッジで形成された境界を持つメッシュの連続サブセットである。パッチの境界エッジは、パッチの1つのポリゴンのみに属し、パッチ内の隣接する2つのポリゴンによって共有されないエッジである。パッチ内の境界エッジの頂点は、パッチの境界頂点と呼ばれ、いくつかの例では、パッチ内の非境界頂点は、パッチの内部頂点と呼ばれることがある。
いくつかの例では、オブジェクトのメッシュは、接続された三角形によって形成され、メッシュは、パッチに分割でき、各パッチは、接続された三角形のサブセットである。パッチの境界エッジは、パッチ内の1つの三角形のみに属し、パッチ内の隣接する三角形によって共有されないエッジである。パッチ内の境界エッジの頂点は、パッチの境界頂点と呼ばれ、いくつかの例では、パッチ内の非境界頂点は、パッチの内部頂点と呼ばれることがある。境界ループは、一連の境界頂点を含み、一連の境界頂点によって形成される境界エッジは、境界ループと呼ばれるループを形成することができる。
本開示の一態様によれば、いくつかの例では、パッチは、それぞれ2D形状(UVパッチ、または2Dチャート、または2Dパッチとも呼ばれる)にパラメータ化される。2D形状は、いくつかの例では、2D UVアトラスとも呼ばれる2Dマップにパック(例えば、方向付けおよび配置)できる。いくつかの例では、2D画像またはビデオ処理技術を使用して、2Dマップをさらに処理することができる。
一例では、UVマッピング技術は、3Dメッシュのパッチに対応する2DのUVアトラス(UVマップ、2D UVアトラスとも呼ばれる)および1つまたは複数のテクスチャアトラス(テクスチャマップとも呼ばれる)を生成する。UVアトラスは、2Dドメイン(例えば、長方形)内の2D点への3Dメッシュの3D頂点の割り当てを含む。UVアトラスは、3D表面の座標と2Dドメインの座標との間のマッピングである。一例では、2D座標(u,v)におけるUVアトラス内の点は、3Dドメイン内の頂点の座標(x,y,z)によって形成される値を有する。一例では、テクスチャアトラスは3Dメッシュの色情報を含む。例えば、2D座標(u,v)(UVアトラス内の(x,y,z)の3D値を有する)のテクスチャアトラス内の点は、3Dドメインの(x,y,z)の点の色属性を指定する色を有する。一部の例では、3Dドメイン内の座標(x,y,z)は、3D座標またはxyz座標と呼ばれ、2D座標(u,v)は、uv座標またはUV座標と呼ばれる。
本開示のいくつかの態様によれば、メッシュ圧縮は、直接コーディング技術、サンプリングベースのコーディング技術、再順序付けベースのコーディング技術など、様々な技術で実行することができる。
直接コーディング技術では、頂点のジオメトリ情報(例えば、3D座標、UV座標など)、属性情報、および接続性情報をビットストリームに直接コーディングできる。いくつかの例では、予測コーディング技術を適用して、データの冗長性を減らすことができる。例えば、以前にコーディングされた値を使用して、現在の値を予測できる。予測は、現在のメッシュフレーム(フレーム内空間予測とも呼ばれる)または以前のフレーム(フレーム間時間予測とも呼ばれる)のいずれかから行うことができる。例えば、平行四辺形予測を使用して、以前にコーディングされた3つのジオメトリ(UV座標および/または3D座標)位置から現在のジオメトリ位置を予測できる。いくつかの例では、予測残差は、算術コーディングによってコーディングすることができる。さらに、コーディング効率を改善するために、以前のコーディングされた値からのコンテキスト情報を使用することができる。
サンプリングベースのコーディング技術と再順序付けベースのコーディング技術では、3Dメッシュを1つまたは複数の2Dマップ(いくつかの例では、2Dアトラスとも呼ばれる)に変換でき、次に、2Dマップを画像またはビデオコーデックを使用してエンコードできる。いくつかのサンプリングベースのコーディング技術について、図9~図13を参照して説明し、いくつかの再順序付けベースのコーディング技術については、図14A~図14E、図15、および図16A~図16Dを参照して説明する。
本開示の一態様によれば、いくつかのサンプリングベースの技術は、3Dメッシュから2Dマップを生成することができる。
図9は、いくつかの例における3Dメッシュ(910)の2Dアトラス(920)へのマッピングを示す図を示す。図9の例では、3Dメッシュ(910)は、4つのパッチA~Dを形成する4つの頂点1~4を含む。各パッチは、頂点のセットと、関連付けられた属性情報とを有する。例えば、パッチAは、三角形に接続された頂点1、2および3によって形成される。パッチBは、三角形に接続された頂点1、3および4によって形成される。パッチCは、三角形に接続された頂点1、2および4によって形成される。パッチDは、三角形に接続された頂点2、3および4によって形成される。いくつかの例では、頂点1、2、3および4はそれぞれの属性を有することができ、頂点1、2、3および4によって形成される三角形はそれぞれの属性を有することができる。
一例では、3DのパッチA,B,CおよびDは、UVアトラス(920)またはマップ(920)とも呼ばれる2Dアトラス(920)などの2Dドメインにマッピングされる。例えば、パッチAはマップ(920)内の2D形状(UVパッチとも呼ばれる)A’にマッピングされ、パッチBはマップ(920)内の2D形状(UVパッチとも呼ばれる)B’にマッピングされ、パッチCはマップ(920)内の2D形状(UVパッチとも呼ばれる)C’にマッピングされ、パッチDはマップ(920)内の2D形状(UVパッチとも呼ばれる)D’にマッピングされる。いくつかの例では、3Dドメイン内の座標は(x,y,z)座標と呼ばれ、マップ(920)などの2Dドメイン内の座標はUV座標と呼ばれる。3Dメッシュの頂点は、対応するUV座標をマップ(920)に持つことができる。
マップ(920)は、ジオメトリ情報を有するジオメトリマップとすることができるか、または色、法線、テキスタイル、または他の属性情報を有するテクスチャマップとすることができるか、または占有情報を有する占有マップとすることができる。
各パッチは、図9の例では三角形で表されているが、パッチは、メッシュの連続サブセットを形成するために接続される任意の適切な数の頂点を含むことができることに留意されたい。いくつかの例では、パッチ内の頂点は、三角形に接続されている。パッチ内の頂点は、他の適切な形状を使用して接続できることに留意されたい。
一例では、頂点のジオメトリ情報を2Dジオメトリマップに格納できる。例えば、2Dジオメトリマップは、2Dジオメトリマップ内の対応するポイントでのサンプリングポイントの(x,y,z)座標を格納することができる。例えば、(u,v)位置の2Dジオメトリマップ内のポイントは、3Dメッシュ内の対応するサンプリングポイントのx、y、およびz値にそれぞれ対応する3つの成分のベクトル値を持つ。
本開示の一態様によれば、マップ内の領域は、完全に占有されていなくてもよい。例えば、図9では、2D形状A’、B’、C’、およびD’の外側の領域は未定義である。デコード後の2D形状A’、B’、C’およびD’の外側にある領域のサンプル値は、破棄することができる。いくつかの場合、ピクセルがパッチに属しているか未定義であるかを識別するバイナリ値を格納するなど、各ピクセルのいくつかの追加情報を格納するために占有マップが使用される。
本開示の一態様によれば、動的メッシュは、成分(ジオメトリ情報、接続性情報、マッピング情報、頂点属性および属性マップ)のうちの少なくとも1つが時間と共に変化するメッシュである。動的メッシュは、メッシュ(メッシュフレームとも呼ばれる)のシーケンスによって記述され得る。動的メッシュは経時的に変化するかなりの量の情報を含む可能性があるため、動的メッシュは大量のデータを必要とする場合がある。メッシュの圧縮技術は、メッシュ表現におけるメディアコンテンツの効率的な記憶および送信を可能にすることができる。
いくつかの例では、動的メッシュは、一定の接続性情報、時変ジオメトリおよび時変頂点属性を有することができる。いくつかの例では、動的メッシュは時変接続性情報を有することができる。一例では、デジタルコンテンツ作成ツールは、通常、時変属性マップおよび時変接続性情報を有する動的メッシュを生成する。いくつかの例では、動的メッシュを生成するために体積取得技術が使用される。体積取得技術は、特にリアルタイム制約下で、時変接続性情報を有する動的メッシュを生成することができる。
メッシュ圧縮には、いくつかの技術が使用される。いくつかの例では、UVアトラスサンプリングとV-PCCをメッシュ圧縮に使用できる。例えば、UVアトラスは通常のグリッドでサンプリングされ、通常のグリッドサンプルを使用してジオメトリイメージが生成される。通常のグリッドサンプルの接続性を推測できる。通常のグリッドサンプルは、点群内のポイントと見なすことができるため、V-PCCコーデックなどのPCCコーデックを使用してコーディングできる。
本開示の一態様によれば、3Dメッシュ情報を効率的に圧縮するために、例えば、ジオメトリマップ、テクスチャマップ(いくつかの例では属性マップとも呼ばれる)、占有マップなどの2Dマップは、コーディングされる前にダウンサンプリングすることができる。
図10は、いくつかの例におけるダウンサンプリングを示す図である。図10では、水平方向、垂直方向ともにマップ(1020)が2倍にダウンサンプリングされ、ダウンサンプリングされたマップ(1030)が生成されている。ダウンサンプリングされたマップ(1030)の幅(例えば、水平方向の画素数)は、マップ(1020)の幅(例えば、水平方向の画素数)の1/2であり、ダウンサンプリングされたマップ(1030)の高さ(例えば、垂直方向の画素数)は、マップ(1020)の高さ(例えば、垂直方向の画素数)の1/2である。
図10では、マップ(1020)は、2D形状(UVパッチとも呼ばれる)A’、B’、C’、およびD’を含み、ダウンサンプリングされたマップ(1030)は、2D形状A’、B’、C’、およびD’にそれぞれ対応するサンプリングされた2D形状A”、B”、C”、およびD”を含む。ダウンサンプリングされたマップ(1030)は、いくつかの例では、メッシュエンコーダ側の画像またはビデオエンコーダによってコーディングされる。
いくつかの例では、メッシュデコーダ側で、ダウンサンプリングされたマップがデコードされる。ダウンサンプリングされたマップのデコード後、ダウンサンプリングされたマップは、3Dメッシュを再構築するために元の解像度(例えば、垂直方向の元の画素数および水平方向の元の画素数)に復元される。
一般に、動的メッシュシーケンスは経時的に変化するかなりの量の情報から構成され得るので、動的メッシュシーケンスは大量のデータを必要とする。2Dマップ(例えば、UVアトラス、属性マップ)に適用されるサンプリングステップは、メッシュ情報を表すために必要な帯域幅を削減するのに役立つ可能性がある。しかしながら、サンプリングステップはまた、ダウンサンプリング中に3Dメッシュの何らかの重要なジオメトリ形状などの重要な情報を除去する可能性がある。
いくつかの例では、適応サンプリング技術を使用して、重要な情報をあまり失うことなく2Dアトラス(2Dのマップとも呼ばれる)を処理できる。適応サンプリング技術は、静的メッシュ(1つのメッシュフレームまたはメッシュコンテンツは経時的に変化しない)圧縮、および動的メッシュ圧縮に使用することができる。様々な適応サンプリング技術は、個別にまたは任意の形態の組み合わせによって適用することができる。以下の説明では、適応サンプリング方法は、ジオメトリマップもしくは属性(テクスチャ)マップ、またはその両方であり得る、2Dアトラス(例えば、2Dのマップ)に適用される。
図11は、本開示のいくつかの実施形態によるメッシュ圧縮のためのフレームワーク(1100)の図を示す。フレームワーク(1100)は、メッシュエンコーダ(1110)およびメッシュデコーダ(1150)を含む。メッシュエンコーダ(1110)は、入力メッシュ(1101)(動的メッシュ処理の場合はメッシュフレーム)を受信し、入力メッシュ(1101)をビットストリーム(1145)にエンコードし、メッシュデコーダ(1150)は、ビットストリーム(1145)をデコードして再構築されたメッシュ(1195)(動的メッシュ処理の場合の再構築メッシュフレーム)を生成する。
メッシュエンコーダ(1110)は、コンピュータ、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲームデバイス、ARデバイス、VRデバイスなどの任意の適切なデバイスとすることができる。メッシュデコーダ(1150)は、コンピュータ、クライアントコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲームデバイス、ARデバイス、VRデバイスなどの任意の適切な装置とすることができる。ビットストリーム(1145)は、任意の適切な通信ネットワーク(図示せず)を介してメッシュエンコーダ(1110)からメッシュデコーダ(1150)に送信することができる。
図11の例では、メッシュエンコーダ(1110)は、互いに結合された、前処理モジュール(1111)、適応サンプリングモジュール(1120)、ビデオエンコーダ(1130)、および補助データエンコーダ(1140)を含む。ビデオエンコーダ(1130)は、3Dメッシュの表現における2Dマップなどの画像またはビデオデータをエンコードするように構成される。
図11の例では、前処理モジュール(1111)は、入力メッシュ(1101)に対して適切な操作を実行して、UVアトラスを有するメッシュ(1105)を生成するように構成される。例えば、前処理モジュール(1111)は、追跡、再メッシュ化、パラメータ化、およびボクセル化を含む一連の操作を実行することができる。図11の例では、一連の操作はエンコーダのみである可能性があり、デコードプロセスの一部ではない。いくつかの例では、UVアトラスを有するメッシュ(1105)は、頂点の3D位置情報、3D位置情報を2DにマッピングするUVアトラス、および他の2D属性マップ(例えば、2Dカラーマップなど)を含む。
いくつかの例では、入力メッシュ(1101)は、UVアトラスを有するメッシュの形式であり、前処理モジュール(1111)は、UVアトラスを有するメッシュ(1105)となるように入力メッシュ(1101)を送ることができることに留意されたい。
適応サンプリングモジュール(1120)は、UVアトラスを有するメッシュ(1105)を受け取り、適応サンプリングを実行して、適応サンプリングされたマップ(1125)を生成する。いくつかの例では、適応サンプリングモジュール(1120)は、様々な技術を使用して、マップ内の情報密度など、マップ内またはマップの異なる領域内の特性を検出し、特性に基づいてマップまたはマップの異なる領域をサンプリングするための異なるサンプリングレートを決定することができる。次いで、異なるサンプリングレートに従って2Dマップをサンプリングし、適応サンプリングされたマップ(1125)を生成することができる。適応サンプリングされたマップ(1125)は、ジオメトリマップ(いくつかの例ではジオメトリ画像とも呼ばれる)、占有マップ、他の属性マップ(例えば、カラーマップ)などを含むことができる。
ビデオエンコーダ(1130)は、画像エンコードおよび/またはビデオエンコード技術を使用して、適応サンプリングされたマップ(1125)をビットストリーム(1145)にエンコードすることができる。
適応サンプリングモジュール(1120)はまた、適応サンプリングに使用される支援情報を示す補助データ(1127)を生成する。補助データエンコーダ(1140)は、補助データ(1127)を受信し、補助データ(1127)をビットストリーム(1145)にエンコードする。
適応サンプリングモジュール(1120)および補助データエンコーダ(1140)の動作は、本開示でさらに説明される。
図11の例では、ビットストリーム(1145)は、メッシュデコーダ(1150)に提供される。メッシュデコーダ(1150)は、図11に示されるように、互いに結合された、ビデオデコーダ(1160)、補助データデコーダ(1170)、およびメッシュ再構築モジュール(1190)を含む。一例では、ビデオデコーダ(1160)は、ビデオエンコーダ(1130)に対応し、ビデオエンコーダ(1130)によってエンコードされたビットストリーム(1145)の一部をデコードし、デコードされたマップ(1165)を生成することができる。いくつかの例では、デコードされたマップ(1165)は、デコードされたUVマップ、1つまたは複数のデコードされた属性マップなどを含む。いくつかの例では、デコードされたマップ(1165)は、デコードされた占有マップ(例えば、最初のデコードされたマップ)を含む。
図11の例では、補助データデコーダ(1170)は補助データエンコーダ(1140)に対応し、補助データエンコーダ(1140)によってエンコードされたビットストリーム(1145)の部分をデコードし、デコードされた補助データ(1175)を生成することができる。
図11の例では、デコードされたマップ(1165)およびデコードされた補助データ(1175)が、メッシュ再構築モジュール(1190)に提供される。メッシュ再構築モジュール(1190)は、デコードされたマップ(1165)およびデコードされた補助データ(1175)に基づいて再構築されたメッシュ(1195)を生成する。いくつかの例では、メッシュ再構築モジュール(1190)は、頂点に関連付けられたそれぞれの3D座標、UV座標、色などの、再構築されたメッシュ(1195)内の頂点および頂点の情報を決定することができる。補助データデコーダ(1170)およびメッシュ再構築モジュール(1190)の動作は、本開示においてさらに説明される。
前処理モジュール(1111)、適応サンプリングモジュール(1120)、ビデオエンコーダ(1130)、および補助データエンコーダ(1140)などのメッシュエンコーダ(1110)内のコンポーネントを様々な技術によってそれぞれ実装できることに留意されたい。一例では、コンポーネントは集積回路によって実装される。他の例では、コンポーネントは、1つまたは複数のプロセッサによって実行され得るソフトウェアを使用して実装される。
ビデオデコーダ(1160)、補助データデコーダ(1170)、およびメッシュ再構築モジュール(1190)などのメッシュデコーダ(1150)内のコンポーネントは、様々な技術によってそれぞれ実装できることに留意されたい。一例では、コンポーネントは集積回路によって実装される。他の例では、コンポーネントは、1つまたは複数のプロセッサによって実行され得るソフトウェアを使用して実装される。
いくつかの実施形態では、サンプリング適応はマップタイプに基づくことができる。いくつかの例では、適応サンプリングモジュール(1120)は、異なるタイプのマップに異なるサンプリングレートを適用することができる。例えば、ジオメトリマップと属性マップとに異なるサンプリングレートを適用することができる。一例では、メッシュは、規則的な形状および豊富なテクスチャを有するオブジェクトのモデルである。例えば、オブジェクトは長方形であるが、豊富な色を有する。したがって、ジオメトリマップの情報密度は比較的低い。一例では、適応サンプリングモジュール(1120)は、ジオメトリマップ上に(垂直方向と水平方向の両方に)2:1の第1のサンプリングレートを適用し、テクスチャマップ上に(垂直方向と水平方向の両方に)1:1の第2のサンプリングレートを適用する。
いくつかの例では、ある方向のA:Bのサンプリングレートは、その方向の元のマップ内のA画素からBサンプルを生成することを示す。例えば、水平方向の2:1のサンプリングレートは、水平方向の元のマップ内の2つの画素ごとに1つのサンプルを生成することを示す。垂直方向の2:1のサンプリングレートは、垂直方向の元のマップ内の2つの画素ごとに1つのサンプルを生成することを示す。
いくつかの例では、サンプリングステップという用語が使用される。ある方向のサンプリングステップは、その方向の2つの隣接するサンプリング位置の間のピクセル数を示す。例えば、水平方向に2のサンプリングステップは、水平方向の隣接するサンプリング位置の間の2ピクセルを示し、垂直方向の2のサンプリングステップは、垂直方向の隣接するサンプリング位置の間の2ピクセルを示す。なお、本開示において、サンプリングレートは、サンプリングステップに相当する。例えば、2のサンプリングレート(例えば、2:1)は、隣接するサンプリング位置間の2ピクセルに相当する。
いくつかの実施形態では、サンプリング適応は、マップ内のサブ領域に基づく。異なるサンプリングレートをマップの異なる部分に適用することができる。いくつかの例では、ピクセルの一部の行は保持する情報が少なく、これらの行に沿ってより大きなサンプリングレートを適用できるため、コーディングされるサンプル行の数が少なくなる。いくつかの例では、ピクセルの一部の列は保持する情報が少なく、これらの列に沿ってより大きなサンプリングレートを適用できるため、コーディングされるサンプル列の数が少なくなる。他の領域では、サンプリング後の情報の損失を最小限に抑えるために、より小さいサンプリングレートが適用される。
図12は、いくつかの例における適応サンプリングの図を示す。マップ(1220)はいくつかのブロック行に分割され、各ブロック行は固定数のサンプル(画素)行を含む。異なるサンプリングレートが垂直方向のブロック行に適用され、適応サンプリングされたマップ(1230)を生成する。例えば、各ブロック行はCTU行(CTUラインとも呼ばれる)であり、64行のサンプル(画素とも呼ばれる)を含む。図12の例では、マップ(1220)内のブロック行0およびブロック行6に対して、2:1の第1のサンプリングレートが垂直方向に適用されると、結果として、サンプリング後の適応サンプリングされたマップ(1230)内のブロック行0およびブロック行6の各々に対して32行のサンプルが得られる。マップ(1220)内のブロック行1から5に対して、1:1の第2のサンプリングレートが垂直方向に適用されると、結果として、適応サンプリングされたマップ(1230)内のブロック行1から5の各々に対して64行のサンプルが得られる。
1:1のサンプリングレートが図12の水平方向に適用されることに留意されたい。
いくつかの例では、適応サンプリングされたマップ(1230)は、ビデオエンコーダ(1130)などの画像またはビデオエンコーダによってエンコードされる。デコーダ側では、一例では、適応サンプリングされたマップ(1230)がデコードされる。デコード後、上位32行のサンプルが元の解像度(例えば、64行のサンプル)に復元(アップサンプリング)され、下位32行のサンプルが元の解像度(例えば、64行のサンプル)に復元(アップサンプリング)される。
いくつかの他の例では、3Dメッシュの2D表現内のコーディング対象マップは、いくつかのサブ領域に分割することができる。このようなマップ内の分割(例えば、写真)としては、例えば、スライス、タイル、タイル群、コーディング・ツリー・ユニットなどが挙げられる。いくつかの例では、異なるサンプリングレートを異なるサブ領域に適用することができる。一例では、異なるサブ領域に関連付けられた異なるサンプリングレートは、3Dメッシュを搬送するビットストリームでシグナリングすることができる。デコーダ側では、適応サンプリングされたマップをデコードした後、各サブ領域は、サブ領域に関連付けられたサンプリングレートに従って元の解像度に復元される。
いくつかの例では、適応サンプリングされたマップを元の解像度に復元する処理は、復元されたマップを生成する逆サンプリング処理と呼ばれる。逆サンプリング処理からの復元後、2Dアトラスの形態の復元されたマップの出力は、3Dメッシュ再構築に使用することができる。
図12の例では、垂直方向の異なるブロック行に対する適応サンプリングを示しているが、水平方向の異なる列に対しても同様の適応サンプリングを適用してもよく、垂直方向および水平方向の両方に適用してもよい。
いくつかの実施形態では、サンプリング適応はパッチに基づく。いくつかの例では、マップ内の異なるパッチは、異なるサンプリングレートを有することができる。
図13は、いくつかの例における適応サンプリングの図を示す。高解像度の2Dアトラスなどのマップ(1320)は、第1の2D形状A’および第2の2D形状B’などの、3Dメッシュ内のパッチに対応するUVパッチとも呼ばれる複数の2D形状を含む。図13の例では、2:1の第1のサンプリングレートが、垂直方向および水平方向の両方で第1の2D形状A’に適用されて、第1のサンプリングされた2D形状A”を生成する。1:1の第2のサンプリングレートが、第2の2D形状B’に垂直方向および水平方向の両方に適用されて、第2のサンプリングされた2D形状B”を生成する。第1のサンプリングされた2D形状A”、および第2のサンプリングされた2D形状B”は、適応サンプリングされたマップ(1330)と呼ばれる新しいマップに配置される。
図13の例では、第1のサンプリングされた2D形状A”は、第1の2D形状A’よりも小さく、第2のサンプリングされた2D形状B”は、第2の2D形状B’と同じサイズである。適応サンプリングされたマップ(1330)は、ビデオエンコーダ(1130)などの画像またはビデオエンコーダによって、3Dメッシュを搬送するビットストリームにエンコードされる。いくつかの例では、サンプリングされた2D形状に関連付けられたサンプリングレートは、例えば補助データエンコーダ(1140)によって、3Dメッシュを搬送するビットストリームにエンコードされる。
いくつかの例では、デコーダ側で、ビデオデコーダ(1160)などの画像/ビデオデコーダは、ビットストリームから適応サンプリングされたマップ(1330)などの初期マップをデコードする。さらに、サンプリングされた2D形状に関連付けられたサンプリングレートは、例えば補助データデコーダ(1170)によってビットストリームからデコードされる。サンプリングされた2D形状に関連付けられたサンプリングレートに従って、適応サンプリングされたマップ(1330)内のサンプリングされた2D形状が元のサイズ(例えば、垂直方向と水平方向で同じ数のピクセル)に復元され、復元されたマップが生成される。次いで、復元されたマップは、3Dメッシュ再構築に使用される。
本開示の一態様によれば、異なるマップタイプのサンプリングレート、異なるサブ領域のサンプリングレート、異なるパッチのサンプリングレートなどの適応サンプリング情報が、メッシュエンコーダ側およびメッシュデコーダ側で知られている。いくつかの例では、適応サンプリング情報は、3Dメッシュを搬送するビットストリームに適切にエンコードされる。したがって、メッシュデコーダおよびメッシュエンコーダは、同じ適応サンプリング情報に基づいて動作することができる。メッシュデコーダは、マップを正しいサイズに復元することができる。
本開示の一態様によれば、再順序付けベースのコーディング技術も、3Dメッシュから2Dマップを生成する。
図14A~図14Eは、メッシュ圧縮のために頂点再順序付けを使用する一例を示す。図14Aは、入力メッシュ(1405)(例えば、元のメッシュ)の図を示す。入力メッシュ(1405)は、オブジェクトの表面を表す接続された三角形を含む。各三角形は、頂点と頂点を三角形に接続するエッジとによって定義される。入力メッシュ(1405)は、図14Aに示されるように三角形に接続された頂点0から8を含む。
図14Bは、いくつかの例における頂点トラバーサル順序(1415)の図を示す。頂点のトラバーサル順序(1415)は、矢印付きの線で示され、頂点0、頂点1、頂点2、頂点3、頂点4、頂点5、頂点6、頂点7、頂点8を順番にトラバースする。
次に、頂点の3D(ジオメトリ)座標、頂点のUV座標、および頂点の他の属性などの頂点の属性を、頂点トラバーサル順序(1415)に従って配列に再順序付けすることができる。例えば、頂点の3D座標は、頂点トラバーサル順序(1415)で3D座標の配列に再順序付けすることができ、頂点のUV座標は、頂点トラバーサル順序(1415)でUV座標の配列に再順序付けすることができる。配列は、1D配列または2D配列とすることができる。
いくつかの例では、頂点の属性は、ラスタ走査線に従って、2D画像を形成する2D配列に再順序付けられ、再形成される。2D画像は、画像またはビデオコーデックなどの予測コーディング技術によってコーディングできる。メッシュフレームのシーケンスを含む動的メッシュの一例では、動的メッシュの属性を再順序付けて2D画像のシーケンスを形成することができ、2D画像のシーケンスは、一例では、ビデオコーデックによってコーディングすることができる。
図14Cは、頂点の属性を2D配列(1435)に再形成するために使用されるラスタ走査線(1425)を示す図を示す。ラスタ走査線(1425)は、矢印付きの線で示される。2D配列(1435)は、2Dマップまたは2D画像とも呼ばれる。一例では、頂点の属性は、頂点に対応する2D配列(1435)のエントリに格納され、エントリは、2D画像のピクセルであり、属性値は、ピクセルの色情報と見なすことができる。一例では、2D配列(1435)は、3D座標マップとすることができる。別の例では、2D配列(1435)は、UV座標マップとすることができる。2D配列(1435)は、メッシュフレームを搬送するためにビットストリームにエンコードすることができる。
いくつかの例では、接続性情報(例えば、頂点を三角形のエッジに接続する方法)は、メッシュフレームを搬送するためのビットストリームに明示的にエンコードされない。したがって、デコーダ側では、デコーダは、例えば2Dマップから頂点の属性(例えば、3D座標、UV座標など)をデコードし、頂点を再構築することができる。
図14Dは、いくつかの例における再構築された頂点0’~8’を示す図を示す。例えば、座標(例えば、3D座標、UV座標)をビットストリームからデコードすることができ、その後、デコードされた座標に従って再構築された頂点0’~8’を生成できる。
いくつかの例では、接続性情報はビットストリームに明示的にエンコードされず、再構築された頂点0’~8’を接続するエッジは、接続性推測ルールに従って推測される。接続性推測ルールは、デコーダ側でデコードされた3D座標(xyz座標)および/またはUV座標(uv座標)から接続性を推測できる。一例では、接続性推測ルールは、デコーダ側で適切に確立される。すべての頂点がデコードされると、接続性推測ルールに従って近傍する頂点が接続される。デコーダは、ビットストリームから接続性情報をデコードする必要はない。
図14Eは、再構築された頂点0’~8’を三角形に接続して再構築されたメッシュ(1495)を形成することができる推測接続性情報(エッジ)を示す図を示す。
図14Aおよび図14Eによって示されるように、再構築されたメッシュ(1495)における頂点の接続性(エッジ)は、元の入力メッシュ(1405)とは異なる可能性がある。いくつかの例では、接続性の違いにより、再構築されたメッシュの主観的な品質が損なわれる可能性がある。本開示の別の一態様によれば、デコーダ側で接続性を推測することは、時間がかかり、複雑さの点で計算能力を消費する可能性がある。
本開示の態様は、メッシュフレームを搬送するビットストリームにおいてメッシュフレームの接続性情報を明示的にコーディングするための技術を提供する。いくつかの例では、接続性情報は、ポリゴン面の形式で提供される。各ポリゴン面は、ポリゴン面のエッジを形成するために接続された頂点のシーケンスによって定義される。一例では、接続性情報は三角形(三角形面とも呼ばれる)の形式で提供され、各三角形は、3つの頂点によって定義され、3つの頂点は、接続されて三角形の3つのエッジを形成する。例えば、入力メッシュ(1405)のメッシュ接続性は、「f v0 v1 v6」の形式で頂点0、頂点1、および頂点6によって形成される三角形を含むことができ、ここで、「f」は面情報を示し、「v0」は頂点0のインデックスであり、「v1」は頂点1のインデックスであり、「v6」は頂点6のインデックスである。
本開示の一態様によれば、メッシュフレームの接続性情報は、頂点のそれぞれの接続性属性として再編成することができる。
本開示の一態様によれば、頂点の接続性属性は、頂点での接続性情報を表す任意の適切なメトリックとすることができる。一例では、頂点の接続性属性は、頂点におけるエッジの数である価数値を含む。例えば、入力メッシュ(1405)の頂点3の価数は3、入力メッシュ(1405)の頂点5の価数は4、入力メッシュ(1405)の頂点8の価数は6などである。
別の一例では、Edgebreakerアルゴリズムと呼ばれるアルゴリズムは、頂点をトラバースし、各頂点をパターンインデックスでマークして、頂点が他のいくつかの頂点にどのように接続できるかを記述することができる。例えば、パターンインデックスは、内部頂点、境界頂点、その他のパターンなどの接続性パターンを識別できる。そして、頂点の接続性属性には、Edgebreakerアルゴリズムによってマークされたパターンインデックスを含めることができる。
いくつかの例では、頂点の接続性属性は、頂点の他の属性として再順序付けおよび再形成でき、その後、メッシュを搬送するビットストリームに明示的にコーディングできる。
図15は、本開示のいくつかの実施形態によるメッシュ圧縮のためのフレームワーク(1500)の図を示す。フレームワーク(1500)は、メッシュエンコーダ(1510)およびメッシュデコーダ(1550)を含む。メッシュエンコーダ(1510)は、入力メッシュ(1505)(動的メッシュ処理の場合はメッシュフレーム)をビットストリーム(1545)にエンコードし、メッシュデコーダ(1550)は、ビットストリーム(1545)をデコードして再構築されたメッシュ(1595)(動的メッシュ処理の場合は再構築されたメッシュフレーム)を生成する。
メッシュエンコーダ(1510)は、例えば、コンピュータ、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲームデバイス、ARデバイス、VRデバイスなどの任意の適切なデバイスとすることができる。メッシュデコーダ(1550)は、例えば、コンピュータ、クライアントコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲームデバイス、ARデバイス、VRデバイスなどの任意の適切なデバイスとすることができる。ビットストリーム(1545)は、任意の適切な通信ネットワーク(図示せず)を介してメッシュエンコーダ(1510)からメッシュデコーダ(1550)に送信することができる。
図15の例では、メッシュエンコーダ(1510)は、互いに結合された、頂点再順序付けモジュール(1520)、1D/2Dエンコーダ(1530)、および補助データエンコーダ(1540)を含む。頂点再順序付けモジュール(1520)は、入力メッシュ(1505)を受け取り、再順序付けを実行して、再順序付けされた頂点のメッシュ情報(1525)を生成する。いくつかの例では、入力メッシュ(1505)は、元の順序でのメッシュの頂点の3D位置情報、ポリゴン面の形式の接続性情報、メッシュを2D(例えば、UVアトラス)にパラメータ化するマッピング情報、およびその他の2D属性マップ(例えば、2Dカラーマップ)を含む。頂点再順序付けモジュール(1520)は、頂点の頂点トラバーサル順序を決定し、頂点トラバーサル順序に従って頂点を再順序付けおよび/または再配置して、近傍頂点の属性相関(例えば、シーケンス(例えば、1D配列)ごとの近傍頂点の属性相関、2D配列の局所領域内の近傍頂点の属性相関、近傍フレームの属性相関)を高めることができる。
一例では、頂点再順序付けモジュール(1520)は、頂点のそれぞれの接続性属性(元の接続性属性とも呼ばれる)の形式でメッシュフレームの接続性情報を再編成することができる。一例では、各頂点の接続性属性は、接続性圧縮のためにEdgebreakerアルゴリズムによってマークされた接続性パターンを示すためのパターンインデックスを含むことができる。別の一例では、各頂点の接続性属性は、頂点に接続されたエッジの数を示す価数値を含むことができる。
頂点再順序付けモジュール(1520)は、再順序付けされた頂点のメッシュ情報(1525)を出力する。再順序付けされた頂点のメッシュ情報(1525)は、再順序付けされたシーケンス(例えば、1D)内の頂点の頂点情報を含む。例えば、各頂点の頂点情報は、メッシュ内の3D空間情報(例えば、xyz座標)、2Dへのマッピング情報(例えば、uv座標)、色情報(例えば、RGB値)、および接続性属性などの様々な属性を含むことができる。
別の一例では、再順序付けされた頂点のメッシュ情報(1525)は、2D画像の形式の頂点の頂点情報を含む。例えば、再順序付けされた頂点は、(例えば、ラスタ走査線などに基づいて)2Dのサンプル(ピクセル)に再配置され、再順序付けされた頂点のメッシュ情報は、例えば、頂点の3D座標の2D画像、頂点のUV座標の2D画像、頂点接続性属性の2D画像などの1つまたは複数の2D画像を形成することができる。
1D/2Dエンコーダ(1530)は、再順序付けされた頂点のメッシュ情報(1525)をビットストリーム(1545)にエンコードするように構成される。再順序付けされた頂点のメッシュ情報(1525)が再順序付けされたシーケンス(1D)内の頂点の頂点情報を含む場合、1D/2Dエンコーダ(1530)は、1Dエンコード技術を使用して、再順序付けされたシーケンス内の頂点の頂点情報をエンコードすることができる。再順序付けされた頂点のメッシュ情報(1525)が2D画像を含む場合、1D/2Dエンコーダ(1530)は、画像エンコードおよび/またはビデオエンコード技術を使用して(例えば、画像コーデックまたはビデオコーデックを使用して)2D画像をエンコードすることができる。
頂点再順序付けモジュール(1520)は、支援情報を含む補助データ(1527)も生成する。補助データエンコーダ(1540)は、補助データ(1527)を受信し、補助データ(1527)をビットストリーム(1545)にエンコードする。例えば、頂点再順序付けモジュール(1520)は、パッチごとに頂点を再順序付けすることができる。頂点再順序付けモジュール(1520)は、補助データ(1527)内の各パッチ内の頂点の数を示す値を提供することができる。さらに、一例では、頂点再順序付けモジュール(1520)は、パッチごとに、非境界頂点の前にある境界頂点を再順序付けすることができる。頂点再順序付けモジュール(1520)は、補助データ(1527)内の各パッチ内の境界頂点の数を示す値を提供することができる。別の一例では、頂点再順序付けモジュール(1520)は、Edgebreakerアルゴリズムに従って頂点をトラバースすることができ、補助データ(1527)においてEdgebreakerアルゴリズムを示す信号を提供することができる。
図15の例では、ビットストリーム(1545)がメッシュデコーダ(1550)に提供される。メッシュデコーダ(1550)は、図15に示されるように、互いに結合された、1D/2Dデコーダ(1560)、補助データデコーダ(1570)、およびメッシュ再構築モジュール(1590)を含む。一例では、1D/2Dデコーダ(1560)は、1D/2Dエンコーダ(1530)に対応し、1D/2Dエンコーダ(1530)によってエンコードされたビットストリーム(1545)の一部をデコードし、デコードされた情報(1565)を生成することができる。一例では、デコードされた情報(1565)は、デコードされた接続性属性マップ、および他のデコードされた属性マップ(例えば、デコードされた3D座標マップ、デコードされたuv座標マップ、カラーマップなど)を含む。
図15の例では、補助データデコーダ(1570)は、補助データエンコーダ(1540)に対応し、補助データエンコーダ(1540)によってエンコードされたビットストリーム(1545)の一部をデコードし、デコードされた補助データ(1575)を生成することができる。
図15の例では、デコードされた情報(1565)、デコードされた補助データ(1575)がメッシュ再構築モジュール(1590)に提供される。メッシュ再構築モジュール(1590)は、デコードされた情報(1565)、デコードされた補助データ(1575)に基づいて、再構築されたメッシュ(1595)を生成する。
頂点再順序付けモジュール(1520)、補助データエンコーダ(1540)、および1D/2Dエンコーダ(1530)などのメッシュエンコーダ(1510)内のコンポーネントは、様々な技術によってそれぞれ実装できることに留意されたい。一例では、コンポーネントは集積回路によって実装される。他の例では、コンポーネントは、1つまたは複数のプロセッサによって実行され得るソフトウェアを使用して実装される。
1D/2Dデコーダ(1560)、補助データデコーダ(1570)、およびメッシュ再構築モジュール(1590)などのメッシュデコーダ(1550)内のコンポーネントは、様々な技術によってそれぞれ実装できることに留意されたい。一例では、コンポーネントは集積回路によって実装される。他の例では、コンポーネントは、1つまたは複数のプロセッサによって実行され得るソフトウェアを使用して実装される。
図16A~図16Dは、本開示のいくつかの実施形態による、メッシュフレームを搬送するビットストリームにおいてメッシュフレームの接続性属性を明示的にコーディングする一例を示す。図16Aは、入力メッシュ(1605)の図を示す。入力メッシュ(1605)は、オブジェクトの表面を表す接続された三角形を含む。各三角形は、頂点と頂点を三角形に接続するエッジとによって定義される。入力メッシュ(1605)は、図16Aに示されるように三角形に接続された頂点0から頂点8を含む。
図16Bは、頂点トラバーサル順序(1615)の図を示す。頂点トラバーサル順序(1615)は、頂点0、頂点1、頂点2、頂点3、頂点4、頂点5、頂点6、頂点7、および頂点8を順番にトラバースする矢印付きの線で示される。
次に、頂点の3D(ジオメトリ)座標、頂点のUV座標、頂点の接続性属性、および頂点のその他の属性などの頂点の属性を、頂点のトラバーサル順序(1615)に従って配列に再順序付けすることができる。例えば、頂点の3D座標は、頂点トラバーサル順序(1615)で3D座標の配列に再順序付けすることができ、頂点のUV座標は、頂点トラバーサル順序(1615)でUV座標の配列に再順序付けすることができ、頂点の接続性属性は、頂点トラバーサル順序(1615)で接続性属性の配列に再順序付けすることができる。配列は、1D配列または2D配列とすることができる。
いくつかの例では、頂点の属性は、ラスタ走査線に従って、2D画像を形成する2D配列に再順序付けられ、再形成される。2D画像は、画像またはビデオコーデックなどの予測コーディング技術によってコーディングできる。メッシュフレームのシーケンスを含む動的メッシュの一例では、動的メッシュの属性を再順序付けて2D画像のシーケンスを形成することができ、2D画像のシーケンスは、一例では、ビデオコーデックによってコーディングすることができる。
図16Cは、頂点の属性を2D配列(1645)および2D配列(1635)などの2D配列に再形成するために使用されるラスタ走査線(1625)を示す図を示す。ラスタ走査線(1625)は、矢印付きの線で示されている。2D配列(1635)および(1645)は、2Dマップまたは2D画像と呼ぶこともできる。一例では、頂点の接続性属性は、頂点に対応する2D配列(1645)のエントリに格納され、エントリは、2D画像内のピクセルであり、接続性属性は、ピクセルの色情報である。一例では、頂点に対する別の属性(例えば、3D座標、UV座標など)が、頂点に対応する2D配列(1635)内のエントリに格納され、エントリは、2D画像内のピクセルであり、属性は、ピクセルの色情報である。一例では、2D配列(1635)は、3D座標マップとすることができる。別の一例では、2D配列(1635)は、UV座標マップとすることができる。2D配列(1635)および2D配列(1645)は、メッシュフレームを搬送するためのビットストリームにエンコードすることができる。
図16Cの例では、接続性情報(例えば、頂点を三角形のエッジに接続する方法)は、頂点の接続性属性の形式で再編成され、頂点の接続性属性は、メッシュフレームを搬送するためのビットストリームに明示的にエンコードされることに留意されたい。いくつかの例では、入力メッシュ(1605)などの元のメッシュの頂点がトラバースされ、頂点の接続性情報を表すことができるパターンインデックスまたは価数値のいずれかで各頂点がマークされる。例えば、EdgeBreakerアルゴリズムを使用して頂点トラバーサル順序(1615)などの頂点トラバーサル順序を決定し、頂点をトラバースすることができ、EdgeBreakerアルゴリズムは、各頂点をパターンインデックスでマークすることができる。頂点の接続性属性は、頂点トラバーサル順序に従って再順序付けされることができ、2D配列(1645)など、Morgによって示される接続性マップとも呼ばれる2Dマップに整形される。接続性マップ(例えば、2D配列(1645))内のピクセル位置での各値は、ピクセル位置に再順序付けおよび再形成される対応するパターンインデックスまたは頂点の価数値である。頂点の他の属性は、頂点トラバーサル順序に従って再順序付けされ、2D配列(1635)などの他の2Dマップに整形される。接続性マップは、任意の予測コーディング方法(例えば、画像コーデック、ビデオコーデックなど)によってコーディングできる。いくつかの例では、接続性マップは、非可逆モードでコーディングできる。いくつかの例では、接続性マップは、可逆モードでコーディングできる。
本開示の一態様によれば、デコーダ側で、デコーダは、メッシュフレームを搬送するビットストリームから、頂点の他の属性を有する頂点の接続性属性を直接デコードすることができる。次いで、デコーダは、頂点の接続性属性および頂点の他の属性に従ってメッシュフレームを再構築することができる。
図16Dは、再構築されたメッシュフレーム(1695)を示す図を示す。一例では、再構築された頂点0’~8’は、例えば、ビットストリームからデコードされた頂点の座標から再構築することができる。次いで、再構築された頂点0’~8’は、頂点の価数または頂点のパターンインデックスなど、ビットストリームからの頂点のデコードされた接続性属性に従って接続できる。一例では、Edgebreakerアルゴリズムを使用して、頂点のパターンインデックスに従って再構築されたメッシュフレーム(1695)を生成することができる。別の一例では、適切なアルゴリズムを使用して、頂点の価数に従って再構築されたメッシュフレーム(1695)を生成する。再構築されたメッシュフレーム(1695)は、元のメッシュフレーム(1605)と同じ接続性情報(同一のエッジ)を持つことができる。
いくつかの実施形態では、メッシュフレームの接続性差異情報は、メッシュフレームを搬送するビットストリームでエンコードすることができる。接続性差異情報は、入力メッシュフレーム内の元の接続性情報と、接続性推測ルールに従って推測された接続性情報との差異である。
本開示のいくつかの態様は、チャートベースのメッシュ圧縮のための技術を提供する。直接コーディング技術、サンプリングベースのコーディング技術、再順序付けベースのコーディング技術などの様々なコーディング技術をメッシュの様々な部分に対して選択して、様々な部分の特性に適合させることができるため、メッシュ(またはメッシュシーケンス)全体の全体的なコーディング効率を改善できる。
本開示の一態様によれば、エンコーダ側でUVパラメータ化を使用して、3Dメッシュを1つまたは複数の2Dチャートにマッピングすることができる。いくつかの例では、3Dメッシュをいくつかのセグメント(いくつかの例ではパッチとも呼ばれる)に分割できる。各セグメントは、関連付けられたジオメトリ、属性、および接続性情報を持つ接続された頂点の組を含むことができる。
図17は、いくつかの例において、2D UVアトラス内の2Dチャート上にメッシュセグメントをマッピングするUVパラメータ化プロセスの図を示す。図17の例では、メッシュセグメント(1710)は3Dメッシュのセグメントである。メッシュセグメント(1710)は、6つの頂点v0~v5を含む。メッシュセグメント(1710)の各頂点には、2D UVアトラス(1750)の2D UV座標が割り当てられ、2D UVアトラス(1750)内の2D頂点にマッピングされる。例えば、頂点v0は、2D UVアトラス(1750)内の2D頂点v0’にマッピングされ、頂点v1は、2D UVアトラス(1750)内の2D頂点v1’にマッピングされ、頂点v2は、2D UVアトラス(1750)内の2D頂点v2’にマッピングされ、頂点v3は、2D UVアトラス(1750)内の2D頂点v3’にマッピングされ、頂点v4は、2D UVアトラス(1750)内の2D頂点v4’にマッピングされ、頂点v5は、2D UVアトラス(1750)内の2D頂点v5’にマッピングされる。2D頂点v0’~v5’は、3Dメッシュセグメントに対応する接続された2Dチャートを形成する。2Dグラフ内の2D頂点のジオメトリ、属性、および接続性情報は、3Dセグメント内の対応する頂点から継承できる。
いくつかの例では、3Dメッシュセグメントは、2D UVアトラス内の複数の個別の2Dチャートにマッピングできる。3Dセグメント内の頂点は、2D UVアトラス内の複数の2D頂点に対応できる。
図18は、いくつかの例において、2D UVアトラス内の複数の2Dチャート上にメッシュセグメントをマッピングするUVパラメータ化プロセスの図を示す。図18の例では、メッシュセグメント(1810)は3Dメッシュのセグメントであり、図17のメッシュセグメント(1710)と同一とすることができる。メッシュセグメント(1810)は、6つの頂点v0~v5を含む。メッシュセグメント(1810)は、2D UVアトラス(1850)内の2つの2Dチャート(1851)および(1852)にマッピングされる。メッシュセグメント(1810)の各頂点は、2D UVアトラス(1850)の1つまたは2つの2D頂点にマッピングできる。例えば、頂点v0は、2D UVアトラス(1850)内の2D頂点v0”にマッピングされ、頂点v1は、2D UVアトラス(1850)内の2D頂点v1’と2D頂点v1”などの2つの頂点にマッピングされ、頂点v2は、2D UVアトラス(1850)内の2D頂点v2’にマッピングされ、頂点v3は、2D UVアトラス(1850)内の2D頂点v3’にマッピングされ、頂点v4は、2D UVアトラス(1850)内の2D頂点v4’と2D頂点v4”などの2つの2D頂点にマッピングされ、頂点v5は、2D UVアトラス(1850)内の2D頂点v5’にマッピングされる。2D頂点v0”、v1”、およびv4”は、2Dチャート(1851)を形成し、2D頂点v1’~v5’は、2Dチャート(1852)を形成する。
本開示の一態様によれば、3Dメッシュのための2D UVアトラスは、複数の2Dチャートを含むことができ、各2Dチャートは、3Dメッシュの対応する頂点から継承される関連付けられた3Dジオメトリ、属性、および接続性情報を有する複数(通常は3以上)の2D頂点を含むことができる。
図19は、一例における2D UVアトラス(1900)の図を示す。2D UVアトラス(1900)は、図19に示されるように2Dチャート(1901)~(1910)などの複数の2Dチャートを含む。
本開示のいくつかの態様は、チャートベースのメッシュ圧縮のための技術を提供する。この技術は、メッシュエンコーダとメッシュデコーダで使用できる。
本開示の一態様によれば、2D UVアトラス内の各2Dチャートは、サンプリングベースの技術、再順序付けベースの技術、およびチャートベースの直接コーディング技術(生チャートのコーディング技術とも呼ばれる)などの様々な技術によってコーディング(エンコードおよびデコード)することができる。例えば、2Dチャートがサンプリングベースのコーディングモードにある場合、2Dチャートは、サンプリングベースの技術を使用してコーディングされ、2Dチャートが再順序付けベースのコーディングモードにある場合、2Dチャートは、再順序付けベースの技術を使用してコーディングされ、2Dチャートが生チャートのコーディングモードにある場合、2Dチャートは、チャートベースの直接コーディング技術を使用してコーディングされる。
サンプリングベースの技術では、2Dチャートは、所与のサンプリングレート(ステップサイズ)でサンプリングされて、2Dマップ(例えば、ジオメトリマップ、属性マップ、および占有マップなど)を生成する。生成された占有、ジオメトリ、および属性マップは、ビデオコーデックでコーディングできる。いくつかの例では、占有マップは、エンコーダ側で生成されない。一例では、境界頂点情報はビットストリームでコーディングされ、占有マップは、境界頂点情報に従ってデコーダ側で推測することができる。
再順序付けベースの技術では、チャート内の2D頂点を特定の順序で配置し、特定の空間充填曲線(例えば、ラスタ走査線)によって2D領域を埋めて、2Dマップ(例えば、UVマップ、ジオメトリマップ、属性マップ、接続マップなど)を生成する。2Dマップは、ビデオコーデックによってコーディングできる。
いくつかの例では、再順序付けベースの技術が3Dメッシュの第1の2Dチャートに適用されて、第1の2Dマップが生成され、サンプリングベースの技術が3Dメッシュの第2の2Dチャートに適用されて、第2の3Dマップが生成される。第1の2Dマップと第2の2Dマップをマージして、結合された2Dマップにすることができる。一例では、結合された2Dマップ内の第1の2Dマップおよび第2の2Dマップの位置情報は、ビットストリームでシグナリングされる。例えば、第1の2Dチャートに対する第1の2Dマップの開始位置(または境界情報または境界ボックス)と、第2の2Dチャートに対する第2の2Dマップの開始位置(または境界情報または境界ボックス)がビットストリームでシグナリングされる。
チャートベースの直接コーディング技術(生チャートコーディング方法とも呼ばれる)では、2Dチャート内の頂点のジオメトリ(UV座標と3D座標)、属性、および接続性情報は、ビデオコーデックを使用することなしに、ビットストリームで直接コーディングされる。予測コーディングを適用して、データの冗長性を減らすことができる。例えば、以前にコーディングされた値を使用して、現在の値を予測できる。予測は、現在のメッシュフレーム(例えば、フレーム内空間予測)または以前にコーディングされたメッシュフレーム(例えば、フレーム間時間予測)のいずれかから行うことができる。例えば、平行四辺形予測を使用して、以前にコーディングされた3つのジオメトリ(UV座標と3D座標)の位置から現在のジオメトリ位置を予測できる。予測残差は、算術コーディングによってコーディングでき、以前のコーディングされた値からのコンテキスト情報を使用してコーディング効率を向上させることができる。
本開示の一態様によれば、異なるチャートベースのメッシュ圧縮コーディング技術を有効にし、ビットストリームの異なるレベルでシグナリングすることができる。
一実施形態では、メッシュシーケンス全体が、同じチャートベースのコーディング技術、例えば、サンプリングベースの技術を使用する。いくつかの例では、チャートベースのコーディングモードを示すインデックスを、メッシュシーケンスのシーケンスヘッダでシグナリングすることができる。
別の一実施形態では、各メッシュフレームは、異なるチャートベースのコーディング技術を選択することができる。次いで、メッシュフレームに対するチャートベースのコーディングモードを示すインデックスを、メッシュフレームのフレームヘッダ内でシグナリングすることができる。次いで、メッシュフレームからパラメータ化されたすべての2Dチャートは、同じコーディング技術を使用することができる。
別の一実施形態では、メッシュフレームの各セグメント(例えば、スライス、領域)は、個別に選択されたコーディング技術を有することができる。いくつかの例では、選択されたチャートベースのコーディングモードを示すインデックスは、スライスのスライスヘッダ(または領域に対するヘッダ)などのセグメントのヘッダ部分内でシグナリングすることができ、したがって、スライス内(または領域内)のすべてのチャートは、インデックスによって示される同じ指定されたコーディング技術を使用できる。
別の一実施形態では、メッシュフレームの各2Dチャートは、個々のコーディング技術を選択することができる。いくつかの例では、選択されたチャートベースのコーディングモードを示すインデックスは、2Dチャートごとにシグナリングすることができる。いくつかの例では、チャートベースのコーディングモードのインデックスは、コーディングされた情報(例えば、以前にコーディングされた2Dチャートのチャートベースのコーディングモードのインデックス)に関して、コンテキストコーディングによって予測またはコーディングすることができる。いくつかの実施形態では、チャートベースのコーディングモードのインデックスは、現在の2Dチャートのいくつかの特性(例えば、現在の2Dチャート内の頂点の数)に関してコンテキストによって予測またはコーディングすることもできる。例えば、現在の2Dチャート内の頂点の数が閾値よりも小さい場合、現在の2Dチャートに対するチャートベースのコーディングモードは、生チャートのコーディングモードであると予測することができる。
本開示の一態様によれば、2Dチャートのいくつかの共通の補助情報(例えば、境界頂点情報)は、コーディング技術に関係なくビットストリームでコーディングすることができる。補助情報は、デコーダ側でメッシュ再構築に使用できる。
本開示のいくつかの態様はまた、エンコーダ側がコーディング技術を選択するための技術、例えば、2Dチャートに対するチャートベースのコーディングモードを選択するための技術を提供する。いくつかの例では、メッシュエンコーダは、チャート/領域/フレーム/シーケンスごとに最良のチャートベースのコーディングモードを選択でき、選択されたチャートベースのコーディングモードをビットストリームで明示的にシグナリングできる。領域に対してチャートベースのコーディングモードが選択されると、その領域に対する2Dチャートは、チャートベースのコーディングモードに従ってコーディングされる。(3Dメッシュ)フレームに対してチャートベースのコーディングモードが選択されると、(3Dメッシュ)フレームからパラメータ化された2Dチャートがチャートベースのコーディングモードに従ってコーディングされる。(3Dメッシュフレームの)シーケンスに対してチャートベースのコーディングモードが選択されると、(3Dメッシュフレームの)シーケンスからパラメータ化された2Dチャートが、チャートベースのコーディングモードに従ってコーディングされる。
いくつかの実施形態では、チャート/領域/フレーム/シーケンスの特定の特性をメッシュエンコーダが使用して、最良のチャートベースのコーディングモードを決定/推定することができる。いくつかの例では、メッシュエンコーダは、チャート/領域/フレーム/シーケンス内の頂点の数に従って、チャートベースのコーディングモードを決定することができる。いくつかの例では、メッシュエンコーダは、チャート/領域/フレーム/シーケンス内の境界頂点の数に従って、チャートベースのコーディングモードを決定することができる。いくつかの例では、メッシュエンコーダは、境界頂点の数とチャート/領域/フレーム/シーケンス内の頂点の数との間の比率に従って、チャートベースのコーディングモードを決定することができる。いくつかの例では、メッシュエンコーダは、チャート/領域/フレーム/シーケンス内の値(例えば、ジオメトリ、属性)の変化に従って、チャートベースのコーディングモードを決定することができる。いくつかの例では、メッシュエンコーダは、現在のフレームのチャート/領域における時間的一貫性(例えば、前のフレームからの類似性)に従って、チャートベースのコーディングモードを決定することができる。
一例では、境界頂点の数とチャート内の頂点の数との間の比率が、モード決定基準として使用される。2Dチャートの比率が閾値よりも大きい場合、メッシュエンコーダは、2Dチャートに生チャートのコーディングモードを使用することを決定し、それ以外の場合、メッシュエンコーダは、2Dチャートにサンプリングベースのコーディングモードを使用することを決定する。
いくつかの実施形態では、レート歪み最適化(RDO)を使用して、チャート/領域/フレーム/シーケンスのための最良のチャートベースのコーディングモードを選択することができる。いくつかの例では、メッシュエンコーダは、チャート/領域/フレーム/シーケンスに適用される各々のチャートベースのコーディングモードに対するレート歪みコストを計算できる。例えば、チャートベースのコーディングモードiの場合、メッシュエンコーダは、Ci=Di+λ・Riによってレート歪みコストCiを計算し、ここで、Diはチャートベースのコーディングモードiによる歪みを示し、Riはチャートベースのコーディングモードiによるビットレートを示し、λは歪みとビットレートの間のトレードオフファクターである。次に、レート歪みコストを最小化するもの、すなわち、
として最良のチャートベースのコーディングモードが選択される。いくつかの例では、マルチパスコーディングを適用して、実レートおよび歪み項を計算できることに留意されたい。
図20は、本開示の一実施形態によるプロセス(2000)を概説するフローチャートを示す。プロセス(2000)は、メッシュに対するエンコードプロセス中に使用することができる。様々な実施形態において、プロセス(2000)は、処理回路によって実行される。いくつかの実施形態において、プロセス(2000)はソフトウェア命令にて実装され、したがって、処理回路がソフトウェア命令を実行するとき、処理回路はプロセス(2000)を実行する。プロセスは(S2001)から開始し、(S2010)に進む。
(S2010)において、3Dメッシュフレームは、2D UVアトラス内の複数の2DチャートにUVパラメータ化される。3Dメッシュフレームは、オブジェクトの表面をポリゴンで表し、ポリゴンは、頂点と頂点を接続するエッジとによって定義される。頂点は、2D UVアトラス内の2D頂点にマッピングされ、2D頂点は、2D UVアトラス内の複数の2Dチャートを形成する。
(S2020)において、複数の2Dチャートについてそれぞれのチャートベースのコーディングモードが決定される。
(S2030)において、複数の2Dチャートに関連付けられた少なくともそれぞれのジオメトリ情報が、それぞれのチャートベースのコーディングモードに従ってビットストリームにエンコードされる。
いくつかの実施形態では、チャートベースのコーディングモードは、少なくともサンプリングベースのコーディングモード、再順序付けベースのコーディングモード、および生チャートのコーディングモードを含む。
いくつかの例では、サンプリングベースのコーディングモードの第1の2Dチャートに応答して、第1の2Dチャートをサンプリングして、第1の頂点の3D座標を第1の2Dチャート内の第1の頂点のUV座標に関連付ける少なくとも第1のジオメトリマップを生成する。第1のジオメトリマップは、画像エンコーダおよび/またはビデオエンコーダを使用してビットストリームにエンコードされる。
いくつかの例では、再順序付けベースのコーディングモードの第2の2Dチャートに応答して、第2の2Dチャート内の第2の頂点を再順序付けする順序が決定される。第2の頂点の3D座標は、順序と空間充填曲線に従って、第2のジオメトリマップに配置される。第2の頂点のUV座標は、順序と空間充填曲線に従って、UVマップに配置される。他の属性も同様に、2Dマップに配置できる。例えば、第2のジオメトリマップ、UVマップなどの2Dマップは、画像エンコーダおよび/またはビデオエンコーダを使用してビットストリームにエンコードされる。
いくつかの例では、第1の2Dチャートに対してサンプリングベースのコーディングモードが決定され、第2の2Dチャートに対して再順序付けベースのコーディングモードが決定される。第1の2Dチャートをサンプリングして、第1の2Dチャート内の第1の頂点の3D座標を第1の頂点のUV座標に関連付ける少なくとも第1のジオメトリマップを生成する。第2の2Dチャート内の第2の頂点を順序付けるための順序が決定され、第2の頂点の3D座標が、順序および空間充填曲線に従って第2のジオメトリマップに配置される。第1のジオメトリマップと第2のジオメトリマップは、重複することなく結合された2Dジオメトリマップにマージされる。第1のジオメトリマップは、結合された2Dジオメトリマップ内の第1の位置に配置される。第2のジオメトリマップは、結合された2Dジオメトリマップの第2の位置に配置される。結合された2Dジオメトリマップは、画像エンコーダおよび/またはビデオエンコーダを使用してビットストリームにエンコードされる。一例では、結合された2Dジオメトリマップ内の第1の2Dマップの第1の位置を示す第1の信号が、ビットストリームにエンコードされ、結合された2Dジオメトリマップ内の第2の2Dマップの第2の位置を示す第2の信号が、ビットストリームにエンコードされる。
いくつかの例では、生チャートのコーディングモードの第3の2Dチャートに応答して、第3の2Dチャート内の第3の頂点のUV座標および3D座標が、画像デコーダまたはビデオデコーダを使用することなしにビットストリームにエンコードされる。
一例では、3Dメッシュフレームを含む3Dメッシュフレームシーケンスのシーケンスヘッダにインデックスが含まれる。シーケンスヘッダのインデックスは、複数の2Dチャートと、3Dメッシュフレームのシーケンス内の他の3Dメッシュフレームからパラメータ化された他の2Dチャートとに対するチャートベースのコーディングモードを示す。
別の一例では、3Dメッシュフレームのフレームヘッダにインデックスが含まれ、フレームヘッダのインデックスは、3Dメッシュフレームからパラメータ化された複数の2Dチャートに対してそれぞれチャートベースのコーディングモードを示す。
別の一例では、インデックスは、3Dメッシュフレームの第1のメッシュセグメントを搬送するために、ビットストリームの第1の部分の第1のヘッダに含まれ、第1のメッシュセグメントは、複数の2Dチャート内の第1の1つまたは複数の2Dチャートにパラメータ化され、インデックスは、第1の1つまたは複数の2Dチャートに対してそれぞれチャートベースのコーディングモードを示す。
別の一例では、複数の2Dチャートに関連してそれぞれのインデックスがエンコードされる。それぞれのインデックスは、複数の2Dチャートに対するそれぞれのチャートベースのコーディングモードを示す。
いくつかの例では、3Dメッシュフレームのシーケンスの一部の特性に基づいて、3Dメッシュフレームのシーケンスの一部における1つまたは複数のチャートに対して、チャートベースのコーディングモードを決定することができる。一例では、2Dチャートの特性に基づいて2Dチャートのチャートベースのコーディングモードを決定することができる。別の一例では、領域の特性に基づいて、領域内の2Dチャートに対して、チャートベースのコーディングモードを決定することができる。別の一例では、3Dメッシュフレームの特性に基づいて、3Dメッシュフレームからパラメータ化された2Dチャートに対して、チャートベースのコーディングモードを決定することができる。別の一例では、3Dメッシュフレームのシーケンスの特性に基づいて、3Dメッシュフレームのシーケンスからパラメータ化された2Dチャートに対して、チャートベースのコーディングモードを決定することができる。一例では、特性には、チャート/領域/フレーム/シーケンス内の頂点の数が含まれる。別の一例では、特性には、チャート/領域/フレーム/シーケンス内の境界頂点の数が含まれる。別の一例では、特徴には、チャート/領域/フレーム/シーケンス内の境界頂点の数と頂点の数との間の比率が含まれる。別の一例では、特性には、チャート/領域/フレーム/シーケンス内の値(例えば、ジオメトリ、属性)の変化が含まれる。別の一例では、特性には、現在の3Dメッシュフレームのチャート/領域内の時間的な一貫性(例えば、前のフレームからの類似性)が含まれる。
いくつかの例では、レート歪み最適化に基づいて、3Dメッシュフレームのシーケンスの一部(例えば、2Dチャート、領域、3Dメッシュフレーム、シーケンス全体)の1つまたは複数のチャートに対して、チャートベースのコーディングモードを決定することができる。チャートベースのコーディングモードは、レート歪みコストが最小のものとしてチャートベースのコーディングモードのセットから選択することができる。
次いで、プロセスは(S2099)に進み、終了する。
プロセス(2000)を適切に適合させることができる。プロセス(2000)におけるステップは、変更および/または省略されてよい。追加のステップが追加されてよい。任意の適切な実施順序が使用され得る。
図21が、本開示の一実施形態によるプロセス(2100)を概説するフローチャートを示している。プロセス(2100)は、メッシュのデコードプロセス中に使用することができる。様々な実施形態において、プロセス(2100)は、処理回路によって実行される。いくつかの実施形態において、プロセス(2100)はソフトウェア命令にて実装され、したがって、処理回路がソフトウェア命令を実行するとき、処理回路はプロセス(2100)を実行する。プロセスは(S2101)において始まり、(S2110)に進む。
(S2110)において、3Dメッシュフレームを搬送するビットストリームが受信される。3Dメッシュフレームは、オブジェクトの表面をポリゴンで表し、ポリゴンは、頂点と頂点を接続するエッジとによって定義される。3Dメッシュフレームは、2D UVアトラス内の複数の2DチャートにUVパラメータ化される。頂点は、2D UVアトラス内の2D頂点にマッピングされ、2D頂点は、2D UVアトラス内の複数の2Dチャートを形成する。
(S2120)において、ビットストリームからデコードされた1つまたは複数のインデックスに従って、複数の2Dチャートに対するそれぞれのチャートベースのコーディングモードが決定される。
(S2130)において、複数の2Dチャートに関連付けられた少なくともそれぞれのジオメトリ情報が、それぞれのチャートベースのコーディングモードに従ってビットストリームからデコードされる。
(S2140)において、3Dメッシュフレームは、少なくとも複数の2Dチャートに関連付けられたそれぞれのジオメトリ情報に従って再構築される。
いくつかの実施形態では、チャートベースのコーディングモードは、少なくともサンプリングベースのコーディングモード、再順序付けベースのコーディングモード、および生チャートのコーディングモードを含む。
いくつかの例では、サンプリングベースのコーディングモードの第1の2Dチャートに応答して、画像デコーダおよび/またはビデオデコーダを使用してビットストリームから第1のジオメトリマップがデコードされる。第1の2Dチャート内の第1の頂点の3D座標とUV座標は、第1のジオメトリマップに従って決定される。
いくつかの例では、再順序付けベースのコーディングモードの第2の2Dチャートに応答して、第2のジオメトリマップおよびUVマップが、画像デコーダおよび/またはビデオデコーダを使用してビットストリームからデコードされる。第2の2Dチャートにおける第2の頂点の3D座標は、第2のジオメトリマップに従って決定され、第2の2Dチャートにおける第2の頂点のUV座標は、UVマップに従って決定される。
いくつかの例では、結合された2Dジオメトリマップが、ビットストリームからデコードされる。結合された2Dジオメトリマップは、サンプリングベースのコーディングモードにおける第1の2Dチャートのための第1の2Dマップと、再順序付けベースのコーディングモードにおける第2の2Dチャートのための第2の2Dマップとを含む。さらに、結合された2Dジオメトリマップ内の第1の2Dマップの第1の位置を示す第1の信号、および結合された2Dジオメトリマップ内の第2の2Dマップの第2の位置を示す第2の信号が、ビットストリームからデコードされる。サンプリングベースのコーディングモードによれば、第1の2Dチャートに関連付けられた第1のジオメトリ情報は、結合された2Dジオメトリマップの第1の位置での第1の2Dマップに基づいて決定される。再順序付けベースのコーディングモードに従って、第2の2Dチャートに関連付けられた第2のジオメトリ情報は、結合された2Dジオメトリマップの第2の位置での第2の2Dマップに基づいて決定される。
いくつかの例では、生チャートコーディングモードの第3の2Dチャートに応答して、第3の2Dチャートの第3の頂点のUV座標および3D座標が、画像デコーダまたはビデオデコーダを使用することなしにビットストリームからデコードされる。
一例では、インデックスは、3Dメッシュフレームを含む3Dメッシュフレームシーケンスのシーケンスヘッダからデコードされる。シーケンスヘッダ内のインデックスは、複数の2Dチャート、および3Dメッシュフレームのシーケンス内の他の3Dメッシュフレームからパラメータ化された他の2Dチャートに対するチャートベースのコーディングモードを示す。
別の一例では、3Dメッシュフレームのフレームヘッダからインデックスがデコードされ、フレームヘッダ内のインデックスは、3Dメッシュフレームからパラメータ化された複数の2Dチャートのそれぞれのチャートベースのコーディングモードを示す。
別の一例では、3Dメッシュフレームの第1のメッシュセグメントを搬送するために、ビットストリームの第1の部分の第1のヘッダからインデックスがデコードされる。第1のメッシュセグメントは、複数の2Dチャート内の第1の1つまたは複数の2Dチャートにパラメータ化され、インデックスは、第1の1つまたは複数の2Dチャートに対するチャートベースのコーディングモードをそれぞれ示す。
別の一例では、複数の2Dチャートに関連付けられたそれぞれのインデックスがビットストリームからデコードされ、それぞれのインデックスは、複数の2Dチャートに対するそれぞれのチャートベースのコーディングモードを示す。
次いで、プロセスは(S2199)に進み、終了する。
プロセス(2100)を適切に適合させることができる。プロセス(2100)におけるステップは、変更および/または省略されてよい。追加のステップが追加されてよい。任意の適切な実施順序が使用され得る。
本開示で開示された技術は、別々に使用されてもよく、任意の順序で組み合わされてもよい。さらに、技術(例えば、方法、実施形態)、エンコーダ、およびデコーダの各々は、処理回路(例えば、1つもしくは複数のプロセッサまたは1つもしくは複数の集積回路)によって実装されてもよい。いくつかの例では、1つまたは複数のプロセッサは、非一時的コンピュータ可読媒体に記憶されたプログラムを実行する。
上述された技術は、コンピュータ可読命令を使用するコンピュータソフトウェアとして実装され、1つまたは複数のコンピュータ可読媒体に物理的に記憶することができる。例えば、図22が、開示された主題の特定の実施形態を実施するために適したコンピュータシステム(2200)を示している。
コンピュータソフトウェアは、1つまたは複数のコンピュータ中央処理装置(CPU)、グラフィックスプロセッシングユニット(GPU)などによって直接、または解釈、マイクロコード実行などを介して、実行することができる命令を含むコードを作成するために、アセンブリ、コンパイル、リンクなどの機構を施される得る任意の適切な機械コードまたはコンピュータ言語を使用してコーディングすることができる。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、モノのインターネットデバイスなどを含む様々なタイプのコンピュータまたはそのコンポーネント上で実行することができる。
コンピュータシステム(2200)に関して図22に示されているコンポーネントは、本質的に例示であり、本開示の実施形態を実施するコンピュータソフトウェアの使用または機能の範囲に関するいかなる限定も示唆することを意図していない。また、コンポーネントの構成を、コンピュータシステム(2200)の例示的な実施形態に示されるコンポーネントのいずれか1つまたは組み合わせに関する何らかの依存性または要件を有すると解釈すべきではない。
コンピュータシステム(2200)は、特定のヒューマンインタフェース入力装置を含み得る。そのようなヒューマンインタフェース入力装置は、例えば、触覚入力(キーストローク、スワイプ、データグローブの動きなど)、音声入力(音声、拍手など)、視覚入力(ジェスチャなど)、嗅覚入力(図示せず)を介して、1人または複数の人間であるユーザによる入力に応答し得る。ヒューマンインタフェース装置はまた、オーディオ(例えば、音声、音楽、周囲音)、画像(例えば、走査画像、写真画像は静止画像カメラから取得)、ビデオ(例えば、二次元映像、立体映像を含む三次元映像)などの、必ずしも人間による意識的な入力に直接関連しない特定のメディアを取り込むために使用することもできる。
入力ヒューマンインタフェース装置は、キーボード(2201)、マウス(2202)、トラックパッド(2203)、タッチスクリーン(2210)、データグローブ(図示せず)、ジョイスティック(2205)、マイクロフォン(2206)、スキャナ(2207)、カメラ(2208)のうちの1つまたは複数を含み得る(各々が1つだけ図示されている)。
さらに、コンピュータシステム(2200)は、特定のヒューマンインタフェース出力装置を含み得る。そのようなヒューマンインタフェース出力装置は、例えば、触覚出力、音、光、および嗅覚/味覚を通して、1人または複数の人間であるユーザの感覚を刺激し得る。このようなヒューマンインタフェース出力装置は、触覚出力装置(例えば、タッチスクリーン(2210)、データグローブ(図示せず)、またはジョイスティック(2205)による触覚フィードバックであるが、入力装置として機能しない触覚フィードバック装置でもよい)、オーディオ出力装置(スピーカ(2209)、ヘッドホン(図示せず)など)、視覚出力装置(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(2210)など(それぞれがタッチスクリーン入力機能を有しても、有さなくてもよく、それぞれが触覚フィードバック機能を有しても、有さなくてもよく、一部は、立体グラフィック出力、仮想現実眼鏡(図示せず)、ホログラフィックディスプレイおよびスモークタンク(図示せず)などの手段を通じて二次元視覚出力または三次元以上の出力を出力することが可能であってよい))、およびプリンタ(図示せず)を含み得る。
さらに、コンピュータシステム(2200)は、CD/DVDまたは同様の媒体(2221)を有するCD/DVD ROM/RW(2220)を含む光学媒体、サムドライブ(2222)、リムーバブルハードドライブまたはソリッドステートドライブ(2223)、テープおよびフロッピーディスクなどのレガシー磁気媒体(描写せず)、セキュリティドングルなどの専用のROM/ASIC/PLDベースのデバイス(図示せず)など、人間がアクセス可能なストレージデバイスおよびそれらに関連する媒体を含むことができる。
当業者はまた、本開示の主題に関連して使用される「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、または他の一時的信号を包含しないことも理解するはずである。
さらに、コンピュータシステム(2200)は、1つまたは複数の通信ネットワーク(2255)へのインタフェース(2254)を含むことができる。ネットワークは、例えば、ワイヤレス、有線、光であり得る。ネットワークはさらに、ローカル、広域、メトロポリタン、車両および産業用、リアルタイム、遅延耐性、などとすることができる。ネットワークの例は、イーサネット、ワイヤレスLANなどのローカルエリアネットワーク、GSM、3G、4G、5G、LTEなどを含むセルラネットワーク、ケーブルTV、衛星TV、および地上放送TVを含むTV有線または無線広域デジタルネットワーク、CANBusを含む車両および産業、などを含む。特定のネットワークは、一般に、特定の汎用データポートまたは周辺バス(2249)(例えば、コンピュータシステム(2200)のUSBポートなど)に取り付けられる外部ネットワークインタフェースアダプタを必要とし、他のネットワークは、後述のとおりのシステムバスへの取り付けによってコンピュータシステム(2200)のコアに統合される(例えば、PCコンピュータシステムへのイーサネットインタフェースまたはスマートフォンコンピュータシステムへのセルラーネットワークインタフェースなど)。これらのネットワークのいずれかを使用して、コンピュータシステム(2200)は他のエンティティと通信することができる。このような通信は、受信のみの一方向(例えば、テレビ放送)、送信のみの一方向(例えば、特定のCANbus装置へのCANbus)、あるいは例えばローカルまたはワイドエリアデジタルネットワークを用いた他のコンピュータシステムへの双方向であり得る。上述のようなネットワークおよびネットワークインタフェースの各々で特定のプロトコルおよびプロトコルスタックを使用することができる。
前述のヒューマンインタフェース装置、人間がアクセス可能なストレージデバイス、およびネットワークインタフェースは、コンピュータシステム(2200)のコア(2240)に取り付け可能である。
コア(2240)は、1つまたは複数の中央処理装置(CPU)(2241)、グラフィック処理装置(GPU)(2242)、フィールドプログラマブルゲートエリア(FPGA:Field Programmable Gate Area)(2243)の形式の専用のプログラマブル処理ユニット、特定のタスク用のハードウェアアクセラレータ(2244)、およびグラフィックスアダプタ(2250)、などを含み得る。これらの装置は、読み取り専用メモリ(ROM)(2245)、ランダムアクセスメモリ(2246)、内蔵のユーザがアクセスできないハードドライブ、SSDなどの内部大容量記憶装置(2247)と共に、システムバス(2248)を介して接続され得る。一部のコンピュータシステムにおいては、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理プラグの形式でシステムバス(2248)にアクセス可能であり得る。周辺装置は、コアのシステムバス(2248)に直接接続されても、周辺バス(2249)を介して接続されてもよい。一例において、スクリーン(2210)はグラフィックスアダプタ(2250)に接続され得る。周辺バス用のアーキテクチャには、PCI、USBなどが含まれる。
CPU(2241)、GPU(2242)、FPGA(2243)、およびアクセラレータ(2244)は、組み合わせて前述のコンピュータコードを構成できる特定の命令を実行できる。そのコンピュータコードは、ROM(2245)またはRAM(2246)に格納され得る。過渡的なデータをRAM(2246)に格納することもできる一方で、恒久的なデータを例えば内部大容量記憶装置(2247)に格納することができる。任意のメモリ装置への高速な格納および取り出しを、1つまたは複数のCPU(2241)、GPU(2242)、大容量記憶装置(2247)、ROM(2245)、RAM(2246)、などに密接に関連付けられ得るキャッシュメモリの使用を通じて可能にすることができる。
コンピュータ可読媒体は、様々なコンピュータ実装動作を実行するためのコンピュータコードを有し得る。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築されたものとすることもでき、またはコンピュータソフトウェア技術の当業者に周知の利用可能な種類のものとすることもできる。
一例として、限定するものではないが、アーキテクチャを有するコンピュータシステム(2200)、具体的にはコア(2240)が、1つまたは複数の有形のコンピュータ可読媒体に組み込まれたソフトウェアを実行するプロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)の結果として機能を提供することができる。このようなコンピュータ可読媒体は、上記で紹介したユーザアクセス可能な大容量記憶装置、ならびにコア内部大容量記憶装置(2247)またはROM(2245)などの非一時的な性質のコア(2240)の特定の記憶装置に関連付けられた媒体であり得る。本開示の種々の実施形態を実施するソフトウェアは、そのような装置に格納され、コア(2240)によって実行され得る。コンピュータ可読媒体は、特定の必要性に応じて、1つまたは複数のメモリ装置またはチップを含むことができる。ソフトウェアは、コア(2240)、とくにはその内部のプロセッサ(CPU、GPU、FPGAなどを含む)に、RAM(2246)に格納されるデータ構造の定義およびソフトウェアによって定義される処理によるそのようなデータ構造の偏向など、本明細書に記載の特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。これに加え、あるいは代えて、コンピュータシステムは、本明細書に記載の特定のプロセスまたは特定のプロセスの特定の部分を実行するために、ソフトウェアの代わりに動作またはソフトウェアと一緒に動作することができる回路(例えば、アクセラレータ(2244))に論理的に配線され、あるいは他のやり方で具体化された結果として、機能を提供することができる。ソフトウェアへの言及は、必要に応じて、ロジックを包含することができ、逆もまた同様である。コンピュータ可読媒体への言及は、必要に応じて、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のための論理を具現化する回路、またはその両方を包含することができる。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを包含する。
本開示ではいくつかの例示的な実施形態を説明したが、本開示の範囲内に入る修正形態、置換形態、および様々な代替均等物がある。したがって、当業者は、本明細書に明示的に示されていないかまたは記載されていないが、本開示の原理を具現化し、したがって本開示の趣旨および範囲内にある多数のシステムおよび方法を考案することができることが理解されよう。