本開示の態様は、3次元(3D)メディア処理の分野における技術を提供する。
3次元(3D)キャプチャ、3Dモデリング、および3Dレンダリングなどの進歩などの3Dメディア処理における技術開発は、いくつかのプラットフォームおよびデバイスにわたって3Dメディアコンテンツの普遍的な存在を促進している。一例では、赤ん坊の最初の一歩が1つの大陸でキャプチャされ、メディア技術は、祖父母が他の大陸で赤ん坊との没入体験を、眺め、(そして、おそらく対話し)楽しむことを可能にすることができる。本開示の一態様によれば、没入体験を改善するために、3Dモデルはますます洗練されてきており、3Dモデルの作成および消費は、データストレージ、データ送信リソースなどのかなりの量のデータリソースを占有する。
本開示のいくつかの態様によれば、点群およびメッシュは、没入型コンテンツを表現するための3Dモデルとして使用され得る。
点群は一般に、3D空間内の点のセットを指してもよく、各点が、色、材料特性、テクスチャ情報、強度属性、反射率属性、動き関連属性、モダリティ属性、および様々な他の属性などの関連付けられる属性を有する。点群は、このような点の構成としてオブジェクトまたはシーンを再構成するために使用され得る。
オブジェクトのメッシュ(メッシュモデルとも呼ばれる)は、オブジェクトの表面を記述するポリゴンを含むことができる。各ポリゴンは、3D空間内のポリゴンの頂点と、頂点がポリゴンにどのように接続されているかの情報とによって定義され得る。頂点がどのように接続されているかの情報は接続性情報と呼ばれる。いくつかの例では、メッシュはまた、頂点に関連付けられる色、法線などの属性を含むことができる。
本開示のいくつかの態様によれば、点群圧縮(PCC)のためのいくつかのコーディングツールが、メッシュ圧縮のために使用され得る。例えば、メッシュは再メッシュ化されて、新しいメッシュの接続性情報が推測され得る新しいメッシュを生成することができる。新しいメッシュの頂点、および新しいメッシュの頂点に関連付けられる属性は、点群内の点とみなすことができ、PCCコーデックを使用して圧縮されることができる。
点群は、オブジェクトまたはシーンを点の構成として再構成するために使用され得る。点は、様々な設定で複数のカメラ、深度センサまたはライダを使用してキャプチャされることができ、再構成されたシーンまたはオブジェクトを現実的に表現するために数千から最大数十億の点で構成され得る。パッチは、一般に、点群によって記述される表面の連続したサブセットを指してもよい。一例では、パッチは、閾値量未満で互いにずれた表面法線ベクトルを有する点を含む。
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つのサブグループパラメータのセットを抽出し得る。サブグループは、Group of Pictures(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)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化器、レート歪み最適化技術のラムダ値、...)、ピクチャサイズ、Group of Pictures(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つの動きベクトルおよび参照インデックスを使用するイントラ予測またはインター予測を使用してコーディングおよびデコーディングされ得るものであり得る。同様に、複数の予測ピクチャは、単一のブロックの再構成に2つを超える参照ピクチャと関連メタデータとを使用できる。
ソースピクチャは、一般的には、複数のサンプルブロック(例えば、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位置のセットによって記述される。一例では、(x,y,z)座標が、頂点の3D位置を記述するために使用されることができ、3D座標とも呼ばれる。いくつかの例では、接続性情報は、3D表面を作成するために頂点をどのように接続するかを記述する頂点インデックスのセットを含む。いくつかの例では、マッピング情報は、メッシュ表面を平面の2D領域にマッピングする方法を記述する。一例では、マッピング情報は、接続性情報とともにメッシュ頂点に関連付けられるUVパラメトリック/テクスチャ座標(u,v)のセットによって記述される。メッシュ頂点に関連付けられるテクスチャ座標は、2 Dマップ、UVアトラスなどの2D空間内のマッピングされたメッシュ頂点の位置を定義することができる。テクスチャ座標は、いくつかの例ではUV座標または2D座標とも呼ばれる。いくつかの例では、頂点属性は、メッシュ頂点に関連付けられるスカラーまたはベクトル属性値を含む。いくつかの例では、属性マップは、メッシュ表面に関連付けられ、2D画像/ビデオとして記憶される属性を含む。一例では、ビデオ(例えば、2D画像/ビデオ)とメッシュ表面との間のマッピングは、マッピング情報によって定義される。
本開示の一態様によれば、UVマッピングまたはメッシュパラメータ化と呼ばれるいくつかの技術が、3Dドメイン内のメッシュの表面を2Dドメインにマッピングするために使用される。いくつかの例では、メッシュは3Dドメインでパッチに分割される。パッチは、境界エッジで形成された境界を有するメッシュの連続したサブセットである。パッチの境界エッジは、パッチの1つの多角形のみに属し、パッチ内の2つの隣接する多角形によって共有されないエッジである。いくつかの例では、パッチ内の境界エッジの頂点はパッチの境界頂点と呼ばれ、パッチ内の非境界頂点はパッチの内部頂点と呼ばれ得る。
いくつかの例では、オブジェクトのメッシュは接続された三角形によって形成され、メッシュはパッチに分割されることができ、各パッチは接続された三角形のサブセットである。パッチの境界エッジは、パッチ内の1つの三角形のみに属し、パッチ内の隣接する三角形によって共有されないエッジである。いくつかの例では、パッチ内の境界エッジの頂点はパッチの境界頂点と呼ばれ、パッチ内の非境界頂点はパッチの内部頂点と呼ばれ得る。境界ループは一連の境界頂点を含み、一連の境界頂点によって形成された境界エッジは、境界ループと呼ばれるループを形成することができる。
本開示の一態様によれば、いくつかの例では、パッチはそれぞれ2D形状(UVパッチ、2Dパッチ、または2Dチャートとも呼ばれる)にパラメータ化される。2D形状は、いくつかの例ではアトラスとも呼ばれるマップにパッキングされ(例えば、配向されて配置され)得る。いくつかの例では、マップは、2D画像またはビデオ処理技術を使用してさらに処理され得る。
一例では、UVマッピング技術は、3Dメッシュのパッチに対応する2DのUVアトラス(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座標と呼ばれる。
本開示のいくつかの態様によれば、1つまたは複数の2Dマップ(いくつかの例では2Dアトラスとも呼ばれる)を使用してメッシュを表現し、次いで、画像またはビデオコーデックを使用して2Dマップをエンコーディングすることによって、メッシュ圧縮が行われ得る。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メッシュ内の頂点は、マップ(920)内に対応するUV座標を有することができる。
マップ(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座標のシグナリングに費やされるビットは、ビットストリーム内の重要な部分である。本開示のいくつかの態様は、テクスチャ座標(UV座標とも呼ばれる)がエンコーディングされず、推定されるメッシュ圧縮技術を提供する。現在のメッシュフレームのテクスチャ座標の推定は、現在のメッシュフレームのテクスチャ座標が直接エンコーディングおよびシグナリングされず、現在のメッシュフレームの3 D座標および接続性からの導出、以前にコーディングされたメッシュフレームからのテクスチャ座標の継承などによって、他の適切なソースから取得されることを意味する。これにより、メッシュコーディング効率が改善され得る。メッシュ圧縮技術は、メッシュ圧縮におけるUV座標導出に基づく。メッシュ圧縮技術は、個別に、または任意の形態の組合せによって適用され得る。メッシュ圧縮技術は、動的メッシュおよび静的メッシュに適用され得ることにも留意されたい。静的メッシュは、1つのメッシュフレームを含む。
いくつかの例では、メッシュ圧縮技術は、エンコーダからビットストリーム内のUV座標をシグナリングする代わりに、デコーダ側でUV座標を導出することができる。したがって、UV座標を表すためのビットレートの一部が節約され得る。いくつかの例では、メッシュコーデック(エンコーダ/デコーダ)は、可逆メッシュコーディングを行うように構成され得る。いくつかの例では、メッシュコーデック(エンコーダ/デコーディング)は、非可逆メッシュコーディングを行うように構成され得る。本開示のいくつかの態様は、可逆メッシュコーデック(エンコーダ/デコーダ)とともに使用するためのメッシュ圧縮技術を提供し、本開示のいくつかの態様は、非可逆メッシュコーデック(エンコーダ/デコーダ)とともに使用するためのメッシュ圧縮技術を提供する。
図10は、本開示のいくつかの実施形態による可逆メッシュコーデックのフレームワーク(1000)の図を示す。フレームワーク(1000)は、メッシュエンコーダ(1010)およびメッシュデコーダ(1050)を含む。メッシュエンコーダ(1010)は、入力メッシュ(1005)(動的メッシュの場合にはメッシュフレーム)をビットストリーム(1045)にエンコーディングし、メッシュデコーダ(1050)は、ビットストリーム(1045)をデコーディングして再構成されたメッシュ(1095)(動的メッシュの場合にはメッシュフレーム)を生成する。
メッシュエンコーダ(1010)は、コンピュータ、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲームデバイス、ARデバイス、VRデバイスなどの任意の適切なデバイスとすることができる。メッシュデコーダ(1050)は、コンピュータ、クライアントコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲームデバイス、ARデバイス、VRデバイスなどの任意の適切なデバイスとすることができる。ビットストリーム(1045)は、通信ネットワーク(図示せず)を介してメッシュエンコーダ(1010)からメッシュデコーダ(1050)に送信され得る。
図10の例では、メッシュエンコーダ(1010)は、パラメータ化モジュール(1020)と、テクスチャ変換モジュール(1030)と、可逆エンコーダ(1040)、画像/ビデオエンコーダ(1041)、補助エンコーダ(1042)などの複数のエンコーダとを含む。
一例では、入力メッシュ(1005)は、頂点の3D座標(XYZによって示される)、頂点の元のテクスチャ座標(元のUV座標とも呼ばれ、元のUVによって示される)、頂点の接続性情報(接続性によって示される)、および元のテクスチャマップを含むことができる。元のテクスチャマップは、頂点の元のテクスチャ座標に関連付けられる。頂点の3D座標および頂点の接続性情報は、図10のXYX&接続性(1021)によって示され、パラメータ化モジュール(1020)および可逆エンコーダ(1040)に提供される。(1031)によって示される元のテクスチャマップおよび元のUVは、テクスチャ変換モジュール(1030)に提供される。
パラメータ化モジュール(1020)は、新しいUV(1025)によって示される、頂点の新しいテクスチャ座標(頂点の新しいUV座標とも呼ばれる)を生成するために、入力メッシュ(1005)のXYZおよび接続性(1021)を利用するパラメータ化を行うように構成される。
テクスチャ変換モジュール(1030)は、元のテクスチャマップおよび元のUV(1031)を受け取ることができ、新しいUV(1025)を受け取ることができ、元のテクスチャマップを、新しいUV(1025)に関連付けられる新しいテクスチャマップ(1022)に変換することができる。新しいテクスチャマップ(1022)は、エンコーディングのために画像/ビデオエンコーダ(1041)に提供される。
XYZ&接続性(1021)は、頂点のジオメトリ情報、例えば、3D空間内の頂点の位置を表す(x,y,z)座標、頂点の接続性情報(例えば、多角形とも呼ばれる面の定義)を含むことができる。いくつかの例では、XYZ&接続性(1021)は、法線、色反射率などの頂点属性も含む。可逆エンコーダ(1040)は、XYZ&接続性(1021)をビットストリーム(1045)にエンコーディングするために可逆コーディング技術を使用することができる。
新しいテクスチャマップ(1022)(いくつかの例では新しい属性マップとも呼ばれる)は、頂点の新しいテクスチャ座標に関してメッシュ面に関連付けられる属性を含む。動的メッシュ処理のいくつかの例では、メッシュフレームのシーケンスの新しいテクスチャマップ(1022)は、ビデオシーケンスを形成することができる。新しいテクスチャマップ(1022)は、適切な画像および/またはビデオコーディング技術を使用して、画像/ビデオエンコーダ(1041)によってエンコーディングされ得る。
図10の例では、メッシュエンコーダ(1010)は、フラグ、インデックスなどの支援情報を含む補助データ(1023)を生成することができる。補助データエンコーダ(1042)は、補助データ(1023)を受信し、補助データ(1023)をビットストリーム(1045)にエンコーディングする。
図10の例では、可逆エンコーダ(1040)、画像/ビデオエンコーダ(1041)および補助データエンコーダ(1042)からのエンコーディングされた出力は、入力メッシュ(1005)のエンコーディングされた情報を運ぶビットストリーム(1045)に混合(例えば、多重化)される。
図10の例では、メッシュデコーダ(1050)は、ビットストリーム(1045)をセクションに逆多重化することができ、セクションは、可逆デコーダ(1060)、画像/ビデオデコーダ(1061)および補助データデコーダ(1062)などの複数のデコーダによってそれぞれデコーディングされ得る。
一例では、可逆デコーダ(1060)は、可逆エンコーダ(1040)に対応し、可逆エンコーダ(1040)によってエンコーディングされたビットストリーム(1045)のセクションをデコーディングすることができる。可逆エンコーダ(1040)および可逆デコーダ(1060)は、可逆エンコーディングおよびデコーディングを行うことができる。可逆デコーダ(1060)は、デコーディングされたXYZ&接続性(1065)によって示されるような、頂点のデコーディングされた3D座標および頂点の接続性情報を出力することができる。デコーディングされたXYZ&接続性(1065)は、XYZ&接続性(1021)と同じにすることができる。
いくつかの例では、パラメータ化モジュール(1070)は、パラメータ化モジュール(1020)と同じパラメータ化アルゴリズムを含む。パラメータ化モジュール(1070)は、デコーディングされたXYZ&接続性(1065)を利用して新しいUV(1075)によって示される頂点の新しいテクスチャ座標を生成するパラメータ化を行うように構成される。いくつかの例では、デコーディングされたXYZ&接続性(1065)はXYZ&接続性(1021)と同一であり、したがって新しいUV(1075)は新しいUV(1025)と同一とすることができることに留意されたい。
一例では、画像/ビデオデコーダ(1061)は、画像/ビデオエンコーダ(1041)に対応し、画像/ビデオエンコーダ(1041)によってエンコーディングされたビットストリーム(1045)のセクションをデコーディングすることができる。画像/ビデオデコーダ(1061)は、デコーディングされた新しいテクスチャマップ(1066)を生成することができる。デコーディングされた新しいテクスチャマップ(1066)は、メッシュデコーダ(1050)における新しいUV(1075)と同一であり得る新しいUV(1025)に関連付けられる。デコーディングされた新しいテクスチャマップ(1066)は、メッシュ再構成モジュール(1080)に提供される。
一例では、補助データデコーダ(1062)は補助データエンコーダ(1042)に対応し、補助データエンコーダ(1042)によってエンコーディングされたビットストリーム(1045)のセクションをデコーディングすることができる。補助データデコーダ(1062)は、デコーディングされた補助データ(1067)を生成することができる。デコーディングされた補助データ(1067)は、メッシュ再構成モジュール(1080)に提供される。
メッシュ再構成モジュール(1080)は、デコーディングされたXYZ&接続性(1065)、新しいUV(1075)、デコーディングされた新しいテクスチャマップ(1066)およびデコーディングされた補助データ(1067)を受信し、それに応じて再構成されたメッシュ(1095)を生成する。
パラメータ化モジュール(1020)、テクスチャ変換モジュール(1030)、可逆エンコーダ(1040)、画像/ビデオエンコーダ(1041)、および補助データエンコーダ(1042)などのメッシュエンコーダ(1010)内の構成要素は、それぞれ様々な技術によって実装され得ることに留意されたい。一例では、構成要素は集積回路によって実装される。他の例では、構成要素は、1つまたは複数のプロセッサによって実行され得るソフトウェアを使用して実装される。
可逆デコーダ(1060)、パラメータ化モジュール(1070)、メッシュ再構成モジュール(1080)、画像/ビデオデコーダ(1061)、補助データデコーダ(1062)などのメッシュデコーダ(1050)内の構成要素は、それぞれ様々な技術によって実装され得ることに留意されたい。一例では、構成要素は集積回路によって実装される。他の例では、構成要素は、1つまたは複数のプロセッサによって実行され得るソフトウェアを使用して実装される。
本開示の一態様によれば、パラメータ化モジュール(1020)およびパラメータ化モジュール(1070)は、任意の適切なパラメータ化アルゴリズムで実施され得る。いくつかの例では、3Dメッシュシーケンス内のメッシュフレームにわたって位置合わせされた新しいテクスチャ座標を生成するためのパラメータ化アルゴリズムが、パラメータ化モジュール(1020)およびパラメータ化モジュール(1070)に実装され得る。したがって、3Dメッシュシーケンス内のメッシュフレームの新しいテクスチャマップは、メッシュフレームにわたって比較的大きな相関を有することができ、メッシュフレームの新しいテクスチャマップは、インター予測を使用してコーディングされることができ、コーディング効率はさらに改善され得る。
いくつかの例では、パラメータ化アルゴリズムを示すためにパラメータ化モジュール(1020)を使用して、パラメータ化モジュール(1020)は、メッシュフレームの面(ポリゴンとも呼ばれる)を、面の法線値に従って異なるチャート(2Dパッチ、2D形状、UVパッチなどとも呼ばれる)に分割することができる。チャートは、テクスチャ空間(例えば、UVマップ、2D UVアトラス)にパッキングされ得る。いくつかの例では、パラメータ化モジュール(1020)は、それぞれのメッシュフレームを順番に処理し、UVマップにパッキングされたチャートを有する複数のUVマップを生成することができる。UVマップは、それぞれシーケンス内のメッシュフレームのUVマップである。パラメータ化モジュール(1020)は、メッシュフレームのUVマップにわたってチャートを時間的に位置合わせすることができる。
いくつかの例では、位置合わせは、チャートから計算されたメトリックを使用することができる。例えば、メトリックは、スケール不変メトリック、回転不変メトリック、並進不変メトリック、またはアフィン変換不変メトリックなどとすることができる。一例では、メトリックは、各チャートの3D座標の中心を含むことができる。他の例では、メトリックは、各チャートの平均深度を含むことができる。他の例では、メトリックは、各チャートの加重平均テクスチャ値または属性値を含むことができる。位置合わせに使用されるメトリックは、上に列挙したメトリックのうちの1つまたは複数を含むことができ、または同様の特性を有する他のメトリックを含むことができることに留意されたい。
いくつかの例では、パラメータ化モジュール(1020)は、チャートから計算された1つまたは複数のメトリックを使用して、シーケンス内のメッシュフレームにわたってチャートを時間的に位置合わせすることができる。時間的位置合わせ後に得られるUV座標は、新しいUVである。
画像/ビデオエンコーダ(1041)および画像/ビデオデコーダ(1061)は、任意の適切な画像および/またはビデオコーデックを使用して実装され得ることに留意されたい。単一のメッシュフレームを有する静的メッシュの例では、画像/ビデオエンコーダ(1041)および画像/ビデオデコーダ(1061)は、単一のメッシュフレームの新しいテクスチャマップをコーディングするために、JPEGまたはPNGコーダなどの画像コーダによって実装され得る。メッシュフレームのシーケンスを有する動的メッシュの例では、画像/ビデオエンコーダ(1041)および画像/ビデオデコーダ(1061)は、メッシュフレームのシーケンスに対する新しいテクスチャマップをコーディングするためのH.265などによるビデオコーデックによって実装され得る。
いくつかの例では、可逆エンコーダ(1040)および可逆デコーダ(1060)は、可逆メッシュコーデックによって実装され得ることに留意されたい。可逆メッシュコーデックは、メッシュフレームのXYZおよび接続性情報をエンコーディングし、UV座標のコーディングをスキップするように構成される。一実施形態では、可逆エンコーダ(1040)および可逆デコーダ(1060)は、メッシュを可逆的にエンコーディングするために、静的メッシュ圧縮用のMPEG参照ソフトウェアであるSC3DMCコーデックを含むように実装され得る。
図11は、本開示のいくつかの実施形態による非可逆メッシュコーデックのフレームワーク(1100)の図を示す。フレームワーク(1100)は、メッシュエンコーダ(1110)およびメッシュデコーダ(1150)を含む。メッシュエンコーダ(1110)は、入力メッシュ(1105)(動的メッシュの場合にはメッシュフレーム)をビットストリーム(1145)にエンコードし、メッシュデコーダ(1150)は、ビットストリーム(1145)をデコーディングして再構成されたメッシュ(1195)(動的メッシュの場合にはメッシュフレーム)を生成する。
メッシュエンコーダ(1110)は、コンピュータ、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲームデバイス、ARデバイス、VRデバイスなどの任意の適切なデバイスとすることができる。メッシュデコーダ(1150)は、コンピュータ、クライアントコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲームデバイス、ARデバイス、VRデバイスなどの任意の適切なデバイスとすることができる。ビットストリーム(1145)は、通信ネットワーク(図示せず)を介してメッシュエンコーダ(1110)からメッシュデコーダ(1150)に送信され得る。
図11の例では、メッシュエンコーダ(1110)は、パラメータ化モジュール(1120)と、テクスチャ変換モジュール(1130)と、非可逆エンコーダ(1140)、ビデオエンコーダ(1141)、補助エンコーダ(1142)などの複数のエンコーダとを含む。さらに、メッシュエンコーダ(1110)は、非可逆エンコーダ(1140)に対応する非可逆デコーダ(1145)を含む。
一例では、入力メッシュ(1105)は、頂点の3D座標(XYZによって示される)、頂点の元のテクスチャ座標(元のUV座標とも呼ばれ、元のUVによって示される)、頂点の接続性情報(接続性によって示される)、および元のテクスチャマップを含むことができる。元のテクスチャマップは、頂点の元のテクスチャ座標に関連付けられる。頂点の3D座標および頂点の接続性情報は、図11のXYX&接続性(1121)によって示され、非可逆エンコーダ(1140)に提供される。(1131)によって示される元のテクスチャマップおよび元のUVは、テクスチャ変換モジュール(1130)に提供される。
XYZ&接続性(1121)は、頂点のジオメトリ情報、例えば、3D空間内の頂点の位置を表す(x,y,z)座標、頂点の接続性情報(例えば、多角形とも呼ばれる面の定義)を含むことができる。いくつかの例では、XYZ&接続性(1121)は、法線、色反射率などの頂点属性も含む。非可逆エンコーダ(1140)は、XYZ&接続性(1121)をビットストリーム(1145)にエンコーディングするために非可逆コーディング技術を使用することができる。さらに、(1144)によって示されるエンコーディングされたXYZ&接続性も非可逆デコーダ(1145)に提供される。一例では、非可逆デコーダ(1145)は、非可逆エンコーダ(1140)に対応し、非可逆エンコーダ(1140)によってエンコーディングされた、エンコーディングされたXYZ&接続性(1144)をデコーディングすることができる。非可逆エンコーダ(1140)および非可逆デコーダ(1145)は、非可逆エンコーディングおよびデコーディングを行うことができる。いくつかの例では、非可逆エンコーダ(1140)および非可逆デコーダ(1145)は、非可逆メッシュコーデックによって実装され得ることに留意されたい。非可逆メッシュコーデックは、メッシュフレームのXYZおよび接続性情報をエンコーディングし、UV座標のコーディングをスキップするように構成される。一実施形態では、非可逆エンコーダ(1140)および非可逆デコーダ(1145)は、非可逆メッシュコーディングのためのDracoを含むように実装され得る。非可逆デコーダ(1145)は、デコーディングされたXYZ&接続性(1146)によって示されるような、頂点のデコーディングされた3D座標および頂点の接続性情報を出力することができる。
パラメータ化モジュール(1120)は、デコーディングされたXYZ&接続性(1146)を利用して新しいUV(1125)によって示される頂点の新しいテクスチャ座標を生成するパラメータ化を行うように構成される。
テクスチャ変換モジュール(1130)は、元のテクスチャマップおよび元のUV(1131)を受け取ることができ、新しいUV(1125)を受け取ることができ、元のテクスチャマップを、新しいUV(1125)に関連付けられる新しいテクスチャマップ(1122)に変換することができる。新しいテクスチャマップ(1122)は、エンコーディングのために画像/ビデオエンコーダ(1141)に提供される。
新しいテクスチャマップ(1122)(いくつかの例では新しい属性マップとも呼ばれる)は、頂点の新しいテクスチャ座標に関してメッシュ面に関連付けられる属性を含む。動的メッシュ処理のいくつかの例では、メッシュフレームのシーケンスの新しいテクスチャマップ(1122)は、ビデオシーケンスを形成することができる。新しいテクスチャマップ(1122)は、適切な画像および/またはビデオコーディング技術を使用して、画像/ビデオエンコーダ(1141)によってエンコーディングされ得る。
図11の例では、メッシュエンコーダ(1110)は、フラグ、インデックスなどの支援情報を含む補助データ(1123)を生成することができる。補助データエンコーダ(1142)は、補助データ(1123)を受信し、補助データ(1123)をビットストリーム(1145)にエンコーディングする。
図11の例では、非可逆エンコーダ(1140)、画像/ビデオエンコーダ(1141)および補助データエンコーダ(1142)からのエンコーディングされた出力は、入力メッシュ(1105)のエンコーディングされた情報を運ぶビットストリーム(1145)に混合(例えば、多重化)される。
図11の例では、メッシュデコーダ(1150)は、ビットストリーム(1145)をセクションに逆多重化することができ、セクションは、非可逆デコーダ(1160)、画像/ビデオデコーダ(1161)および補助データデコーダ(1162)などの複数のデコーダによってそれぞれデコーディングされ得る。
一例では、非可逆デコーダ(1160)は、非可逆エンコーダ(1140)に対応し、非可逆エンコーダ(1140)によってエンコーディングされたビットストリーム(1145)のセクションをデコーディングすることができる。非可逆エンコーダ(1140)および非可逆デコーダ(1160)は、非可逆エンコーディングおよびデコーディングを行うことができる。非可逆デコーダ(1160)は、デコーディングされたXYZ&接続性(1165)によって示されるような、頂点のデコーディングされた3D座標および頂点の接続性情報を出力することができる。
いくつかの例では、メッシュエンコーダ(1110)の非可逆デコーダ(1145)およびメッシュデコーダ(1150)の非可逆デコーダ(1165)で同じデコーディング技法が使用され、したがって、デコーディングされたXYZ&接続性(1165)は、デコーディングされたXYZ&接続性(1146)と同じ頂点のデコーディングされた3D座標および頂点の接続性情報を有することができる。なお、デコーディングされたXYZ&接続性(1165)およびデコーディングされたXYZ&接続性(1146)は、非可逆エンコーディングおよびデコーディングにより、XYZ&接続性(1121)とは異なる可能性がある。
いくつかの例では、パラメータ化モジュール(1170)は、パラメータ化モジュール(1120)と同じパラメータ化アルゴリズムを含む。パラメータ化モジュール(1170)は、デコーディングされたXYZ&接続性(1165)を利用して新しいUV(1175)によって示される頂点の新しいテクスチャ座標を生成するパラメータ化を行うように構成される。いくつかの例では、デコーディングされたXYZ&接続性(1165)はXYZ&接続性(1146)と同一であり、したがって新しいUV(1175)は新しいUV(1125)と同一とすることができることに留意されたい。
一例では、画像/ビデオデコーダ(1161)は、画像/ビデオエンコーダ(1141)に対応し、画像/ビデオエンコーダ(1141)によってエンコーディングされたビットストリーム(1145)のセクションをデコーディングすることができる。画像/ビデオデコーダ(1161)は、デコーディングされた新しいテクスチャマップ(1166)を生成することができる。デコーディングされた新しいテクスチャマップ(1166)は、メッシュデコーダ(1150)における新しいUV(1175)と同一であり得る新しいUV(1125)に関連付けられる。デコーディングされた新しいテクスチャマップ(1166)は、メッシュ再構成モジュール(1180)に提供される。
一例では、補助データデコーダ(1162)は補助データエンコーダ(1142)に対応し、補助データエンコーダ(1142)によってエンコーディングされたビットストリーム(1145)のセクションをデコーディングすることができる。補助データデコーダ(1162)は、デコーディングされた補助データ(1167)を生成することができる。デコーディングされた補助データ(1167)は、メッシュ再構成モジュール(1180)に提供される。
メッシュ再構成モジュール(1180)は、デコーディングされたXYZ&接続性(1165)、新しいUV(1175)、デコーディングされた新しいテクスチャマップ(1166)およびデコーディングされた補助データ(1167)を受信し、それに応じて再構成されたメッシュ(1195)を生成する。
パラメータ化モジュール(1120)、テクスチャ変換モジュール(1130)、非可逆エンコーダ(1140)、非可逆デコーダ(1145)、画像/ビデオエンコーダ(1141)、および補助データエンコーダ(1142)などのメッシュエンコーダ(1110)内の構成要素は、それぞれ様々な技術によって実装され得ることに留意されたい。一例では、構成要素は集積回路によって実装される。他の例では、構成要素は、1つまたは複数のプロセッサによって実行され得るソフトウェアを使用して実装される。
非可逆デコーダ(1160)、パラメータ化モジュール(1170)、メッシュ再構成モジュール(1180)、画像/ビデオデコーダ(1161)、補助データデコーダ(1162)などのメッシュデコーダ(1150)内の構成要素は、それぞれ様々な技術によって実装され得ることに留意されたい。一例では、構成要素は集積回路によって実装される。他の例では、構成要素は、1つまたは複数のプロセッサによって実行され得るソフトウェアを使用して実装される。
本開示の一態様によれば、パラメータ化モジュール(1120)およびパラメータ化モジュール(1170)は、任意の適切なパラメータ化アルゴリズムで実施され得る。いくつかの例では、3Dメッシュシーケンス内のメッシュフレームにわたって位置合わせされた新しいテクスチャ座標を生成するためのパラメータ化アルゴリズムが、パラメータ化モジュール(1120)およびパラメータ化モジュール(1170)に実装され得る。したがって、3Dメッシュシーケンス内のメッシュフレームの新しいテクスチャマップは、メッシュフレームにわたって比較的大きな相関を有することができ、メッシュフレームの新しいテクスチャマップは、インター予測を使用してコーディングされることができ、コーディング効率はさらに改善され得る。
いくつかの例では、パラメータ化アルゴリズムを示すためにパラメータ化モジュール(1120)を使用して、パラメータ化モジュール(1120)は、メッシュフレームの面(ポリゴンとも呼ばれる)を、面の法線値に従って異なるチャート(2Dパッチ、2D形状、UVパッチなどとも呼ばれる)に分割することができる。チャートは、テクスチャ空間(例えば、UVマップ、2D UVアトラス)にパッキングされ得る。いくつかの例では、パラメータ化モジュール(1120)は、それぞれのメッシュフレームを順番に処理し、UVマップにパッキングされたチャートを有する複数のUVマップを生成することができる。UVマップは、それぞれシーケンス内のメッシュフレームのUVマップである。パラメータ化モジュール(1120)は、メッシュフレームのUVマップにわたってチャートを時間的に位置合わせすることができる。
いくつかの例では、位置合わせは、チャートから計算されたメトリックを使用することができる。例えば、メトリックは、スケール不変メトリック、回転不変メトリック、並進不変メトリック、またはアフィン変換不変メトリックなどとすることができる。一例では、メトリックは、各チャートの3D座標の中心を含むことができる。他の例では、メトリックは、各チャートの平均深度を含むことができる。他の例では、メトリックは、各チャートの加重平均テクスチャ値または属性値を含むことができる。位置合わせに使用されるメトリックは、上に列挙したメトリックのうちの1つまたは複数を含むことができ、または同様の特性を有する他のメトリックを含むことができることに留意されたい。
いくつかの例では、パラメータ化モジュール(1120)は、チャートから計算された1つまたは複数のメトリックを使用して、シーケンス内のメッシュフレームにわたってチャートを時間的に位置合わせすることができる。時間的位置合わせ後に得られるUV座標は、新しいUVである。
画像/ビデオエンコーダ(1141)および画像/ビデオデコーダ(1161)は、任意の適切な画像および/またはビデオコーデックを使用して実装され得ることに留意されたい。単一のメッシュフレームを有する静的メッシュの例では、画像/ビデオエンコーダ(1141)および画像/ビデオデコーダ(1161)は、単一のメッシュフレームの新しいテクスチャマップをコーディングするために、JPEGまたはPNGコーダなどの画像コーダによって実装され得る。メッシュフレームのシーケンスを有する動的メッシュの例では、画像/ビデオエンコーダ(1141)および画像/ビデオデコーダ(1161)は、メッシュフレームのシーケンスに対する新しいテクスチャマップをコーディングするためのH.265などによるビデオコーデックによって実装され得る。
本開示の態様によれば、メッシュエンコーダ側は、(メッシュデコーダがビットストリームからテクスチャ座標を直接デコーディングできるように)ビットストリーム内の頂点のテクスチャ座標をシグナリングするか、またはメッシュデコーダ側でテクスチャ座標を導出するかを選択することができる。いくつかの例では、そのような選択をシグナリングし、メッシュデコーダに通知するために、高レベル指示フラグが使用され得る。
一実施形態では、頂点のテクスチャ座標がメッシュデコーダ側で導出されるべきであること、またはテクスチャ座標がビットストリーム内でシグナリングされるべきであることを示すために、シーケンスレベルフラグが使用され得る。シーケンスレベルフラグに関連付けられるメッシュフレームのシーケンス全体は、シーケンスレベルフラグの指示に従う。
他の実施形態では、テクスチャ座標がメッシュデコーダ側で導出されるべきであること、またはテクスチャ座標がビットストリーム内でシグナリングされるべきであることを示すために、フレームレベルフラグが使用され得る。フレームレベルフラグに関連付けられるメッシュフレーム全体は、フレームレベルフラグの指示に従う。
他の実施形態では、テクスチャ座標がメッシュデコーダ側で導出されるべきであること、またはテクスチャ座標がビットストリーム内でシグナリングされるべきであることを示すために、グループレベルフラグがメッシュフレームのグループに対して使用され得る。メッシュフレームのグループ全体は、グループレベルフラグの指示に従う。メッシュフレームのグループの概念は、ビデオコーディングにおけるGroup of Picturesと同様である。例えば、Group of Picturesは、同じピクチャパラメータセット(PPS)を参照するピクチャ、または、同じランダムアクセスポイント内のピクチャを含むことができ、メッシュフレームのグループは、同じピクチャパラメータセット(PPS)を参照するメッシュフレーム、または同じランダムアクセスポイント内のメッシュフレームを含むことができる。
他の実施形態では、上記において、フレームレベルフラグまたはグループレベルフラグは、シーケンスレベルフラグが存在する場合に条件付きでシグナリングされ、テクスチャ座標導出が許可され得ることを示す。そうでなければ、フレームレベルフラグまたはグループレベルフラグはシグナリングされる必要がない。代わりに、フレームレベルフラグおよびグループレベルフラグには、デフォルト値(ビットストリームにおいてテクスチャ座標がシグナリングされることを示す)が割り当てられる。
本開示の他の態様によれば、メッシュデコーダがテクスチャ座標を導出するのを支援するために、いくつかの追加情報がビットストリームにおいてシグナリングされ得る。追加情報は、様々なレベルでシグナリングされ得る。一例では、追加情報は、シーケンスヘッダ、フレームヘッダ、グループヘッダ(メッシュフレームのグループに対する)などの高レベルシンタックスによってシグナリングされ得る。他の例では、追加情報は、各パッチ、各チャート、各スライスなどについて、下位レベルのシンタックスによってシグナリングされ得る。
いくつかの実施形態では、現在のメッシュフレームのテクスチャ座標が以前のデコーディングされたメッシュフレームから継承されているかどうかを示すフラグがビットストリームに含められ得る。さらに、フラグが、現在のメッシュフレームのテクスチャ座標が以前のデコーディングされたメッシュフレームから継承されていることを示す場合、以前のデコーディングされたフレームのセットからの参照フレームを示すために、インデックスがさらにシグナリングされ得る。そして、メッシュデコーダでのパラメータ化プロセス全体をスキップすることで、現フレームのテクスチャ座標は、指示されたメッシュフレームから直接継承され得る。
いくつかの実施形態では、パラメータ化を開始するためのメッシュフレームの頂点からのキー頂点が、メッシュエンコーダによって決定されることができ、キー頂点のインデックスは、メッシュフレームに関連してシグナリングされ得る。次いで、メッシュデコーダは、キー頂点のインデックスをデコーディングし、キー頂点を開始点として使用してパラメータ化を開始して、メッシュフレームを、例えば複数のチャート/パッチ/スライスに分割することができる。
いくつかの実施形態では、現在の部分(例えば、現在のチャート、現在のパッチ、現在のスライス)のテクスチャ座標が以前のデコーディングされたフレームから継承されているか、またはパラメータ化方法によって導出されているかを示すために、メッシュフレームに関連付けられる各チャート、メッシュフレームに関連付けられる各パッチ、メッシュフレームに関連付けられる各スライスなど、メッシュフレームの現在の部分に対してフラグがシグナリングされ得る。フラグが、現在の部分のテクスチャ座標が以前のデコーディングされたフレームから継承されていることを示す場合、以前にデコーディングされたフレームの選択、およびデコーディングされた部分の選択(例えば、チャート、パッチ、スライス)を示すインデックスが、ビットストリーム内でシグナリングされ得る。
いくつかの実施形態では、メッシュエンコーダは、パラメータ化方法候補のセットから特定のパラメータ化方法を選択することができ、特定のパラメータ化方法の選択を示すインデックスをビットストリームに含めることができる。インデックスは、異なるレベル、例えば、シーケンスヘッダ、フレームヘッダ、Group of Pictures、パッチとの関連、スライスとの関連(例えば、スライスヘッダにおいて)などでシグナリングされ得ることに留意されたい。
図12は、いくつかの例におけるシンタックステーブル(1200)の一例を示す図である。
シンタックステーブル(1200)は、(メッシュデコーダがビットストリームから直接テクスチャ座標をデコーディングできるように)ビットストリーム内の頂点のテクスチャ座標をシグナリングするか、またはメッシュデコーダ側でテクスチャ座標を導出するかの選択を示すために複数のフラグを使用する。例えば、複数のフラグは、シーケンスレベルの第1のフラグ(1210)、フレームレベルの第2のフラグ(1220)を含む。シンタックステーブル(1200)はまた、現在のメッシュフレームのテクスチャ座標が以前のデコーディングされたメッシュフレームから継承されているかどうかを示す第3のフラグ(1230)と、以前のデコーディングされたフレームのセットからの参照フレームを示すインデックス(1240)とを含む。
具体的には、図12の例では、第1のフラグ(1210)はps_derive_uv_enabled_flagで表される。第1のフラグ(1210)が0であることは、シーケンス内のメッシュフレームについてテクスチャ座標の導出が有効化されていないことを示す。第1のフラグ(1210)が1であることは、シーケンス内のメッシュフレームについてテクスチャ座標が導出され得ることを示す。そして、現在のメッシュに対するテクスチャ座標を導出するか否かが、現在のメッシュに関連付けられる第2のフラグ(1220)により判定され得る。一例では、第1のフラグ(1210)がビットストリームに存在しないとき、第1のフラグ(1210)は0に設定され得る。
図12の例では、第2のフラグ(1220)はph_derive_uv_flagで表される。第2のフラグ(1220)が0であることは、現在のメッシュフレームについてテクスチャ座標が導出されていないことを示し、第2のフラグ(1220)が1であることは、現在のメッシュフレームについてテクスチャ座標が導出されている(例えば、パラメータ化を行うことによって)ことを示す。存在しない場合、第2のフラグ(1220)は0と等しく設定される。第2のフラグ(1220)が0であるとき、現在のメッシュフレームのテクスチャ座標は継承またはシグナリングされ得る。現在のメッシュフレームのテクスチャ座標が継承されるかシグナリングされるかは、第3のフラグ(1230)に依存し得る。
図12の例では、第3のフラグ(1230)はph_inherit_uv_flagで表される。第3のフラグ(1230)が0であることは、テクスチャ座標が現在のメッシュフレームについて以前にデコーディングされたメッシュフレームから継承されず、テクスチャ座標がビットストリーム内でシグナリングされることを示し、第3のフラグ(1230)が1であることは、テクスチャ座標が現在のメッシュフレームについて以前のデコーディングされたメッシュフレームから継承されることを示す。存在しない場合、第3のフラグ(1230)は0と等しく設定される。
第3のフラグ(1230)が、テクスチャ座標が以前のデコーディングされたメッシュフレームから継承されていることを示す場合、デコーディングされたメッシュフレームのリストからデコーディングされたメッシュフレームのフレームインデックスを指定するために、inherit_idxで表されるインデックス(1240)がシグナリングされる。現在のメッシュフレームのテクスチャ座標は、デコーディングされたメッシュフレームから継承される。存在しない場合、インデックス(1240)は一例では0に等しく設定される。
図13は、本開示の一実施形態によるプロセス(1300)の概要を示すフローチャートを示す。プロセス(1300)は、1つまたは複数のメッシュフレームのためのエンコーディングプロセス中に使用され得る。様々な実施形態では、プロセス(1300)は、処理回路によって実行される。いくつかの実施形態では、プロセス(1300)はソフトウェア命令で実装され、したがって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(1300)を行う。プロセスは(S1301)から開始し、(S1310)に進む。
(S1310)において、第1の3Dメッシュフレーム内の頂点に関連付けられる新しいテクスチャ座標が決定される。第1の3Dメッシュフレームは、ポリゴンでオブジェクトの表面を表す。
(S1320)において、第1の3Dメッシュフレームの元のテクスチャマップは、頂点の新しいテクスチャ座標に関連付けられる新しいテクスチャマップに変換される。元のテクスチャマップは、頂点の元のテクスチャ座標に関連付けられる。
(S1330)において、頂点の3D座標、頂点の接続性情報、および新しいテクスチャマップが、第1の3Dメッシュフレームを運ぶためのビットストリームにエンコーディングされる。
いくつかの例では、頂点の3D座標および頂点の接続性情報のエンコーディングは、可逆コーデックに従って行われる。
いくつかの例では、頂点の3D座標および頂点の接続性情報のエンコーディングは、非可逆コーデックに従って行われる。
いくつかの例では、頂点に関連付けられる新しいテクスチャ座標を推定するために、エンコーディングされた3D座標および接続性がデコーディングされて、頂点のデコーディングされた3D座標および頂点のデコーディングされた接続性情報を生成する。頂点に関連付けられる新しいテクスチャ座標を決定するために、パラメータ化が、頂点のデコーディングされた3D座標およびデコーディングされた接続性情報に従って行われる。
いくつかの例では、パラメータ化を行うために、第1の3Dメッシュフレームのポリゴンは、頂点のデコーディングされた3D座標およびデコーディングされた接続性情報に従って、2Dマップ内の第1の1つまたは複数のチャートに分割される。第1の1つまたは複数のチャートを第2の3Dメッシュフレームに関連付けられる第2の1つまたは複数のチャートと位置合わせする時間的位置合わせが行われる。第1の3Dメッシュフレームおよび第2の3Dメッシュフレームは、3Dメッシュシーケンス内のフレームである。新しいテクスチャ座標は、時間的位置合わせを用いて最初の1つまたは複数のチャートから決定される。
いくつかの例では、ポリゴンは、ポリゴンに関連付けられる法線値に従って分割される。
いくつかの例では、スケール不変メトリック、回転不変メトリック、並進不変メトリックおよびアフィン変換不変メトリックのうちの少なくとも1つに従って、時間的位置合わせが行われる。
一例では、時間的位置合わせは、チャートに関連付けられる3D座標に基づいて計算されたチャートの中心に従って行われる。他の例では、時間的位置合わせは、チャートの平均深度に従って行われる。他の例では、時間的位置合わせは、チャートの加重平均テクスチャ値に従って行われる。他の例では、時間的位置合わせは、チャートの加重平均属性値に従って行われる。
いくつかの例では、テクスチャ座標導出の有効化を示すフラグが、ビットストリームにエンコーディングされる。フラグは、シーケンスレベルフラグ、フレーム群レベルフラグ、およびフレームレベルフラグのうちの少なくとも1つである。
いくつかの例では、頂点に関連付けられるテクスチャ座標を推定するために、テクスチャ座標の継承を示すフラグがビットストリームにエンコーディングされる。特定のコーディングされた3Dメッシュフレームは、特定のコーディングされた3Dメッシュフレームからテクスチャ座標を継承するために、コーディングされた3Dメッシュフレームのリストから選択される。コーディングされた3Dメッシュフレームのリストからの特定のコーディングされた3Dメッシュフレームの選択を示すインデックスが、ビットストリームにコーディングされる。
いくつかの例では、テクスチャマップの一部に関連付けられるフラグがビットストリームにエンコーディングされ、フラグは、テクスチャマップの一部に関連付けられるテクスチャ座標が、コーディングされたメッシュフレームから継承されるか、またはパラメータ化によって導出されるかを示す。
いくつかの例では、頂点のうちのキー頂点のセットが決定され、パラメータ化はキー頂点のセットから開始する。キー頂点のセットのインデックスがビットストリームにエンコーディングされる。
いくつかの例では、選択されたパラメータ化方法がパラメータ化方法候補のリストから決定され、パラメータ化方法候補のリストから選択されたパラメータ化方法を示すインデックスがビットストリームにエンコーディングされる。
次いで、プロセスは(S1399)に進み、終了する。
プロセス(1300)は、適切に適合され得る。プロセス(1300)のステップは、修正および/または省略され得る。追加のステップが追加され得る。任意の適切な実施順序が使用され得る。
図14は、本開示の一実施形態によるプロセス(1400)の概要を示すフローチャートを示す。プロセス(1400)は、1つまたは複数のメッシュフレームのためのデコーディングプロセス中に使用され得る。様々な実施形態において、プロセス(1400)は、処理回路によって実行される。いくつかの実施形態では、プロセス(1400)はソフトウェア命令で実装され、したがって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(1400)を行う。プロセスは(S1401)から始まり、(S1410)に進む。
(S1410)において、第1の3Dメッシュフレーム内の頂点の3D座標および頂点の接続性情報が、第1の3Dメッシュフレームを運ぶビットストリームからデコーディングされる。第1の3Dメッシュフレームは、ポリゴンでオブジェクトの表面を表す。
(S1420)において、頂点に関連付けられるテクスチャ座標が推定される。いくつかの例では、ビットストリームはコーディングされたテクスチャ座標を含まない。
(S1430)において、第1の3Dメッシュフレームのテクスチャマップがビットストリームからデコーディングされる。テクスチャマップは、テクスチャ座標を有する2D頂点を有する第1の1つまたは複数の2Dチャートを含む。
(S1440)において、第1の3Dメッシュフレームは、頂点の3D座標、頂点の接続性情報、テクスチャマップおよびテクスチャ座標に基づいて再構成される。
いくつかの例では、頂点の3D座標および頂点の接続性情報は、可逆コーデックを用いてコーディングされる。いくつかの例では、頂点の3D座標および頂点の接続性情報は、非可逆コーデックを用いてコーディングされる。
いくつかの例では、頂点に関連付けられるテクスチャ座標を推定するために、頂点の3D座標および接続性情報に従ってパラメータ化が行われ、頂点に関連付けられるテクスチャ座標を決定する。例えば、第1の3Dメッシュフレームのポリゴンは第1の1つまたは複数のチャートに分割され、第1の1つまたは複数のチャートは2Dマップにパッキングされる。第1の1つまたは複数のチャートを第2の3Dメッシュフレームに関連付けられる第2の1つまたは複数のチャートと位置合わせする時間的位置合わせが行われる。第1の3Dメッシュフレームおよび第2の3Dメッシュフレームは、3Dメッシュシーケンス内のフレームである。テクスチャ座標は、時間的位置合わせを用いて最初の1つまたは複数のチャートから決定される。
いくつかの例では、ポリゴンは、ポリゴンに関連付けられる法線値に従って第1の1つまたは複数のチャートに分割される。
いくつかの例では、スケール不変メトリック、回転不変メトリック、並進不変メトリックおよびアフィン変換不変メトリックのうちの少なくとも1つに従って、時間的位置合わせが行われる。
一例では、時間的位置合わせは、チャートに関連付けられる3D座標に基づいて計算されたチャートの中心に従って行われる。他の例では、時間的位置合わせは、チャートの平均深度に従って行われる。他の例では、時間的位置合わせは、チャートの加重平均テクスチャ値に従って行われる。他の例では、時間的位置合わせは、チャートの加重平均属性値に従って行われる。
いくつかの例では、テクスチャ座標導出の有効化を示すフラグが、デコーディングされる。フラグは、シーケンスレベルフラグ、フレーム群レベルフラグ、およびフレームレベルフラグのうちの少なくとも1つである。
いくつかの例では、頂点に関連付けられるテクスチャ座標を推定するために、テクスチャ座標の継承を示すフラグがデコーディングされる。次に、デコーディングされた3Dメッシュフレームのリストから選択された3Dメッシュフレームを示すインデックスがデコーディングされる。そして、選択された3Dメッシュフレームからテクスチャ座標が継承される。
いくつかの例では、テクスチャマップの一部に関連付けられるフラグがデコーディングされる。フラグは、テクスチャマップの部分に関連付けられるテクスチャ座標が、デコーディングされたメッシュフレームから継承されているか、パラメータ化によって導出されているかを示す。
いくつかの例では、頂点内のキー頂点のセットのインデックスがデコーディングされる。パラメータ化は、キー頂点のセットから始まる。
いくつかの例では、パラメータ化方法候補のリストから選択されたパラメータ化方法を示すインデックスがデコーディングされる。そして、選択したパラメータ化方法に従ってパラメータ化が行われる。
次いで、プロセスは(S1499)に進み、終了する。
プロセス(1400)は、適切に適合させることができる。プロセス(1400)のステップは、修正および/または省略され得る。追加のステップが追加され得る。任意の適切な実施順序が使用され得る。
本開示で開示された技術は、別々に使用されてもよく、任意の順序で組み合わされてもよい。さらに、技術(例えば、方法、実施形態)、エンコーダ、およびデコーダの各々は、処理回路(例えば、1つもしくは複数のプロセッサまたは1つもしくは複数の集積回路)によって実装されてもよい。いくつかの例では、1つまたは複数のプロセッサは、非一時的コンピュータ可読媒体に記憶されたプログラムを実行する。
上述された技法は、コンピュータ可読命令を使用するコンピュータソフトウェアとして実装され、1つまたは複数のコンピュータ可読媒体に物理的に記憶することができる。例えば、図15は、開示された主題の特定の実施形態を実施するのに適したコンピュータシステム(1500)を示す。
コンピュータソフトウェアは、アセンブリ、コンパイル、リンクなどのメカニズムを受けることができる任意の適切な機械コードまたはコンピュータ言語を使用してコーディングされ、1つまたは複数のコンピュータ中央処理装置(CPU)、グラフィックス処理装置(GPU)などによって直接、または解釈、マイクロコード実行などを介して、実行され得る命令を含むコードを作成することができる。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーム機、モノのインターネットデバイスなどを含む様々なタイプのコンピュータまたはコンピュータの構成要素上で実行され得る。
コンピュータシステム(1500)について図15に示される構成要素は、本質的に例示であり、本開示の実施形態を実装するコンピュータソフトウェアの使用または機能の範囲に関する限定を示唆することを意図されていない。構成要素の構成は、コンピュータシステム(1500)の例示的な実施形態に示されている構成要素のいずれか1つ、または構成要素の組合せに関して、依存性を有するものとも要件を有するものとも解釈されるべきではない。
コンピュータシステム(1500)は、特定のヒューマンインターフェース入力デバイスを含み得る。そのようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(キーストローク、スワイプ、データグローブの動きなど)、オーディオ入力(音声、拍手など)、視覚入力(ジェスチャなど)、嗅覚入力(図示せず)を介した、1人または複数の人間ユーザによる入力に応答し得る。ヒューマンインターフェースデバイスは、オーディオ(音声、音楽、環境音など)、画像(走査画像、写真画像は静止画像カメラから取得など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)など、必ずしも人間による意識的な入力に直接関連しない特定の媒体を取り込むためにも使用され得る。
入力ヒューマンインターフェースデバイスは、キーボード(1501)、マウス(1502)、トラックパッド(1503)、タッチスクリーン(1510)、データグローブ(図示せず)、ジョイスティック(1505)、マイク(1506)、スキャナ(1507)、カメラ(1508)などのうちの1つまたは複数を含み得る(各々1つのみ図示されている)。
コンピュータシステム(1500)はまた、特定のヒューマンインターフェース出力デバイスも含み得る。そのようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、および匂い/味を介して、1人または複数の人間ユーザの感覚を刺激し得る。そのようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(1510)、データグローブ(図示せず)、またはジョイスティック(1505)による触覚フィードバックであるが、入力デバイスとして機能しない触覚フィードバックデバイスもあり得る)、オーディオ出力デバイス(スピーカ(1509)、ヘッドフォン(図示せず)など)、視覚出力デバイス(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(1510)、各々タッチスクリーン入力機能ありまたはなし、各々触覚フィードバック機能ありまたはなしであり、一部は、2次元視覚出力、または立体出力などの手段による3次元を超える出力を出力することができる場合もある、仮想現実眼鏡(図示せず)、ホログラフィックディスプレイ、およびスモークタンク(図示せず)など)、ならびにプリンタ(図示せず)を含み得る。
コンピュータシステム(1500)はまた、人間がアクセス可能な記憶デバイス、ならびにCD/DVDまたは同様のメディア(1521)を有するCD/DVD ROM/RW(1520)を含む光学メディア、サムドライブ(1522)、リムーバブルハードドライブまたはソリッドステートドライブ(1523)、テープやフロッピーディスクなどのレガシー磁気メディア(図示せず)、セキュリティドングルなどの専用のROM/ASIC/PLDベースのデバイス(図示せず)などといった記憶デバイスの関連メディアも含むことができる。
当業者はまた、本開示の主題に関連して使用される「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、または他の一時的な信号を包含しないことを理解するべきである。
コンピュータシステム(1500)はまた、1つまたは複数の通信ネットワーク(1555)へのインターフェース(1554)も含むことができる。ネットワークは、例えば、無線、有線、光であり得る。ネットワークはさらに、ローカル、広域、メトロポリタン、車両および産業用、リアルタイム、遅延耐性、などとすることができる。ネットワークの例は、イーサネット、無線LANなどのローカルエリアネットワーク、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルテレビ、衛星テレビ、および地上放送テレビを含むテレビ有線または無線ワイドエリアデジタルネットワーク、ならびにCANBusを含む車両用および産業用などを含む。特定のネットワークは、一般に、(例えば、コンピュータシステム(1500)のUSBポートなどの)特定の汎用データポートまたは周辺バス(1549)に取り付けられた外部ネットワークインターフェースアダプタを必要とし、他のネットワークは、一般に、以下に記載されるシステムバスへの接続によってコンピュータシステム(1500)のコアに統合される(例えば、PCコンピュータシステムへのイーサネットインターフェースやスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)。これらのネットワークのいずれかを使用して、コンピュータシステム(1500)は他のエンティティと通信することができる。そのような通信は、単方向、受信のみ(例えば、テレビ放送)、単方向の送信のみ(例えば、特定のCANbusデバイスへのCANbus)、または、例えば、ローカルエリアまたはワイドエリアのデジタルネットワークを使用した他のコンピュータシステムへの双方向とすることができる。特定のプロトコルおよびプロトコルスタックは、上述したように、それらのネットワークおよびネットワークインターフェースの各々で使用され得る。
前述のヒューマンインターフェースデバイス、人間がアクセス可能な記憶デバイス、およびネットワークインターフェースは、コンピュータシステム(1500)のコア(1540)に接続することができる。
コア(1540)は、1つまたは複数の中央処理装置(CPU)(1541)、グラフィックスプロセッシングユニット(GPU)(1542)、フィールドプログラマブルゲートエリア(FPGA)(1543)の形態の専用プログラマブル処理ユニット、特定のタスク用のハードウェアアクセラレータ(1544)、グラフィックスアダプタ(1550)などを含むことができる。これらのデバイスは、読み出し専用メモリ(ROM)(1545)、ランダムアクセスメモリ(1546)、ユーザがアクセスできない内蔵ハードドライブ、SSDなどの内部大容量ストレージ(1547)などとともにシステムバス(1548)を介して接続され得る。一部のコンピュータシステムでは、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理プラグの形態でシステムバス(1548)はアクセス可能であり得る。周辺デバイスは、コアのシステムバス(1548)に直接、または周辺バス(1549)を介して接続され得る。一例では、スクリーン(1510)はグラフィックスアダプタ(1550)に接続され得る。周辺バス用のアーキテクチャは、PCI、USBなどを含む。
CPU(1541)、GPU(1542)、FPGA(1543)、およびアクセラレータ(1544)は、組み合わせて前述のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードは、ROM(1545)またはRAM(1546)に記憶され得る。RAM(1546)には暫定的なデータも記憶されることができ、永続的なデータは、例えば、内部大容量ストレージ(1547)に記憶され得る。1つまたは複数のCPU(1541)、GPU(1542)、大容量ストレージ(1547)、ROM(1545)、RAM(1546)などと密接に関連付けることができるキャッシュメモリの使用によって、メモリデバイスのいずれかに対する高速記憶および取り出しを可能にされ得る。
コンピュータ可読媒体は、様々なコンピュータ実装動作を実施するためのコンピュータコードを有することができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築されたものであってもよく、またはコンピュータソフトウェア技術の当業者に周知の利用可能な種類のものであってもよい。
限定ではなく例として、アーキテクチャを有するコンピュータシステム(1500)、具体的にはコア(1540)は、(CPU、GPU、FPGA、アクセラレータなどを含む)(1つまたは複数の)プロセッサが1つまたは複数の有形のコンピュータ可読媒体において具現化されたソフトウェアを実行した結果として機能を提供することができる。そのようなコンピュータ可読媒体は、上記のようなユーザアクセス可能な大容量ストレージ、ならびにコア内部大容量ストレージ(1547)やROM(1545)などの非一時的な性質のものであるコア(1540)の特定のストレージと関連付けられる媒体とすることができる。本開示の様々な実施形態を実装するソフトウェアは、そのようなデバイスに記憶され、コア(1540)によって実行されることができる。コンピュータ可読媒体は、特定の必要性に従って、1つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(1540)に、具体的にはその中の(CPU、GPU、およびFPGAなどを含む)プロセッサに、RAM(1546)に記憶されたデータ構造を定義すること、およびソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を変更することを含む、本明細書に記載される特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えて、または代替として、コンピュータシステムは、本明細書に記載される特定のプロセスまたは特定のプロセスの特定の部分を実行するために、ソフトウェアの代わりにまたはソフトウェアとともに動作することができる、配線されるかまたは他の方法で回路において具現化された論理(例えば、アクセラレータ(1544))の結果として機能を提供することもできる。ソフトウェアへの言及は、必要に応じて、論理を包含することができ、その逆も同様である。コンピュータ可読媒体への言及は、必要に応じて、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のための論理を具現化する回路、またはその両方を包含することができる。本開示は、ハードウェアとソフトウェアの任意の適切な組合せを包含する。
本開示は、いくつかの例示的な実施形態について説明してきたが、変更、置換、および様々な代替的な等価物があり、これらは本開示の範囲内に含まれる。したがって、当業者は、本明細書に明示的に示されていないかまたは記載されていないが、本開示の原理を具現化し、したがって本開示の趣旨および範囲内にある多数のシステムおよび方法を考案することができることが理解されよう。