図1は、いくつかの例におけるビデオ処理システム(100)のブロック図を示す。ビデオ処理システム(100)は、ストリーミング環境における開示された主題、ビデオエンコーダ、およびビデオデコーダのためのアプリケーションの一例である。開示された主題は、例えば、ビデオ会議、デジタルTV、ストリーミングサービス、CD、DVD、メモリスティックなどを含むデジタル媒体への圧縮ビデオの記憶を含む、他の画像およびビデオ対応アプリケーションにも等しく適用可能とすることができる。
ビデオ処理システム(100)は、ビデオソース(101)を含むことができるキャプチャサブシステム(113)を含む。ビデオソース(101)は、カメラによってキャプチャされたおよび/またはコンピュータによって生成された1つまたは複数の画像を含むことができる。例えば、デジタルカメラは、非圧縮のビデオピクチャのストリーム(102)を作成することができる。一例では、ビデオピクチャのストリーム(102)は、デジタルカメラによって撮影されたサンプルを含む。エンコーディングされたビデオデータ(104)(またはコーディングされたビデオビットストリーム)と比較してデータ量の多さを強調するために太線として示されているビデオピクチャのストリーム(102)は、ビデオソース(101)に結合されたビデオエンコーダ(103)を含む電子デバイス(120)によって処理することができる。ビデオエンコーダ(103)は、以下でより詳細に説明するように、開示された主題の態様を可能にするかまたは実施するために、ハードウェア、ソフトウェア、またはそれらの組合せを含むことができる。ビデオピクチャのストリーム(102)と比較してデータ量が少ないことを強調するために細い線として示されているエンコーディングされたビデオデータ(104)(またはエンコーディングされたビデオビットストリーム)は、将来の使用のためにストリーミングサーバ(105)に記憶することができる。図1のクライアントサブシステム(106)および(108)などの1つまたは複数のストリーミングクライアントサブシステムは、ストリーミングサーバ(105)にアクセスして、エンコーディングされたビデオデータ(104)のコピー(107)および(109)を取得することができる。クライアントサブシステム(106)は、例えば電子デバイス(130)内のビデオデコーダ(110)を含むことができる。ビデオデコーダ(110)は、エンコーディングされたビデオデータの着信コピー(107)をデコーディングし、ディスプレイ(112)(例えば、表示画面)または他のレンダリングデバイス(図示せず)上にレンダリングすることができるビデオピクチャ(111)の発信ストリームを作成する。いくつかのストリーミングシステムでは、エンコーディングされたビデオデータ(104)、(107)、および(109)(例えば、ビデオビットストリーム)は、特定のビデオコーディング/圧縮規格に従ってエンコーディングすることができる。これらの規格の例としては、ITU-T勧告H.265が挙げられる。一例では、開発中のビデオコーディング規格は、多用途ビデオコーディング(VVC)として非公式に知られている。開示された主題は、VVCの文脈で使用されることがある。
電子デバイス(120)および(130)は、他の構成要素(図示せず)を含むことができることに留意されたい。例えば、電子デバイス(120)はビデオデコーダ(図示せず)を含むことができ、電子デバイス(130)はビデオエンコーダ(図示せず)も含むことができる。
図2は、ビデオデコーダ(210)の例示的なブロック図を示す。ビデオデコーダ(210)は、電子デバイス(230)に含めることができる。電子デバイス(230)は、受信機(231)を含むことができる。受信機(231)は、ネットワークインターフェース回路などの受信回路を含むことができる。ビデオデコーダ(210)は、図1の例のビデオデコーダ(110)の代わりに使用することができる。
受信機(231)は、ビデオデコーダ(210)によってデコーディングされる1つまたは複数のコーディングされたビデオシーケンスを受信してもよい。一実施形態では、一度に1つのコーディングされたビデオシーケンスが受信され、各コーディングされたビデオシーケンスのデコーディングは、他のコーディングされたビデオシーケンスのデコーディングとは無関係である。コーディングされたビデオシーケンスは、エンコーディングされたビデオデータを記憶するストレージデバイスへのハードウェア/ソフトウェアリンクであってもよいチャネル(201)から受信されてもよい。受信機(231)は、エンティティ(図示せず)を使用してそれぞれに転送され得る他のデータ、例えば、コーディングされたオーディオデータおよび/または補助データストリームを有するエンコーディングされたビデオデータを受信することができる。受信機(231)は、コーディングされたビデオシーケンスを他のデータから分離することができる。ネットワークジッタに対抗するために、バッファメモリ(215)が、受信機(231)とエントロピーデコーダ/パーサ(220)(以下、「パーサ(220)」)との間に結合されてもよい。特定の用途では、バッファメモリ(215)は、ビデオデコーダ(210)の一部である。他の場合には、バッファメモリ(215)は、ビデオデコーダ(210)の外部にあってもよい(図示せず)。さらに他の場合には、例えばネットワークジッタに対抗するためにビデオデコーダ(210)の外部にバッファメモリ(図示せず)があり、さらに例えば再生タイミングを処理するためにビデオデコーダ(210)の内部に別のバッファメモリ(215)があり得る。受信機(231)が十分な帯域幅および制御可能性のある記憶/転送デバイスから、または非同期ネットワークからデータを受信する際は、バッファメモリ(215)を不要とすることができ、または小さくすることができる。インターネットなどのベストエフォートパケットネットワークで使用するために、バッファメモリ(215)は必要な場合があり、比較的大きい場合があり、有利には適応サイズであってもよく、ビデオデコーダ(210)の外部のオペレーティングシステムまたは同様の要素(図示せず)に少なくとも部分的に実装されてもよい。
ビデオデコーダ(210)は、コーディングされたビデオシーケンスからシンボル(221)を再構成するために、パーサ(220)を含んでもよい。これらのシンボルのカテゴリは、ビデオデコーダ(210)の動作を管理するために使用される情報と、図2に示すように、電子デバイス(230)の一体部分ではないが電子デバイス(230)に結合され得るレンダリングデバイス(212)(例えば、表示画面)などのレンダリングデバイスを制御するための潜在的な情報とを含む。レンダリングデバイスの制御情報は、補足エンハンスメント情報(SEI)メッセージまたはビデオユーザビリティ情報(VUI)パラメータセットフラグメント(図示せず)の形態であってもよい。パーサ(220)は、受信したコーディングされたビデオシーケンスを解析/エントロピーデコーディングすることができる。コーディングされたビデオシーケンスのコーディングは、ビデオ符号化技術または規格に従うことができ、可変長符号化、ハフマン符号化、コンテキスト感度ありまたはなしの算術符号化などを含む様々な原理に従うことができる。パーサ(220)は、ビデオデコーダ内のピクセルのサブグループのうちの少なくとも1つのサブグループパラメータのセットを、そのグループに対応する少なくとも1つのパラメータに基づいて、コーディングされたビデオシーケンスから抽出することができる。サブグループは、Groups of Pictures(GOP)、ピクチャ、タイル、スライス、マクロブロック、Coding Units(CU)、ブロック、Transform Units(TU)、Prediction Units(PU)などを含むことができる。パーサ(220)はまた、変換係数、量子化器パラメータ値、動きベクトルなどのコーディングされたビデオシーケンス情報を抽出することができる。
パーサ(220)は、シンボル(221)を作成するために、バッファメモリ(215)から受信したビデオシーケンスに対してエントロピーデコーディング/解析動作を実行することができる。
シンボル(221)の再構成は、コーディングされたビデオピクチャまたはその一部(例えば、インターピクチャおよびイントラピクチャ、インターブロックおよびイントラブロック)のタイプ、およびその他の要因に応じて、複数の異なるユニットを含むことができる。どのユニットがどのように関与するかは、パーサ(220)によって、コーディングされたビデオシーケンスから解析されたサブグループ制御情報によって制御することができる。パーサ(220)と以下の複数のユニットとの間のそのようなサブグループ制御情報のフローは、明確にするために示されていない。
既に述べた機能ブロックの他に、ビデオデコーダ(210)は、以下に説明するように概念的にいくつかの機能ユニットに細分することができる。商業的制約の下で動作する実際の実施態様では、これらのユニットの多くは互いに密接に相互作用し、少なくとも部分的に互いに統合することができる。しかしながら、開示された主題を説明する目的で、以下の機能ユニットへの概念的細分化が適切である。
第1のユニットはスケーラ/逆変換ユニット(251)である。スケーラ/逆変換ユニット(251)は、量子化変換係数、ならびにどの変換を使用するか、ブロックサイズ、量子化係数、量子化スケーリング行列などをシンボル(221)として含む制御情報を、パーサ(220)から受信する。スケーラ/逆変換ユニット(251)は、アグリゲータ(255)に入力され得る、サンプル値を含むブロックを出力することができる。
場合によっては、スケーラ/逆変換ユニット(251)の出力サンプルは、イントラコーディングされたブロックに関連することができる。イントラコーディングされたブロックは、以前に再構成されたピクチャからの予測情報を使用せず、現在のピクチャの以前に再構成された部分からの予測情報を使用することができるブロックである。このような予測情報は、イントラピクチャ予測ユニット(252)によって提供され得る。場合によっては、イントラピクチャ予測ユニット(252)は、現在のピクチャバッファ(258)からフェッチされた周囲の既に再構成された情報を使用して、再構成中のブロックと同じサイズおよび形状のブロックを生成する。現在のピクチャバッファ(258)は、例えば、部分的に再構成された現在のピクチャおよび/または完全に再構成された現在のピクチャをバッファリングする。アグリゲータ(255)は、場合によっては、イントラ予測ユニット(252)が生成した予測情報を、スケーラ/逆変換ユニット(251)からの出力サンプル情報に、サンプル単位で追加する。
他の場合には、スケーラ/逆変換ユニット(251)の出力サンプルは、インターコーディングされた、潜在的に動き補償されたブロックに関連することができる。このような場合、動き補償予測ユニット(253)は、予測に使用されるサンプルをフェッチするために参照ピクチャメモリ(257)にアクセスすることができる。ブロックに関連するシンボル(221)に従ってフェッチされたサンプルを動き補償した後、これらのサンプルは、出力サンプル情報を生成するために、アグリゲータ(255)によってスケーラ/逆変換ユニット(251)の出力(この場合、残差サンプルまたは残差信号と呼ばれる)に追加され得る。動き補償予測ユニット(253)が予測サンプルをフェッチする参照ピクチャメモリ(257)内のアドレスは、動き補償予測ユニット(253)が、例えばX、Y、および参照ピクチャ成分を有することができるシンボル(221)の形態で利用可能な動きベクトルによって制御することができる。動き補償はまた、サブサンプルの正確な動きベクトルが使用されているときに参照ピクチャメモリ(257)からフェッチされたサンプル値の補間、動きベクトル予測機構などを含むことができる。
アグリゲータ(255)の出力サンプルには、ループフィルタユニット(256)において様々なループフィルタ処理技術を施すことができる。ビデオ圧縮技術は、コーディングされたビデオシーケンス(コーディングされたビデオビットストリームとも呼ばれる)に含まれるパラメータによって制御され、パーサ(220)からのシンボル(221)としてループフィルタユニット(256)に利用可能となるインループフィルタ技術を含むことができる。ビデオ圧縮はまた、コーディングされたピクチャまたはコーディングされたビデオシーケンスの前の(デコーディング順で)部分のデコーディング中に取得されたメタ情報に応答し、さらに、前に再構成され、ループフィルタ処理されたサンプル値に応答することができる。
ループフィルタユニット(256)の出力は、レンダリングデバイス(212)に出力することができるとともに、将来のインターピクチャ予測に使用するために参照ピクチャメモリ(257)に記憶され得るサンプルストリームとすることができる。
完全に再構成されると、特定のコーディングされたピクチャは、将来の予測のための参照ピクチャとして使用することができる。例えば、現在のピクチャに対応するコーディングされたピクチャが完全に再構成され、コーディングされたピクチャが参照ピクチャとして(例えば、パーサ(220)によって)識別されると、現在のピクチャバッファ(258)は参照ピクチャメモリ(257)の一部になることができ、後続のコーディングされたピクチャの再構成を開始する前に、新しい現在のピクチャバッファが再割り当てされ得る。
ビデオデコーダ(210)は、所定のビデオ圧縮技術またはITU-T Rec.H.265などの規格に従ってデコーディング動作を行うことができる。コーディングされたビデオシーケンスは、コーディングされたビデオシーケンスがビデオ圧縮技術または規格のシンタックスおよびビデオ圧縮技術または規格に文書化されたプロファイルの両方に準拠するという意味で、使用されているビデオ圧縮技術または規格によって指定されたシンタックスに準拠することができる。具体的には、プロファイルは、ビデオ圧縮技術または規格において利用可能なすべてのツールから、そのプロファイルの下で使用するために利用可能な唯一のツールとして特定のツールを選択することができる。また、準拠のために必要なのは、コーディングされたビデオシーケンスの複雑さがビデオ圧縮技術または規格のレベルによって定義される範囲内にあることであり得る。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構成サンプルレート(例えば毎秒メガサンプルを単位として測定される)、最大参照ピクチャサイズなどを制限する。レベルによって設定される制限は、場合によっては、コーディングされたビデオシーケンスにおいてシグナリングされるHRDバッファ管理のためのメタデータおよびHypothetical Reference Decoder(HRD)仕様によってさらに制限され得る。
一実施形態では、受信機(231)は、エンコーディングされたビデオとともに追加の(冗長な)データを受信することができる。追加のデータは、コーディングされたビデオシーケンスの一部として含まれていてもよい。追加のデータは、データを適切にデコーディングするために、および/または元のビデオデータをより正確に再構成するために、ビデオデコーダ(210)によって使用されてもよい。追加のデータは、例えば、時間、空間、または信号雑音比(SNR)強化層、冗長スライス、冗長ピクチャ、前方誤り訂正符号などの形態とすることができる。
図3は、ビデオエンコーダ(303)の例示的なブロック図を示す。ビデオエンコーダ(303)は、電子デバイス(320)に含まれている。電子デバイス(320)は、送信機(340)(例えば、送信回路)を含む。ビデオエンコーダ(303)は、図1の例のビデオエンコーダ(103)の代わりに使用することができる。
ビデオエンコーダ(303)は、ビデオエンコーダ(303)によってコーディングされるビデオ画像をキャプチャすることができるビデオソース(301)(図3の例では電子デバイス(320)の一部ではない)からビデオサンプルを受信することができる。別の例では、ビデオソース(301)は電子デバイス(320)の一部である。
ビデオソース(301)は、ビデオエンコーダ(303)によってコーディングされるソースビデオシーケンスを、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、...)、任意の色空間(例えば、BT.601 Y CrCB、RGB、...)、および任意の適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)であり得るデジタルビデオサンプルストリームの形態で提供することができる。メディアサービングシステムにおいては、ビデオソース(301)は、予め用意されたビデオを記憶する記憶装置であってもよい。ビデオ会議システムでは、ビデオソース(301)は、ビデオシーケンスとしてローカル画像情報をキャプチャするカメラであってもよい。ビデオデータは、連続して見たときに動きを与える複数の個々のピクチャとして提供されてもよい。ピクチャ自体は、ピクセルの空間アレイとして編成されてもよく、各ピクセルは、使用時のサンプリング構造、色空間などに応じて1つまたは複数のサンプルを含むことができる。以下の説明は、サンプルに焦点を当てている。
一実施形態によれば、ビデオエンコーダ(303)は、リアルタイムで、または必要に応じて任意の他の時間制約下で、ソースビデオシーケンスのピクチャをコーディングしてコーディングされたビデオシーケンス(343)に圧縮することができる。適切なコーディング速度を実施することが、コントローラ(350)の一機能である。いくつかの実施形態では、コントローラ(350)は、以下に説明するように他の機能ユニットを制御し、他の機能ユニットに機能的に結合される。明確にするために、結合については図示していない。コントローラ(350)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化器、レート歪み最適化技術のラムダ値、...)、ピクチャサイズ、ピクチャグループ(GOP)レイアウト、最大動きベクトル探索範囲などを含むことができる。コントローラ(350)は、特定のシステム設計に最適化されたビデオエンコーダ(303)に関する他の適切な機能を有するように構成することができる。
いくつかの実施形態では、ビデオエンコーダ(303)は、コーディングループで動作するように構成される。過度に簡略化された説明として、一例では、コーディングループは、ソースコーダ(330)(例えば、コーディングされる入力ピクチャと、参照ピクチャとに基づいて、シンボルストリームなどのシンボルを生成することを担当する)と、ビデオエンコーダ(303)に組み込まれた(ローカル)デコーダ(333)とを含むことができる。デコーダ(333)は、(リモート)デコーダも作成するのと同様のやり方でシンボルを再構成してサンプルデータを作成する。再構成されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(334)に入力される。シンボルストリームのデコーディングは、デコーダ位置(ローカルまたはリモート)とは無関係にビットイグザクトな結果をもたらすため、参照ピクチャメモリ(334)内のコンテンツもローカルエンコーダとリモートエンコーダとの間でビットイグザクトである。言い換えれば、エンコーダの予測部分は、デコーダがデコーディング中に予測を使用するときに「見る」であろう全く同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャの同期性のこの基本原理(および、例えばチャネル誤差のために同期性を維持することができない場合に、結果として生じるドリフト)は、いくつかの関連技術においても使用される。
「ローカル」デコーダ(333)の動作は、図2に関連して既に詳細に説明したビデオデコーダ(210)などの「リモート」デコーダの動作と同じであり得る。しかしながら、図2も簡単に参照すると、シンボルが利用可能であり、エントロピーコーダ(345)およびパーサ(220)によるコーディングされたビデオシーケンスへのシンボルのエンコーディング/デコーディングは可逆であり得るため、バッファメモリ(215)を含むビデオデコーダ(210)のエントロピーデコーディング部、およびパーサ(220)は、ローカルデコーダ(333)に完全に実装されない場合がある。
一実施形態では、デコーダに存在する解析/エントロピーデコーディングを除くデコーダ技術は、対応するエンコーダに同一または実質的に同一の機能形態で存在する。したがって、開示された主題はデコーダ動作に焦点を当てている。エンコーダ技術の説明は、エンコーダ技術が、包括的に説明されるデコーダ技術の逆であるため省略することができる。特定の領域では、より詳細な説明が以下に提供される。
動作中、いくつかの例では、ソースコーダ(330)は、「参照ピクチャ」として指定されたビデオシーケンスからの1つまたは複数の以前にコーディングされたピクチャを参照して入力ピクチャを予測的にコーディングする動き補償予測コーディングを行うことができる。このようにして、コーディングエンジン(332)は、入力ピクチャのピクセルブロックと、入力ピクチャに対する予測参照として選択され得る参照ピクチャのピクセルブロックとの間の差分をコーディングする。
ローカルビデオデコーダ(333)は、ソースコーダ(330)によって生成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャのコーディングされたビデオデータをデコーディングし得る。コーディングエンジン(332)の動作は、有利には非可逆プロセスであってもよい。コーディングされたビデオデータがビデオデコーダ(図3には示されていない)でデコーディングされ得るとき、再構成されたビデオシーケンスは、通常、いくつかのエラーを有するソースビデオシーケンスの複製である場合がある。ローカルビデオデコーダ(333)は、ビデオデコーダによって参照ピクチャに対して実行され得るデコーディング処理を複製し、再構成された参照ピクチャを参照ピクチャメモリ(334)に記憶させることができる。このようにして、ビデオエンコーダ(303)は、遠端ビデオデコーダによって取得される再構成された参照ピクチャと共通のコンテンツを有する再構成された参照ピクチャのコピーをローカルに記憶することができる(送信エラーなし)。
予測器(335)は、コーディングエンジン(332)の予測探索を実行することができる。すなわち、コーディングされる新しいピクチャに対して、予測器(335)は、(候補参照ピクセルブロックとしての)サンプルデータ、または、新しいピクチャの適切な予測参照として機能し得る、参照ピクチャの動きベクトル、ブロック形状などの特定のメタデータについて参照ピクチャメモリ(334)を探索することができる。予測器(335)は、適切な予測参照を見つけるために、サンプルブロックごとに動作することができる。場合によっては、予測器(335)によって取得された探索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(334)に記憶された複数の参照ピクチャから引き出された予測参照を有することができる。
コントローラ(350)は、例えば、ビデオデータをエンコーディングするために使用されるパラメータおよびサブグループパラメータの設定を含む、ソースコーダ(330)のコーディング動作を管理することができる。
前述のすべての機能ユニットの出力は、エントロピーコーダ(345)においてエントロピーコーディングを受けることができる。エントロピーコーダ(345)は、ハフマン符号化、可変長符号化、算術符号化などの技術に従ってシンボルに可逆圧縮を適用することによって、様々な機能ユニットによって生成されたシンボルをコーディングされたビデオシーケンスに変換する。
送信機(340)は、エントロピーコーダ(345)によって生成されたコーディングされたビデオシーケンスをバッファリングして、エンコーディングされたビデオデータを記憶する記憶装置へのハードウェア/ソフトウェアリンクであってもよい通信チャネル(360)を介した送信に備えることができる。送信機(340)は、ビデオエンコーダ(303)からのコーディングされたビデオデータを、送信されるその他のデータ、例えば、コーディングされたオーディオデータおよび/または補助データストリーム(ソースは図示せず)とマージし得る。
コントローラ(350)は、ビデオエンコーダ(303)の動作を管理することができる。コーディング中、コントローラ(350)は、各コーディングされたピクチャに特定のコーディングされたピクチャタイプを割り当てることができ、これは、それぞれのピクチャに適用され得るコーディング技術に影響を及ぼす場合がある。例えば、ピクチャは、しばしば、以下のピクチャタイプのうちの1つとして割り当てられることがある。
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス内の任意の他のピクチャを使用することなくコーディングおよびデコーディングされ得るピクチャであってもよい。いくつかのビデオコーデックは、例えば、独立デコーダリフレッシュ(「IDR」)ピクチャを含む異なるタイプのイントラピクチャを可能にする。当業者であれば、Iピクチャのそれらの変形例ならびにそれらのそれぞれの用途および特徴を知っている。
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために、最大で1つの動きベクトルおよび参照インデックスを使用するイントラ予測またはインター予測を使用してコーディングおよびデコーディングされ得るピクチャであってもよい。
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために、最大で2つの動きベクトルおよび参照インデックスを使用するイントラ予測またはインター予測を使用してコーディングおよびデコーディングされ得るピクチャであってもよい。同様に、複数予測ピクチャは、単一ブロックの再構成のために3つ以上の参照ピクチャおよび関連付けられたメタデータを使用することができる。
ソースピクチャは、一般に、複数のサンプルブロック(例えば、4×4、8×8、4×8、または16×16のブロックごと)に空間的に細分され、ブロックごとにコーディングされてもよい。ブロックは、ブロックのそれぞれのピクチャに適用されるコーディング割り当てによって決定されるように、他の(既にコーディングされた)ブロックを参照して予測的にコーディングされてもよい。例えば、Iピクチャのブロックは、非予測的にコーディングされてもよく、または同じピクチャの既にコーディングされたブロックを参照して予測的にコーディングされてもよい(空間予測またはイントラ予測)。Pピクチャのピクセルブロックは、以前にコーディングされた1つの参照ピクチャを参照して、空間予測を介して、または時間予測を介して予測的にコーディングされてもよい。Bピクチャのブロックは、1つまたは2つの以前にコーディングされた参照ピクチャを参照して、空間予測を介して、または時間予測を介して予測的にコーディングされてもよい。
ビデオエンコーダ(303)は、ITU-T Rec.H.265などの所定のビデオ符号化技術または規格に従ってコーディング動作を行うことができる。その動作において、ビデオエンコーダ(303)は、入力ビデオシーケンス内の時間的および空間的冗長性を利用する予測コーディング動作を含む、様々な圧縮動作を行うことができる。したがって、コーディングされたビデオデータは、使用されているビデオ符号化技術または規格によって指定されたシンタックスに準拠することができる。
一実施形態では、送信機(340)は、エンコーディングされたビデオとともに追加のデータを送信することができる。ソースコーダ(330)は、このようなデータをコーディングされたビデオシーケンスの一部として含むことができる。追加のデータは、時間/空間/SNR強化層、冗長ピクチャおよびスライスなどの他の形態の冗長データ、SEIメッセージ、VUIパラメータセットフラグメントなどを含むことができる。
ビデオは、複数のソースピクチャ(ビデオピクチャ)として時系列にキャプチャされてもよい。イントラピクチャ予測(しばしばイントラ予測と略される)は、所与のピクチャにおける空間相関を利用し、インターピクチャ予測は、ピクチャ間の(時間的または他の)相関を利用する。一例では、現在のピクチャと呼ばれる、エンコーディング/デコーディング中の特定のピクチャがブロックに分割される。現在のピクチャ内のブロックがビデオ内の以前にコーディングされてまだバッファされている参照ピクチャ内の参照ブロックに類似しているとき、現在のピクチャ内のブロックを、動きベクトルと呼ばれるベクトルによってコーディングすることができる。動きベクトルは、参照ピクチャ内の参照ブロックを指し示し、複数の参照ピクチャが使用されている場合、参照ピクチャを識別する第3の次元を有することができる。
いくつかの実施形態では、インターピクチャ予測において双予測技術を使用することができる。双予測技術によれば、第1の参照ピクチャおよび第2の参照ピクチャなどの2つの参照ピクチャが使用され、これらは両方ともビデオ内の現在のピクチャのデコーディング順より前にある(しかし、表示順序はそれぞれ過去および未来にあってもよい)。現在のピクチャ内のブロックは、第1の参照ピクチャ内の第1の参照ブロックを指し示す第1の動きベクトル、および第2の参照ピクチャ内の第2の参照ブロックを指し示す第2の動きベクトルによってコーディングすることができる。ブロックは、第1の参照ブロックと第2の参照ブロックとの組合せによって予測することができる。
さらに、コーディング効率を向上させるために、インターピクチャ予測にマージモード技術を使用することができる。
本開示のいくつかの実施形態によれば、インターピクチャ予測およびイントラピクチャ予測などの予測は、多角形または三角形のブロックなどのブロックの単位で行われる。例えば、HEVC規格によれば、ビデオピクチャのシーケンス内のピクチャは、圧縮のためにコーディングツリーユニット(CTU)に分割され、ピクチャ内のCTUは、64×64ピクセル、32×32ピクセル、または16×16ピクセルなどの同じサイズを有する。一般に、CTUは、1つの輝度CTBおよび2つのクロマCTBである3つのコーディングツリーブロック(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は、輝度予測ブロック(PB)と、2つのクロマPBとを含む。一実施形態では、コーディング(エンコーディング/デコーディング)における予測演算は、予測ブロックの単位で行われる。予測ブロックの例として輝度予測ブロックを使用すると、予測ブロックは、8×8ピクセル、16×16ピクセル、8×16ピクセル、16×8ピクセルなどのピクセルの値(例えば、輝度値)の行列を含む。
ビデオエンコーダ(103)および(303)、ならびにビデオデコーダ(110)および(210)は、任意の適切な技術を使用して実装することができることに留意されたい。一実施形態では、ビデオエンコーダ(103)および(303)ならびにビデオデコーダ(110)および(210)は、1つまたは複数の集積回路を使用して実装することができる。別の実施形態では、ビデオエンコーダ(103)および(303)、ならびにビデオデコーダ(110)および(210)は、ソフトウェア命令を実行する1つまたは複数のプロセッサを使用して実装することができる。
本開示は、重複した頂点のマージを使用するメッシュ圧縮の方法およびシステムに関する実施形態を含む。
メッシュは、体積オブジェクトの表面を表現するいくつかの多角形を含むことができる。メッシュの各多角形は、3次元(3D)空間内の対応する多角形の頂点と、頂点がどのように接続されているかに関する情報とによって定義することができ、この情報は接続情報と呼ばれ得る。いくつかの実施形態では、色、法線などの頂点属性をメッシュ頂点に関連付けることができる。2次元(2D)属性マップでメッシュをパラメータ化するマッピング情報を利用することによって、属性(または頂点属性)をメッシュの表面に関連付けることもできる。このようなマッピングは、通常、メッシュ頂点に関連付けられたUV座標またはテクスチャ座標と呼ばれるパラメトリック座標のセットによって記述することができる。2D属性マップは、テクスチャ、法線、変位などの高解像度属性情報を記憶するために使用することができる。このような情報は、テクスチャマッピングおよびシェーディングなどの、様々な目的に使用することができる。
動的メッシュシーケンスは、動的メッシュが経時的に変化するかなりの量の情報を含む可能性があるため、大量のデータを必要とする場合がある。そのため、このようなコンテンツを記憶して送信するためには、効率的な圧縮技術が必要となる。IC、MESHGRID、およびFAMCなどのメッシュ圧縮標準は、MPEGによって以前に開発され、常時接続、時変ジオメトリ、および頂点属性を有する動的メッシュに対処した。しかしながら、これらの規格は、時変属性マップおよび接続性情報を考慮しない場合がある。DCC(デジタルコンテンツ作成)ツールは、通常、そのような動的メッシュを生成する。しかしながら、特にリアルタイム制約下で、常時接続の動的メッシュを生成することは、体積取得技術にとって困難である可能性がある。この種のコンテンツ(例えば、常時接続の動的メッシュ)は、既存の規格によってサポートされない場合がある。MPEGは、時変接続情報および任意選択的に時変属性マップを有する動的メッシュを直接処理するための新しいメッシュ圧縮規格を開発することを計画している。新しいメッシュ圧縮規格は、リアルタイム通信、ストレージ、自由視点ビデオ、拡張現実(AR)、および仮想現実(VR)などの様々なアプリケーションの非可逆および可逆圧縮を対象としている。ランダムアクセスやスケーラブル/プログレッシブコーディングなどの機能も考えられる。
図4は、MPEG V-Mesh(商標)v 1.0などの関連するビデオコーデックに基づくエンコーディングプロセス(400)を示す。図4に示すように、エンコーディングプロセス(400)は、入力メッシュに従ってベースメッシュおよび変位ベクトルを生成するように構成された前処理段階(400A)と、エンコーディングプロセス(400)においてインターフレーム予測またはイントラフレーム予測が適用されるかどうかを判定するように構成されたモード決定段階(400B)と、ベースメッシュ、変位ベクトル、およびベースメッシュのテクスチャ情報をエンコーディングするように構成されたエンコーディング段階(400 C)とを含むことができる。
さらに図4を参照すると、前処理段階(400 A)は、メッシュ間引きプロセス(402)、アトラスパラメータ化プロセス(404)、および細分割面フィッティングプロセス(406)を含むことができる。メッシュ間引きプロセス(402)は、入力メッシュM(i)の頂点をダウンサンプリングして、複数の間引き(またはダウンサンプリング)された頂点を含む間引きメッシュdm(i)を生成するように構成される。アトラスパラメータ化プロセス(404)は、間引きされたメッシュdm(i)をUVアトラス(またはUVマップ)などの平面領域にマッピングして、再パラメータ化されたメッシュpm(i)を生成するように構成される。一例では、アトラスパラメータ化は、UVAtlasツールなどのビデオ処理ツールに基づいて実行することができる。細分割面フィッティングプロセス(406)は、再パラメータ化されたメッシュpm(i)および入力メッシュM(i)を入力として取り込み、変位d(i)のセットとともにベースメッシュm(i)を生成するように構成される。例示的な細分割面フィッティングプロセスでは、pm(i)は反復補間を使用して細分される。反復補間は、各反復において、再パラメータ化されたメッシュpm(i)の各エッジの中央に新しい点を挿入することを含む。変位場d(i)は、細分されたメッシュの各頂点について、元のメッシュM(i)の表面上の最近点を決定することによって計算される。
図5は、ベースメッシュおよび変位ベクトルを生成するための例示的な前処理段階(500)を示す。図5に示すように、入力メッシュの入力2D曲線(2Dポリラインによって表される)は、「元の」曲線(502)と呼ぶことができる。元の曲線(502)をダウンサンプリングして、「間引き」曲線(504)と呼ばれるベース曲線/ポリラインを生成することができる。次いで、間引かれたポリライン(504)に細分割スキームを適用して、「細分割」曲線(506)を生成することができる。一例では、再分割スキームは反復補間スキームとすることができる。反復補間スキームは、各反復において、ポリライン(または間引きされた曲線)の各エッジの中央に新しい点を挿入することを含むことができる(504)。例えば、点(510)は、間引きされた曲線(504)のエッジ(508)に挿入することができる。さらに、点(512)と点(510)との間に点(522)を追加し、点(510)と点(514)との間に点(516)を追加することができる。細分されたポリライン(506)は、次に変形されて変位曲線(518)を生成する。変位曲線(518)は、元の曲線(502)のより良い近似であり、ベースメッシュのエッジとして機能することができる。より正確には、変位曲線(518)の形状が元の曲線(502)の形状に可能な限り近くなるように、細分された曲線(506)の各頂点(例えば、(510))について変位ベクトル(例えば、(520))が計算される。細分された曲線(506)の主な利点は、細分された曲線(506)が、元の曲線(502)の忠実な近似を提供しながら、より効率的な圧縮を可能にする細分構造を有することである。
モード決定段階(400B)は、イントラコーディングモードのコストとインターコーディングモードのコストとを比較し、イントラコーディングモードのコストとインターコーディングモードのコストのどちらが小さいかに基づいて、ベースメッシュの各フレームのコーディングモードを決定することができる。
エンコーディング段階(400 C)は、ベースメッシュコーディング(408)、変位コーディング(410)、およびテクスチャコーディング(412)を含むことができる。ベースメッシュコーディング(408)は、現在のフレームに関連付けられたベースメッシュm(i)の幾何学的情報をエンコーディングするように構成される。イントラエンコーディングでは、ベースメッシュm(i)を最初に量子化し(例えば、一様量子化を使用して)、次いで静的メッシュエンコーダを使用してエンコーディングすることができる。インターエンコーディングでは、インデックスiを有する現在のフレームに関連付けられたベースメッシュm(i)を予測するために、インデックスjを有する参照フレームに関連付けられた再構成された量子化された参照ベースメッシュm’(j)が使用される。変位コーディング(410)は、変位場d(i)と呼ばれる、細分されたメッシュ頂点に関連付けられた変位ベクトルのセットをエンコーディングするように構成される。テクスチャコーディング(412)は、ベースメッシュの属性情報をエンコーディングするように構成される。属性情報は、テクスチャ、法線、色などを含むことができる。属性情報は、高効率ビデオコーディング(HEVC)または多用途ビデオコーディング(VVC)などの適切なコーデックに基づいてエンコーディングすることができる。
図6は、ベースメッシュコーディング効率を改善するための重複頂点マージ技術に基づくエンコーディングプロセス(600)を示す。図6に示すように、エンコーディングプロセス(600)は、前処理段階(600A)において頂点マージステップ(またはベースメッシュ頂点マージステップ)(602)を含むことができる。一実施形態では、重複頂点は、参照フレーム内の同じ参照頂点をベースメッシュ内の別の頂点と共有するベースメッシュの頂点とすることができる。一実施形態では、参照頂点が、現在のフレーム内のベースメッシュの頂点と参照フレーム内の相対的に同じ位置に配置されるように、ベースメッシュの頂点とベースメッシュ内の頂点の参照頂点とがコロケート(collocate)される。頂点マージステップ(602)では、重複した頂点と、その重複した頂点に対応する頂点とをマージすることができる。
しかしながら、頂点マージを伴うエンコーディングプロセスのコーディング効率は、頂点マージを伴わないエンコーディングプロセスほど効率的ではない場合がある。例えば、頂点マージを伴うエンコーディングプロセス(600)では、モード決定段階中にフレームごとにイントラコーディングモードが常に選択される場合があり、または選択される可能性がより高い場合がある。1つの理由は、重複頂点マージが頂点の数を減らすことができ、2つのフレーム(例えば、現在のフレームおよび参照フレーム)に1対1の頂点対応(または相関)がない可能性があることである。インターコーディングモードでは、現在のフレームと参照フレームとの間の1対1の頂点対応が必要である。したがって、1対1の頂点対応がないため、フレームはインターコーディングモードではなくイントラコーディングモードを選択する。したがって、頂点マージは、インター予測モードが選択されない可能性があるため、コーディング損失が生じる可能性がある。
本開示では、頂点マージに起因するコーディング損失に対処するために、重複頂点マージを使用するメッシュ圧縮の方法およびシステムが提供される。提案された方法は、別々に使用されてもよく、または任意の順序で組み合わされてもよい。さらに、方法(または実施形態)、エンコーダ、およびデコーダのそれぞれは、処理回路(例えば、1つまたは複数のプロセッサまたは1つまたは複数の集積回路)によって実施されてもよい。一例では、1つまたは複数のプロセッサは、非一過性のコンピュータ可読媒体に記憶されたプログラムを実行する。
本開示では、モード決定後に重複した頂点をマージすることができる。したがって、モード決定段階(例えば、(400B)で決定される予測モード(例えば、インターコーディングモードまたはイントラコーディングモード)に基づいて、重複した頂点をマージすることができる。いくつかの実施形態では、重複頂点マージは、イントラコーディングモードの下でフレームに適用されてもよい。
一実施形態では、モード決定および重複頂点マージは、エンコーディングプロセスの第2段階(またはモード決定段階)に配置することができる。例えば、図7に示すように、エンコーディングプロセス(700)は、第1段階(または前処理段階)(700A)、第2段階(700B)、および第3段階(またはエンコーディング段階)(700C)を含むことができる。第2段階(700B)は、モード決定ステップ(704)と頂点マージステップ(またはイントラフレーム頂点マージ)(702)とを含むことができる。第3段階(またはエンコーディング段階)(700 C)は、ベースメッシュコーディング(706)、変位コーディング(708)、およびテクスチャコーディング(710)を含むことができる。モード決定ステップ(704)は、ベースメッシュに関連付けられたフレームにインターコーディングモードが適用されるかイントラコーディングモードが適用されるかを決定するように構成される。エンコーディングプロセス(700)によれば、モード決定ステップ(704)でコーディングモードが決定された後、フレームのコーディングモードがイントラコーディングモードとして決定された場合、重複頂点マージをベースメッシュに適用することができる。フレームのコーディングモードがインターコーディングモードとして決定された場合、重複頂点マージはフレームに適用されなくてもよい。
一実施形態では、重複頂点マージを、エンコーディング段階(700 C)などの第3段階に配置することができる。一例では、重複頂点マージは、ベースメッシュコーディング(706)の前に配置され得る。したがって、ベースメッシュのフレームのコーディングモードがイントラコーディングモードであるとして決定された場合、重複頂点マージをベースメッシュに適用してマージされたベースメッシュを生成することができる。マージされたベースメッシュは、ベースメッシュの複数の頂点のサブセットを含むことができる。複数の頂点のサブセット内の頂点は、一意または非反復であり得る。マージされたベースメッシュは、イントラコーディングモードに従ってベースメッシュコーディング(706)においてさらにエンコーディングされ得る。こうして、マージされたベースメッシュに対してベースメッシュコーディング(706)が行われ、重複した頂点がマージされる(またはスキップされる)ため、ベースメッシュコーディング(706)のための入力情報を削減することができる。フレームのコーディングモードがインターコーディングモードとして決定された場合は、重複頂点マージはフレームに適用されなくてもよい。
一実施形態では、重複頂点マージは、エンコーディング段階(例えば、(700C))のベースメッシュコーディング(例えば、(706))内に配置(または実装)することができる。こうして、ベースメッシュに対して、ベースメッシュコーディング(例えば、(706))が適用される。したがって、ベースメッシュコーディングは、2つのサブステップを含むことができる。第1のサブステップでは、ベースメッシュの重複頂点を識別することができる。例えば、ベースメッシュの頂点とベースメッシュの別の頂点とが参照フレーム内で同じ参照頂点を有する場合に、ベースメッシュの頂点を重複頂点として決定することができる。第2のステップでは、ベースメッシュは、モード決定ステップ(例えば、(704))で決定されたコーディングモードに基づいてエンコーディングすることができる。例えば、ベースメッシュコーディング中に、ベースメッシュのフレームのコーディングモードがイントラコーディングモードとして決定された場合、重複頂点マージをベースメッシュに適用して、ベースメッシュの複数の頂点のサブセットを含むマージされたベースメッシュを生成することができる。複数の頂点のサブセットは、静的メッシュコーデックに基づいてさらにコーディングされ得る。ベースメッシュのフレームのコーディングモードがインターコーディングモードとして決定された場合、重複頂点マージは適用されなくてもよく、動きフィールドコーディングをベースメッシュに適用することができる。重複頂点マージがベースメッシュコーディングの前に配置されるベースメッシュコーディングと比較して、重複頂点マージがエンコーディング段階の内部に配置されるベースメッシュコーディングは、重複頂点がベースメッシュコーディングの前にマージされないため、より多くの入力情報を受け取る。
一実施形態では、モード決定の前に重複頂点マージを行うことができる。一例では、モード決定の前に、重複頂点マージを第1段階に配置することができ、これを図6に示すことができる。図6に示すように、重複頂点が前処理段階(600A)のベースメッシュ頂点マージステップ(602)でマージされて、マージベースメッシュが生成されると、マージされた頂点の情報をシグナリングし、モード決定段階(600B)に送ることができる。いくつかの例では、マージされた頂点の情報はインデックスを含むことができる。したがって、モード決定段階(600B)において、マージされた頂点のインデックスを識別することができる。マージされた頂点のインデックスに基づいて、マージされた頂点をマージ解除することができる。こうして、現在のフレーム内の頂点の数は減少せず、クロスフレーム(例えば、現在のフレームと参照フレームとの間)の1対1の頂点対応(または相関)を確立することができる。さらに、イントラコーディングモードのコスト(または予測コスト)とインターコーディングモードのコストとを比較して、イントラコーディングモードまたはインターコーディングモードを選択してもよい。予測モード(またはコーディングモード)がモード決定段階(600B)で決定されると、ベースメッシュまたはマージベースメッシュがベースメッシュコーディング(602)でエンコーディングされるかどうかが、決定された予測モードに基づいて決定される。例えば、モード決定段階(600B)でイントラ予測モード(またはイントラコーディングモード)が決定されると、ベースメッシュコーディング(602)は、重複した頂点がマージされたマージベースメッシュをエンコーディングすることができる。モード決定段階(600B)でインター予測モード(またはインターコーディングモード)が決定されると、ベースメッシュコーディング(602)は、ベースメッシュをエンコーディングすることができる。
図8は、本開示の実施形態による、第1のデコーディングプロセス(800)の概要を示すフローチャートを示し、図9は、第2のデコーディングプロセス(900)の概要を示すフローチャートを示す。プロセス(800)およびプロセス(900)は、ビデオデコーダなどのデコーダで使用することができる。様々な実施形態において、プロセス(800)およびプロセス(900)は、ビデオデコーダ(110)の機能を行う処理回路、ビデオデコーダ(210)の機能を行う処理回路などの処理回路によって実行することができる。いくつかの実施形態では、プロセス(800)およびプロセス(900)はソフトウェア命令で実施され、したがって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(800)およびプロセス(900)をそれぞれ行う。
一例では、プロセス(800)は、(S801)から開始し、(S810)に進む。
(S810)において、ベースメッシュは、現在のフレームにおいてダウンサンプリングされた入力メッシュから生成され、ベースメッシュは、複数の頂点を含む。
(S820)では、ベースメッシュに適用される予測モードが決定される。予測モードは、インター予測モードまたはイントラ予測モードである。
(S830)において、予測モードがイントラ予測モードとして決定されたことに基づいて、ベースメッシュ内の複数の頂点のうち重複した頂点がマージされて、複数の頂点のサブセットが生成される。
(S840)において、決定されたイントラ予測モードに基づいて、複数の頂点の少なくともサブセットがエンコーディングされ、複数の頂点の少なくともサブセットの予測情報が生成される。
一例では、ベースメッシュ内の重複した頂点は、予測モードがイントラ予測モードとして決定されたことに基づいてマージされる。一例では、ベースメッシュ内の重複した頂点は、予測モードがインター予測モードとして決定されたことに基づいてマージされない。
一例では、複数の重複した頂点のそれぞれは、参照フレーム内の同じ参照頂点をベースメッシュ内の別の頂点と共有するベースメッシュの頂点である。
一実施形態では、重複した頂点をマージすることは、予測モードを決定することに含まれる。
一実施形態では、重複した頂点のマージは、複数の頂点の少なくともサブセットをエンコーディングすることに含まれる。
いくつかの実施形態では、予測モードがインター予測モードとして決定されたことに基づいて、ベースメッシュの複数の頂点がエンコーディングされる。ベースメッシュの複数の頂点をエンコーディングするために、複数の頂点のそれぞれについて参照フレーム内の参照頂点が決定される。参照フレーム内のそれぞれの頂点の対応する参照頂点に基づいて、複数の頂点のそれぞれについて、インター予測情報が生成される。
いくつかの実施形態では、複数の頂点のそれぞれの参照頂点は、それぞれの頂点の参照フレーム内のコロケートされた頂点であり、コロケートされた頂点は、現在のフレーム内のベースメッシュのそれぞれの頂点と参照フレーム内の相対的に同じ位置に配置される。
その後、プロセスは(S899)に進み、終了する。
プロセス(800)は、適切に適合させることができる。プロセス(800)のステップは、修正および/または省略することができる。追加のステップを追加することができる。任意の適切な実施順序を使用することができる。
一例では、プロセス(900)は、(S901)から開始し、(S910)に進む。
(S910)において、現在のフレームにおいてダウンサンプリングされた入力メッシュからベースメッシュが生成され、ベースメッシュは複数の頂点を含む。
(S920)において、ベースメッシュの複数の頂点のうちの重複した頂点がマージされて、複数の頂点のサブセットを含むマージされたベースメッシュが生成される。
(S930)において、マージされた重複した頂点を識別するインデックス情報が生成される。
(S940)において、マージされたベースメッシュおよび生成されたインデックス情報に基づいて、ベースメッシュに適用される予測モードを決定する。予測モードは、インター予測モードまたはイントラ予測モードである。
(S950)において、決定された予測モードがインター予測モードであることに基づいて、生成されたインデックス情報に従ってベースメッシュのインター予測情報が生成される。
(S960)において、決定された予測モードがイントラ予測モードであることに基づいて、ベースメッシュのイントラ予測情報が生成される。
一例では、予測モードを決定するために、複数の頂点のマージされた重複頂点は、マージされた重複頂点のインデックス情報に基づいてマージ解除される。参照フレーム内の参照頂点は、現在のフレーム内のベースメッシュの複数の頂点のそれぞれに対して決定され、参照フレームは現在のフレームとは異なる。ベースメッシュの複数の頂点のそれぞれの第1の予測差が決定される。複数の頂点のそれぞれの第1の予測差は、参照フレーム内の参照頂点とベースメッシュの複数の頂点のそれぞれ頂点との間の差を示す。ベースメッシュの複数の頂点のそれぞれに対する第2の予測差が決定される。複数の頂点のそれぞれの第2の予測差は、複数の頂点のそれぞれの頂点の現在のフレーム内の1つまたは複数の近傍の頂点と複数の頂点のそれぞれの頂点との間の差を示す。
一例では、予測モードを決定するために、第1のコスト値は、複数の頂点に関連付けられた第1の予測差の合計として決定される。第2のコスト値は、複数の頂点に関連付けられた第2の予測差の合計として決定される。予測モードは、(i)第1のコスト値が第2のコスト値以下であることに基づくインター予測モード、および、(ii)第2のコスト値が第1のコスト値より小さいことに基づくイントラ予測モードとして決定される。
いくつかの実施形態では、参照フレーム内のコロケートされた頂点は、複数の頂点のそれぞれの参照頂点として決定され、コロケートされた頂点は、現在のフレーム内のベースメッシュのそれぞれの頂点と参照フレーム内の相対的に同じ位置に配置される。
一実施形態では、予測モードがインター予測モードとして決定されたことに基づいて、インター予測情報は、参照フレーム内のそれぞれのインデックスの対応する参照頂点に基づいて複数の頂点のサブセットのそれぞれについて生成される。
一実施形態では、予測モードがイントラ予測モードとして決定されたことに基づいて、イントラ予測情報は、現在のフレーム内のそれぞれの頂点の1つまたは複数の近傍の頂点に基づいて複数の頂点のサブセットのそれぞれについて生成される。
その後、プロセスは(S999)に進み、終了する。
プロセス(900)は、適切に適合させることができる。プロセス(900)のステップは、修正および/または省略することができる。追加のステップを追加することができる。任意の適切な実施順序を使用することができる。
上述した技術は、コンピュータ可読命令を使用して、1つまたは複数のコンピュータ可読媒体に物理的に記憶されたコンピュータソフトウェアとして実装することができる。例えば、図10は、開示の主題の特定の実施形態を実施するのに適したコンピュータシステム(1000)を示す。
コンピュータソフトウェアは、1つまたは複数のコンピュータ中央処理装置(CPU)、グラフィック処理装置(GPU)などによって直接、または解釈、マイクロコード実行などを介して実行することができる命令を含むコードを作成するために、アセンブリ、コンパイル、リンクなどのメカニズムを受けることができる任意の適切な機械コードまたはコンピュータ言語を使用してコーディングすることができる。
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーム装置、モノのインターネット装置などを含む様々な種類のコンピュータまたはその構成要素上で実行することができる。
コンピュータシステム(1000)の図10に示す構成要素は、本質的に例示的なものであり、本開示の実施形態を実施するコンピュータソフトウェアの使用または機能の範囲に関する限定を示唆することを意図するものではない。構成要素の構成は、コンピュータシステム(1000)の例示的な実施形態に示されている構成要素のいずれかまたは組合せに関する依存関係または要件を有すると解釈されるべきではない。
コンピュータシステム(1000)は、特定のヒューマンインターフェース入力デバイスを含むことができる。このようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(例えば、キーストローク、スワイプ、データグローブの動き)、音声入力(例えば、声、拍手)、視覚入力(例えば、ジェスチャ)、嗅覚入力(図示せず)を介した1人または複数の人間のユーザによる入力に応答することができる。ヒューマンインターフェースデバイスは、オーディオ(例えば、音声、音楽、周囲音)、画像(例えば、走査画像、静止画像カメラから取得される写真画像)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)など、必ずしも人間による意識的な入力に直接関連しない特定の媒体をキャプチャするために使用することもできる。
入力ヒューマンインターフェースデバイスは、キーボード(1001)、マウス(1002)、トラックパッド(1003)、タッチスクリーン(1010)、データグローブ(図示せず)、ジョイスティック(1005)、マイクロフォン(1006)、スキャナ(1007)、カメラ(1008)のうちの1つまたは複数(それぞれの1つのみが描かれている)を含むことができる。
コンピュータシステム(1000)は、特定のヒューマンインターフェース出力デバイスを含むこともできる。このようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、および匂い/味によって1人または複数の人間のユーザの感覚を刺激することができる。このようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(1010)、データグローブ(図示せず)、またはジョイスティック(1005)による触覚フィードバックであるが、入力デバイスとして機能しない触覚フィードバックデバイスも存在し得る)、音声出力デバイス(例えば、スピーカ(1009)、ヘッドホン(図示せず))、視覚出力デバイス(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(1010)であって、それぞれタッチスクリーン入力機能があってもなくてもよく、それぞれ触覚フィードバック機能があってもなくてもよく、その一部は、ステレオ出力などの手段を介して2次元視覚出力または3次元超出力を出力することができてもよく、仮想現実メガネ(図示せず)、ホログラフィックディスプレイ、およびスモークタンク(図示せず)など)、およびプリンタ(図示せず)を含むことができる。
コンピュータシステム(1000)は、CD/DVDなどの媒体(1021)を有するCD/DVD ROM/RW(1020)を含む光学媒体、サムドライブ(1022)、リムーバブルハードドライブまたはソリッドステートドライブ(1023)、テープおよびフロッピーディスク(図示せず)などのレガシー磁気媒体、セキュリティドングル(図示せず)などの専用ROM/ASIC/PLDベースの装置などの、人間がアクセス可能な記憶装置およびそれらの関連付けられた媒体を含むこともできる。
当業者はまた、本開示の主題に関連して使用される「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、または他の一過性の信号を包含しないことを理解すべきである。
コンピュータシステム(1000)はまた、1つまたは複数の通信ネットワーク(1055)へのインターフェース(1054)を含むことができる。ネットワークは、例えば、無線、有線、光とすることができる。ネットワークはさらに、ローカル、広域、メトロポリタン、車両および産業、リアルタイム、遅延耐性などであり得る。ネットワークの例には、イーサネット、無線LANなどのローカルエリアネットワーク、GSM、3 G、4 G、5 G、LTEなどを含むセルラーネットワーク、ケーブルTV、衛星TV、および地上波放送TVを含むテレビの有線または無線の広域デジタルネットワーク、CANBusを含む車両および産業用などが含まれる。特定のネットワークは、一般に、特定の汎用データポートまたは周辺バス(1049)に取り付けられた外部ネットワークインターフェースアダプタを必要とする(例えば、コンピュータシステム(1000)のUSBポートなど)。他のものは、一般に、後述するようなシステムバスへの取り付け(例えば、PCコンピュータシステムへのイーサネットインターフェースまたはスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)によってコンピュータシステム(1000)のコアに統合される。これらのネットワークのいずれかを使用して、コンピュータシステム(1000)は、他のエンティティと通信することができる。このような通信は、例えば、ローカルまたは広域デジタルネットワークを使用して、他のコンピュータシステムに対して、単方向、受信のみ(例えば、放送TV)、単方向送信のみ(例えば、特定のCANbusデバイスへのCANbus)、または双方向であり得る。特定のプロトコルおよびプロトコルスタックは、上述したように、それらのネットワークおよびネットワークインターフェースのそれぞれで使用することができる。
前述のヒューマンインターフェースデバイス、ヒューマンアクセスストレージデバイス、およびネットワークインターフェースは、コンピュータシステム(1000)のコア(1040)に取り付けることができる。
コア(1040)は、1つまたは複数の中央処理装置(CPU)(1041)、グラフィック処理装置(GPU)(1042)、フィールドプログラマブルゲートエリア(FPGA)(1043)の形態の専用プログラマブル処理装置、特定のタスク用のハードウェアアクセラレータ(1044)、グラフィックアダプタ(1050)などを含むことができる。これらのデバイスは、読取り専用メモリ(ROM)(1045)、ランダムアクセスメモリ(1046)、内部非ユーザアクセス可能ハードドライブなどの内部大容量ストレージ、SSDなど(1047)とともに、システムバス(1048)を介して接続されてもよい。いくつかのコンピュータシステムでは、システムバス(1048)は、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理プラグの形態でアクセス可能とすることができる。周辺機器は、コアのシステムバス(1048)に直接取り付けることも、周辺機器用バス(1049)を介して取り付けることもできる。一例では、スクリーン(1010)をグラフィックアダプタ(1050)に接続することができる。周辺バスのアーキテクチャには、PCI、USBなどが含まれる。
CPU(1041)、GPU(1042)、FPGA(1043)、およびアクセラレータ(1044)は、組み合わせて上述のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードは、ROM(1045)またはRAM(1046)に記憶することができる。移行データはまた、RAM(1046)に記憶することができ、一方、永久データは、例えば内部大容量ストレージ(1047)に記憶することができる。メモリデバイスのいずれかへの高速記憶および検索は、1つまたは複数のCPU(1041)、GPU(1042)、大容量ストレージ(1047)、ROM(1045)、RAM(1046)などと密接に関連付けることができるキャッシュメモリの使用によって可能にすることができる。
コンピュータ可読媒体は、様々なコンピュータ実装動作を行うためのコンピュータコードを有することができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構築されたものであってもよく、またはコンピュータソフトウェア技術の当業者に周知で利用可能な種類のものであってもよい。
限定ではなく、例として、アーキテクチャ、特にコア(1040)を有するコンピュータシステム(1000)は、1つまたは複数の有形のコンピュータ可読媒体で具現化されたソフトウェアを実行するプロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)の結果として機能を提供することができる。このようなコンピュータ可読媒体は、上述したようなユーザアクセス可能な大容量ストレージ、ならびにコア内部大容量ストレージ(1047)またはROM(1045)などの非一過性の性質のコア(1040)の特定のストレージに関連付けられた媒体とすることができる。本開示の様々な実施形態を実施するソフトウェアは、そのようなデバイスに記憶され、コア(1040)によって実行され得る。コンピュータ可読媒体は、特定の必要性に応じて、1つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(1040)、具体的にはその中のプロセッサ(CPU、GPU、FPGAなどを含む)に、RAM(1046)に記憶されたデータ構造を定義すること、およびソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を修正することを含む、本明細書に記載の特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。加えて、または代替として、コンピュータシステムは、ハードワイヤードまたは他の方法で回路(例えば、アクセラレータ(1044))に具現化されたロジックの結果として機能を提供することができ、ソフトウェアの代わりに、またはソフトウェアとともに動作して、本明細書に記載の特定のプロセスまたは特定のプロセスの特定の部分を実行することができる。ソフトウェアへの言及は、適切な場合には、ロジックを包含することができ、逆もまた同様である。コンピュータ可読媒体への言及は、適切な場合には、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のための論理を具現化する回路、またはその両方を包含することができる。本開示は、ハードウェアとソフトウェアとの任意の適切な組合せを包含する。
本開示における「~のうちの少なくとも1つ」または「~のうちの1つ」の使用は、列挙された要素のいずれか1つまたは組合せを含むことを意図している。例えば、A、B、またはCのうちの少なくとも1つへの言及、すなわち、A、B、およびCの少なくとも1つ、A、B、および/またはCの少なくとも1つ、AからCのうちの少なくとも1つは、Aのみ、Bのみ、Cのみ、またはそれらの任意の組合せを含むことが意図される。AまたはBの一方ならびにAおよびBの一方への言及は、AまたはBあるいは(AおよびB)を含むことが意図される。「~のうちの1つ」の使用は、要素が相互に排他的ではない場合など、適用可能な場合に列挙された要素の任意の組合せを排除しない。
本開示はいくつかの例示的な実施形態を説明してきたが、本開示の範囲内に入る変更、置換、および様々な代替の等価物がある。したがって、当業者は、本明細書に明示的に示されていないまたは記載されていないが、本開示の原理を具現化し、したがって本開示の趣旨および範囲内にある多数のシステムおよび方法を考案することができることが理解されよう。