本明細書および特許請求の範囲全体を通して、用語は、明示的に記載される意味を超えて文脈内で示唆または暗示される微妙な意味を有する場合がある。本明細書で使用される「一実施形態では」または「いくつかの実施形態では」という語句は、必ずしも同じ実施形態を指すものではなく、本明細書で使用される「別の実施形態では」または「他の実施形態では」という語句は、必ずしも異なる実施形態を指すものではない。同様に、本明細書で使用される「一実装形態では」または「いくつかの実装形態では」という語句は、必ずしも同じ実装形態を指すものではなく、本明細書で使用される「別の実装形態では」または「他の実装形態では」という語句は、必ずしも異なる実装形態を指すものではない。例えば、特許請求される主題は、例示的な実施形態/実装形態の全部または一部の組み合わせを含むことが意図されている。
一般に、用語は、文脈における用法から少なくとも部分的に理解されうる。例えば、本明細書で使用される「および」、「または」、または「および/または」などの用語は、そのような用語が使用される文脈に少なくとも部分的に依存しうる様々な意味を含む場合がある。典型的には、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ピクセルアレイの形態のデータセットによって一般に表される従来の2次元(2D)コンテンツ(画像など)と比較して、3次元フル解像度ピクセレーションを伴う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などを含むがこれらに限定されないファイル拡張子を有する代替的なファイルフォーマットに準拠した情報と共に記憶されうる。色、表面法線、テクスチャなどといったこれらの要素の属性は、様々なやり方でメッシュデータセットに含められうる。
いくつかの実装形態では、メッシュの頂点は、UV空間と呼ばれるピクセル化2D空間にマッピングされうる。よって、メッシュの各頂点は、UV空間内のピクセルにマッピングされうる。いくつかの実装形態では、1つの頂点がUV空間内の複数のピクセルにマッピングされてもよく、例えば、境界の頂点がUV空間内の2つまたは3つのピクセルにマッピングされうる。同様に、メッシュ内の面または表面は、メッシュ内の記録された頂点の中にある場合もない場合もある複数の3D点にサンプリングされてもよく、これら複数の3D点もまた、2次元UV空間内のピクセルにマッピングされうる。メッシュ内の面または表面の頂点およびサンプリングされた3D点のUV空間へのマッピング、ならびにUV空間における後続のデータ解析および処理は、以下でさらに詳細に説明されるように、メッシュまたはメッシュのシーケンスの3Dデータセットのデータの記憶、圧縮、およびコーディングを容易にしうる。マッピングされたUV空間データセットは、メッシュのUV画像、または2Dマップ、または2D画像と呼ばれる場合がある。
3Dメッシュ内の頂点およびサンプリングされた表面点の2D UV空間へのマッピングに続いて、一部のピクセルは3Dメッシュの頂点およびサンプリングされた表面点にマッピングされうるが、他のピクセルはマッピングされていない(またはマッピングされない)場合がある。メッシュの2D画像内のマッピングされた各ピクセルは、3Dメッシュ内の対応するマッピングされた頂点または表面点の情報と関連付けられうる。UV空間内のピクセルに対して含まれる情報のタイプに応じて、メッシュの様々な2D画像または2Dマップが構成されうる。複数の2Dマップの集まりが、メッシュの代替表現または/または結合表現として使用されうる。
例えば、メッシュの最も単純な2Dマップは占有マップとして構成されてもよい。占有マップは、メッシュの3D頂点またはサンプリングされた表面点にマッピングされたUV空間内のピクセルを指示しうる。占有の指示は、例えば、マッピングまたは占有を指示する2進値「1」と、非マッピングまたは非占有(マッピングされていない)を指示する2進値「0」とを有する2Dピクセルの各々におけるバイナリインジケータによって表されうる。よって、占有マップは2D画像として構成されうる。通常の2D画像は、例えば8ビットの色深度を有する3つのチャネル(RGB、YUV、YCrCbなど)の配列を含むが、メッシュのそのような2D占有マップは、単一ビットのバイナリチャネルしか必要としない。値「1」を有する2D画像内のピクセルはマッピングされ、占有されており、そうでない場合、ピクセルはマッピングされず、占有されていない。
別の例では、メッシュに対して2Dジオメトリマップが構成されうる。2Dジオメトリマップは、単一のバイナリチャネルを含む代わりに、占有ピクセルの各々における3色チャネルがメッシュ内の対応するマッピングされた頂点またはサンプリングされた3D点の3つの3D座標に対応する完全な3チャネル画像になる。
いくつかの実装形態では、メッシュに対して他の2Dマップが構成されうる。例えば、メッシュの頂点およびサンプリングされた3D点の各々の属性のセットがメッシュデータセットから抽出されてもよく、2Dマップ画像の3つの色チャネルにコーディングされてもよい。そのような2Dマップは、メッシュの属性マップと呼ばれる場合がある。特定の属性マップは、UV空間内の占有ピクセルの各々について3チャネルの色を含みうる。別の例では、メッシュの各マッピングされた頂点またはサンプリングされた3D点と関連付けられたテクスチャ属性が、3チャネル値にパラメータ化され、2D属性マップにコーディングされうる。別の例では、メッシュの各マッピングされた頂点またはサンプリングされた3D点と関連付けられた通常の属性が、3チャネル値にパラメータ化され、2D属性マップにコーディングされうる。いくつかの例示的な実装形態では、メッシュの頂点およびサンプリングされた表面点のすべての必要な属性情報を保持するために、複数の2D属性マップを構成されうる。
上記の2Dマップは単なる例である。メッシュについての他のタイプの2Dマップを構成することができる。加えて、他のデータセットが、3Dメッシュから抽出されて、上記の2Dマップと協調して元の3Dメッシュを一緒に表してもよい。例えば、頂点間の接続または接続性情報は、リスト、テーブルなどの形式で2Dマップとは別にグループ化され、編成されてもよい。接続性情報は、例えば、頂点インデックスを使用して頂点を参照しうる。頂点インデックスは、2Dマップ内の対応するピクセル位置にマッピングされうる。別の例では、表面テクスチャ、色、法線、変位、および他の情報が、2Dマップとしてではなく、2Dマップとは別に抽出され、編成されうる。他のメタデータが、3Dメッシュからさらに抽出されて、2Dマップおよび上記の他のデータセットと共に3Dメッシュを表してもよい。
上記の例示的な実装形態は静的なメッシュに焦点を当てているが、本開示の一態様によれば、3Dメッシュは動的であってもよい。動的メッシュは、例えば、構成要素(ジオメトリ情報、接続性情報、マッピング情報、頂点属性、および属性マップ)のうちの少なくとも1つが時間と共に変化するメッシュを指しうる。よって、動的メッシュは、ビデオを形成する2D画像フレームの時限シーケンスと同様の、メッシュのシーケンスまたはメッシュ(メッシュフレームとも呼ばれる)によって記述することができる。
いくつかの例示的な実装形態では、動的メッシュは、一定の接続性情報、時変ジオメトリ、および時変頂点属性を有しうる。いくつかの他の例では、動的メッシュは、時変接続性情報を有することができる。いくつかの例では、時変属性マップおよび時変接続性情報を有する動的メッシュを生成するためにデジタル3Dコンテンツ作成ツールが使用されうる。いくつかの他の例では、動的メッシュを生成するためにボリューム取得/検出/感知技術が使用される。ボリューム取得技術は、特にリアルタイム制約の下で、時変接続性情報を有する動的メッシュを生成することができる。
動的メッシュは、動的メッシュが経時的に変化するかなりの量の情報を含みうるので、大量のデータを必要としうる。しかしながら、メッシュフレーム内(イントラ圧縮)およびメッシュフレーム間(インター圧縮)の冗長性を利用するために圧縮が行われてもよい。特にメッシュシーケンスについて、メッシュ表現におけるメディアコンテンツの効率的な記憶および伝送を可能にするために、様々なメッシュ圧縮プロセスが実施されうる。
本開示の態様は、メッシュ圧縮のための例示的なアーキテクチャおよび技術を提供する。これらの技術は、静的メッシュ圧縮、動的メッシュ圧縮、一定の接続性情報を有する動的メッシュの圧縮、時変接続性情報を有する動的メッシュの圧縮、時変属性マップを有する動的メッシュの圧縮などを含むがこれらに限定されない様々なメッシュ圧縮に使用されうる。これらの技術は、リアルタイム没入型コミュニケーション、ストレージ、自由視点ビデオ、拡張現実(AR)、仮想現実(VR)などといった様々な用途のための非可逆圧縮および可逆圧縮に使用されうる。これらの用途は、ランダムアクセスやスケーラブル/プログレッシブコーディングなどの機能を含むことができる。
本開示は、3Dメッシュに適用可能な技術および実装形態を明示的に説明しているが、本明細書で説明される様々な実装形態の基礎となる原理は、点群(Point Cloud(PC))データ構造を含むがこれに限定されない他のタイプの3Dデータ構造に適用可能である。簡単にするために、以下の3Dメッシュへの言及は一般的であることを意図されており、点群や他の3Dボリュームデータセットなどの他のタイプの3D表現を含む。
まず、例示的なアーキテクチャレベルの実装形態を見ると、図1は、本開示の例示的な実施形態による通信システム(100)の簡略ブロック図を例示している。通信システム(100)は、例えば通信ネットワーク(150)(代替的にネットワークとも呼ばれる)を介して互いに通信することができる複数の端末デバイスを含んでもよい。例えば、通信システム(100)は、ネットワーク(150)を介して相互接続された端末デバイス(110)および(120)のペアを含んでもよい。図1の例では、端末デバイス(110)および(120)の第1のペアは、3Dメッシュの単方向伝送を行いうる。例えば、端末デバイス(110)は、端末デバイス(110)によって生成されうるか、ストレージから取得されうるか、または端末デバイス(110)に接続された3Dセンサ(105)によって取り込まれうる3Dメッシュまたは3Dメッシュのシーケンスを圧縮してもよい。圧縮された3Dメッシュまたは3Dメッシュのシーケンスは、例えばビットストリーム(コーディングされたビットストリームとも呼ばれる)の形式で、ネットワーク(150)を介して他方の端末デバイス(120)に伝送されうる。端末デバイス(120)は、ネットワーク(150)から圧縮された3Dメッシュまたは3Dメッシュのシーケンスを受信し、ビットストリームを解凍して元の3Dメッシュまたは3Dメッシュのシーケンスを再構成し、再構成された3Dメッシュまたは3Dメッシュのシーケンスを表示または他の目的/使用のために適切に処理しうる。単方向データ伝送は、メディアサービング用途などにおいて一般的でありうる。
図1の例では、端末デバイス(110)および(120)のどちらか一方または両方が、サーバ、固定またはモバイルのパーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲーム端末、メディアプレーヤ、および/または専用3次元(3D)機器などとして実装されてもよいが、本開示の原理はそのように限定されない。ネットワーク(150)は、端末デバイス(110)および(120)間で圧縮された3Dメッシュを伝送する任意のタイプのネットワークまたはネットワークの組み合わせを表しうる。ネットワーク(150)は、例えば、有線(有線接続)および/または無線通信ネットワークを含むことができる。ネットワーク(150)は、回線交換チャネルおよび/またはパケット交換チャネルでデータを交換しうる。代表的なネットワークは、長距離電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、セルラーネットワーク、および/またはインターネットを含む。本開示の目的では、ネットワーク(150)のアーキテクチャおよびトポロジーは、本明細書で以下に説明されない限り、本開示の動作にとって重要ではない場合がある。
図2は、本開示の一実施形態によるストリーミングシステム(200)の例示的な簡略ブロック図を示している。図2は、3Dメッシュおよび圧縮された3Dメッシュに関連する開示の実装形態のための例示的な用途を示している。開示の主題は、3Dテレプレゼンス用途、仮想現実用途などといった他の3Dメッシュまたは点群対応用途に等しく適用可能でありうる。
ストリーミングシステム(200)は、キャプチャまたはストレージサブシステム(213)を含んでもよい。キャプチャまたはストレージサブシステム(213)は、圧縮されていない3Dメッシュ(202)または点群(202)を生成または提供する、3Dメッシュ生成器もしくは記憶媒体(201)、例えば、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)は、いくつかの実装形態では、UVアトラスを伴うメッシュを含みうる2D UV空間に3Dメッシュをマッピングするためのマッピングユニット(304)への入力データを生成するために、トラック再メッシュ化、パラメータ化、および/またはボクセル化によって前処理されうる。3Dメッシュは、頂点の中にない可能性のある3D表面点を含むようにサンプリングされ、これらのサンプリングされた3D表面点をマッピングにおいてUV空間に追加しうる。占有マップ(310)、ジオメトリマップ(312)、属性マップ(314)を含むがこれらに限定されない様々な2Dマップが、エンコーダ301で生成されうる。これらの画像タイプのマップは、例えば、ビデオコーディング/圧縮技術を使用してエンコーダ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)は、各パッチが2D空間内の平面に対する深度場(例えば、表面上のより深い3D点が対応する2Dマップの中心からさらに離れるように表面を平坦化すること)によって記述されうるように、3Dメッシュを、オーバーラップする場合もオーバーラップしない場合もある、チャートまたはパッチのセット(例えば、パッチは、3Dメッシュまたは点群によって記述される表面の連続したサブセットとして定義される)にセグメント化する。いくつかの実施形態では、パッチ生成モジュール(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)の単色フレームによって表されうる。よって、3つのルーマチャネルまたはクロマチャネルの3つのジオメトリ画像が、3D座標を表すために使用されうる。いくつかの例示的な実装形態では、ジオメトリ画像は、特定の色深度(例えば、8ビット、12ビット、16ビットなど)を有する3つのチャネル(RGB、YUV、YCrCbなど)を有する2D画像によって表されうる。よって、3つの色チャネルを有する1つのジオメトリ画像が、3D座標を表すために使用されうる。
テクスチャ画像を生成するために、テクスチャ生成手順は、元の3Dメッシュからのサンプリングされた点と関連付けられるべき色を計算するために、再構成/平滑化されたジオメトリを利用する(例えば、元の3Dメッシュの頂点の中にない3D表面点を生成することになる、図3の「サンプリング」を参照されたい)。
占有マップモジュール(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つのサブグループパラメータのセットを抽出しうる。サブグループは、Group of Pictures(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勧告H.265などの規格の所定のビデオ圧縮技術に従ってデコーディング動作を行いうる。コーディングされたビデオシーケンスは、コーディングされたビデオシーケンスがビデオ圧縮技術または規格の構文と、ビデオ圧縮技術または規格に文書化されたプロファイルの両方に忠実であるという意味において、使用されているビデオ圧縮技術または規格によって指定された構文に準拠しうる。具体的には、プロファイルは、ビデオ圧縮技術または規格において利用可能なすべてのツールから、そのプロファイルの下で利用可能な限られたツールとして特定のツールを選択しうる。また、コーディングされたビデオシーケンスの複雑さがビデオ圧縮技術または規格のレベルによって定義された範囲内にあることも、コンプライアンスのために必要でありうる。場合によっては、レベルが、最大ピクチャサイズ、最大フレームレート、最大再構成サンプルレート(例えば毎秒メガサンプル単位で測定される)、最大参照ピクチャサイズなどを制限する。レベルによって設定される限界は、場合によっては、仮想参照デコーダ(HRD)の仕様、およびコーディングされたビデオシーケンス内でシグナリングされるHRDバッファ管理のためのメタデータによってさらに制限されうる。
図7は、本開示の一実施形態によるビデオエンコーダ(703)のブロック図を示している。ビデオエンコーダ(703)は、3Dメッシュまたは点群を圧縮するメッシュエンコーダ(400)で使用することができる。いくつかの例示的な実装形態では、ビデオ圧縮モジュール(422)および(423)、ならびにビデオ圧縮モジュール(432)は、エンコーダ(703)と同様に構成される。
ビデオエンコーダ(703)は、パディングされたジオメトリ画像、パディングされたテクスチャ画像などといった2D画像を受信し、圧縮画像を生成しうる。
本開示の例示的な実施形態によれば、ビデオエンコーダ(703)は、リアルタイムで、または用途によって必要とされる任意の他の時間制約の下で、ソースビデオシーケンスのピクチャ(画像)をコーディングされたビデオシーケンス(圧縮画像)にコーディングおよび圧縮しうる。適切なコーディング速度を実施することが、コントローラ(750)の1つの機能である。いくつかの実施形態では、コントローラ(750)は、以下で説明される他の機能ユニットを制御し、他の機能ユニットに機能的に結合されている。簡潔にするために結合は図示されていない。コントローラ(750)によって設定されるパラメータは、レート制御関連のパラメータ(ピクチャスキップ、量子化、レート歪み最適化技術のラムダ値、…)、ピクチャサイズ、Group of Pictures(GOP)レイアウト、最大動きベクトル探索範囲などを含むことができる。コントローラ(750)は、特定のシステム設計のために最適化されたビデオエンコーダ(703)に関係する他の適切な機能を有するように構成されうる。
いくつかの例示的な実装形態では、ビデオエンコーダ(703)は、コーディングループで動作するように構成されてもよい。過度に単純化された説明として、一例では、コーディングループは、(例えば、コーディングされるべき入力ピクチャ、および参照ピクチャに基づいて、シンボルストリームなどのシンボルを作成する役割を担う)ソースコーダ(730)と、ビデオエンコーダ(703)に組み込まれた(ローカル)デコーダ(733)とを含んでもよい。デコーダ(733)は、(リモート)デコーダも作成することになるのと同様の方式で、シンボルを再構成してサンプルデータを作成しうる(開示の主題で考慮されるビデオ圧縮技術においてはシンボルとコーディングされたビデオビットストリームとの間のいかなる圧縮も可逆であるため)。再構成されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(734)に入力されうる。シンボルストリームのデコーディングは、デコーダの位置(ローカルかリモートか)に関係なくビットイグザクトな結果をもたらすため、参照ピクチャメモリ(734)内の内容も、ローカルエンコーダとリモートエンコーダとの間でビットイグザクトである。言い換えれば、エンコーダの予測部分は、デコーディング中に予測を使用するときにデコーダが「見る」ことになるのと全く同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャ同期性のこの基本原理(および、例えばチャネル誤差が原因で同期性が維持されることができない場合に結果として生じるドリフト)は、いくつかの関連技術においても使用される。
「ローカル」デコーダ(733)の動作は、図6と併せて上記で詳細にすでに説明されている、ビデオデコーダ(610)などの「リモート」デコーダの動作と同じでありうる。図6も簡単に参照すると、しかしながら、シンボルが利用可能であり、エントロピーコーダ(745)およびパーサ(620)によるシンボル対コーディングされたビデオシーケンスのエンコーディング/デコーディングが可逆でありうるため、およびパーサ(620)を含むビデオデコーダ(610)のエントロピーデコーディング部分は、ローカルデコーダ(733)においては完全に実装されない場合がある。
本開示の様々な実施形態において、デコーダ内に存在するパース/エントロピーデコーディングを除く任意のデコーダ技術は必然的に、対応するエンコーダにおいても、実質的に同一の機能形式で存在する必要がありうるということである。このため、開示の主題はデコーダ動作に焦点を当てている。エンコーダ技術の説明は、包括的に説明されるデコーダ技術の逆であるので、省略される場合がある。特定の領域においてのみ、より詳細な説明が必要とされ、以下で提供される。
いくつかの例では、動作中、ソースコーダ(730)は、「参照ピクチャ」として指定されたビデオシーケンスからの1つまたは複数の以前にコーディングされたピクチャを参照して予測的に入力ピクチャをコーディングする、動き補償予測コーディングを行ってもよい。このようにして、コーディングエンジン(732)は、入力ピクチャのピクセルブロックと、入力ピクチャへの(1つまたは複数の)予測参照として選択されうる(1つまたは複数の)参照ピクチャのピクセルブロックとの間の差分をコーディングしうる。
ローカルビデオデコーダ(733)は、ソースコーダ(730)によって作成されたシンボルに基づいて、参照ピクチャとして指定されうるピクチャのコーディングされたビデオデータをデコーディングしうる。コーディングエンジン(732)の動作は、有利には、非可逆プロセスであってもよい。コーディングされたビデオデータがビデオデコーダ(図7には図示せず)でデコーディングされうる場合、再構成されたビデオシーケンスは、典型的には、いくつかの誤差を伴うソースビデオシーケンスの複製でありうる。ローカルビデオデコーダ(733)は、参照ピクチャに対してビデオデコーダによって行われうるデコーディングプロセスを複製し、再構成された参照ピクチャを参照ピクチャキャッシュ(734)に記憶させうる。このようにして、ビデオエンコーダ(703)は、(送信誤差なしで)遠端ビデオデコーダによって取得される再構成された参照ピクチャと共通の内容を有する再構成された参照ピクチャのコピーをローカルに記憶しうる。
予測器(735)は、コーディングエンジン(732)の予測探索を行いうる。すなわち、コーディングされるべき新しいピクチャについて、予測器(735)は、新しいピクチャの適切な予測参照として機能しうる、(候補参照ピクセルブロックとしての)サンプルデータまたは参照ピクチャ動きベクトル、ブロック形状などといった特定のメタデータを求めて、参照ピクチャメモリ(734)を探索しうる。予測器(735)は、適切な予測参照を見つけるために、ピクセルブロックごとサンプルブロックごとに動作しうる。場合によっては、予測器(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)の機能を行わせる。
図4のパッチ生成406に戻って、3Dメッシュの頂点およびサンプリングされた3D点を2D UV空間にマッピングするためのいくつかの例示的な実装形態では、3Dメッシュは、パッチ(代替的にパーティションまたは部分とも呼ばれる)に分割されうる。上述されたように、パッチは、3Dメッシュにおいてオーバーラップする場合もオーバーラップしない場合もある。各パッチは、分離されて、2D UV空間にマッピングされうる。
いくつかの例示的な実装形態では、オーバーラップしないパッチが生成されうる。そのようなパッチは、3Dメッシュのチャートと呼ばれる場合がある。上述されたように、いくつかの例示的な実装形態では、図4のパッチ生成モジュール(406)は、3Dメッシュを、滑らかな境界を有する最小数のパッチに分解し、その一方で再構成誤差も最小限に抑えることを目的としうる。
例えば、3Dシーンを表すメッシュは、複数の3Dオブジェクトを含む場合がある。各3Dオブジェクトは、1つまたは複数の表面によって記述されうる。各3Dオブジェクトは、異なる表面パッチにさらに分割されてもよい。例えば、メッシュ内の人間のキャラクタの3Dモデルは、頭部、胴体、腕、および脚の各部分に分解されうる。よって、3Dシーンは、3Dメッシュのチャートを各々形成する表面または表面の部分に分解されうる。メッシュ全体のUV空間へのマッピングは、メッシュの複数のチャートのUV空間へのマッピングに分解されうる。
図4のパッチパッキング408にさらに戻って、いくつかの例示的な実装形態では、3Dメッシュの異なるチャートがUV空間内の領域(または2Dパッチ)にマッピングされうる。各2D領域またはパッチは、例えば、2D空間内の平面に対する深度場(例えば、表面上のより深い3D点が対応する2Dマップの中心からさらに離れるように表面を平坦化すること)によって記述されうる。いくつかの例示的な実装形態では、図8の例に示されるように、3Dメッシュの様々なチャートまたはパッチに対応する2D領域またはパッチは、オーバーラップしない場合もある。図8では、3Dメッシュ802は、例えば、チャート804、806、808、および809を含む非オーバーラップチャート(部分またはパーティション)に分割されてもよく、これらはそれぞれ、2D UV空間内の2Dマップ820の非オーバーラップ2D領域またはパッチ824、826、828、および829にマッピングされうる。2Dマップ内の領域824、826、828および829の各々において、ピクセルの集まりが、3Dメッシュの対応するチャート内の頂点またはサンプリングされた3D表面点にマッピングされうる。これらの各領域内の残りのピクセルは、マッピングされない(または占有されない)場合がある。
いくつかの他の例示的な実装形態では、メッシュの異なるチャートは、オーバーラップしないように2D UVの領域にマッピングされなくてもよい。言い換えれば、3Dメッシュからの異なるチャートは、2Dマップ内に占有点のオーバーラップがない限り、図4のパッチパッキング機能408による3Dから2Dへのマッピング後に2D UV空間内でオーバーラップしてもよい。一例が図9に示されている。図9は、図8と同一のチャートを有する3Dメッシュ802を示しているが、ただし、チャート804および809は、それぞれ、2D UV空間内の2Dマップ820の別々の非オーバーラップ領域824および829にマッピングされているが、3Dメッシュのチャート806および808は、オーバーラップする2Dマップ820の領域828および926にマッピングされている。そのような実装形態は、上記のように、よりコンパクトな2Dマップを達成するのに役立ちうる。
メッシュの3Dチャートの2Dマップへのそのようなオーバーラップパッキングが、図11にさらに示されている。具体的には、図10に示されるように、3Dメッシュの1つまたは複数のチャートをすでに含んでいる2D占有マップが1002として示されている。3Dメッシュの追加のチャートが、全体3Dマップ1002にパッキングされることになる、2×4のサブ2Dマップ1004にマッピングされうる。サブ2Dマップ1004の1002へのパッキングは、1002にクリーンな(またはすべて0の)2×4領域を必要としない場合がある。代わりに、サブ2Dマップ1004は、その領域が2×4のサブ2Dマップ1004とのオーバーラップ「1」を有さない限り、1002の2×4領域にパッキングすることができる。図10の例では、1006および1008として示されている、2D占有マップ1002内の2つの2×4領域は、(2進値「1」で)すでに占有されている領域1006および1008の各々における位置が、サブ2Dマップ1004内の占有された位置(2進値「1」を有する位置)とオーバーラップしないので、サブ2Dマップ1004をパッキングするために使用されうる。領域1006および1008のうちの一方が、サブ2Dマップ1004をパッキングするために選択されうる。例えば、領域1006がパッキングのために選択されてもよい。そのようなパッキング後の結合された2D占有マップが1010として示されている。図10の例に示されるような領域オーバーラップを可能にするそのようなパッキングは、よりコンパクトな2Dマップをもたらす。
3Dメッシュまたは点群のパッチまたはチャートの2Dマップまたは2D画像への効率的かつファクトパッキングについて、例示的な実装形態が以下でさらに詳細に説明される。これらの実装形態は、図4のメッシュエンコーダ400のパッチパッキング機能408に適用されうる。簡単にするために、以下の開示は、図4のメッシュエンコーダ400のパッチ生成機能406によって生成された3Dメッシュのチャートを2D占有マップまたは画像にパッキングする文脈で説明される。そのようなパッキングは、ジオメトリマップ/画像、深度2D画像、テクスチャマップ/画像などを含む他の2Dマップに適用可能であることに留意されたい。これらの様々な例示的な実装形態はメッシュの各々に1つのフレームのみがあるか、またはメッシュコンテンツが経時的に変化しない、静的3Dメッシュに適用される。さらに、これらの例示的な実装形態は、動的3Dメッシュまたは3Dメッシュのシーケンスのメッシュフレームにも適用可能である。
図11は、3Dメッシュフレームのチャートに対応する占有マップ1102を示している。チャートは、例えば、3Dメッシュフレームの一部分に対応しうる。チャートは、図4のメッシュエンコーダ400のパッチ生成モジュール406によって生成された複数のチャートの中にあってもよい。占有マップ1102は、マップ内のどのピクセルが占有されており、よって3Dメッシュ内の頂点またはサンプリングされた表面点に対応するかを指示するバイナリマップでありうる。例えば、占有マップ1102内の2進値は「0」または「1」であってもよく、値「1」は占有を指示するために使用されてもよく、値「0」は非占有を指示するために使用されてもよい。占有マップの視覚的ガイドが1104として示されており、マップのその領域が黒で占有されていることを指示している。
いくつかの例示的な実装形態では、図4のメッシュエンコーダ400のパッチ生成モジュール406によって提供される、入力された3Dメッシュフレームの複数のチャートの各々の占有マップは、図11の特定の占有マップ1102と同様に生成されうる。
いくつかの例示的な実装形態では、占有マップを任意の予め定義されるか、または構成された領域まで拡大するために、ゼロがエッジに沿ってパディングされうる。図4の例示的なパディングされた占有マップ1106では、占有マップ1102の上、下、左、および右に、それぞれ、3行、1行、4列、および3列のゼロがパディングされており、結果として、占有マップが拡大されている。図11のこれら2つの占有マップ1102および1106は、3Dメッシュの例示的な投影チャートについての同じ占有情報を表している。いくつかの実際的な実施態様では、図4のメッシュエンコーダ400のパッチ生成モジュール406は、チャートごとに最小サイズの占有マップを生成するように構成されうる。必要に応じた、拡大占有マップへの拡張は簡単である。
パッキングのために、本発明者らは投影画像の占有マップを作成し、(投影画像と同じ画像サイズを有する)占有マップのピクセル値が0に初期設定される。投影画像は、すべての投影チャートをホストする。投影チャートが投影画像にパッキングされると、投影画像の占有マップが更新され、投影チャート内の占有ピクセルに対応するピクセル値が1に更新される。
次いで、上述されたような3Dメッシュの複数のチャートの占有マップは、全体占有マップにパッキングされうる。上述されたように、よりコンパクトなパッキングのために、様々なチャートの占有マップは、図10に例示され、上記で説明されているように、チャートの占有マップの占有ピクセルが、3Dメッシュフレームの他のチャートの占有マップの占有ピクセルに対応する全体占有マップのピクセル上に投影されない限り、全体占有マップの一部の領域とオーバーラップすることが許容されうる。
繰り返すと、図10に示されるように、すでに3Dメッシュの1つまたは複数のチャートを含んでいる2D占有マップが1002として示されている。3Dメッシュの追加のチャートが、全体3Dマップ1002にパッキングされることになる、2×4のサブ2Dマップ1004にマッピングされうる。サブ2Dマップ1004の1002へのパッキングは、1002にクリーンな(またはすべて0の)2×4領域を必要としない場合がある。代わりに、サブ2Dマップ1004は、その領域が2×4のサブ2Dマップ1004とのオーバーラップ「1」を有さない限り、1002の2×4領域にパッキングすることができる。図10の例では、1006および1008として示されている、2D占有マップ1002内の2つの2×4領域は、(2進値「1」で)すでに占有されている領域1006および1008の各々における位置が、サブ2Dマップ1004内の占有された位置(2進値「1」を有する位置)とオーバーラップしないので、サブ2Dマップ1004をパッキングするために使用されうる。領域1006および1008のうちの一方が、サブ2Dマップ1004をパッキングするために選択されうる。例えば、領域1006がパッキングのために選択されてもよい。そのようなパッキング後の結合された2D占有マップが1010として示されている。図10の例に示されるような領域オーバーラップを可能にするそのようなパッキングは、よりコンパクトな2Dマップをもたらす。
3Dメッシュフレームの対応するチャートのサブ2Dマップ1004をパッキングするために、2D占有マップ1002内の候補パッキング位置または候補パッキング領域1006および1008の識別は、様々なやり方で行われうる。そのような識別のための基準は、サブ2Dマップ1004内の2進値「1」を有する位置に対応する候補領域内のピクセルが「1」であってはならないことでありうる。言い換えれば、投影チャートのサブ2D占有マップ1004と全体2D占有マップ1002内の候補領域との間の要素ごとの積の合計がゼロでなければならない。これにより、全体占有マップ1002内のすべてのパッチと、パッキングされるべき投影チャートのサブ2D占有マップ1004との要素ごとの積の合計をチェックするための単純なオーバーラップなしチェックアルゴリズムが行われうる。合計が0である場合、サブ2D占有マップ1004をオーバーラップなしでその位置にパッキングすることができ、そうではなく、合計が0より大きい場合、すなわち、あるピクセルについて両方の占有マップが占有されている場合には、その位置にパッキングされるとオーバーラップが発生することになる。
そのような候補パッキング領域を識別するためのいくつかの一般的な例示的な実装形態では、いくつかの位置で合計が0になるまで、投影チャートの占有マップと移動窓によってフィルタリングされた全体マップのパッチとの間の要素ごとの積の合計を反復的に計算しうる。以下の開示は、画像フィルタリングを使用して異なる位置における合計を計算する例示的な効率的方法をさらに説明する。
いくつかの例示的な実装形態では、そのような画像フィルタリングフィルタプロセスは、2D行列と2Dカーネルとの相関を計算するように設計されうる。2D行列Mat(x,y)、およびサイズM*Nの2Dカーネルker(x’,y’)が与えられた場合、出力相関行列Out(x,y)は、以下のように定義されうる。
よって、投影画像(全体占有画像)の占有マップを2D行列Mat(x,y)として設定し、投影チャートの占有マップを2Dカーネルのker(x’,y’)として設定することによって、Out(0,0)は、投影チャートの占有マップと位置(0,0)にある投影画像のうちの1つとの間の要素ごとの積の合計を与え、Out(0,1)は、投影チャートの占有マップと位置(0,1)にある投影画像のうちの1つとの間の要素ごとの積の合計を与え、以下同様である。一方、画像フィルタリングは、例えば、高速フーリエ変換(FFT)を使用することによって非常に効率的に計算することができる。出力相関行列Out(x,y)を導出した後、すべての可能な位置(全体2D占有画像内のピクセル位置)における要素ごとの積の合計が得られる。画像フィルタリングに基づく上記の計算は、本質的に畳み込み演算であり、GPUによって提供される並列処理などのハードウェアサポートを利用して効率的に行われうる。
特に、空間畳み込みは空間周波数領域における乗算に対応するので、カーネル(チャートの2Dマップ)と全体2Dマップとの間の上記畳み込み計算は、周波数領域への高速フーリエ変換によって行われ、逆高速フーリエ変換によって流される周波数領域の乗算を行うことができる。
よって、メッシュエンコーダ400のパッチ生成モジュール406によって生成された3Dメッシュフレームの複数のチャートから開始して、ブランクの全体2D占有マップは、以下の例示的な手順に従ってチャートによって反復的にパッキングされうる。
投影画像の初期全体占有マップを生成し、全体占有マップのピクセル値はすべての「0」の2進値に初期設定される。
投影チャートCを取り出し、投影チャートのサブ占有マップを生成する。
画像フィルタリングを行って、投影画像の全体占有マップと投影チャート(カーネル)の占有マップとの相関または畳み込みを計算して、出力相関または畳み込み行列を生成する。
出力相関行列から、値が0である1つの行列要素を選択する。
出力相関行列内の選択された行列要素の位置に従って、投影チャートCをパッキングするための全体占有画像内の位置を決定する。
投影チャートCを上記で決定された全体占有マップ内の位置にパッキングすることによって、全体占有マップを投影画像で更新する。
上記のステップを繰り返してすべてのチャートを次々にパッキングして、全体占有マップを繰り返し更新する。
パッキング位置を選択するステップが上記で必要とされうるのは、出力相関行列では、値が0である複数の行列要素が存在しうることが非常に多いからである。複数の候補位置からのパッキング位置の選択は、様々なやり方で行われうる。
いくつかの例示的な実装形態では、すべてのゼロ値の要素の中で2D寸法のうちの1つで最小のピクセル座標を有する出力相関行列内のゼロ値の要素が選択されうる。例えば、幅方向の最小のピクセル座標を有するゼロ値の要素が選択されてもよい。同様に、高さ方向の最小のピクセル座標を有するゼロ値の要素が選択されてもよい。
いくつかの他の例示的な実装形態では、すべてのゼロ値の要素の中で2D寸法の2つでピクセル座標の最小和を有する出力相関行列内のゼロ値の要素が選択されうる。具体的には、最小の幅プラス高さのピクセル値を有するゼロ値の要素が、現在のチャートをパッキングするための全体占有マップにおける位置を決定するために選択されうる。
いくつかの他の例示的な実装形態では、出力相関行列内のゼロ値の要素は、相関行列内のゼロ値の要素の幅および高さ位置の最適化関数に従って、すべての非ゼロ値の中から選択されうる。そのような最適化関数は、lpノルム関数などの最適化関数を含みうるが、これに限定されない。
いくつかの他の代替的な実装形態では、出力相関行列のゼロ値の要素が、時間的制約に基づいて選択されうる。例えば、投影チャートCが(xp,yp)にある好ましいパッキング位置を有する場合、探索はすべてのゼロ値の要素にわたって行われうる。いくつかの例示的な実装形態では、(xp,yp)がゼロ値の要素である場合には、パッキング位置を決定するために(xp,yp)が選択されうる。(xp,yp)が相関行列内のゼロ値の要素でない場合、例えば、xp、yp、x、およびyの最適化関数に基づいて、相関行列内の(xp,yp)の近傍のゼロ値の要素(x,y)が選択されうる。そのような最適化関数は、例えば、(x-xp)および(y-yp)のlpノルム関数を含みうるが、これに限定されない。例えば、最小のlpノルム(または好ましい位置(xp,yp)までのマンハッタン距離)を有するゼロ値の要素がパッキングのために識別されてもよい。
いくつかの他の実装形態では、高速かつコンパクトなチャートパッキングのための上記の画像フィルタリングベースの方法の間、プロセスを完了して、チャートをパッキングするための全体投影画像内のすべて候補可能位置を導出することが必要ではない場合もある。例えば、(出力相関行列要素が0である)最初のゼロ値の位置が識別されて利用可能になると、プロセスを終了することができ、投影チャートをその最も早く識別された位置に割り当てることができる。
図12は、本開示の一実施形態による例示的なプロセス(1200)のフローチャートを示している。プロセス(1200)は、ステップ(S1201)から開始する。ステップ(S1210)において、3Dメッシュフレームに対応する初期2D占有マップが取得される。初期2D占有マップは、0個以上のピクセルであって、0個以上のピクセルが3Dメッシュフレームの少なくとも1つの他の部分にマッピングされていることを指示する第1の予め定義された値を有し、少なくとも1つの他の部分が3Dメッシュフレームの第1の部分とオーバーラップしていない、0個以上のピクセルと、残りのピクセルであって、残りのピクセルが3Dメッシュフレームにマッピングされていないことを指示する第2の予め定義された値を有する、残りのピクセルとを含む。ステップ(S1220)において、3Dメッシュフレームの第1の部分に対して2D占有行列が生成され、第1の予め定義された値は占有ピクセルに対応し、第2の予め定義された値は非占有ピクセルに対応する。ステップ(S1230)において、初期2D占有マップと2D占有行列との間の相関行列が計算される。ステップ(S1240)において、相関行列内のゼロ値のターゲット要素が識別される。ステップ(S1250)において、2D占有行列と同じサイズを有する初期2D占有マップ内のパッチ内の第2の予め定義された値を有するピクセルを、2D占有行列内の対応する要素に置き換えることによって更新された2D占有マップが生成され、パッチは、相関行列内のゼロ値のターゲット要素の位置と一致するパッキング位置にある初期2D占有マップ内に位置している。手順(1200)は(S1299)で停止する。手順(1200)は、3Dメッシュのすべてのチャートまたは部分を2D占有マップにパッキングするまで繰り返されうる。
プロセス(1200)は、適切に適合されることができる。プロセス(1200)の(1つまたは複数の)ステップは、修正および/または省略されることができる。(1つまたは複数の)追加のステップが追加されることができる。任意の適切な実施順序が使用されることができる。
本開示で開示される技術は、別々に使用されても、任意の順序で組み合わされてもよい。さらに、技術(例えば、方法、実施形態)、エンコーダ、およびデコーダの各々は、処理回路(例えば、1つまたは複数のプロセッサや1つまたは複数の集積回路)によって実装されてもよい。いくつかの例では、1つまたは複数のプロセッサは、非一時的コンピュータ可読媒体に記憶されたプログラムを実行する。
上述された技術は、コンピュータ可読命令を使用するコンピュータソフトウェアとして実装され、1つまたは複数のコンピュータ可読媒体に物理的に記憶されることができる。例えば、図13は、開示の主題の特定の実施形態を実装するのに適したコンピュータシステム(1300)を示している。
コンピュータソフトウェアは、1つまたは複数のコンピュータ中央処理装置(CPU)、グラフィックスプロセッシングユニット(GPU)などによって直接、または解釈、マイクロコード実行などを介して実行されることができる命令を含むコードを作成するためにアセンブリ、コンパイル、リンクなどのメカニズムを施されうる、任意の適切な機械コードまたはコンピュータ言語を使用してコーディングされることができる。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーム機、モノのインターネットデバイスなどを含む様々なタイプのコンピュータまたはコンピュータの構成要素上で実行されることができる。
コンピュータシステム(1300)について図13に示される構成要素は、本質的に例示であり、本開示の実施形態を実装するコンピュータソフトウェアの使用または機能の範囲に関する限定を示唆することを意図されていない。構成要素の構成は、コンピュータシステム(1300)の例示的な実施形態に示される構成要素のいずれか1つまたは組み合わせに関連するいかなる依存性も要件も有すると解釈されるべきではない。
コンピュータシステム(1300)は、特定のヒューマンインターフェース入力デバイスを含んでもよい。そのようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(キーストローク、スワイプ、データグローブの動きなど)、オーディオ入力(声、拍手など)、視覚入力(ジェスチャなど)、嗅覚入力(図示せず)を介した、1人または複数の人間ユーザによる入力に応答してもよい。ヒューマンインターフェースデバイスは、オーディオ(音声、音楽、環境音など)、画像(走査画像、写真画像静止画像カメラから取得など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)など、必ずしも人間による意識的な入力に直接関連しない特定の媒体を取り込むためにも使用されることができる。
入力ヒューマンインターフェースデバイスは、キーボード(1301)、マウス(1302)、トラックパッド(1303)、タッチスクリーン(1310)、データグローブ(図示せず)、ジョイスティック(1305)、マイクロフォン(1306)、スキャナ(1307)、カメラ(1308)のうちの1つまたは複数(それぞれ1つのみ図示)を含んでもよい。
コンピュータシステム(1300)はまた、特定のヒューマンインターフェース出力デバイスを含んでもよい。そのようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、および匂い/味によって1人または複数の人間ユーザの感覚を刺激してもよい。そのようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(1310)、データグローブ(図示せず)、またはジョイスティック(1305)による触覚フィードバック、ただし、入力デバイスとして機能しない触覚フィードバックデバイスもありうる)、オーディオ出力デバイス(スピーカ(1309)、ヘッドホン(図示せず)など)、視覚出力デバイス(例えば、各々タッチスクリーン入力能力を有するかまたは有さず、各々触覚フィードバック能力を有するかまたは有さず、その一部は2次元視覚出力または立体出力などの手段による3次元を超える出力を出力することが可能でありうる、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(1310)、仮想現実メガネ(図示せず)、ホログラフィックディスプレイおよびスモークタンク(図示せず)など)ならびに、プリンタ(図示せず)を含んでもよい。
コンピュータシステム(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)など)、実行のためのロジックを具体化する回路、またはその両方を包含することができる。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを包含する。
本開示はいくつかの例示的な実施形態を説明しているが、変更形態、置換形態、および様々な代替の均等物が存在し、それらは本開示の範囲内に入る。よって、当業者は、本明細書に明示的に図示または記載されていないが、本開示の原理を具体化する、よって本開示の趣旨および範囲内にある多数のシステムおよび方法を考案することができることが理解されよう。