本明細書および特許請求の範囲全体を通して、用語は、明示的に記載される意味を超えて文脈内で示唆または暗示される微妙な意味を有する場合がある。本明細書で使用される「一実施形態では」または「いくつかの実施形態では」という語句は、必ずしも同じ実施形態を指すものではなく、本明細書で使用される「別の実施形態では」または「他の実施形態では」という語句は、必ずしも異なる実施形態を指すものではない。同様に、本明細書で使用される「一実装形態では」または「いくつかの実装形態では」という語句は、必ずしも同じ実装形態を指すものではなく、本明細書で使用される「別の実装形態では」または「他の実装形態では」という語句は、必ずしも異なる実装形態を指すものではない。例えば、特許請求される主題は、例示的な実施形態/実装形態の全部または一部の組み合わせを含むことを意図している。
一般に、専門用語は、文脈における使用法から少なくとも部分的に理解される場合がある。例えば、本明細書で使用される「および」、「または」、または「および/または」などの用語は、そのような用語が使用される文脈に少なくとも部分的に依存する場合がある様々な意味を含んでもよい。典型的には、A、B、またはCなどのリストを関連付けるために使用される場合の「または」は、ここでは包括的な意味で使用されるA、B、およびC、ならびにここでは排他的な意味で使用されるA、B、またはCを意味することを意図している。加えて、本明細書で使用される「1つまたは複数」または「少なくとも1つ」という用語は、文脈に少なくとも部分的に依存して、単数の意味で任意の特徴、構造、もしくは特性を記述するために使用されてもよく、または複数の意味で特徴、構造、もしくは特性の組み合わせを記述するために使用されてもよい。同様に、「a」、「an」、または「the」などの用語もやはり、文脈に少なくとも部分的に依存して、単数形の使用法を伝えるか、または複数形の使用法を伝えると理解されてもよい。加えて、「に基づいて」または「によって決定される」という用語は、必ずしも排他的な要因のセットを伝えることを意図していないと理解されてもよく、代わりに、やはり文脈に少なくとも部分的に依存して、必ずしも明示的に記述されていないさらなる要因の存在を可能にする場合もある。
3Dキャプチャ、3Dモデリング、および3Dレンダリングなどの進歩などの3Dメディア処理における技術開発は、いくつかのプラットフォームおよびデバイスにわたって3Dコンテンツの普遍的な生成を促進している。このような3Dコンテンツは、没入型の視聴/レンダリング、および対話型体験などを提供する、様々な形態のメディアを生成するために処理され得る情報を含んでいる。3Dコンテンツの用途は豊富で、これに限定されないが、仮想現実、拡張現実、メタバース・インタラクション、ゲーム、没入型ビデオカンファレンス、ロボット工学、コンピュータ支援設計(CAD)などが含まれる。本開示の一態様によれば、没入型体験を改善するために、3Dモデルはますます高度化されており、3Dモデルの作成および消費は、データストレージ、データ送信リソース、およびデータ処理リソースなどの相当量のデータリソースを要求する。
一般に2D画素配列の形式のデータセット(画像など)で表現される旧来の二次元(2D)コンテンツと比較して、三次元のフル解像度ピクシレーションを含む3Dコンテンツはきわめてリソース集約的な場合があり、それにもかかわらず、ほとんどではないにせよ多くの実際の用途で必要とされていない。ほとんどの3D没入型の用途で、本開示のいくつかの態様によれば、よりデータ集約性が低い3Dコンテンツの表現が使用される場合がある。例えば、ほとんどの用途で、3Dシーン(LIDARデバイスなどのセンサで捕捉された実世界のシーン、またはソフトウェアツールによって生成された、アニメーション化された3Dシーン)内のオブジェクトの体積情報ではなく、地形情報のみが必要になる場合がある。このように、3Dオブジェクトおよび3Dシーンを表現するために、より効率的な形態のデータセットが使用され得る。例えば、3Dシーン内の3Dオブジェクトなどの没入型3Dコンテンツを表すために、3Dモデルのタイプとして3Dメッシュが使用され得る。
1つ以上のオブジェクトのメッシュ(あるいはメッシュモデルとも呼ばれる)は、頂点の集合を含み得る。頂点は、互いに接続してエッジを形成し得る。エッジは、さらに接続して面を形成し得る。面は、さらにポリゴンを形成し得る。様々なオブジェクトの3D表面が、面やポリゴンなどに分解され得る。頂点、エッジ、面、ポリゴン、または表面はそれぞれ、色、法線、テクスチャなどの様々な属性と関連付けられてもよい。表面の法線は表面法線と呼ばれてもよく、かつ/または頂点の法線は頂点法線と呼ばれてもよい。頂点がどのように接続されてエッジ、面、またはポリゴンになるかについての情報は、接続性情報と呼ばれてもよい。頂点の同じセットが異なる面、表面、およびポリゴンを形成できるので、接続性情報はメッシュの成分を一意に定義するために重要である。一般に、3D空間における頂点の位置は、その3D座標で表され得る。面は、順次接続された頂点のセットで表されてもよく、それぞれが3D座標のセットと関連付けられる。同様に、エッジは、それぞれがその3D座標と関連付けられる、2つの頂点で表されてもよい。頂点、エッジ、および面は、3Dメッシュデータセット内にインデックスされてもよい。
メッシュは、1つ以上のこのような基本要素タイプの集合によって定義され記述されてもよい。しかしながら、メッシュを完全に記述するために、上述したすべてのタイプの要素が必要なわけではない。例えば、メッシュは、頂点およびその接続性のみを使用して完全に記述され得る。別の例では、メッシュは、面および面の共通する頂点のリストを使用するだけで完全に記述され得る。このようにメッシュは、代替的なデータセット構成および形式によって記述された、様々な代替的なタイプのものであり得る。例示的なメッシュタイプは、これに限定されないが、面-頂点メッシュ、ウイングドエッジメッシュ、半エッジメッシュ、クワッドエッジメッシュ、コーナーテーブルメッシュ、頂点-頂点メッシュなどを含む。これに対応して、メッシュデータセットは、これに限定されないが、.raw、.blend、.fbx、.3ds、.dae、.dng、3dm、.dsf、.dwg、.obj、.ply、.pmd、.stl、amf、.wrl、.wrz、.x3d、.x3db、.x3dv、.x3dz、.x3dbz、.x3dvz、.c4d、.lwo、.smb、.msh、.mesh、.veg、.z3d、.vtk、.l4dなどのファイル拡張子を有する、代替的なファイル形式に準拠した情報とともに記憶され得る。色、法線、テクスチャなどのこのような要素の属性は、様々な方式でメッシュデータセットに含まれ得る。
いくつかの実装形態では、メッシュの頂点は画素化された2D空間の中にマッピングされてもよく、UV空間と呼ばれる。このように、メッシュの各頂点は、UV空間内の画素にマッピングされてもよい。いくつかの実装形態では、1つの頂点が、UV空間内の2つ以上の画素にマッピングされてもよく、例えば、境界にある頂点が、UV空間内の2つまたは3つの画素にマッピングされてもよい。同様に、メッシュ内の面または表面は、メッシュ内の記録済みの頂点の中にある場合もない場合もある、複数の3D点にサンプリングされてもよく、かつこれら複数の3D点は、二次元UV空間内の画素にマッピングされてもよい。以下でさらに詳しく説明するように、メッシュ内の頂点、ならびに面および表面のサンプリングされた3D点をUV空間にマッピングすることと、その後のUV空間におけるデータ分析および処理によって、メッシュまたはメッシュのシーケンスの3Dデータセットのデータストレージ、圧縮、およびコーディングが容易になり得る。マッピングされたUV空間データセットは、UV画像、あるいは2Dマップ、またはメッシュの2D画像と呼ばれる場合がある。
3Dメッシュ内の頂点およびサンプリングされた表面点の2D UV空間へのマッピングに従って、いくつかの画素が、3Dメッシュの頂点およびサンプリングされた表面点にマッピングされてもよく、その一方で、他の画素はマッピングされなくてもよい。メッシュの2D画像内のマッピングされた画素のそれぞれは、3Dメッシュ内の対応するマッピングされた頂点または表面点の情報と関連付けられ得る。UV空間内の画素に含める情報のタイプに応じて、メッシュの様々な2D画像または2Dマップが構築されてもよい。メッシュの代替表現または/または結合表現として、複数の2Dマップの集合が使用されてもよい。
例えば、メッシュ用の最も簡単な2Dマップが、占有マップとして構築されてもよい。占有マップは、メッシュの3D頂点またはサンプリングされた表面点にマッピングされた、UV空間内の画素を示し得る。占有の表示は、例えば、マッピングまたは占有を示すバイナリ値「1」、および非マッピングまたは非占有を示すバイナリ値「0」を含む各2D画素において、バイナリインジケータで表され得る。このように、占有マップは、2D画像として構築されてもよい。標準的な2D画像が、8ビットなどの色深度を有する3つのチャネルの配列(RGB、YUV、YCrCbなど)を含む一方で、メッシュのこのような2D占有マップは、1ビットのバイナリチャネルしか必要としない。
別の例では、2Dジオメトリマップがメッシュ用に構築され得る。2Dジオメトリマップは、単一のバイナリチャネルを含むのではなく完全な3チャネル画像になり、占有画素のそれぞれにおける3色チャネルは、メッシュ内の対応するマッピングされた頂点、またはサンプリングされた3D点の、3つの3D座標に対応する。
いくつかの実装形態では、他の2Dマップがメッシュ用に構築され得る。例えば、メッシュの頂点およびサンプリングされた3D点のそれぞれの属性のセットがメッシュデータセットから抽出されてもよく、2Dマップ画像の3色チャネルにコーディングされてもよい。このような2Dマップは、メッシュの属性マップとして参照されてもよい。特定の属性マップが、UV空間内の各占有画素の3チャネル色を含んでもよい。別の例では、メッシュのマッピングされた頂点、またはサンプリングされた3D点のそれぞれに関連付けられたテクスチャ属性が、3チャネル値にパラメータ化され、2D属性マップにコーディングされてもよい。別の例では、メッシュのマッピングされた頂点、またはサンプリングされた3D点のそれぞれに関連付けられた法線属性が、3チャネル値にパラメータ化され、2D属性マップにコーディングされてもよい。いくつかの例示的実装形態では、メッシュの頂点およびサンプリングされた表面点のすべての必要な属性情報を保持するために、複数の2D属性マップが構築されてもよい。
上述した2Dマップは単なる例である。メッシュ用の他のタイプの2Dマップが構築されてもよい。加えて、3Dメッシュから他のデータセットが抽出されて、上記の2Dマップと合わせて、共同で元の3Dメッシュを表現してもよい。例えば、頂点同士の接続または接続性情報は、リスト、表などの形式で、2Dマップとは別に個別にグループ化され編成される。例えば、接続性情報は、頂点インデックスを使用して頂点を参照してもよい。頂点インデックスは、2Dマップ内のその対応する画素位置にマッピングされてもよい。別の例では、表面テクスチャ、色、法線、変位その他の情報は、2Dマップとしてではなく、2Dマップとは別に個別に抽出され編成されてもよい。2Dマップその他上述したデータセットとともに3Dメッシュを表すために、3Dメッシュから他のメタデータがさらに抽出されてもよい。
上述した例示的実装形態が静的なメッシュに注目している一方で、本開示の態様によれば、3Dメッシュは動的であってもよい。動的メッシュは、例えば、成分(ジオメトリ情報、接続性情報、マッピング情報、頂点属性、および属性マップ)のうちの少なくとも1つが時間とともに変化するメッシュのことを指す場合がある。このように、動的メッシュは、メッシュのシーケンスまたはメッシュ(メッシュフレームとも呼ばれる)で記述されてもよく、ビデオを形成する2D画像フレームの時限シーケンスに類似している。
いくつかの例示的実装形態では、動的メッシュは、一定の接続性情報、時変ジオメトリ、および時変頂点属性を有し得る。いくつかの他の例では、動的メッシュは、時変接続性情報を有することができる。いくつかの例では、時変属性マップおよび時変接続性情報を有する動的メッシュを生成するために、デジタル3Dコンテンツ作成ツールが使用され得る。いくつかの他の例では、動的メッシュを生成するために、体積取得/検出/感知技術が使用される。体積取得技術は、特にリアルタイム制約下で、時変接続性情報を有する動的メッシュを生成することができる。
動的メッシュは、経時的に変化する相当量の情報を含み得るため、大量のデータを必要とし得る。しかしながら、冗長性を利用するために、メッシュフレーム内(イントラ圧縮)、およびメッシュフレーム間(インター圧縮)で圧縮が行われてもよい。特にメッシュシーケンスに対して、メッシュ表現内のメディアコンテンツの効率的な記憶および送信を可能にするために、様々なメッシュ圧縮プロセスが実施され得る。
本開示の態様は、メッシュ圧縮のための例示的なアーキテクチャおよび技術を提供する。これらの技術は、これに限定されないが、静的メッシュ圧縮、動的メッシュ圧縮、一定の接続性情報を有する動的メッシュの圧縮、時変接続性情報を有する動的メッシュの圧縮、時変属性マップを有する動的メッシュの圧縮などの様々なメッシュ圧縮に使用され得る。これらの技術は、リアルタイム没入型通信、ストレージ、自由視点ビデオ、拡張現実(AR)、仮想現実(VR)などの様々なアプリケーションのための非可逆および可逆圧縮に使用され得る。アプリケーションは、ランダムアクセスおよびスケーラブル/プログレッシブコーディングなどの機能を含み得る。
本開示は、3Dメッシュに適用可能な技術および実装形態について明示的に述べているが、本明細書で述べる様々な実装形態の基礎となる原理は、他のタイプの3Dデータ構造に適用可能であり、これに限定されないが、点群(PC)データ構造を含む。簡単にするために、以下の3Dメッシュに対する言及は一般的なものであり、かつ点群その他の3D体積データセットなどの他のタイプの3D表現を含むことが意図されている。
まず例示的なアーキテクチャレベルの実装形態を見ると、図1は、本開示の例示的な実施形態による通信システム(100)の簡略化されたブロック図を示している。通信システム(100)は、通信ネットワーク(150)(あるいはネットワークとも呼ばれる)などを介して互いに通信できる、複数の端末デバイスを含んでもよい。例えば、通信システム(100)は、ネットワーク(150)を介して相互接続された一対の端末デバイス(110)および(120)を含んでもよい。図1の例では、端末デバイス(110)および(120)の第1のペアは、3Dメッシュの単方向送信を実施し得る。例えば、端末デバイス(110)は、3Dメッシュまたは3Dメッシュのシーケンスを圧縮してもよく、これは、端末デバイス(110)によって生成されるか、または記憶装置から取得されるか、あるいは端末デバイス(110)に接続された3Dセンサ(105)によって捕捉されてもよい。圧縮された3Dメッシュまたは3Dメッシュのシーケンスは、例えばビットストリーム(コーディングされたビットストリームとも呼ばれる)の形態で、ネットワーク(150)を介して他の端末デバイス(120)に送信されてもよい。端末デバイス(120)は、ネットワーク(150)から、圧縮された3Dメッシュまたは3Dメッシュのシーケンスを受信し、元の3Dメッシュまたは3Dメッシュのシーケンスを再構築するためにビットストリームを解凍し、再構築された3Dメッシュまたは3Dメッシュのシーケンスを、表示用または他の目的/用途用に適切に処理し得る。単方向データ送信は、メディアサービング用途などにおいて一般的であり得る。
図1の例では、端末デバイス(110)および(120)のいずれか1つまたは両方が、サーバ、据え置きまたはモバイルパーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲーム機端末、メディアプレーヤ、および/または専用の三次元(3D)機器などとして実施されてもよいが、本開示の原理はそのように限定されない場合がある。ネットワーク(150)は、端末デバイス(110)と端末デバイス(120)との間で、圧縮された3Dメッシュを送信する任意のタイプのネットワークまたはネットワークの組み合わせを表し得る。ネットワーク(150)は、例えば、ワイヤライン(有線)および/または無線通信ネットワークを含むことができる。ネットワーク(150)は、回線交換チャネルおよび/またはパケット交換チャネルでデータを交換し得る。代表的なネットワークは、長距離電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、セルラーネットワーク、および/またはインターネットを含む。本開示の目的のために、ネットワーク(150)のアーキテクチャおよびトポロジは、本明細書で以下に説明されない限り、本開示の動作に重要ではない場合がある。
図2は、本開示の一実施形態によるストリーミングシステム(200)の例示的な簡略化されたブロック図を示す。図2は、3Dメッシュおよび圧縮された3Dメッシュに関する、開示されている実装形態の例示的な適用を示す。開示される主題は、3Dテレプレゼンスアプリケーション、仮想現実アプリケーションなどの他の3Dメッシュまたは点群対応アプリケーションに等しく適用可能であり得る。
ストリーミングシステム(200)は、捕捉または記憶サブシステム(213)を含むことができる。捕捉または記憶サブシステム(213)は、3Dメッシュ生成器または記憶媒体(201)、例えば、圧縮されていない3Dメッシュ(202)または点群(202)を生成または供給する、3Dメッシュまたは点群生成ツール/ソフトウェア、グラフィック生成構成要素、あるいは光検出と測距(LIDAR)システムなどの点群センサ、3Dカメラ、3Dスキャナ、3Dメッシュ記憶装置などを含んでもよい。いくつかの例示的実装形態では、3Dメッシュ(202)は、3Dメッシュの頂点、または点群の3D点(両方とも3Dメッシュと呼ばれる)を含む。3Dメッシュ(202)は、圧縮された3Dメッシュ(204)(圧縮された3Dメッシュのビットストリーム)と比較して、対応する多いデータ量を強調するために太い線で示されている。圧縮された3Dメッシュ(204)は、3Dメッシュ(202)に結合されたエンコーダ(203)を含む電子デバイス(220)によって生成され得る。エンコーダ(203)は、以下でより詳細に説明されるように、開示される主題の態様を可能にするかまたは実装するためのハードウェア、ソフトウェア、またはそれらの組み合わせを含み得る。圧縮された3Dメッシュ(204)(または圧縮された3Dメッシュのビットストリーム(204))は、圧縮されていない3Dメッシュのストリーム(202)と比較してデータ量が少ないことを強調するために細い線で示されており、将来の使用のためにストリーミングサーバ(205)に記憶することができる。図2のクライアントサブシステム(206)および(208)などの1つ以上のストリーミングクライアントサブシステムは、ストリーミングサーバ(205)にアクセスして、圧縮された3Dメッシュ(204)のコピー(207)および(209)を取り出すことができる。クライアントサブシステム(206)は、例えば電子デバイス(230)内にデコーダ(210)を含み得る。デコーダ(210)は、圧縮された3Dメッシュの入力コピー(207)を復号して、レンダリングデバイス(212)上で、または他の用途用にレンダリングされ得る、再構築された3Dメッシュ(211)の出力ストリームを作成するように構成されてもよい。
電子デバイス(220)および(230)は、他の構成要素(図示せず)を含むことができることに留意されたい。例えば、電子デバイス(220)はデコーダ(図示せず)を含むことができ、電子デバイス(230)はエンコーダ(図示せず)も含み得る。
一部のストリーミングシステムでは、圧縮された3Dメッシュ(204)、(207)、および(209)(例えば、圧縮された3Dメッシュのビットストリーム)は、一部の規格に従って圧縮され得る。いくつかの例では、以下でさらに詳細に説明するように、3Dメッシュが最初に投影されて、ビデオ圧縮に適した2D表現にマッピングされた後で、3Dメッシュの圧縮における冗長性および相関を利用するために、ビデオコーディング規格が使用される。以下でさらに詳しく説明するように、それらの規格の非限定的な例は、高効率ビデオコーディング(HEVC)、汎用ビデオコーディング(VVC)などを含む。
圧縮された3Dメッシュまたは3Dメッシュのシーケンスはエンコーダによって生成されてもよく、その一方で、デコーダは、圧縮された、またはコーディングされた3Dメッシュを解凍するように構成されてもよい。図3は、このようなエンコーダ(301)およびデコーダ(303)における、3Dメッシュの高レベルの例示的なデータフローを示す。図3に示すように、生の入力3Dメッシュまたは3Dメッシュのシーケンス(302)は、3Dメッシュを2D UV空間にマッピングする(304)ための、マッピングユニットへの入力データを生成するために、トラック再メッシュ化、パラメータ化、および/またはボクセル化によって前処理されてもよく、いくつかの実装形態では、UVアトラスを有するメッシュを含んでもよい。3Dメッシュは、頂点の中にない場合がある3D表面点を含むようにサンプリングされ、これらのサンプリングされた3D表面点を、UV空間へのマッピングに追加してもよい。エンコーダ301では様々な2Dマップが生成でき、これに限定されないが、占有マップ(310)、ジオメトリマップ(312)、属性マップ(314)を含む。マップのこのような画像タイプは、例えばビデオコーディング/圧縮技術を使用して、エンコーダ301によって圧縮され得る。例えば、ビデオコーダは、イントラ予測技術、および他の3Dメッシュ参照フレームによるインター予測を使用して、3Dメッシュフレームの圧縮を補助し得る。他の非画像もしくは非マップデータ、またはメタデータ(316)もまた、非限定的な例では、エントロピーコーディングを介して、冗長性を除去して圧縮された非マップデータを生成するために、様々な方式でコーディングされ得る。エンコーダ301は、次に、圧縮された2Dマップと非マップデータとを組み合わせるかまたは多重化して、符号化されたビットストリーム(またはコーディングされたビットストリームとも呼ばれる)を生成するために、組み合わされたデータをさらにコーディングしてもよい。符号化されたビットストリームは、次に、デコーダ303が使用するために、記憶されるかまたは送信されてもよい。デコーダはビットストリームを復号し、圧縮された2Dマップおよび非マップデータを取得するために復号されたビットストリームを逆多重化し、復号された占有マップ(320)、復号されたジオメトリマップ(322)、復号された属性マップ(324)、ならびに復号された非マップデータおよびメタデータ(326)を生成するために、解凍を行うように構成されてもよい。デコーダ303は、次に、復号された2Dマップ(320、322、および324)ならびに復号された非マップデータ(326)から、3Dメッシュまたは3Dメッシュのシーケンス(330)を再構築するようにさらに構成されてもよい。
さらに詳細には、図4は、本開示のいくつかの実施形態による、3Dメッシュフレームを符号化するための、例示的な3Dメッシュエンコーダ(400)のブロック図を示す。いくつかの例示的実装形態では、メッシュエンコーダ(400)は通信システム(100)およびストリーミングシステム(200)で使用され得る。例えば、エンコーダ(203)は、メッシュエンコーダ(400)と同様に構成され、動作することができる。
メッシュエンコーダ(400)は、3Dメッシュフレームを圧縮されていない入力として受信して、圧縮された3Dメッシュに対応するビットストリームを生成し得る。いくつかの例示的実装形態では、メッシュエンコーダ(400)は、図2のメッシュまたは点群ソース(201)などの任意のソースから、3Dメッシュフレームを受信し得る。
図4の例では、メッシュエンコーダ(400)は、パッチ生成モジュール(406)(あるいはチャート生成モジュールと呼ばれる)、パッチパッキングモジュール(408)、ジオメトリ画像生成モジュール(410)、テクスチャ画像生成モジュール(412)、パッチ情報モジュール(404)、占有マップモジュール(414)、平滑化モジュール(436)、画像パディングモジュール(416)および(418)、グループ拡張モジュール(420)、ビデオ圧縮モジュール(422)、(423)および(432)、補助パッチ情報圧縮モジュール(438)、エントロピー圧縮モジュール(434)、ならびにマルチプレクサ(424)を含み得る。
本開示における様々な実施形態において、モジュールは、ソフトウェアモジュール、ハードウェアモジュール、またはこれらの組み合わせを指してもよい。ソフトウェアモジュールは、本開示で説明するこのような機能などの所定の機能を有し、所定の目的を達成するために他の関連する部分と一緒に機能する、コンピュータプログラムまたはコンピュータプログラムの一部を含み得る。ハードウェアモジュールは、本開示で説明した機能を実行するように構成された、処理回路および/またはメモリを使用して実施されてもよい。各モジュールは、1つ以上のプロセッサ(またはプロセッサおよびメモリ)を使用して実施することができる。同様に、プロセッサ(またはプロセッサおよびメモリ)は、1つ以上のモジュールを実施するために使用され得る。さらに、各モジュールは、モジュールの機能を含むモジュール全体の一部であってもよい。本明細書の説明は、モジュールという用語、および他の同等の用語(例えばユニット)に適用されてもよい。
本開示の一態様によれば、かつ上述したように、メッシュエンコーダ(400)は、圧縮された3Dメッシュを変換して解凍された3Dメッシュに戻すのを補助するために使用される、何らかの非マップメタデータ(例えば、パッチまたはチャート情報)とともに、3Dメッシュフレームを画像ベースの表現(例えば、2Dマップ)に変換する。いくつかの例では、メッシュエンコーダ(400)は、3Dメッシュフレームを2Dジオメトリマップまたは画像、テクスチャマップまたは画像、および占有マップまたは画像に変換し、次いで、ビデオコーディング技術を使用して、ジオメトリ画像、テクスチャ画像、および占有マップを、メタデータおよび他の圧縮された非マップデータとともに、ビットストリームに符号化することができる。概して、かつ上述したように、2Dジオメトリ画像は、2D画素に投影された(「投影された」という用語は、「マッピングされた」という意味で使用される)3D点に関連付けられたジオメトリ値で満たされた2D画素を含む2D画像であり、ジオメトリ値で満たされた2D画素はジオメトリサンプルと呼ばれてもよい。テクスチャ画像は、2D画素に投影された3D点に関連付けられたテクスチャ値で満たされた画素を含む2D画像であり、テクスチャ値で満たされた2D画素は、テクスチャサンプルと呼ばれてもよい。占有マップは、3D点による占有または非占有を示す値で満たされた2D画素を含む2D画像である。
パッチ生成モジュール(406)は、3Dメッシュをチャートまたはパッチのセットにセグメント化し(例えば、パッチは、3Dメッシュまたは点群によって記述される表面の連続サブセットとして定義される)、これは重複していてもしていなくてもよく、その結果、各パッチは2D空間内の平面に対して深度フィールドによって記述され得る(例えば、表面上の3D点が深いほど、対応する2Dマップの中心からさらに離れるように表面を平坦化する)。いくつかの実施形態では、パッチ生成モジュール(406)は、3Dメッシュを、滑らかな境界を有する最小数のパッチに分解するとともに、再構築誤差を最小化することを目的とする。
パッチ情報モジュール(404)は、パッチのサイズおよび形状を示すパッチ情報を収集することができる。いくつかの例では、パッチ情報は、データフレームにパッキングされ、次いで、補助パッチ情報圧縮モジュール(438)によって符号化されて、圧縮された補助パッチ情報を生成することができる。補助パッチ圧縮は、これに限定されないが、様々なタイプの算術コーディングを含む、様々な形態で実施されてもよい。
パッチまたはチャートパッキングモジュール(408)は、抽出されたパッチを、未使用空間を最小化しながら、UV空間の2Dグリッドにマッピングするように構成されてもよい。いくつかの例示的実装形態では、2D UV空間の画素は、パッチまたはチャートのマッピング用に、画素のブロックに粒状化されてもよい。ブロックサイズは事前定義されてもよい。例えば、ブロックサイズはM×M(例えば、16×16)であってもよい。このような粒度では、2D UVグリッドのM×Mブロック毎に、固有のパッチが関連付けられることが保証され得る。言い換えると、各パッチが、M×Mの2D粒度で2D UV空間にマッピングされる。効率的なパッチパッキングは、未使用空間を最小化すること、または時間的一貫性を保証することのいずれかによって、圧縮効率に直接影響を及ぼすことができる。パッチまたはチャートの2D UV空間へのパッキングの例示的実装形態が、以下でさらに詳しく示されている。
ジオメトリ画像生成モジュール(410)は、2Dグリッド内の所与のパッチ位置における3Dメッシュのジオメトリに関連付けられた、2Dジオメトリ画像を生成することができる。テクスチャ画像生成モジュール(412)は、2Dグリッド内の所与のパッチ位置における3Dメッシュのテクスチャに関連付けられた、2Dテクスチャ画像を生成することができる。上述したように、ジオメトリ画像生成モジュール(410)およびテクスチャ画像生成モジュール(412)は、3Dメッシュのジオメトリおよびテクスチャを2D画像として記憶するために、上述したパッキングプロセス中に計算された、3Dから2Dへのマッピングを基本的に利用する。
いくつかの実装形態では、同一サンプルに複数の点が投影される(例えば、メッシュの3D空間内でパッチが重複する)事例に好適に対処するために、2D画像が階層化され得る。言い換えると、各パッチが、例えば、層と呼ばれる2つの画像に投影されてもよく、その結果、複数の点が、異なる層内の同じ点に投影され得る。
いくつかの例示的実装形態では、ジオメトリ画像は、幅×高さ(W×H)の単色フレームで表され得る。このように、3D座標を表すために、3ルマまたはクロマチャネルの3つのジオメトリ画像が使用されてもよい。いくつかの例示的実装形態では、ジオメトリ画像は、特定の色深度(例えば、8ビット、12ビット、16ビットなど)を含む3つのチャネル(RGB、YUV、YCrCbなど)を有する、2D画像で表され得る。このように、3D座標を表すために、3色チャネルを有する1つのジオメトリ画像が使用されてもよい。
テクスチャ画像を生成するために、テクスチャ生成手順は、元の3Dメッシュからサンプリングされた点に関連付けられる色を計算するために、再構築された/平滑化されたジオメトリを利用する(図3の「サンプリング」を参照すると、これは例えば、元の3Dメッシュの頂点の中にはない3D表面点を生成する)。
占有マップモジュール(414)は、各ユニットにおけるパディング情報を記述する占有マップを生成するように構成されてもよい。例えば、上述したように、占有画像は、2Dグリッドの各セルに対して、セルが空き空間に属するか、それとも3Dメッシュに属するかを示す、バイナリマップを含んでもよい。いくつかの例示的実装形態では、占有マップは、各画素に対して、画素がパディングされたか否かを記述するために、バイナリ情報を使用してもよい。いくつかの他の例示的実装形態では、占有マップは、画素の各ブロック(例えば、各M×Mブロック)に対して、画素のブロックがパディングされたか否かを記述するために、バイナリ情報を使用してもよい。
占有マップモジュール(414)によって生成された占有マップは、可逆コーディングまたは非可逆コーディングを使用して圧縮され得る。可逆コーディングが使用されるときは、占有マップを圧縮するために、エントロピー圧縮モジュール(434)が使用され得る。非可逆コーディングが使用されるときは、占有マップを圧縮するために、ビデオ圧縮モジュール(432)が使用され得る。
パッチパッキングモジュール(408)は、画像フレーム内にパッキングされた2Dパッチ間に一部の空き空間を残すことができることに留意されたい。画像パディングモジュール(416)および(418)は、2Dビデオおよび画像コーデックに適し得る画像フレームを生成するために、空き空間を埋める(パディングと称される)ことができる。画像パディングは、背景充填とも称され、未使用空間を冗長な情報で充填することができる。いくつかの例では、良好に実施された背景充填は、パッチ境界の周りに著しいコーディング歪みを生じさせることを回避しながら、ビットレートを最小限増加させる。
ビデオ圧縮モジュール(422)、(423)、および(432)は、HEVC、VVCなどの適切なビデオコーディング規格に基づいて、パディングされたジオメトリ画像、パディングされたテクスチャ画像、および占有マップなどの2D画像を符号化することができる。いくつかの例示的実装形態では、ビデオ圧縮モジュール(422)、(423)、および(432)は、別々に動作する個々の構成要素である。ビデオ圧縮モジュール(422)、(423)、および(432)は、いくつかの他の例示的実装形態では、単一の構成要素として実装され得ることに留意されたい。
いくつかの例示的実装形態では、平滑化モジュール(436)は、再構築されたジオメトリ画像の平滑化された画像を生成するように構成され得る。平滑化された画像は、テクスチャ画像生成(412)に提供することができる。次いで、テクスチャ画像生成(412)は、再構築されたジオメトリ画像に基づいて、テクスチャ画像の生成を調整することができる。例えば、パッチ形状(例えば、ジオメトリ)が符号化および復号中にわずかにひずんだとき、パッチ形状における歪みを補正するためにテクスチャ画像を生成するときに歪みが考慮に入れられ得る。
いくつかの実施形態では、グループ拡張(420)は、再構築された3Dメッシュのコーディング利得ならびに視覚的品質を改善するために、オブジェクト境界の周りの画素を冗長な低周波コンテンツでパディングするように構成される。
マルチプレクサ(424)は、圧縮されたジオメトリ画像、圧縮されたテクスチャ画像、圧縮された占有マップ、圧縮された補助パッチ情報を、圧縮されたビットストリーム(またはコーディングされたビットストリームと呼ばれる)に多重化するように構成され得る。
図5は、本開示のいくつかの実施形態による、3Dメッシュフレームに対応する圧縮されたビットストリームを復号するための例示的なメッシュデコーダ(500)のブロック図を示す。いくつかの例示的実装形態では、メッシュデコーダ(500)は通信システム(100)およびストリーミングシステム(200)で使用され得る。例えば、デコーダ(210)は、メッシュデコーダ(500)と同様に動作するように構成することができる。メッシュデコーダ(500)は、圧縮されたビットストリームを受信して、圧縮されたジオメトリ画像、圧縮されたテクスチャ画像、圧縮された占有マップ、圧縮された補助パッチ情報などを含む圧縮されたビットストリームに基づいて、再構築された3Dメッシュを生成する。
図5の例では、メッシュデコーダ(500)は、デマルチプレクサ(532)と、ビデオ解凍モジュール(534)および(536)と、占有マップ解凍モジュール(538)と、補助パッチ情報解凍モジュール(542)と、ジオメトリ再構築モジュール(544)と、平滑化モジュール(546)と、テクスチャ再構築モジュール(548)と、色平滑化モジュール(552)とを含み得る。
デマルチプレクサ(532)は、圧縮されたビットストリームを受信し、圧縮されたテクスチャ画像、圧縮されたジオメトリ画像、圧縮された占有マップ、および圧縮された補助パッチ情報に分離し得る。
ビデオ解凍モジュール(534)および(536)は、適切な規格(例えば、HEVC、VVCなど)に従って圧縮画像を復号し、解凍された画像を出力することができる。例えば、ビデオ解凍モジュール(534)は、圧縮されたテクスチャ画像を復号して、解凍されたテクスチャ画像を出力し得る。ビデオ解凍モジュール(536)はさらに、圧縮されたジオメトリ画像を復号して、解凍されたジオメトリ画像を出力し得る。
占有マップ解凍モジュール(538)は、適切な規格(例えば、HEVC、VVCなど)に従って圧縮された占有マップを復号し、解凍された占有マップを出力するように構成され得る。
補助パッチ情報解凍モジュール(542)は、適切な復号アルゴリズムに従って圧縮された補助パッチ情報を復号し、解凍された補助パッチ情報を出力するように構成され得る。
ジオメトリ再構築モジュール(544)は、解凍されたジオメトリ画像を受信し、解凍された占有マップおよび解凍された補助パッチ情報に基づいて、再構築された3Dメッシュジオメトリを生成するように構成され得る。
平滑化モジュール(546)は、パッチのエッジにおける不一致を平滑化するように構成され得る。平滑化手順は、圧縮アーチファクトによってパッチ境界に生じ得る、潜在的な不連続性を緩和することが目的とされ得る。いくつかの例示的実装形態では、圧縮/解凍によって引き起こされ得る歪みを軽減するために、平滑化フィルタが、パッチ境界上に位置するピクセルに適用され得る。
テクスチャ再構築モジュール(548)は、解凍されたテクスチャ画像および平滑化されたジオメトリに基づいて、3Dメッシュ内の点のテクスチャ情報を決定するように構成され得る。
色平滑化モジュール(552)は、着色の不一致を平滑化するように構成され得る。3D空間内の非近傍パッチは、しばしば、2Dビデオ内で互いに隣接してパッキングされる。いくつかの例では、非近傍パッチからの画素値は、ブロックベースのビデオコーデックによって混合され得る。色平滑化の目標は、パッチ境界に現れる可視アーチファクトを低減することであってもよい。
図6は、本開示の一実施形態による例示的なビデオデコーダ(610)のブロック図を示している。ビデオデコーダ(610)は、メッシュデコーダ(500)で使用され得る。例えば、ビデオ解凍モジュール(534)および(536)、占有マップ解凍モジュール(538)は、ビデオデコーダ(610)と同様に構成され得る。
ビデオデコーダ(610)は、コーディングされたビデオシーケンスなどの圧縮画像からシンボル(621)を再構築するためのパーサ(620)を含み得る。これらのシンボルのカテゴリは、ビデオデコーダ(610)の動作を管理するために使用される情報を含んでもよい。パーサ(620)は、受信するコーディングされたビデオシーケンスを解析/エントロピー復号し得る。コーディングされたビデオシーケンスのコーディングは、ビデオコーディング技術または規格に従うことができ、コンテキスト依存性ありまたはなしの可変長コーディング、ハフマンコーディング、算術コーディングなどを含む様々な原理に従うことができる。パーサ(620)は、コーディングされたビデオシーケンスから、グループに対応する少なくとも1つのパラメータに基づいて、ビデオデコーダ内の、画素のサブグループの少なくとも1つに対する、サブグループパラメータのセットを抽出してもよい。サブグループは、画像のグループ(GOP)、画像、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含むことができる。また、パーサ(620)は、コーディングされたビデオシーケンスから、変換係数、量子化器パラメータ値、動きベクトルなどの情報を抽出してもよい。
パーサ(620)は、シンボル(621)を作成するために、バッファメモリから受信されたビデオシーケンスに対してエントロピー復号/解析動作を実行することができる。
シンボル(621)の再構成は、コーディングされたビデオピクチャまたはその部分のタイプ(インターピクチャおよびイントラピクチャ、インターブロックおよびイントラブロックなど)、および他の要因に応じて、複数の異なるユニットを関与させることができる。どのユニットが関与するか、およびどのように関与するかは、パーサ(620)によってコーディングされたビデオシーケンスから構文解析されたサブグループ制御情報によって制御され得る。パーサ(620)と以下の複数のユニットとの間のそのようなサブグループ制御情報の流れは、明確にするために描かれていない。
すでに述べられた機能ブロック以外に、ビデオデコーダ(610)は、以下で説明されるように、概念的にいくつかの機能ユニットに細分することができる。商業的制約の下で動作する実際の実装形態では、これらのユニットの多くは、互いに密接に相互作用し、少なくとも部分的に互いに統合することができる。以下の機能ユニットへの概念的細分化は、開示されている主題を説明する目的のためにのみ行われる。
ビデオデコーダ(610)は、スケーラ/逆変換ユニット(651)を含み得る。スケーラ/逆変換ユニット(651)は、量子化変換係数、ならびにどの変換を使用するか、ブロックサイズ、量子化係数、量子化スケーリング行列などを含む制御情報を、パーサ(620)から(1つまたは複数の)シンボル(621)として受け取り得る。スケーラ/逆変換ユニット(651)は、アグリゲータ(655)に入力され得るサンプル値を含むブロックを出力し得る。
場合によっては、スケーラ/逆変換(651)の出力サンプルは、イントラ符号化されたブロックに関係することができ、つまり、以前に再構築された画像からの予測情報を使用していないブロックは、現画像の以前に再構築された部分からの予測情報を使用することができる。そのような予測情報は、イントラピクチャ予測ユニット(652)によって提供することができる。場合によっては、イントラピクチャ予測ユニット(652)は、現在のピクチャバッファ(658)からフェッチされた周囲のすでに再構成された情報を使用して、再構成中のブロックと同じサイズおよび形状のブロックを生成し得る。現在のピクチャバッファ(658)は、例えば、部分的に再構成された現在のピクチャおよび/または完全に再構成された現在のピクチャをバッファし得る。アグリゲータ(655)は、場合によっては、サンプル毎に、イントラ予測ユニット(652)が生成した予測情報を、スケーラ/逆変換ユニット(651)によって提供されたものとして出力サンプル情報に追加し得る。
他の場合では、スケーラ/逆変換ユニット(651)の出力サンプルは、インターコードされ、潜在的に動き補償されたブロックに関係し得る。このような事例では、動き補償予測ユニット(653)が、予測に使用するサンプルを取り出すために、参照ピクチャメモリ(657)にアクセスすることができる。ブロックに関係するシンボル(621)に従ってフェッチされたサンプルを動き補償した後、これらのサンプルを、出力サンプル情報を生成するために、アグリゲータ(655)によって、スケーラ/逆変換ユニット(651)の出力(この場合、残差サンプルまたは残差信号と呼ばれる)に追加され得る。動き補償予測ユニット(653)が予測サンプルをフェッチする参照ピクチャメモリ(657)内のアドレスを、例えば、X、Y、および参照ピクチャ成分を有し得るシンボル(621)の形式で動き補償予測ユニット(653)に利用可能な動きベクトルによって、制御することができる。動き補償はまた、サブサンプルの正確な動きベクトルが使用されているときに参照ピクチャメモリ(657)から、フェッチされたサンプル値の補間、動きベクトル予測機構などを含み得る。
アグリゲータ(655)の出力サンプルは、ループフィルタユニット(656)において様々なループフィルタリング技法を受けてもよい。ビデオ圧縮技術は、(コーディングされたビデオビットストリームとも呼ばれる)コーディングされたビデオシーケンスに含まれるパラメータによって制御され、パーサ(620)からのシンボル(621)としてループフィルタユニット(656)に利用可能にされるインループフィルタ技術を含み得るが、コーディングされたピクチャまたはコーディングされたビデオシーケンスの(復号順で)前の部分の復号中に取得されたメタ情報に応答するだけでなく、以前に再構築およびループフィルタリングされたサンプル値に応答してもよい。
ループフィルタユニット(656)の出力は、レンダリングデバイスに出力することができるとともに、将来のインターピクチャ予測で使用するために参照ピクチャメモリ(657)に記憶することができるサンプルストリームとしてもよい。
完全に再構成されると、特定のコーディングされたピクチャは、将来の予測のための参照ピクチャとして使用され得る。例えば、現在のピクチャに対応するコーディングされたピクチャが完全に再構成され、コーディングされたピクチャが(例えば、パーサ(620)によって)参照ピクチャとして識別されると、現在のピクチャバッファ(658)は、参照ピクチャメモリ(657)の一部になることができ、新規の現在のピクチャバッファを、後続のコーディングされたピクチャの再構成を開始する前に再配置され得る。
ビデオデコーダ(610)は、ITU-T Rec.H.265などの規格における所定のビデオ圧縮技術に従って復号動作を実行することができる。コーディングされたビデオシーケンスは、コーディングされたビデオシーケンスがビデオ圧縮技術または規格の構文と、ビデオ圧縮技術または規格に文書化されたプロファイルの両方に忠実であるという意味において、使用されているビデオ圧縮技術または規格によって指定された構文に準拠し得る。具体的には、プロファイルは、ビデオ圧縮技術または規格において利用可能なすべてのツールの中から、特定のツールを、そのプロファイル下でそれらだけが利用可能なツールとして選択し得る。また、コンプライアンスのために必要なのは、コーディングされたビデオシーケンスの複雑さが、ビデオ圧縮技術または規格のレベルによって定義された範囲内にあることであり得る。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、(例えば、毎秒メガサンプル単位で測定された)最大再構成サンプルレート、最大参照ピクチャサイズなどを制限する。レベルによって設定される制限は、場合によっては、仮想参照デコーダ(HRD)の仕様、およびコーディングされたビデオシーケンス内でシグナリングされるHRDバッファ管理用のメタデータによってさらに制限され得る。
図7は、本開示の一実施形態によるビデオエンコーダ(703)のブロック図を示す。ビデオエンコーダ(703)は、3Dメッシュまたは点群を圧縮するメッシュエンコーダ(400)で使用することができる。いくつかの例示的実装形態では、ビデオ圧縮モジュール(422)および(423)と、ビデオ圧縮モジュール(432)とは、エンコーダ(703)と同様に構成される。
ビデオエンコーダ(703)は、パディングされたジオメトリ画像、パディングされたテクスチャ画像などの2D画像を受信し、圧縮された画像を生成してもよい。
本開示の例示的な実施形態によれば、ビデオエンコーダ(703)は、ソースビデオシーケンスのピクチャ(画像)を、リアルタイムで、またはアプリケーションによって必要とされる任意の他の時間的制約の下で、コーディングされたビデオシーケンス(圧縮画像)にコーディングおよび圧縮することができる。適切なコーディング速度にすることが、コントローラ(750)の1つの機能である。いくつかの実施形態では、コントローラ(750)は、後述するように他の機能ユニットを制御し、かつ他の機能ユニットに機能的に結合される。明確にするために、結合については図示しない。コントローラ(750)によって設定されたパラメータは、レート制御関連パラメータ(画像スキップ、量子化、レート-歪み最適化技術のラムダ値など)、画像サイズ、画像のグループ(GOP)のレイアウト、最大動きベクトル検索範囲などを含むことができる。コントローラ(750)は、特定のシステム設計に最適化されたビデオエンコーダ(703)に関する他の適切な機能を有するように構成され得る。
いくつかの例示的実装形態では、ビデオエンコーダ(703)は、コーディングループで動作するように構成されてもよい。過度に単純化した説明として、一例では、コーディングループは、(例えば、コーディングされるべき入力ピクチャ、および参照ピクチャに基づいて、シンボルストリームなどのシンボルを作成する役割を担う)ソースコーダ(730)と、ビデオエンコーダ(703)に組み込まれた(ローカル)デコーダ(733)とを含み得る。デコーダ(733)は、(リモート)デコーダも作成するのと同様の方法で、シンボルを再構築してサンプルデータを作成し得る(シンボルとコーディングされたビデオビットストリームとの間の任意の圧縮は、開示される主題において考慮されるビデオ圧縮技術において可逆であるため)。再構築されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(734)に入力され得る。シンボルストリームの復号は、デコーダの位置(ローカルまたはリモート)に関係なくビットイグザクトな結果をもたらすため、参照ピクチャメモリ(734)の内容も、ローカルエンコーダとリモートエンコーダとの間でビットイグザクトである。言い換えれば、エンコーダの予測部分は、復号中に予測を使用するときにデコーダが「見る」ことになるのと全く同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャの同期性(および、例えば、チャネルエラーのために同期性が維持できない場合に結果として生じるドリフト)のこの基本原理は、いくつかの関連技術でも使用される。
「ローカル」デコーダ(733)の動作は、図6と併せて上記で詳細にすでに説明されている、ビデオデコーダ(610)などの「リモート」デコーダの動作と同じであり得る。しかしながら、図6も簡単に参照すると、シンボルが利用可能であり、エントロピーコーダ(745)およびパーサ(620)によるコーディングされたビデオシーケンスへのシンボルの符号化/復号が可逆であり得るため、パーサ(620)を含むビデオデコーダ(610)のエントロピー復号部分は、ローカルデコーダ(733)において完全には実装されないことがある。
本開示における様々な実施形態では、デコーダ内に存在する解析/エントロピー復号を除く任意のデコーダ技術もまた必然的に、対応するエンコーダにおいて、実質的に同一の機能形態で存在する必要があり得るということである。このため、様々な実施形態における開示された主題は、デコーダの動作に焦点を当てる場合がある。エンコーダ技術の説明は、エンコーダ技術が包括的に記載されるデコーダ技術の逆であるため、省略されてもよい。特定のエリアにおいてのみ、より詳細な説明が必要であり、以下に示される。
動作中、いくつかの例では、ソースコーダ(730)は、「参照ピクチャ」として指定されたビデオシーケンスからの1つまたは複数の以前にコーディングされたピクチャを参照して、入力ピクチャを予測的にコーディングする動作補償予測コーディングを実施してもよい。このようにして、コーディングエンジン(732)は、入力ピクチャの画素ブロックと、入力ピクチャに対する予測参照(複数可)として選択され得る参照ピクチャ(複数可)の画素ブロックとの間の差分をコーディングする。
ローカルビデオデコーダ(733)は、ソースコーダ(730)によって作成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャのコーディングされたビデオデータを復号し得る。コーディングエンジン(732)の動作は、有利には、非可逆プロセスであってもよい。コーディングされたビデオデータが(図7には示されていない)ビデオデコーダで復号され得るとき、再構築されたビデオシーケンスは、通常、いくつかの誤差を伴うソースビデオシーケンスの複製であり得る。ローカルビデオデコーダ(733)は、参照ピクチャに対してビデオデコーダによって実施され得る復号セスを複製し、再構築された参照ピクチャが参照ピクチャキャッシュ(734)に記憶されるようにし得る。この方法では、ビデオエンコーダ(703)は、遠端のビデオデコーダ(送信エラーのない)によって取得される、再構築された参照ピクチャと共通のコンテンツを有する、再構築された参照ピクチャのコピーを局所的に記憶してもよい。
予測子(735)は、コーディングエンジン(732)の予測検索を実行し得る。つまり、予測子(735)は、コーディングされる新しいピクチャに対して、参照ピクチャメモリ(734)からサンプルデータ(候補参照画素ブロックとしての)、または参照ピクチャ動きベクトル、ブロック形状などのいくつかのメタデータを検索してもよく、これは新しいピクチャの適切な予測参照として機能し得る。予測子(735)は、適切な予測参照を見つけるために、画素ブロック毎に1つのサンプルブロックで動作し得る。場合によっては、予測子(735)によって取得された検索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(734)に記憶された複数の参照ピクチャから引き出された予測参照を有し得る。
コントローラ(750)は、例えば、ビデオデータを符号化するために使用されるパラメータおよびサブグループパラメータの設定を含む、ソースコーダ(730)のコーディング動作を管理し得る。
前述した全機能ユニットの出力は、エントロピーコーダ(745)でエントロピーコーディングされてもよい。エントロピーコーダ(745)は、ハフマンコーディング、可変長コーディング、算術コーディングなどの技術に従ってシンボルを可逆圧縮することによって、種々の機能ユニットによって生成されたシンボルをコーディングされたビデオシーケンスに変換し得る。
コントローラ(750)は、ビデオエンコーダ(703)の動作を管理してもよい。コーディング中に、コントローラ(750)は、コーディングされたピクチャのそれぞれにいくつかのコーディングピクチャタイプを割り当ててもよく、これは、各ピクチャに適用され得るコーディング技術に影響を及ぼす場合がある。例えば、ピクチャは、しばしば、以下のピクチャタイプのうちの1つとして割り当てられてもよい。
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス内の任意の他のピクチャを使用することなくコーディングおよび復号され得るものであり得る。いくつかのビデオコーデックは、例えば、独立デコーダリフレッシュ(「IDR」)ピクチャを含む、異なるタイプのイントラピクチャを可能にする。当業者であれば、Iピクチャのこれらの変形例およびそれらのそれぞれの用途および特徴を認識している。
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために、最大で1つの動きベクトルおよび参照インデックスを使用するイントラ予測またはインター予測を使用して、コーディングおよび復号され得るものであり得る。
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために、最大で2つの動きベクトルおよび参照インデックスを使用するイントラ予測またはインター予測を使用して、コーディングおよび復号され得るものであり得る。同様に、複数の予測ピクチャは、単一のブロックの再構築のために3つ以上の参照ピクチャおよび関連メタデータを使用することができる。
ソースピクチャは、概して、複数のサンプルブロック(例えば、各々4×4、8×8、4×8、または16×16サンプルのブロック)に空間的に再分割され、ブロック毎にコーディングされ得る。ブロックは、ブロックのそれぞれのピクチャに適用されたコーディング割り当てによって決定される他の(すでにコーディングされた)ブロックを参照して予測的にコーディングされ得る。例えば、Iピクチャのブロックは、非予測的にコーディングされ得るか、または、同じピクチャのすでにコーディングされたブロックを参照して予測的にコーディングされ得る(空間予測またはイントラ予測)。Pピクチャの画素ブロックは、1つの以前にコーディングされた参照ピクチャを参照して、空間予測を介して、または時間予測を介して、予測的にコーディングされてもよい。Bピクチャのブロックは、1つまたは2つの以前にコーディングされた参照ピクチャを参照して、空間予測を介して、または時間予測を介して、予測的にコーディングされ得る。
ビデオエンコーダ(703)は、ITU-T勧告H.265などの所定のビデオコーディング技術または規格に従ってコーディング動作を実施し得る。その動作において、ビデオエンコーダ(703)は様々な圧縮動作を実行してもよく、これには入力ビデオシーケンスで時間的および空間的冗長性を利用する予測コーディング動作が含まれる。したがって、コーディングされたビデオデータは、使用されているビデオコーディング技術または規格によって指定された構文に準拠することができる。
ビデオは、時間シーケンスにおける複数のソースピクチャ(画像)の形態であり得る。イントラピクチャ予測(しばしば、イントラ予測と略される)は、所与のピクチャにおける空間相関を利用し、インターピクチャ予測は、ピクチャ間の(時間または他の)相関を利用する。一例では、現在のピクチャと呼ばれる、符号化/復号中の特定のピクチャがブロックに分割される。現在のピクチャ内のブロックが、ビデオ内で、以前にコーディングされ、未だバッファされている参照ピクチャ内の参照ブロックに類似しているとき、現在のピクチャ内のブロックを、動きベクトルと呼ばれるベクトルによってコーディングすることができる。動きベクトルは、参照ピクチャ内の参照ブロックを指し示し、複数の参照ピクチャが使用されている場合、参照ピクチャを識別する第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画素などの画素の値(例えば、ルマ値)の行列を含む。
様々な実施形態において、上述したメッシュエンコーダ(400)およびメッシュデコーダ(500)は、ハードウェア、ソフトウェア、またはそれらの組み合わせで実装され得る。例えば、メッシュエンコーダ(400)およびメッシュデコーダ(500)は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)など、ソフトウェアとともにまたはソフトウェアなしで動作する1つ以上の集積回路(IC)などの処理回路を用いて実装することができる。別の例では、メッシュエンコーダ(400)およびメッシュデコーダ(500)は、不揮発性(または非一時的)コンピュータ可読記憶媒体に記憶された命令を含むソフトウェアまたはファームウェアとして実装することができる。命令は、1つ以上のプロセッサなどの処理回路によって実行されると、処理回路に、メッシュエンコーダ(400)、および/またはメッシュデコーダ(500)の機能を実行させる。
図8は、3D x-y-z座標系(819)における3Dパッチ(810)の、u-v座標系(859)における2D UV平面(850)へのマッピングの例を示す。いくつかの実装形態では、3Dパッチ(または単にパッチ)は、概して、3D空間内のメッシュに対応する頂点のセットによって記述される、表面の連続サブセットを指すことができる。非限定的な例では、パッチは、3D座標、法線ベクトル、色、テクスチャその他の情報を有する頂点を含む。いくつかの実装形態では、2Dジオメトリパッチ(または単にジオメトリパッチ)は、2D UV平面内の投影された形状、パッチに対応する投影された形状、およびパッチに対応するジオメトリパッチを指すことができる。
UV平面内の投影された形状では、マッピングされた点(ui,vi)のそれぞれが、位置(xi,yi,zi)の3D頂点に対応し、i=1、2、3、4などである。例えば、3D座標(x1,y1,z1)を有する第1の頂点(811)は、2D座標(u1,v1)を有する第1の点(851)にマッピングされ、3D座標(x2,y2,z2)を有する第2の頂点(812)は、2D座標(u2,v2)を有する第2の点(852)にマッピングされ、3D座標(x3,y3,z3)を有する第3の頂点(813)は、2D座標(u3,v3)を有する第3の点(853)にマッピングされ、3D座標(x4,y4,z4)を有する第4の頂点(814)は、2D座標(u4,v4)を有する第4の点(854)にマッピングされる。
頂点ジオメトリ(すなわちxi、yi、およびziの値)のコーディングは、次に、2D平面における3チャネル値のコーディングに変換され、(u,v)位置における各3チャネル値は、関連する3D位置に対応する。例えば、第1の位置(851)の画素値は、第1の頂点(811)の3D座標に対応する3チャネル値(つまり3つのチャネル値)を含み、3チャネル値の第1のチャネル値はx1の値に対応し、3チャネル値の第2のチャネル値はy1の値に対応し、3チャネル値の第3のチャネル値はz1の値に対応する。
1つ以上のパッチが投影された/マッピングされた2D平面は、したがってジオメトリ画像を指し、したがって、4:4:4の色フォーマットをサポートするビデオコーデックなどの、任意の画像またはビデオコーデックを使用してコーディングされ得る。
いくつかの実装形態では、UV平面に投影された/マッピングされた点の画素値は、3D頂点からUV平面までの距離に対応し得る。したがって、頂点位置情報の位置を特定するために、このような投影に、方向が異なる複数の平面が使用されてもよい。この場合、UV平面内の各位置(または点と呼ばれる)は1チャネル値であり、距離を記録する。そのような画像は、深度画像と呼ばれる。深度画像は、YUV4:2:0またはYUV4:0:0の色フォーマットをサポートする、任意の画像またはビデオコーデックなどのビデオコーデックを使用してコーディングされてもよい。
いくつかの実装形態では、3Dメッシュ内の頂点の3D座標値を表すために、u-v平面内の点の画素値を使用することに課題/問題がある場合がある。課題/問題の1つは、頂点の3D座標値の、1つ以上の成分のダイナミックレンジが、特定のビット深度を有する画素値の範囲より大きくなる場合があることである。例えば、2D UV平面上のサンプル値のビット深度は、3Dパッチのジオメトリ位置のダイナミックレンジと一致している必要がある場合がある。このようなダイナミックレンジは非常に大きい場合があり、したがってビデオコーデックからサポートされる必要があるビット深度が、いくつかのビデオコーデックに対して最大限にサポートされるビット深度より大きくなる。言い換えると、すべてのビデオコーデックが、メッシュ内の頂点の3D座標値の非常に大きいダイナミックレンジと一致するように、高ビット深度のコーディングをサポートしているわけではない。別の課題/問題として、特定のビデオコーデックで高ビット深度がサポートされていても、ジオメトリ位置分布内ですべてのパッチが高ダイナミックレンジを有しているわけではないので、すべてのパッチに高ビット深度を割り当てる必要はないことが含まれる場合がある。
本開示は、制約されたジオメトリ・ダイナミックレンジを有する3Dメッシュを符号化または復号し、上述した少なくとも1つの課題/問題に対処して、ジオメトリ情報を圧縮する際の効率を改善し、かつ/または効率的な3Dメッシュ圧縮技術を進歩させるための様々な実施形態について説明する。
図9は、制約されたジオメトリ・ダイナミックレンジで3Dメッシュを復号するための、上記の実装形態の基礎となる原理に従った例示的な方法のフローチャート900を示す。例示的な復号方法のフローはS901から開始し、以下のステップの一部または全部を含んでよく、S910において、三次元メッシュのジオメトリパッチを含む、コーディングされたビットストリームを受信し、S920において、コーディングされたビットストリームから、ジオメトリパッチが分割されているかどうかを示す第1のシンタックス要素を抽出し、ジオメトリパッチは1つ以上のパーティションを含み、S930において、ジオメトリパッチ内の各パーティションに対して、三次元メッシュ内の頂点に対応する各パーティション内の点の、画素値のダイナミックレンジを取得し、ダイナミックレンジにより、ジオメトリパッチが所定のビット深度内でコーディングできるようになる。例示的な方法は、S999で停止する。
いくつかの実装形態では、制約されたジオメトリ・ダイナミックレンジで3Dメッシュを復号する別の例示的な方法は、コーディングされたビットストリームを受信するステップと、コーディングされたビットストリームから、ジオメトリパッチが分割されているか否かを示す第1のシンタックス要素を抽出するステップであって、ジオメトリパッチは1つ以上のパーティションを含む、ステップと、ジオメトリパッチ内のパーティションに対して、コーディングされたビットストリームから、パーティション内の点の極値的な画素値を取得するステップであって、パーティション内の点は、三次元メッシュ内の頂点に対応する、ステップと、コーディングされたビットストリームから、パーティション内の点のコーディングされた画素値を取得するステップと、極値的な画素値とコーディングされた画素値とに基づいて、パーティション内の点の画素値を決定するステップであって、画素値は三次元メッシュ内の頂点の三次元座標に対応する、ステップとを含み得る。
いくつかの実装形態では、コーディングされたビットストリームは、コーディングされたジオメトリマップ、またはコーディングされたメタデータのうちの少なくとも1つを含む。例えば、コーディングされたビットストリームは、図4の圧縮されたビットストリームであってもよく、これは、1つ以上の圧縮されたジオメトリ画像/マップ、1つ以上の圧縮されたテクスチャ画像/マップ、1つ以上の圧縮された占有マップ、および/または圧縮された補助パッチ情報を含んでもよい。一部のコーディングされたビットストリームは、占有マップを有していなくてもよく、これは、各パッチの境界頂点がシグナリングされるときに、デコーダ側から占有マップ情報が推測され得るからである。いくつかの実装形態では、ジオメトリパッチは、コーディングされたジオメトリマップに対応するパッチのうちの1つである。
いくつかの実装形態では、第1のシンタックス要素が、ジオメトリパッチが分割されていることを示しているときは、ジオメトリパッチは2つ以上のパーティションを含み得る。
いくつかの実装形態では、第1のシンタックス要素が、ジオメトリパッチが分割されていないことを示しているときは、ジオメトリパッチは単一のパーティションを含んでもよく、これはジオメトリパッチ自身である。
いくつかの実装形態では、ジオメトリパッチが分割されているときはいずれかのパーティションを含み、あるいはジオメトリパッチが分割されていないときは単一のパーティションを含む各パーティションは、u-v平面内の1つ以上の点を含む。パーティション内の点は、三次元メッシュ内の頂点に対応し、パーティション内の点のコーディングされた画素値は、三次元メッシュ内の頂点の三次元座標に関連付けられる。
いくつかの実装形態では、パーティション内の点の極値的な画素値は、パーティション内のコーディングされた画素値に対するオフセットになり得る。三次元メッシュ内の頂点の三次元座標に対応する、パーティション内の点の画素値は、点のコーディングされた画素値と、パーティション内の点の極値的な画素値とに基づいて取得され得る。
いくつかの実装形態では、パーティション内の点の極値的な画素値は、パーティション内の点の最小画素値、またはパーティション内の点の最大画素値のいずれかになり得る。非限定的な例では、画素値が3つのチャネル(例えば、RGB)を有するときは、最小画素値は各チャネルに対して3つの最小値を含んでもよく、最小画素値は(r_min,g_min,b_min)であり、r_minはパーティション内のすべての点に対する最小の赤チャネル値、g_minはパーティション内のすべての点に対する最小の緑チャネル値、b_minはパーティション内のすべての点に対する最小の青チャネル値である。
いくつかの実装形態では、ジオメトリパッチが分割されていないことを示す第1のシンタックス要素に応答して、ジオメトリパッチは単一のパーティションを含む。例えば、ジオメトリパッチが分割されていないことを示す第1のシンタックス要素に応答して、ジオメトリパッチは常に単一のパーティションを含む。
いくつかの実装形態では、ジオメトリパッチが分割されていることを示す第1のシンタックス要素に応答して、本方法は、デバイスによって、コーディングされたビットストリームから、ジオメトリパッチのパーティションタイプを示す第2のシンタックス要素を抽出するステップと、デバイスによって、パーティションタイプに基づいて、複数のパーティションを取得するために、ジオメトリパッチを分割するステップとをさらに含む。
いくつかの実装形態では、例示的な復号方法は、複数のパーティション内のパーティションに対して、デバイスによって、コーディングされたビットストリームから、パーティションがさらに分割されているかどうかを示す第3のシンタックス要素を抽出するステップと、パーティションがさらに分割されていることを示す第3のシンタックス要素に応答して、デバイスによって、コーディングされたビットストリームから、パーティションのパーティションタイプを示す第4のシンタックス要素を抽出し、パーティションのパーティションタイプに基づいて、パーティションをさらに分割するステップとをさらに含む。
いくつかの実装形態では、ジオメトリパッチが分割されていないことを示す第1のシンタックス要素に応答して、ジオメトリパッチは単一のパーティションを含む。
いくつかの実装形態では、ジオメトリパッチが分割されていることを示す第1のシンタックス要素に応答して、本方法は、デバイスによって、コーディングされたビットストリームから、パーティション深度を示す第2のシンタックス要素を抽出するステップ、および/または、複数のパーティションを取得するために、デバイスによって、パーティション深度および事前定義されたパーティションタイプに基づいて、ジオメトリパッチを分割するステップをさらに含む。
いくつかの実装形態では、パーティション内の点の極値的な画素値が最小画素値であり、極値的な画素値とコーディングされた画素値とに基づいて、パーティション内の点の画素値を決定するステップが、最小画素値の成分、およびコーディングされた画素値それぞれの成分を、それぞれ加算して、画素値を取得するステップを含む。
いくつかの実装形態では、最小画素値が{x_min,y_min,z_min}を含み、コーディングされた画素値のそれぞれが{x_coded,y_coded,z_coded)を含み、各画素値がx=x_min+x_coded、y=y_min+y_coded、およびz=z_min+z_codedに従って決定された{x,y,z}を含み、x、y、z、x_min、y_min、z_min、x_coded、y_coded、z_codedは、負でない整数である。
いくつかの実装形態では、例示的な復号方法は、デバイスによって、コーディングされたビットストリームから、パーティション内の制限超過点の制限超過値を取得するステップをさらに含んでもよい。
いくつかの実装形態では、制限超過点に対して、最小画素値の成分、およびコーディングされた画素値それぞれの成分をそれぞれ加算して画素値を取得するステップは、制限超過値の成分、最小画素値の成分、および制限超過点に対応する、コーディングされた画素値の成分をそれぞれ加算して、制限超過点の画素値を取得するステップを含む。
いくつかの実装形態では、制限超過点に対して、制限超過値の非ゼロの成分に対応する、コーディングされた画素値の成分は2N-1と等しく、Nはコーディングされた画素値のビット深度である。
いくつかの実装形態では、パーティション内の点の極値的な画素値は、最大画素値である。
いくつかの実装形態では、極値的な画素値とコーディングされた画素値とに基づいて、パーティション内の点の画素値を決定するステップは、画素値を取得するために、最大画素値の成分から、コーディングされた画素値のそれぞれの成分をそれぞれ減算することを含む。
いくつかの実装形態では、最大画素値は{x_max,y_max,z_max}を含み、コーディングされた画素値のそれぞれが{x_coded,y_coded,z_coded)を含み、各画素値はx=x_max-x_coded、y=y_max-y_coded、およびz=z_max-z_codedに従って決定された{x,y,z}を含み、x、y、z、x_max、y_max、z_max、x_coded、y_coded、z_codedは、負でない整数である。
いくつかの実装形態では、例示的な復号方法は、デバイスによって、コーディングされたビットストリームから、パーティション内の制限超過点の制限超過値を取得するステップをさらに含んでもよく、制限超過点に対して、画素値を取得するために、最大画素値の成分から、コーディングされた画素値それぞれの成分をそれぞれ減算するステップは、画素値を取得するために、最大画素値の成分から、制限超過値の成分、およびコーディングされた画素値それぞれの成分をそれぞれ減算するステップを含む。
いくつかの実装形態では、制限超過点に対して、制限超過値の非ゼロの成分に対応する、コーディングされた画素値の成分は2^N-1と等しく、Nはコーディングされた画素値のビット深度である。
いくつかの実装形態では、パーティション内の点の極値的な画素値を取得するステップは、パーティション内の点の極値的な画素値に対応する、極値的な画素値差を取得するステップと、極値的な画素値差と第2の極値的な画素値とに基づいて、パーティション内の点の極値的な画素値を決定するステップとを含む。
いくつかの実装形態では、例示的な復号方法は、コーディングされたビットストリームから、第2のパーティションの、または第2のジオメトリパッチの、第2の極値的な画素値を取得するステップをさらに含み得る。
1つ以上の実施形態または実装形態における様々なステップが個別に、または組み合わせた任意の形態で適用されてもよい。本開示の様々な実施形態は、動的メッシュまたは静的メッシュに適用されてもよい。静的メッシュでは、メッシュのフレームは1つだけであってもよく、あるいはメッシュコンテンツは経時的に変化しない。本開示の様々な実施形態は、深度画像/属性画像/テクスチャ画像などのコーディングに拡張されてもよく、サンプル値のダイナミックレンジは、8ビットなどの特定の閾値を上回ってもよい。
いくつかの実装形態では、ジオメトリ画像内の各チャート/パッチは分割されていてもよく、その結果、8ビット、10ビットなどの特定のビット深度を指定してジオメトリ画像をコーディングするために、各パーティションのダイナミックレンジは、特定のダイナミックレンジ内に収まる。チャート/パッチは、1つ以上の事前定義されたパターンで分割されてもよい。
非限定的な例では、図10を参照すると、2Dジオメトリパッチ/チャートを分割するために、四分木パーティションが使用され得る。2Dジオメトリパッチ/チャート(1011)は、任意の形状と境界ボックス(1010)とを有する。このパッチ/チャートのダイナミックレンジは、目標ダイナミックレンジ(例えば、8ビット)を超えてもよい。パッチ/チャートの境界ボックス(1010)に四分木パーティションが適用されてもよく、その結果パーティション構造(1020)になり、パッチ/チャート全体が4つのパーティションを有する。各パーティションのダイナミックレンジが目標ダイナミックレンジ(例えば、8ビット)以内のときは、分割が停止されてもよい。例えば、1つのパーティション(またはサブパーティションと呼ばれる)(1021)が目標ダイナミックレンジ以内のときは、このパーティション(1021)の分割は停止されてもよい。
各パーティションのダイナミックレンジが目標ダイナミックレンジ以内でないときは、すべてのパーティションのダイナミックレンジが目標ダイナミックレンジ(例えば、8ビット)以内になるまで、パッチ/チャートがさらに小さく分割されてもよい。例えば、2回四分木分割されたパーティション(1030)が示されており、これは16のパーティション(またはサブパーティションと呼ばれる)を含む。
いくつかの実装形態では、目標ダイナミックレンジ内にないパーティションだけに別のパーティションが適用されてもよく、別のパーティションは、目標ダイナミックレンジ内にあるパーティションには適用されなくてもよい。
分割するたびにダイナミックレンジが減少するため、この再帰分割アルゴリズムは収束し得る。最悪の場合には、パッチ/チャートの全部または一部が、単一の画素(例えば、1x1のサイズを有し、単一の画素を含む最小のパーティション)にまで分割される場合がある。
図11は、分割ツリーを形成するために再帰分割を可能にする、事前定義された分割パターンを含む、いくつかの非限定的な例を示す。1つの例では、10通りのパーティション構造またはパターンの一部または全部が、事前定義されてもよい。例示的なパーティション構造は、様々な2:1/1:2(図11の3行目)および4:1/1:4(図11の1行目)の矩形分割を含み得る。2行目の1102、1104、1106、および1108で示される3つのサブパーティションを有するパーティションタイプは、それぞれ左T型、上T型、右T型、および下T型の「T型」パーティションと呼ばれ得る。いくつかの例示的実装形態では、図11の矩形分割は、いずれもこれ以上細分されることはできない。パッチまたはチャートからの分割深度を示すために、パーティション深度がさらに定義されてもよい。いくつかの実装形態では、1110のすべて正方形のパーティションのみが、分割ツリーの次のレベルへの再帰分割を可能にすることができる。言い換えれば、再帰分割は、T型パターン内の正方形パーティションでは可能でない場合がある。いくつかの他の例では、パッチまたはパッチのパーティションを四分木パーティションに分割するために、四分木構造が使用され得る。そのような四分木分割は、任意の正方形パーティションに階層的かつ再帰的に適用されてもよい。
いくつかの実装形態では、ビデオ符号化/復号における様々なパーティション構造/方法が、パッチ/チャートの分割に適用可能になり得る。
メッシュコーデックを実施するためのいくつかの実装形態では、方法は以下の一部または全部を含む場合があり、第1に、復号プロセスを支援するために、いくつかのシンタックス要素が、コーディングされたビットストリームでシグナリングされる必要があり、第2に、各パーティション内の画素値が、そのパーティションの最小値から減算されてジオメトリ画像が変更される必要があり、その結果、画像は特定のビット深度範囲で処理/コーディングされ得る。
いくつかの実装形態では、各パッチ/チャートのシンタックス要素は、以下の一部または全部を含み得る。
パッチ/チャートが分割されているか否かを示すために、バイナリフラグがシグナリングされる。バイナリフラグが、パッチ/チャートが分割されていることを示しているときは、パッチ/チャートがどのように分割されている示すために、いくつかのパーティションフラグがシグナリングされる。パーティションは様々な形態で適用されてもよく、パーティションに関連付けられるシンタックス要素が、これに従って異なっていてもよい。例えば、四分木、二分木、および対称または非対称の、任意の他の形態のパーティションが適用されてもよい。また、異なるパーティション構造をいくつか組み合わせて適用することもできる。
非限定的な例では、図9を参照すると四分木のみが適用されており、分割パターンを示すために、四分木パーティション深度がシグナリングされ得る。
別の非限定的な例では、分割はダイナミックレンジが制限を超えている領域にのみ適用され、ダイナミックレンジが制限内の領域には分割は適用されない。この場合は、さらなる分割が必要か否かを示すために、各パーティション/領域に対してフラグがシグナリングされてもよく、フラグがさらなる分割が必要なことを示しているときは、そのパーティションタイプを示すために、別のフラグがシグナリングされてもよい。
いくつかの実装形態では、ジオメトリ画像に対応する最小のx、y、zを含む、各パーティションの最小値がシグナリングされ得る。パッチ/チャートが分割されていないときは、パッチ全体の最小値がシグナリングされ得る。この場合は、パッチ/チャート全体が単一のパーティションと見なされてよく、パッチ全体の最小値は、単一のパーティションの最小値になり得る。
いくつかの実装形態では、いくつかのパーティションは空(すなわち内部にサンプリング点がない)であってもよく、空のパッチ/チャートの最小値はスキップされてもよい。例えば、図10の左下のパーティション(またはサブパーティション)(1039)は空のパーティションであり、パーティション(1039)の最小値をシグナリングする必要はない。
いくつかの実装形態では、1つのパッチ/チャート内の各パーティションの最小値(例えば、ジオメトリ画像の最小のx、y、zのそれぞれ)が、コーディングされたビットストリームでシグナリングされる必要がある。UV平面内の各チャネルのサンプル値毎に、このチャネルの値から、同じパッチまたはパーティションのシグナリングされた最小値を減算することによって、そのダイナミックレンジを低減でき、その一方で、更新値をさらに非負に維持する。例えば、xm、ym、zmをそれぞれパーティション内のx、y、およびz座標の最小値とする。パッチ内の任意の画素値(x,y,z)に対して、コーディングされる更新値は(x-xm,y-ym,z-zm)になり得る。
いくつかの実装形態では、メッシュ内に複数のパッチがあるときは、各パッチに最小値がある場合がある。これらの値をシグナリングするために予測コーディングが使用されてもよく、パッチの最小値は、別のパッチの予測子として使用され得る。このような最小値ペアの差分がコーディングされ、ビットストリームへのコーディングに必要なビット数を削減し、かつメッシュ圧縮/解凍効率を改善する。
いくつかの実装形態では、最小値のシグナリングは、定義された領域毎に行われる。2Dジオメトリ画像は、いくつかの非オーバーラップ領域に分割される。各領域に対して、チャネル毎の最小値がシグナリングされる。このような最小値のコーディングは、空間的に近傍の領域などの、以前にコーディングされた値からの予測コーディングによって行われ得る。例えば、画像全体は、64x64に基づくグリッドに分割され得る。64x64の領域毎に、この領域の最小(x,y,z)がシグナリングされる。コーディングする前に最小値を減算することによって、この領域の全サンプルが更新される。
いくつかの実装形態では、パッチはより小さいサブパッチにさらに分割され得る。各サブパッチでは、その中のサンプル値のダイナミックレンジが特定のダイナミックレンジ内に収まっているので、ビデオコーデックでサポートされ得る。各チャネルのオフセット値がシグナリングされ、これはこのサブパッチ内のサンプルの、チャネルの最小値である。
いくつかの実装形態では、パッチ内のいくつかの孤立した3D点に、特殊なコーディングプロセスが適用される場合があり、これらの点の1つ以上のチャネルは、所与のビット深度を超えるダイナミックレンジを有している。UV平面内でのこの点の位置は、制限超過部分とともに、個別に記録されコーディングされる。
いくつかの実装形態では、所与のビット深度を超えるダイナミックレンジを有する1つ以上の点では、元の値が、所与のビット深度での最大可能値に置き換えられ得る。例えば、ビット深度が8のときは、元の値が255(=2^8-1)に置き換えられてもよい。別の例では、ビット深度が12のときは、元の値が4095(=2^12-1)に置き換えられてもよい。いくつかの実装形態では、最後に復号された値は、最大値に制限超過部分を加えたものと等しくなり得る。
非限定的な例では、xm、ym、zmは、パーティション内のx、y、およびz座標の最小値をそれぞれ表すことができ、サンプルをコーディングできるビット深度は8ビットになり得る。パッチ内の点(x1,y1,z1)に対する更新値は(x1-xm,y1-ym,z1-zm)になる。x1-xm>255(=2^8-1)、y1-ym<=255、z1-zm<=255であって、この点がUV平面内に投影される位置が(u1,v1)のときは、UV平面内の各位置に対して8ビット深度でコーディングする法線UV平面に加えて、位置(u1,v1)が、追加の制限超過値の情報(x1-xm-255,0,0)とともに、ビットストリームにコーディングされる。デコーダ側では、上述した方法を使用してジオメトリ画像を復号した後で、この点での真のジオメトリ情報を復元するために、追加の値(x1-xm-255,0,0)が復号されて、位置(u1,v1)にあるすでに復号された3チャネル値に追加されなければならない。これは、(x1-xm-255,0,0)+(255,y1-ym,z1-zm)=(x1-xm,y1-ym,z1-zm)となる。各位置に各チャネル(xm,ym,zm)の最小値を追加してさらに調整することにより、元のジオメトリ(x1,y1,z1)を復元し得る。
いくつかの実装形態では、[0,2^m)など、ジオメトリ画像全体のダイナミックレンジが知られていて、各パッチのビット深度がnでm>nのときは、この値の低い方のnビットのダイナミックレンジは、通常のmビットのビデオコーデックを使用して、他の通常の値でコーディングされ得る。この値のジオメトリ情報の高い方の(m-n)ビットは、個別にコーディングされてもよい。ビット深度が8ビットになる非限定的な例では、ジオメトリ画像全体のダイナミックレンジが14ビットのときは、上位ビット情報のダイナミックレンジは、6ビットの範囲に制限される場合があり、これは6=14-8であることによる。
いくつかの実装形態では、最小値がコーディング/復号される代わりに、最大値がコーディング/復号に使用され得る。1つのパッチ内の各パーティションの最大値(例えば、ジオメトリ画像の最大のx、y、zのそれぞれ)が、ビットストリームでシグナリングされ得る。UV平面内の各チャネルのサンプル値毎に、このチャネルの値から、同じパッチまたはパーティションのシグナリングされた最大値までの距離によって、そのダイナミックレンジを低減でき、その一方で、更新値をさらに非負に維持する。例えば、xm、ym、zmはそれぞれ、3つの座標軸におけるパーティションの最大値である。パッチ内の任意の点(x,y,z)に対して、コーディングされる更新値は(xm-x,ym-y,zm-z)になり得る。
いくつかの実装形態では、最小値はいくつかのパッチに署名されてもよく、最大値は、いくつかの他のパッチに署名されてもよい。いくつかの実装形態では、単一のパッチに対して、パッチ内のいくつかのパッチに最小値が署名されてもよく、パッチ内のいくつかの他のパッチに最大値が署名されてもよい。
いくつかの実装形態では、最大値のシグナリングは、定義された領域毎に行われ得る。
いくつかの実装形態では、パッチはより小さいサブパッチにさらに分割され得る。各サブパッチでは、その中のサンプル値のダイナミックレンジが特定のダイナミックレンジ内に収まっているので、ビデオコーデックでサポートされ得る。各チャネルのオフセット値がシグナリングされ、オフセット値は、このサブパッチ内のサンプルの、チャネルの最大値になり得る。
いくつかの実装形態では、パッチ内のいくつかの孤立した3D点に、特殊なコーディングプロセスが適用され、これらの点の1つ以上のチャネルは、所与のビット深度を超えるダイナミックレンジを有している。UV平面内でのこの点の位置は、制限超過部分とともに、個別に記録されコーディングされ、同時に、元の値が、所与のビット深度での最大可能値に置き換えられ得る。
非限定的な例では、xm、ym、zmが、それぞれ3つの座標軸におけるパッチの最大値であり、サンプルのコーディングに許容されるビット深度が8ビットのときは、パッチ内の点(x1、y1、z1)に対する、更新された値は(xm-x1、ym-y1、zm-z1)である。xm-x1>255、ym-y1<=255、zm-z1<=255であって、この点がUV平面内に投影される位置が(u1,v1)のときは、UV平面内の各位置に対して8ビット深度でコーディングする法線UV平面に加えて、位置(u1,v1)が、追加の制限超過値の情報(xm-x1-255,0,0)とともに、ビットストリームにコーディングされる。デコーダ側では、上述した方法を使用してジオメトリ画像を復号した後で、この点の真のジオメトリ情報を正しく復元するために、追加の値(xm-x1-255,0,0)が復号されて、位置(u1,v1)にあるすでに復号された3チャネル値に追加され得る。これは、(xm-x1-255,0,0)+(255,ym-y1,zm-z1)=(xm-x1,ym-y1,zm-z1)となる。これを各位置に対する各チャネル(xm,ym,zm)の最大値から減算してさらに調整することにより、元のジオメトリ(x1,y1,z1)=(xm,ym,zm)-(xm-x1,ym-y1,zm-z1)を復元し得る。
本開示において、「m^n」という表記はべき乗演算、すなわちmnを表し、底m、および指数またはべきnに対応する。
本開示で開示される技術は、別個に使用されるか、または任意の順序で組み合わせられ得る。さらに、技術(例えば、方法、実施形態)、エンコーダ、およびデコーダの各々は、処理回路(例えば、1つ以上のプロセッサまたは1つ以上の集積回路)によって実装され得る。一部の例では、1つ以上のプロセッサは、非一時的コンピュータ可読媒体に記憶されたプログラムを実行する。
上述された技法は、コンピュータ可読命令を使用するコンピュータソフトウェアとして実装され、1つまたは複数のコンピュータ可読媒体に物理的に記憶することができる。例えば、図12は、開示された主題の特定の実施形態を実装するのに適したコンピュータシステム(1300)を示す。
コンピュータソフトウェアは、1つまたは複数のコンピュータ中央処理装置(CPU:central processing unit)およびグラフィック処理装置(GPU:Graphics Processing Unit)などによって直接的に、または解釈およびマイクロコードの実行などを通して実行され得る命令を含むコードを生成するために、アセンブリ、コンパイル、リンキング、または同様のメカニズムを受け得る任意の適切なマシンコードまたはコンピュータ言語を使用してコーディングされ得る。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、インターネット・オブ・シングス・デバイスなどを含む、様々なタイプのコンピュータまたはその構成要素で実行されてもよい。
コンピュータシステム(1300)に関して図12に示す構成要素は、本質的に例示であり、本開示の実施形態を実施するコンピュータソフトウェアの使用または機能の範囲に関する限定を示唆することを意図していない。構成要素の構成は、コンピュータシステム(1300)の例示的な実施形態に示された構成要素のいずれか1つまたは組み合わせに関するいかなる依存性または要件も有すると解釈されるべきでない。
コンピュータシステム(1300)は、特定のヒューマンインターフェース入力デバイスを含んでもよい。このようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(キーストローク、スワイプ、データグローブの動きなど)、オーディオ入力(音声、拍手など)、視覚入力(ジェスチャなど)、嗅覚入力(図示せず)を介した、1人以上の人間ユーザによる入力に応答し得る。ヒューマンインターフェースデバイスを用いて、音声(発話、音楽、周囲音など)、画像(スキャン画像、静止画像カメラから取得される写真画像など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)など、人間による意識的な入力に必ずしも直接関係ない特定の媒体をキャプチャし得る。
入力ヒューマンインターフェースデバイスは、キーボード(1301)、マウス(1302)、トラックパッド(1303)、タッチスクリーン(1310)、データグローブ(図示せず)、ジョイスティック(1305)、マイクロフォン(1306)、スキャナ(1307)、カメラ(1308)のうちの1つ以上を含み得る(各々の1つのみが描写されている)。
コンピュータシステム(1300)は、特定のヒューマンインターフェース出力デバイスも含み得る。このようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、および匂い/味を介して、1人以上の人間のユーザの感覚を刺激し得る。そのようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(1310)、データグローブ(図示せず)、またはジョイスティック(1305)による触覚フィードバック、しかし入力デバイスとして機能しない触覚フィードバックデバイスが存在する可能性もある)、(スピーカ(1309)、ヘッドフォン(描写せず)などの)オーディオ出力デバイス、(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(1310)など、各々タッチスクリーン入力機能の有無にかかわらず、各々触覚フィードバック機能の有無にかかわらず、それらのうちのいくつかは、ステレオグラフィック出力、仮想現実眼鏡(描写せず)、ホログラフィックディスプレイおよびスモークタンク(描写せず)などの手段を介して2次元視覚出力または3次元以上の出力を出力することが可能な場合がある)視覚出力デバイス、ならびにプリンタ(描写せず)を含むことができる。
コンピュータシステム(1300)は、CD/DVDまたは同様の媒体(1321)を有するCD/DVD ROM/RW(1320)を含む光学媒体、サムドライブ(1322)、リムーバブルハードドライブまたはソリッドステートドライブ(1323)、テープおよびフロッピーディスクなどのレガシー磁気媒体(描写せず)、セキュリティドングルなどの特殊なROM/ASIC/PLDベースのデバイス(描写せず)などの、人間がアクセス可能なストレージデバイスおよびそれらに関連する媒体を含むこともできる。
当業者はまた、現在開示された主題に関連して使用される「コンピュータ可読媒体」という用語が、送信媒体、搬送波、または他の一時的な信号を包含しないことを理解するはずである。
コンピュータシステム(1300)は、1つ以上の通信ネットワーク(1355)へのインターフェース(1354)を含むこともできる。ネットワークは、例えば、無線、有線、光であり得る。ネットワークはさらに、ローカル、ワイドエリア、メトロポリタン、車両および産業用、リアルタイム、遅延耐性、などとすることができる。ネットワークの例は、イーサネット、無線LANなどのローカルエリアネットワーク、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルテレビ、衛星テレビ、および地上波放送テレビを含むテレビ有線または無線広域デジタルネットワーク、CANBusを含む車両および産業用などを含む。特定のネットワークは通常、特定の汎用データポートまたは周辺バス(1349)(例えば、コンピュータシステム(1300)のUSBポート)に接続された外部ネットワークインターフェースアダプタを必要とし、他のものは一般に、以下に説明するように、システムバスに接続することによってコンピュータシステム(1300)のコアに統合される(例えば、PCコンピュータシステムに対するイーサネットインターフェース、またはスマートフォンコンピュータシステムに対するセルラーネットワークインターフェース)。これらのネットワークのいずれかを使用して、コンピュータシステム(1300)は他のエンティティと通信することができる。このような通信は、一方向、受信専用(例えば、テレビ放送)、一方向送信専用(例えば、CANbusから特定のCANbusデバイス)または双方向、例えば、ローカルもしくは広域デジタルネットワークを用いた他のコンピュータシステムに対する双方向の通信とすることができる。特定のプロトコルおよびプロトコルスタックは、上記で説明したように、それらのネットワークおよびネットワークインターフェースのそれぞれで使用され得る。
前述のヒューマンインターフェースデバイス、人間がアクセス可能なストレージデバイス、およびネットワークインターフェースは、コンピュータシステム(1300)のコア(1340)に取り付けることができる。
コア(1340)は、1つ以上の中央処理装置(CPU)(1341)、グラフィックスプロセッシングユニット(GPU)(1342)、フィールドプログラマブルゲートエリア(FPGA)(1343)の形態の専用プログラマブル処理装置、特定のタスク用のハードウェアアクセラレータ(1344)、グラフィックスアダプタ(1350)などを含むことができる。これらのデバイスは、読取り専用メモリ(ROM)(1345)、ランダムアクセスメモリ(1346)、内部のユーザアクセス不可能なハードドライブ、SSDなどの内部大容量ストレージ(1347)とともに、システムバス(1348)を通じて接続され得る。一部のコンピュータシステムでは、システムバス(1348)は、追加のCPU、GPUなどによる拡張を可能にするために、1つ以上の物理プラグの形態でアクセス可能とすることができる。周辺デバイスは、コアのシステムバス(1348)に直接取り付けることも、周辺バス(1349)を介して取り付けることもできる。一例では、スクリーン(1310)は、グラフィックスアダプタ(1350)に接続することができる。周辺バス用のアーキテクチャには、PCI、USBなどが含まれる。
CPU(1341)、GPU(1342)、FPGA(1343)およびアクセラレータ(1344)は、組み合わされて、前述のコンピュータコードを構成することができる特定の命令を実行することができる。このコンピュータコードは、ROM(1345)またはRAM(1346)に記憶することができる。移行データはまた、RAM(1346)に記憶することもできるが、永続データは、例えば内部大容量ストレージ(1347)に記憶することができる。メモリデバイスのいずれかに対する高速の記憶および検索は、1つ以上のCPU(1341)、GPU(1342)、大容量ストレージ(1347)、ROM(1345)、RAM(1346)などと密接に関連付けることができるキャッシュメモリを使用して可能にすることができる。
コンピュータ可読媒体は、様々なコンピュータ実施動作を実行するためのコンピュータコードを有し得る。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構成されたものであってもよいし、またはコンピュータソフトウェア技術の当業者に周知の利用可能な種類のものであってもよい。
限定ではなく例として、アーキテクチャを有するコンピュータシステム(1300)、具体的にはコア(1340)は、(CPU、GPU、FPGA、アクセラレータなどを含む)(1つ以上の)プロセッサが1つ以上の有形のコンピュータ可読媒体において具現化されたソフトウェアを実行した結果として機能を提供することができる。このようなコンピュータ可読媒体は、前述のようなユーザアクセス可能な大容量ストレージ、ならびにコア内部大容量ストレージ(1347)またはROM(1345)などの非一時的な性質のものであるコア(1340)の特定のストレージと関連付けられた媒体とすることができる。本開示の様々な実施形態を実装するソフトウェアは、このようなデバイスに記憶され、コア(1340)によって実行することができる。コンピュータ可読媒体は、特定の必要性に応じて、1つ以上のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(1340)、および具体的にはその中の(CPU、GPU、FPGAなどを含む)プロセッサに、RAM(1346)に記憶されたデータ構造を定義すること、およびソフトウェアによって定義されたプロセスに従ってこのようなデータ構造を修正することを含む、本明細書に記載された特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えて、または代替として、コンピュータシステムは、ソフトウェアの代わりに、またはソフトウェアと共に動作して、本明細書に記載される特定のプロセスまたは特定のプロセスの特定の部分を実行することができる、回路(例えば、アクセラレータ(1344))におけるハードワイヤードの、または他の方法で具現化された論理の結果として機能を提供することもできる。ソフトウェアへの言及は、必要に応じて、論理を包含することができ、その逆も同様である。コンピュータ可読媒体への言及は、必要に応じて、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のための論理を具現化する回路、またはその両方を包含することができる。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを包含する。
本開示はいくつかの例示的な実施形態を説明してきたが、本開示の範囲内にある修正例、置換例、および様々な代替均等例がある。したがって、当業者は、本明細書に明示的に示されていないかまたは記載されていないが、本開示の原理を具現化し、したがって本開示の趣旨および範囲内にある多数のシステムおよび方法を考案することができることが理解されよう。