(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-12
(54)【発明の名称】エンコーダによるメッシュ圧縮のための適応サンプリングの方法および装置
(51)【国際特許分類】
H04N 19/597 20140101AFI20240405BHJP
H04N 19/70 20140101ALI20240405BHJP
【FI】
H04N19/597
H04N19/70
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023548180
(86)(22)【出願日】2022-09-16
(85)【翻訳文提出日】2023-08-09
(86)【国際出願番号】 US2022076566
(87)【国際公開番号】W WO2023059976
(87)【国際公開日】2023-04-13
(32)【優先日】2021-10-04
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-10-04
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-09-14
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ジャン,シァン
(72)【発明者】
【氏名】リウ,シャン
(72)【発明者】
【氏名】シュー,シャオジョン
(72)【発明者】
【氏名】ホアン,チャオ
(72)【発明者】
【氏名】ティエン,ジュン
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159LC01
5C159MA04
5C159MA05
5C159MB05
5C159PP03
5C159PP13
5C159PP16
5C159UA02
5C159UA05
(57)【要約】
いくつかの例では、メッシュコーディングのための装置は処理回路を含む。処理回路は、オブジェクトのサーフェスを表すポリゴンを持つメッシュフレームのデータ構造を受信する。メッシュフレームのデータ構造は、メッシュフレームの頂点をUVアトラス内のUV座標に関連付けるUVアトラスを含む。処理回路は、メッシュフレームの領域のそれぞれの特性に従ってメッシュフレームの領域のそれぞれのサンプリングレートを決定し、UVアトラス上のサンプリング位置を決定するために、UVアトラスに、メッシュフレームの領域のそれぞれのサンプリングレートを適用する。処理回路は、UVアトラス上のサンプリング位置に従って、メッシュフレームの1つ以上のサンプリングされた2次元(2D)マップを生成し、1つ以上のサンプリングされた2Dマップをビットストリームにエンコードする。
【特許請求の範囲】
【請求項1】
メッシュ圧縮をエンコードする方法であって:
オブジェクトのサーフェスを表すポリゴンを持つメッシュフレームのデータ構造を受信するステップであって、前記メッシュフレームの前記データ構造は、前記メッシュフレームの頂点をUVアトラス内のUV座標に関連付ける前記UVアトラスを含む、ステップと;
前記メッシュフレームの領域のそれぞれの特性に従って前記メッシュフレームの領域のそれぞれのサンプリングレートを決定するステップと;
前記UVアトラス上のサンプリング位置を決定するために、前記UVアトラスに、前記メッシュフレームの前記領域の前記それぞれのサンプリングレートを適用するステップと;
前記UVアトラス上の前記サンプリング位置に従って、前記メッシュフレームの1つ以上のサンプリングされた2次元(2D)マップを生成するステップと;
前記1つ以上のサンプリングされた2Dマップをビットストリームにエンコードするステップと;を含む、
方法。
【請求項2】
前記メッシュフレームの前記領域の前記それぞれのサンプリングレートを決定するステップは:
第1の領域の第1のサンプリング位置の数を制限する要件に従って、前記メッシュフレームの前記第1の領域の第1のサンプリングレートを決定するステップを含む、
請求項1に記載の方法。
【請求項3】
前記メッシュフレームの前記第1の領域の前記第1のサンプリングレートを決定するステップは:
ターゲット値に最も近いオーバーサンプリング比(OR)を達成するように前記第1のサンプリングレートを決定するステップであって、前記ORは、前記第1のサンプリング位置の数と、元々前記メッシュフレームの前記第1の領域にあった頂点の数との間の比である、ステップを含む、
請求項2に記載の方法。
【請求項4】
前記メッシュフレームの前記第1の領域の前記第1のサンプリングレートを決定するステップは:
オーバーサンプリング比(OR)が第1のしきい値よりも小さくなるまで、前記第1のサンプリングレートを調整するステップであって、前記ORは、前記第1のサンプリング位置の数と、元々前記メッシュフレームの前記第1の領域にあった頂点の数との間の比である、ステップを含む、
請求項2に記載の方法。
【請求項5】
前記メッシュフレームの前記第1の領域の前記第1のサンプリングレートを決定するステップは:
オーバーサンプリング比(OR)が第1のしきい値より小さく、第2のしきい値より大きくなるまで前記第1のサンプリングレートを調整するステップであって、前記ORは、前記第1のサンプリング位置の数と、元々前記メッシュフレームの前記第1の領域にあった頂点の数との間の比である、ステップを含む、
請求項2に記載の方法。
【請求項6】
前記1つ以上のサンプリングされた2Dマップのサンプリングされた2Dマップが、前記UVアトラス上の前記サンプリング位置に対応するサンプリングされたポイントを持つサンプリングされた領域を含み、前記方法はさらに:
前記サンプリング位置がポリゴン内にあることに応答して、サンプリング位置が占有されていると決定するステップと;
前記ポリゴンの頂点の属性に従って、前記サンプリング位置に対応する前記サンプリングされた2Dマップ内のサンプリングされたポイントの属性を決定するステップと;
を含む、
請求項1に記載の方法。
【請求項7】
前記1つ以上のサンプリングされた2Dマップを形成するステップはさらに:
前記メッシュの前記領域の前記それぞれのサンプリングレートに基づいて、前記メッシュの前記領域に対応するサンプリングされた領域を形成するステップと;
サンプリングされたマップを形成するように、前記サンプリングされた領域を重複しない構成に配置するステップと;
を含む、
請求項1に記載の方法。
【請求項8】
前記サンプリングされた領域を前記重複しない構成に配置するステップは、さらに:
前記サンプリングされた領域のサブセットが前記重複しない構成に配置された後、
現在のサンプリングされた領域について、前記現在のサンプリングされた領域のサンプリングレートに従って初期配置位置を決定するステップと;
前記初期配置位置における前記現在のサンプリングされた領域が、前記サンプリングされた領域の前記サブセットと重複するかどうかを決定するステップと;
を含む、
請求項7に記載の方法。
【請求項9】
前記初期配置位置における前記現在のサンプリングされた領域が前記サンプリングされた領域の前記サブセットと重複することに応答して、前記初期配置位置へのオフセットを決定するステップであって、前記オフセットは、前記現在のサンプリングされた領域が前記サンプリングされた領域の前記サブセットと重複しないことを可能にする、ステップをさらに含む、
請求項8に記載の方法。
【請求項10】
前記重複しない構成は、前記サンプリングされた領域間の最小距離要件を含む、
請求項7に記載の方法。
【請求項11】
第1の領域の第1のサンプリングレートの値を直接前記ビットストリームにエンコードするステップ;
第1のインデックスを前記ビットストリームにエンコードするステップであって、前記第1のインデックスはサンプリングレートのセットからの前記第1のサンプリングレートの選択を示す、ステップ;
事前に確立されたサンプリングレートのセットから前記第1のサンプリングレートを予測する予測子を示すシンタックスをエンコードするステップ;
前記メッシュフレームのエンコードされた領域に対して以前に使用されたサンプリングレートから前記第1のサンプリングレートを予測する予測子を示すシンタックスをエンコードするステップ;および
前記メッシュフレームの前にエンコードされた別のメッシュフレーム内のエンコードされた領域に対して以前に使用されたサンプリングレートから前記第1のサンプリングレートを予測する予測子を示すシンタックスをエンコードするステップ;
のうちの少なくとも1つをさらに含む、
請求項1に記載の方法。
【請求項12】
第1の領域に関連する第1のサンプリングレートをシグナリングするまたは前記第1のサンプリングレートを予測する決定を行うステップ;および
前記決定を示す第1のシンタックス値をエンコードするステップ;
をさらに含む、
請求項1に記載の方法。
【請求項13】
前記第1のサンプリングレートをシグナリングすることである前記決定に応答して、前記方法は:
前記第1のサンプリングレートの値を直接前記ビットストリームにエンコードするステップ;および
インデックスを前記ビットストリームにエンコードするステップであって、前記インデックスは、サンプリングレートのセットからの前記第1のサンプリングレートの選択を示すステップ;
のうちの少なくとも1つを含む、
請求項12に記載の方法。
【請求項14】
前記第1のサンプリングレートを予測することである前記決定に応答して、前記方法は:
第2のシンタックスを前記ビットストリームにエンコードするステップであって、前記第2のシンタックスは、前記第1のサンプリングレートを予測するために使用する予測子を示す、ステップ、を含む、
請求項12に記載の方法。
【請求項15】
予測残差を前記ビットストリームにエンコードするステップであって、前記予測残差は、前記第1のサンプリングレートと前記予測子のサンプリングレートとの間の差である、ステップをさらに含む、
請求項14に記載の方法。
【請求項16】
基本サンプリングレートを前記ビットストリームにエンコードするステップをさらに含む、
請求項1に記載の方法。
【請求項17】
適応2Dアトラスサンプリングの有効/無効を示す制御フラグをエンコードするステップをさらに含む、
請求項1に記載の方法。
【請求項18】
前記メッシュフレームの第1の領域に関連付けられる少なくとも第1のUVオフセットを決定するステップであって、前記第1のUVオフセットは、他のサンプリングされた領域との重複を避けるために前記第1の領域に対応する第1のサンプリングされた領域に適用される、ステップと;
前記第1のUVオフセットを示すシンタックスを前記ビットストリームにエンコードするステップと;
をさらに含む、
請求項1に記載の方法。
【請求項19】
前記シンタックスをエンコードするステップはさらに:
前記第1のUVオフセットの値を有する前記シンタックスを前記ビットストリームにエンコードするステップ;
事前に確立されたUVオフセットのセットに基づいて前記第1のUVオフセットを予測する予測子を示す前記シンタックスをエンコードするステップ;
前記メッシュフレームのエンコードされた領域に対して以前に使用されたUVオフセットに基づいて前記第1のUVオフセットを予測する予測子を示す前記シンタックスをエンコードするステップ;および
前記メッシュフレームの前にエンコードされた別のメッシュフレーム内のエンコードされた領域に対して以前に使用されたUVオフセットに基づいて前記第1のUVオフセットを予測する予測子を示す前記シンタックスをエンコードするステップ;
のうちの少なくとも1つを含む、
請求項18に記載の方法。
【請求項20】
メッシュ圧縮をエンコードするための装置であって、前記装置は、請求項1乃至19のいずれか1項に記載の方法を実行するように構成された処理回路を有する、装置。
【発明の詳細な説明】
【技術分野】
【0001】
[参照による組み込み]
本出願は、2022年9月14日に出願された米国特許出願第17/944,994号“METHOD AND APPARATUS OF ADAPTIVE SAMPLING FOR MESH COMPRESSION BY ENCODERS”に対する優先権の利益を主張するものであり、これは、2021年10月4日に出願された米国仮出願第63/252,063号"Method and Apparatus of Adaptive Sampling for Mesh Compression by Encoders"および2021年10月4日に出願された米国仮出願第63/252,084号"Method and Apparatus of Adaptive Sampling for Mesh Compression by Decoders"に対する優先権の利益を主張するものである。これらの先行出願の開示全体は、参照によりその全体がここに組み込まれる。
【0002】
本開示は、メッシュコーディングに概して関連する実施形態を説明する。
【背景技術】
【0003】
ここで提供される背景技術の説明は、開示の文脈を概して提示すことを目的としている。現在名前が挙げられている発明者の仕事は、本背景技術の欄に記載されている限りにおいて、また、出願時に先行技術として認められない可能性のある明細書の態様と同様に、本開示に対して明示的にも黙示的にも先行技術として認められるものではない。
【0004】
様々な技術が、3次元(3D)空間において、ワールド(world)内の物体、ワールド内の環境など、ワールドをキャプチャし、表すための開発されている。ワールドの3D表現は、より没入型の(immersive)形態のインタラクション(interaction)およびコミュニケーションを可能にする。いくつかの例では、ポイントクラウド(point clouds)およびメッシュをワールドの3D表現として使用することができる。
【発明の概要】
【0005】
本開示の態様は、メッシュコーディング(例えば、圧縮および解凍(decompression))のための方法および装置を提供する。いくつかの例では、メッシュエンコーディングのための装置が処理回路を含む。処理回路は、オブジェクトのサーフェス(surface)を表すポリゴンを持つメッシュフレームのためのデータ構造を受信する。メッシュフレームのためのデータ構造は、メッシュフレームの頂点をUVアトラス(UV atlas)のUV座標に関連付けるUVアトラスを含む。処理回路は、メッシュフレームの領域のそれぞれの特性に従ってメッシュフレームの領域のそれぞれのサンプリングレートを決定し、UVアトラス上のサンプリング位置を決定するために、UVアトラスに、メッシュフレームの領域にそれぞれのサンプリングレートを適用する。処理回路は、UVアトラス上のサンプリング位置に従って、メッシュフレームの1つ以上のサンプリングされた2次元(2D)マップを生成し、1つ以上のサンプリングされた2Dマップをビットストリームにエンコードする。
【0006】
メッシュフレームの領域のそれぞれのサンプリングレートを決定するために、いくつかの例では、処理回路は、第1の領域の第1のサンプリング位置の数を制限する要件に従って、メッシュフレームの第1の領域の第1のサンプリングレートを決定する。一例では、処理回路は、ターゲット値に最も近いオーバーサンプリング比(OR)を達成するように第1のサンプリングレートを決定する。ORは、第1のサンプリング位置の数と、元々メッシュフレームの第1の領域にあった頂点の数との比である。別の例では、処理回路は、オーバーサンプリング比(OR)が第1のしきい値より小さくなるまで、第1のサンプリングレートを調整する。別の例では、処理回路は、オーバーサンプリング比(OR)が第1のしきい値より小さく且つ第2のしきい値より大きくなるまで、第1のサンプリングレートを調整する。
【0007】
いくつかの実施形態では、1つ以上のサンプリングされた2Dマップのうちのサンプリングされた2Dマップは、UVアトラス上のサンプリング位置に対応するサンプリングされたポイントを持つサンプリングされた領域を含む。処理回路は、サンプリング位置がポリゴン内にあることに応答してサンプリング位置が占有されていることを決定し;ポリゴンの頂点の属性に従って、サンプリング位置に対応するサンプリングされた2Dマップ内のサンプリングされたポイントの属性を決定する。
【0008】
1つ以上のサンプリングされた2Dマップを形成するために、いくつかの例では、処理回路は、メッシュの領域のそれぞれのサンプリングレートに基づいて、メッシュの領域に対応するサンプリングされた領域を形成し、サンプリングされたマップを形成するようにサンプリングされた領域を重複しない構成(non-overlapping configuration)に配置する。
【0009】
サンプリング領域を重複しない構成に配置するために、いくつかの例では、サンプリングされた領域のサブセットが重複しない構成に配置された後、処理回路は、現在のサンプリングされた領域について、現在のサンプリングされた領域のサンプリングレートに従って初期配置位置を決定し、初期配置位置の現在のサンプリングされた領域がサンプリングされた領域のサブセットと重複するかどうかを決定する。一例では、サンプリングされた領域のサブセットと重複する初期配置位置の現在のサンプリングされた領域に応答して、処理回路は、初期配置位置へのオフセットを決定し、オフセットは、現在のサンプリングされた領域がサンプリングされた領域のサブセットと重複しないようにされることを可能にする。
【0010】
いくつかの実施形態では、重複しない構成は、サンプリングされた領域間の最小距離要件を含む。
【0011】
一例では、処理回路は、第1の領域の第1のサンプリングレートの値を直接ビットストリームにエンコードする。別の例では、処理回路は、第1のインデックスをビットストリームにエンコードし、第1のインデックスは、サンプリングレートのセットからの第1のサンプリングレートの選択を示す。別の例では、処理回路は、事前に確立されたサンプリングレートのセットから第1のサンプリングレートを予測するための予測子(predictor)を示すシンタックス(syntax)をエンコードする。別の例では、処理回路は、メッシュフレームのエンコードされた領域に対して以前に使用されたサンプリングレートから第1のサンプリングレートを予測するための予測子を示すシンタックスをエンコードする。別の例では、処理回路は、メッシュフレームの前にエンコードされた別のメッシュフレームのエンコードされた領域に対して以前に使用されたサンプリングレートから第1のサンプリングレートを予測するための予測子を示すシンタックスをエンコードする。
【0012】
いくつかの実施形態では、処理回路は、第1の領域に関連付けられた第1のサンプリングレートをシグナリングする(signal)または第1のサンプリングレートを予測する決定を行い、その決定を示す第1のシンタックス値をエンコードする。
【0013】
いくつかの例では、第1のサンプリングレートをシグナリングする決定に応答して、処理回路は、第1のサンプリングレートの値を直接ビットストリームにエンコードすることができるまたはインデックスをビットストリームにエンコードすることができ、インデックスはサンプリングレートのセットからの第1のサンプリングレートの選択を示す。
【0014】
いくつかの例では、第1のサンプリングレートを予測する決定に応答して、処理回路は、第2のシンタックスをビットストリームにエンコードすることができ、第2のシンタックスは第1のサンプリングレートを予測するために使用する予測子を示す。さらに、一例では、処理回路は、予測残差をビットストリームにエンコードする。予測残差は、第1のサンプリングレートと予測子のサンプリングレートとの間の差である。
【0015】
いくつかの例では、処理回路は、基本サンプリングレートをビットストリームにエンコードする。
【0016】
いくつかの例では、処理回路は、適応2Dアトラスサンプリング(adaptive 2D atlas sampling)の有効化/無効化が許可されていることを示す制御フラグをエンコードする。
【0017】
いくつかの例では、処理回路は、メッシュフレームの第1の領域に関連付けられた少なくとも第1のUVオフセットを決定する。第1のUVオフセットは、他のサンプリング領域との重複を避けるために、第1の領域に対応する第1のサンプリング領域に適用される。処理回路は、第1のUVオフセットを示すシンタックスをビットストリームにエンコードする。一例では、処理回路は、第1のUVオフセットの値を持つシンタックスをビットストリームにエンコードする。別の例では、処理回路は、事前に確立されたUVオフセットのセットに基づいて第1のUVオフセットを予測する予測子を示すシンタックスをエンコードする。別の例では、処理回路は、メッシュフレームのエンコードされた領域に対して以前に使用されたUVオフセットに基づいて第1のUVオフセットを予測する予測子を示すシンタックスをエンコードする。別の例では、処理回路は、メッシュフレームの前にエンコードされた別のメッシュフレームのエンコードされた領域に対して以前に使用されたUVオフセットに基づいて第1のUVオフセットを予測する予測子を示すシンタックスをエンコードする。
【0018】
本開示の態様はまた、コンピュータによって実行されるときコンピュータにメッシュコーディングのための方法のいずれかまたは組み合わせを実行させる命令を格納する非一時的コンピュータ可読媒体を提供する。
【図面の簡単な説明】
【0019】
開示された主題のさらなる特徴、性質、および様々な利点は、以下の詳細な説明および添付の図面からより明らかになる。
【0020】
【
図1】いくつかの例における通信システムのブロック図を示す。
【0021】
【
図2】いくつかの例におけるストリーミングシステムのブロック図を示す。
【0022】
【
図3】いくつかの例におけるポイントクラウドフレームをエンコードするためのエンコーダのブロック図を示す。
【0023】
【
図4】いくつかの例におけるポイントクラウドフレームに対応する圧縮ビットストリームをデコードするためのデコーダのブロック図を示す。
【0024】
【
図5】いくつかの例におけるビデオデコーダのブロック図を示す。
【0025】
【
図6】いくつかの例におけるビデオエンコーダのブロック図を示す。
【0026】
【
図7】いくつかの例におけるポイントクラウドフレームをエンコードするエンコーダのブロック図を示す。
【0027】
【
図8】いくつかの例におけるポイントクラウドフレームを運ぶ圧縮ビットストリームをデコードするデコーダのブロック図を示す。
【0028】
【
図9】いくつかの例にけるメッシュのアトラスへのマッピングを示す図を示す。
【0029】
【
図10】いくつかの例におけるダウンサンプリングを示す図を示す。
【0030】
【
図11】本開示のいくつかの実施形態によるメッシュ圧縮のフレームワークの図を示す。
【0031】
【
図12】いくつかの例における適応サンプリングの図を示す。
【0032】
【
図13】いくつかの例における適応サンプリングの図を示す。
【0033】
【
図14】いくつかの例におけるプロセス例の概要を示すフローチャートを示す。
【0034】
【
図15】いくつかの例におけるプロセス例の概要を示すフローチャートを示す。
【0035】
【
図16】いくつかの例におけるコンピュータシステムの概略図である。
【発明を実施するための形態】
【0036】
本開示の態様は、3次元(3D)メディア処理の分野における技術を提供する。
【0037】
3次元(3D)キャプチャ、3Dモデリング、および3Dレンダリングの進歩など、3Dメディア処理における技術開発は、いくつかのプラットフォームおよびデバイスにわたって3Dメディアコンテンツのユビキタスな存在を促進した。一例では、赤ちゃんの第一歩をある大陸でキャプチャすることができ、メディア技術は祖父母が別の大陸で赤ちゃんとの没入体験を視聴(および場合によっては交流)して楽しむことを可能にする。開示の一態様によると、没入体験を向上させるために、3Dモデルはますます洗練されてきており、3Dモデルの作成と消費は、データストレージ、データ伝送リソースなど、かなりの量のデータリソースを占めている。
【0038】
本開示のいくつかの態様によると、ポイントクラウドおよびメッシュを、没入型コンテンツ(immersive contents)を表現するために3Dモデルとして使用することができる。
【0039】
ポイントクラウドは、一般に、色、材料特性、テクスチャ情報、強度属性、反射属性、モーション関連属性、モダリティ属性、およびその他のさまざまな属性などの関連属性を持つ、3D空間内のポイント(points)のセットを指し得る。ポイントクラウドは、そのようなポイントの構成(composition)としてオブジェクトまたはシーンを再構築するために使用することができる。
【0040】
オブジェクトのメッシュ(メッシュモデルとも呼ばれる)は、オブジェクトのサーフェスを記述するポリゴンを含むことができる。各ポリゴンは、3D空間内のポリゴンの頂点と、頂点がポリゴンにどのように接続されているかの情報によって定義することができる。頂点がどのように接続されているかの情報は、接続情報と呼ばれる。いくつかの例では、メッシュはまた、頂点に関連付けられた色、法線などの属性を含むことができる。
【0041】
本開示のいくつかの態様によると、ポイントクラウド圧縮(PCC)のためのいくつかのコーディングツールをメッシュ圧縮に使用することができる。例えば、メッシュは、新しいメッシュの接続情報を推測することができる新しいメッシュを生成するために、再メッシュされることができる。新しいメッシュの頂点、および新しいメッシュの頂点に関連付けられた属性は、ポイントクラウド内のポイントと見なすことができ、PCCコーデックを使用して圧縮されることができる。
【0042】
ポイントクラウドは、オブジェクトまたはシーンをポイントの構成として再構築するために使用することができる。ポイントは、複数のカメラ、深度センサ、またはライダー(Lidar)をさまざまな設定で使用してキャプチャすることができ、再構築されたシーンまたはオブジェクトをリアルに表現するために、数千から数十億のポイントで構成される場合がある。パッチが、概して、ポイントクラウドによって記述されるサーフェスの連続したサブセットを指す場合がある。一例では、パッチは、しきい値量未満で互いにずれているサーフェス(表面)法線ベクトルを持つポイントを含む。
【0043】
PCCは、G-PCCと呼ばれるジオメトリベースのスキーム、V-PCCと呼ばれるビデオコーディングベースのスキームなど、さまざまなスキームに従って実行することができる。本開示のいくつかの態様によると、G-PCCは3Dジオメトリを直接エンコードし、ビデオコーディングと共有することがあまりない純粋にジオメトリベースのアプローチであり、V-PCCはビデオコーディングに大きく基づいている。例えば、V-PCCは3Dクラウドのポイントを2Dグリッド(イメージ)のピクセルにマッピングすることができる。V-PCCスキームは、ポイントクラウド圧縮のために汎用ビデオコーデックを利用することができる。本開示におけるPCCコーデック(エンコーダ/デコーダ)は、G-PCCコーデック(エンコーダ/デコーダ)またはV-PCCコーデックとすることができる。
【0044】
本開示の一態様によると、V-PCCスキームは、ポイントクラウドのジオメトリ、占有率(occupancy)およびテクスチャを3つの別個のビデオシーケンスとして圧縮するために、既存のビデオコーデックを使用することができる。3つのビデオシーケンスを解釈するために必要な追加のメタデータは、別々に圧縮される。全体のビットストリームのごく一部がメタデータであり、これは、一例ではソフトウェア実装を使用して効率的にエンコード/デコードできる。情報の大部分はビデオコーデックによって処理される。
【0045】
図1は、いくつかの例における通信システム(100)のブロック図を示す。通信システム(100)は、例えばネットワーク(150)を介して相互に通信できる複数の端末装置を含む。例えば、通信システム(100)は、ネットワーク(150)を介して相互に接続された端末装置(110)と(120)のペアを含む。
図1の例では、端末装置(110)と(120)の第1のペアは、ポイントクラウドデータの単方向伝送を行い得る。例えば、端末装置(110)は、端末装置(110)と接続されたセンサ(105)によってキャプチャされたポイントクラウド(例えば、構造を表すポイント)を圧縮し得る。圧縮されたポイントクラウドは、例えばビットストリームの形で、ネットワーク(150)を介して他の端末装置(120)に送信されることができる。端末装置(120)は、ネットワーク(150)から圧縮されたポイントクラウドを受信し、ポイントクラウドを再構築するためにビットストリームを解凍し、再構築されたポイントクラウドを適切に表示し得る。一方向データ伝送は、メディアサービスアプリケーションなどで一般的である。
【0046】
図1の例では、端末装置(110)および(120)は、サーバ、およびパーソナルコンピュータとして図示されることができるが、本開示の原理はそのように限定されない。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲーム端末、メディアプレーヤー、および/または専用の3次元(3D)機器での適用を見出す。ネットワーク(150)は、端末装置(110)と(120)との間で圧縮されたポイントクラウドを送信する任意の数のネットワークを表す。ネットワーク(150)は、例えばワイヤライン(有線)および/または無線通信ネットワークを含むことができる。ネットワーク(150)は、回線交換チャネルおよび/またはパケット交換チャネルでデータを交換し得る。代表的なネットワークは、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、インターネットなどを含む。
【0047】
図2は、いくつかの例におけるストリーミングシステム(200)のブロック図を示す。ストリーミングシステム(200)は、ポイントクラウドの利用アプリケーションである。開示された主題は、3Dテレプレゼンスアプリケーション、仮想現実アプリケーションなど、他のポイントクラウド対応アプリケーションに同様に適用可能であることができる。
【0048】
ストリーミングシステム(200)は、キャプチャサブシステム(213)を含み得る。キャプチャサブシステム(213)は、ポイントクラウドソース(201)、例えば非圧縮のポイントクラウド(202)を生成する、例えば光検出および測距(ライダー)システム、三次元カメラ、三次元スキャナ、ソフトウェアで非圧縮のポイントクラウドを生成するグラフィックス生成コンポーネントなどを含むことができる。一例では、ポイントクラウド(202)は3Dカメラによってキャプチャされるポイントを含む。ポイントクラウド(202)は、圧縮されたポイントクラウド(204)(圧縮されたポイントクラウドのビットストリーム)と比較して高いデータ量を強調するために太線で示されている。圧縮されたポイントクラウド(204)は、ポイントクラウドソース(201)に結合されたエンコーダ(203)を含む電子デバイス(220)によって生成することができる。エンコーダ(203)は、以下により詳細に説明されるように、開示された主題の態様を有効化または実装するために、ハードウェア、ソフトウェア、またはそれらの組み合わせを含むことができる。圧縮されたポイントクラウド(204)(または圧縮されたポイントクラウドのビットストリーム(204))は、ポイントクラウド(202)のストリームと比較して低いデータ量を強調するために細い線として表現され、将来の使用のためにストリーミングサーバ(205)に格納することができる。
図2のクライアントサブシステム(206)および(208)などの1つ以上のストリーミングクライアントサブシステムは、圧縮されたポイントクラウド(204)のコピー(207)および(209)を取得するために、ストリーミングサーバ(205)にアクセスすることができる。クライアントサブシステム(206)は、例えば電子デバイス(230)にデコーダ(210)を含むことができる。デコーダ(210)は、圧縮されたポイントクラウドの入ってくる(incoming)コピー(207)をデコードし、レンダリングデバイス(212)でレンダリングできる再構築されたポイントクラウド(211)の出ていく(outgoing)ストリームを作成する。
【0049】
電子デバイス(220)および(230)は、他のコンポーネント(図示せず)を含むことができることが留意される。例えば、電子デバイス(220)は、デコーダ(図示せず)を含むことができ、電子デバイス(230)はエンコーダ(図示せず)を含むこともでる。
【0050】
一部のストリーミングシステムでは、圧縮されたポイントクラウド(204)、(207)および(209)(例えば、圧縮されたポイントクラウドのビットストリーム)を特定の標準に従って圧縮することができる。いくつかの例では、ポイントクラウドの圧縮にビデオコーディング標準が使用される。これらの標準の例は、高効率ビデオコーディング(HEVC)、バーサタイルビデオコーディング(VVC)などを含む。
【0051】
図3は、いくつかの実施形態による、ポイントクラウドフレームをエンコードするためのV-PCCエンコーダ(300)のブロック図を示している。いくつかの実施形態では、V-PCCエンコーダ(300)を通信システム(100)およびストリーミングシステム(200)で使用することができる。例えば、エンコーダ(203)は、V-PCCエンコーダ(300)と同様の方法で構成および動作することができる。
【0052】
V-PCCエンコーダ(300)は、ポイントクラウドフレームを非圧縮入力として受信し、圧縮されたポイントクラウドフレームに対応するビットストリームを生成する。いくつかの実施形態では、V-PCCエンコーダ(300)は、ポイントクラウドソース(201)などのポイントクラウドソースからポイントクラウドフレームを受信し得る。
【0053】
図3の例では、V-PCCエンコーダ(300)は、パッチ生成モジュール(306)、パッチパッキングモジュール(308)、ジオメトリイメージ生成モジュール(310)、テクスチャイメージ生成モジュール(312)、パッチ情報モジュール(304)、占有率(occupancy)マップモジュール(314)、スムージングモジュール(336)、イメージパディングモジュール(316)および(318)、グループ拡張モジュール(320)、ビデオ圧縮モジュール(322)、(323)および(332)、補助パッチ情報圧縮モジュール(338)、エントロピー圧縮モジュール(334)、マルチプレクサ(324)を含む。
【0054】
本開示の一態様によると、V-PCCエンコーダ(300)は、圧縮されたポイントクラウドを解凍されたポイントクラウドに変換して戻すために使用されるいくつかのメタデータ(例えば、占有率マップおよびパッチ情報)とともに、3Dポイントクラウドフレームをイメージベースの表現に変換する。いくつかの例では、V-PCCエンコーダ(300)は、3Dポイントクラウドフレームをジオメトリイメージ、テクスチャイメージおよび占有率マップに変換し、その後、ジオメトリイメージ、テクスチャイメージおよび占有率マップをビットストリームにエンコードするためにビデオコーディング技術を使用することができる。概して、ジオメトリイメージは、ピクセルに投影されたポイントに関連付けられたジオメトリ値で満たされた(filled)ピクセルを持つ2Dイメージであり、ジオメトリ値で満たされたピクセルをジオメトリサンプルと呼ぶことができる。テクスチャイメージは、ピクセルに投影されたポイントに関連付けられたテクスチャ値で満たされたピクセルを持つ2Dイメージであり、テクスチャ値で満たされたピクセルをテクスチャサンプルと呼ぶことができる。占有率マップは、パッチによって占有または占有されていないことを示す値で満たされたピクセルを持つ2Dイメージである。
【0055】
パッチ生成モジュール(306)は、ポイントクラウドをパッチのセット(例えば、パッチはポイントクラウドによって記述されるサーフェスの連続したサブセットとして定義される)にセグメント化し、これは、各パッチが2D空間内の平面に対する深度フィールドによって記述され得るように、パッチは重複していてもいなくてもよい。いくつかの実施形態では、パッチ生成モジュール(306)は、再構築エラーを最小限に抑えながら、スムーズな境界を持つパッチの最小数にポイントクラウドを分解することを目的としている。
【0056】
いくつかの例では、パッチ情報モジュール(304)は、パッチのサイズおよび形状を示すパッチ情報を収集することができる。いくつかの例では、パッチ情報は、イメージフレームにパックされ、その後、圧縮された補助パッチ情報を生成するために補助パッチ情報圧縮モジュール(338)によってエンコードされることができる。
【0057】
いくつかの例では、パッチパッキングモジュール(308)は、未使用スペースを最小限に抑え、グリッドのすべてのM×M(例えば、16×16)ブロックがユニークなパッチに関連付けられることを保証しながら、抽出されたパッチを2次元(2D)グリッドにマップするように構成される。効率的なパッチパッキングは、未使用スペースを最小限に抑えるまたは時間的一貫性を確保することによって、圧縮効率に直接影響を与えることができる。
【0058】
ジオメトリイメージ生成モジュール(310)は、所与のパッチ位置でポイントクラウドのジオメトリに関連付けられた2Dジオメトリイメージを生成することができる。テクスチャイメージ生成モジュール(312)は、所与のパッチ位置でポイントクラウドのテクスチャに関連付けられた2Dテクスチャイメージを生成することができる。ジオメトリイメージ生成モジュール(310)およびテクスチャイメージ生成モジュール(312)は、ポイントクラウドのジオメトリおよびテクスチャをイメージとして格納するために、パッキングプロセス中に計算された3Dから2Dへのマッピングを利用する。複数のポイントが同じサンプルに投影される場合をより適切に処理するために、各パッチはレイヤーと呼ばれる2つのイメージに投影される。一例では、ジオメトリイメージは、YUV 420-8ビット形式のWxHの単色フレームで表される。テクスチャイメージを生成するために、再サンプリングされたポイントに関連付けられる色を計算するために、テクスチャ生成プロシージャは再構築/スムージングされた(smoothed)ジオメトリを利用する。
【0059】
占有率マップモジュール(314)は、各ユニットのパディング情報を記述する占有率マップを生成することができる。例えば、占有率イメージは、グリッドの各セルについて、セルが空のスペースに属しているかポイントクラウドに属しているかを示すバイナリマップを含む。一例では、占有率マップは、各ピクセルについて、ピクセルがパディングされているか否かを記述するバイナリ情報を使用する。別の例では、占有率マップは、ピクセルの各ブロックについて、ピクセルのブロックがパディングされているか否かを記述するバイナリ情報を使用する。
【0060】
占有率マップモジュール(314)によって生成された占有率マップは、ロスレスコーディング(lossless coding)またはロッシーコーディング(lossy coding)を使用して圧縮することができる。ロスレスコーディングを使用する場合、エントロピー圧縮モジュール(334)は、占有率マップを圧縮するために使用される。ロッシーコーディングを使用する場合、ビデオ圧縮モジュール(332)は、占有率マップを圧縮するために使用される。
【0061】
パッチパッキングモジュール(308)は、イメージフレームにパックされた2Dパッチの間にいくつかの空のスペースを残す可能性があることが留意される。イメージパディングモジュール(316)および(318)は、2Dビデオおよびイメージコーデックに適し得るイメージフレームを生成するために、空のスペースを埋めることができる(パディングと呼ばれる)。イメージパディングは、冗長な情報で未使用のスペースを埋めることができるバックグラウンド充填(background filling)とも呼ばれる。いくつかの例では、良好なバックグラウンド充填は、ビットレートを最小限に増加させる一方で、パッチ境界の周りに重大なコーディングの歪みを導入しない。
【0062】
ビデオ圧縮モジュール(322)、(323)、(332)は、HEVC、VVCなどの適切なビデオコーディング標準に基づいて、パディングされたジオメトリイメージ、パディングされたテクスチャイメージ、占有率マップなどの2Dイメージをエンコードすることができる。一例では、ビデオ圧縮モジュール(322)、(323)、(332)は、個別に動作する個々のコンポーネントである。ビデオ圧縮モジュール(322)、(323)、(332)は、別の例では、単一のコンポーネントとして実装することができることが留意される。
【0063】
いくつかの例では、スムージングモジュール(336)が、再構築されたジオメトリイメージのスムージングされたイメージを生成するように構成される。スムージングされたイメージは、テクスチャイメージ生成(312)に提供できる。次に、テクスチャイメージ生成(312)は、再構築されたジオメトリイメージに基づいてテクスチャイメージの生成を調整し得る。例えば、エンコードおよびデコード中にパッチシェイプ(例えば、ジオメトリ)がわずかに歪んだ場合、その歪みは、パッチシェイプの歪みを補正するために、テクスチャイメージを生成するときに考慮され得る。
【0064】
いくつかの実施形態では、グループ拡張(320)は、再構築されたポイントクラウドの視覚的品質だけでなく、コーディングゲインを改善するために、冗長な低周波コンテンツを持つオブジェクト境界の周囲のピクセルをパディングするように構成される。
【0065】
マルチプレクサ(324)は、圧縮されたジオメトリイメージ、圧縮されたテクスチャイメージ、圧縮された占有率マップ、圧縮された補助パッチ情報を圧縮されたビットストリームに多重化することができる。
【0066】
図4は、いくつかの例において、ポイントクラウドフレームに対応する圧縮されたビットストリームをデコードするためのV-PCCデコーダ(400)のブロック図を示す。いくつかの例では、V-PCCデコーダ(400)は、通信システム(100)およびストリーミングシステム(200)で使用することができる。例えば、デコーダ(210)は、V-PCCデコーダ(400)と同様の方法で動作するように構成することができる。V-PCCデコーダ(400)は、圧縮されたビットストリームを受信し、圧縮されたビットストリームに基づいて再構築されたポイントクラウドを生成する。
【0067】
図4の例では、V-PCCデコーダ(400)は、デマルチプレクサ(432)
、ビデオ解凍モジュール(434)および(436)、占有率マップ解凍モジュール(438)、補助パッチ情報解凍モジュール(442)、ジオメトリ再構築モジュール(444)、スムージングモジュール(446)、テクスチャ再構築モジュール(448)およびカラースムージングモジュール(452)を含む。
【0068】
デマルチプレクサ(432)は、圧縮されたビットストリームを受信し、圧縮されたテクスチャイメージ、圧縮されたジオメトリイメージ、圧縮された占有率マップ、および圧縮された補助パッチ情報に分離することができる。
【0069】
ビデオ圧縮モジュール(434)および(436)は、適切な標準(例えば、HEVC、VVCなど)に従って圧縮されたイメージをデコードし、解凍されたイメージを出力することができる。例えば、ビデオ解凍モジュール(434)は、圧縮されたテクスチャイメージをデコードし、解凍されたテクスチャイメージを出力する。ビデオ解凍モジュール(436)は、圧縮されたジオメトリイメージをデコードし、解凍されたジオメトリイメージを出力する。
【0070】
占有率マップ解凍モジュール(438)は、適切な標準(例えば、HEVC、VVCなど)に従って圧縮された占有率マップをデコードし、解凍された占有率マップを出力することができる。
【0071】
補助パッチ情報解凍モジュール(442)は、適切な標準(例えば、HEVC、VVCなど)に従って圧縮された補助パッチ情報をデコードし、解凍された補助パッチ情報を出力することができる。
【0072】
ジオメトリ再構築モジュール(444)は、解凍されたジオメトリイメージを受信し、解凍された占有率マップおよび解凍された補助パッチ情報に基づいて再構築されたポイントクラウドジオメトリを生成することができる。
【0073】
スムージングモジュール(446)は、パッチのエッジで不一致(incongruences)をスムージングすることができる。スムージング手順は、圧縮アーティファクトによってパッチ境界で発生する可能性のある潜在的な不連続性を緩和することを目的としている。いくつかの実施形態では、スムージングフィルタが、圧縮/解凍によって発生する可能性のある歪みを緩和するために、パッチ境界に位置するピクセルに適用され得る。
【0074】
テクスチャ再構築モジュール(448)は、解凍されたテクスチャイメージおよびスムージングジオメトリに基づいて、ポイントクラウド内のポイントのテクスチャ情報を決定することができる。
【0075】
カラースムージングモジュール(452)は、カラーリングの不一致をスムージングすることができる。3D空間の隣接しないパッチは、しばしば、2Dビデオでは互いに隣接してパックされる。いくつかの例では、隣接しないパッチからのピクセル値がブロックベースのビデオコーデックによって混同されることがある。カラースムージングの目的は、パッチ境界に現れる目に見えるアーティファクトを減らすことである。
【0076】
図5は、いくつかの例におけるビデオデコーダ(510)のブロック図を示している。ビデオデコーダ(510)は、V-PCCデコーダ(400)で使用することができる。例えば、ビデオ解凍モジュール(434)および(436)、占有率マップ解凍モジュール(438)は、ビデオデコーダ(510)として同様に構成することができる。
【0077】
ビデオデコーダ(510)は、コーディングされたビデオシーケンスなどの圧縮イメージからシンボル(521)を再構築するパーサ(520)を含み得る。これらのシンボルのカテゴリは、ビデオデコーダ(510)の動作を管理するために使用される情報を含む。パーサ(520)は、受信されたコーディングされたビデオシーケンスを解析/エントロピーデコードすることができる。コーディングされたビデオシーケンスのコーディングは、ビデオコーディング技術または標準に従うことができ、可変長コーディング、ハフマンコーディング、コンテキスト感度有りのまたは無しの算術コーディングなど、さまざまな原理に従うことができる。パーサ(520)は、グループに対応する少なくとも1つのパラメータに基づいて、ビデオデコーダ内のピクセルのサブグループの少なくとも1つのサブグループパラメータのセットを、コード化されたビデオシーケンスから抽出し得る。サブグループは、ピクチャのグループ(Group of Pictures)(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(Coding Units)(CU)、ブロック、変換ユニット(Transform Units)(TU)、予測ユニット(Prediction Units)(PU)などを含むことができる。パーサ(520)は、また、変換係数、量子化パラメータ値、動きベクトルなどのコーディングされたビデオシーケンス情報から抽出され得る。
【0078】
パーサ(520)は、シンボル(521)を作成するために、バッファメモリから受信したビデオシーケンスに対してエントロピーデコーディング/解析動作を実行し得る。
【0079】
シンボル(521)の再構築は、コーディングされたビデオピクチャまたはその一部(インターおよびイントラピクチャ、インターおよびイントラブロックなど)の種類、およびその他の要因に応じて、複数の異なるユニットを含むことができる。どのユニットが関与し、どのように関与するかは、パーサ(520)によってコーディングされたビデオシーケンスから解析されたサブグループ制御情報によって制御することができる。パーサ(520)と以下の複数のユニットとの間のこのようなサブグループ制御情報の流れは、明確にするために描かれていない。
【0080】
既に述べた機能ブロックを超えて、ビデオデコーダ(510)は、以下に説明するように、概念的にいくつかの機能ユニットに細分化することができる。商業的制約の下で動作する実用的な実装では、これらのユニットの多くは、相互に密接に相互作用し、少なくとも部分的には相互に統合することができる。しかし、開示された主題を説明する目的では、以下の機能ユニットへの概念的な細分化が適切である。
【0081】
第1のユニットは、スケーラ/逆変換ユニット(551)である。スケーラ/逆変換ユニット(551)は、量子化された変換係数だけでなく、どの変換を使用するか、ブロックサイズ、量子化係数、量子化スケーリング行列などをシンボル(複数可)(521)として含む制御情報をパーサ(520)から受信する。スケーラ/逆変換ユニット(551)は、アグリゲータ(555)に入力されることができるサンプル値を含むブロックを出力することができる。
【0082】
場合によっては、スケーラ/逆変換(551)の出力サンプルは、イントラコーディングされたブロックに関係することができる;すなわち:以前に再構築されたピクチャからの予測情報を使用していないが、現在のピクチャの以前に再構築された部分からの予測情報を使用することができるブロック。このような予測情報は、イントラピクチャ予測ユニット(552)によって提供することができる。場合によっては、イントラピクチャ予測ユニット(552)は、現在のピクチャバッファ(558)からフェッチされた(fetched)周囲の既に再構築された情報を使用して、再構築中のブロックと同じサイズおよび形状のブロックを生成する。現在のピクチャバッファ(558)は、例えば、部分的に再構築された現在のピクチャおよび/または完全に再構築された現在のピクチャをバッファする。アグリゲータ(555)は、場合によっては、スケーラ/逆変換ユニット(551)によって提供される出力サンプル情報に、イントラ予測ユニット(552)が生成した予測情報を、サンプルベースで追加する。
【0083】
他の場合には、スケーラ/逆変換ユニット(551)の出力サンプルは、インターコーディングされた、潜在的に動き補償ブロックに関係することができる。このような場合、動き補償予測ユニット(553)は、予測に使用されるサンプルをフェッチするために参照ピクチャメモリ(557)にアクセスすることができる。ブロックに関連するシンボル(521)に従って、フェッチされたサンプルを動き補償した後、これらのサンプルは、出力サンプル情報を生成するために、アグリゲータ(555)によってスケーラ/逆変換ユニット(551)の出力(この場合、残差サンプルまたは残差信号と呼ばれる)に追加することができる。動き補償予測ユニット(553)が予測サンプルをフェッチする参照ピクチャメモリ(557)内のアドレスは、動きベクトルによって制御することができ、例えばX、Y、および参照ピクチャコンポーネントを有することができるシンボル(521)の形式で動き補償予測ユニット(553)に利用可能であることができる。動き補償は、また、サブサンプルの正確な動きベクトルが使用されているときに参照ピクチャメモリ(557)からフェッチされたサンプル値の補間、動きベクトル予測メカニズムなどを含むことができる。
【0084】
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)でさまざまなループフィルタリング技術の対象とすることができる。ビデオ圧縮技術は、コーディングされたビデオシーケンス(コーディングされたビデオビットストリームとも呼ばれる)に含まれるパラメータによって制御され、パーサ(520)からシンボル(521)としてループフィルタユニット(556)に利用可能にされるインループフィルタ技術を含むことができるが、コーディングされたピクチャまたはコーディングされたビデオシーケンスの以前の(デコード順の)部分のデコード中に取得されたメタ情報に応答したり、以前に再構築されループフィルタリングされたサンプル値に応答したりすることもできる。
【0085】
ループフィルタユニット(556)の出力は、レンダーデバイスに出力できるだけでなく、将来のインターピクチャ予測で使用するために参照ピクチャメモリ(557)に格納することができるサンプルストリームにすることができる。
【0086】
特定のコーディングされたピクチャは、完全に再構築されると、将来の予測のための参照ピクチャとして使用することができる。例えば、現在のピクチャに対応するコーディングされたピクチャが完全に再構築され、コーディングされたピクチャが参照ピクチャとして識別されたら(例えばパーサ(520)によって)、現在のピクチャバッファ(558)を参照ピクチャメモリ(557)の一部にすることができ、次のコーディングされたピクチャの再構築を開始する前に新しい現在のピクチャバッファを再割り当てすることができる。
【0087】
ビデオデコーダ(510)は、ITU-T推奨H.265などの標準で、所定のビデオ圧縮技術に従ってデコード操作を実行することができる。コーディングされたビデオシーケンスは、コーディングされたビデオシーケンスがビデオ圧縮技術または標準のシンタックスおよびビデオ圧縮技術または標準に記載されているプロファイルの両方に準拠しているという意味で、使用されているビデオ圧縮技術または標準によって指定されたシンタックスに準拠し得る。具体的には、プロファイルは、ビデオ圧縮技術または標準で使用可能なすべてのツールから、そのプロファイルで使用可能な唯一のツールとして特定のツールを選択できる。また、コンプライアンスに必要なのは、コーディングされたビデオシーケンスの複雑さが、ビデオ圧縮技術または標準のレベルによって定義される範囲内にあることであることができる。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構築サンプルレート(例えばメガサンプル/秒などで測定される)、最大参照ピクチャサイズなどを制限する。レベルによって設定された制限は、場合によっては、コーディングされたビデオシーケンスでシグナリングされる(signaled)仮想参照デコーダ(HRD)仕様およびHRDバッファ管理のためのメタデータによってさらに制限されることができる。
【0088】
図6は、本開示の一実施形態によるビデオエンコーダ(603)のブロック図を示す。ビデオエンコーダ(603)は、ポイントクラウドを圧縮するV-PCCエンコーダ(300)で使用することができる。一例では、ビデオ圧縮モジュール(322)および(323)、並びにビデオ圧縮モジュール(332)は、エンコーダ(603)と同様に構成される。
【0089】
ビデオエンコーダ(603)は、パディングされたジオメトリイメージ、パディングされたテクスチャイメージなどのイメージを受信し、圧縮されたイメージを生成し得る。
【0090】
一実施形態によれば、ビデオエンコーダ(603)は、リアルタイムで、またはアプリケーションによって要求されるその他の時間制約の下で、ソースビデオシーケンス(イメージ)のピクチャをコーディングし、コーディングされたビデオシーケンス(圧縮されたイメージ)に圧縮し得る。適切なコーディング速度を強制することは、コントローラ(650)の機能の1つである。いくつかの実施形態では、コントローラ(650)は、以下に説明するように他の機能ユニットを制御し、他の機能ユニットに機能的に結合される。明確にするために結合は描かれていない。コントローラ(650)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化、レート歪み最適化手法のラムダ値、...)、ピクチャサイズ、ピクチャのグループ(GOP)レイアウト、最大動きベクトル検索範囲などを含むことができる。コントローラ(650)は、特定のシステム設計に最適化されたビデオエンコーダ(603)に関連する他の適切な機能を持つように構成することができる。
【0091】
いくつかの実施形態では、ビデオエンコーダ(603)は、コーディングループで動作するように構成される。過度に単純化された説明として、一例では、コーディングループは、ソースコーダ(630)(例えば、コーディングされる入力ピクチャと、参照ピクチャ(複数可)に基づいて、シンボルストリームなどのシンボルを作成する責任がある)と、ビデオエンコーダ(603)に埋め込まれた(ローカル)デコーダ(633)を含むことができる。デコーダ(633)は、(リモート)デコーダが作成するのと同様の方法でサンプルデータを作成するためにシンボルを再構築する(開示された主題で考慮されるビデオ圧縮技術では、シンボルとコーディングされたビデオビットストリームとの間の圧縮はロスレスであるため)。再構築されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(634)に入力される。シンボルストリームのデコードはデコーダの場所(ローカルまたはリモート)に依存しないビット正確な結果をもたらすため、参照ピクチャメモリ(634)内のコンテンツもローカルエンコーダとリモートエンコーダとの間でビット正確である。言い換えると、エンコーダの予測部分は、デコード中に予測を使用する場合にデコーダが「見る」サンプル値とまったく同じサンプル値を参照ピクチャサンプルとして「見る」。この参照ピクチャの同期性(チャネルエラーなどで同期性を維持できない場合は、結果としてドリフトが発生する)の基本原理は、いくつかの関連技術でも使用されている。
【0092】
「ローカル」デコーダ(633)の動作は、すでに
図5と併せて詳細に説明したビデオデコーダ(510)などの「リモート」デコーダと同じであることができる。しかし、
図5も簡単に参照すると、シンボルが利用可能であり、エントロピーコーダ(645)とパーサ(520)によるコーディングされたビデオシーケンスへのシンボルのエンコーディング/デコーディングはロスレスであることができるため、パーサ(520)を含むビデオデコーダ(510)のエントロピーデコーディング部分は、ローカルデコーダ(633)で完全には実装されていない可能性がある。
【0093】
動作中、いくつかの例では、ソースコーダ(630)は、「参照ピクチャ」として指定されたビデオシーケンスから1つ以上の以前にコーディングされたピクチャを参照して、入力ピクチャを予測的にコーディングする動き補償予測コーディングを実行し得る。このようにして、コーディングエンジン(632)は、入力ピクチャのピクセルブロックと、入力ピクチャへの予測参照(複数可)として選択され得る参照ピクチャ(複数可)のピクセルブロックとの間の違いをコーディングする。
【0094】
ローカルビデオデコーダ(633)は、ソースコーダ(630)によって作成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャのコーディングされたビデオデータをデコードし得る。コーディングエンジン(632)の動作は、有利にはロッシープロセスであり得る。コーディングされたビデオデータがビデオデコーダ(
図6には示さず)でデコードされ得る場合、再構築されたビデオシーケンスは、通常、いくつかのエラーを持つソースビデオシーケンスのレプリカであり得る。ローカルビデオデコーダ(633)は、ビデオデコーダによって参照ピクチャに対して実行され得、再構築された参照ピクチャを参照ピクチャキャッシュ(634)に格納させ得る、デコードプロセスを複製する。このようにして、ビデオエンコーダ(603)は、共通の内容を持つ再構築された参照ピクチャのコピーを、遠端ビデオデコーダ(伝送エラーがない)によって取得される再構築された参照ピクチャとしてローカルに格納し得る。
【0095】
予測子(635)は、コーディングエンジン(632)の予測検索を実行し得る。すなわち、コーディングされる新しいピクチャについて、予測子(635)は、新しいピクチャの適切な予測参照として役立ち得る、サンプルデータ(候補参照ピクセルブロックとして)または参照ピクチャ動きベクトル、ブロック形状などの特定のメタデータについて、参照ピクチャメモリ(634)を検索し得る。予測子(635)は、適切な予測参照を見つけるために、サンプルブロック/ピクセルブロック単位で動作し得る。場合によっては、予測子(635)によって得られた検索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(634)に格納された複数の参照ピクチャから引き出された予測参照を有し得る。
【0096】
コントローラ(650)は、例えば、ビデオデータをエンコードするために使用されるパラメータおよびサブグループパラメータの設定を含む、ソースコーダ(630)のコーディング動作を管理し得る。
【0097】
前述のすべての機能ユニットの出力は、エントロピーコーダ(645)でのエントロピーコーディングを受け得る。エントロピーコーダ(645)は、ハフマンコーディング、可変長コーディング、算術コーディングなどの技術に従ってシンボルをロスレス圧縮することによって、さまざまな機能ユニットによって生成されたシンボルをコーディングされたビデオシーケンスに変換する。
【0098】
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理し得る。コーディング中、コントローラ(650)は、各コード化されたピクチャに特定のコーディングされたピクチャタイプを割り当て得、これは、それぞれのピクチャに適用され得るコーディング技術に影響を与え得る。例えば、ピクチャは、多くの場合、次のピクチャタイプのいずれかとして割り当てられ得る:
【0099】
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス内の他のピクチャを使用せずにコーディングおよびデコーディングされ得るものであり得る。いくつかのビデオコーデックは、例えば、独立したデコーダリフレッシュ(Independent Decoder Refresh)(「IDR」)ピクチャを含む、異なる種類のイントラピクチャを可能にする。当業者は、Iピクチャのこれらのバリアント並びにそれぞれの用途および特徴を認識している。
【0100】
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために、多くても1つの動きベクトルおよび参照インデックスを使用して、イントラ予測またはインター予測を使用してコーディングおよびデコーディングされ得るものであり得る。
【0101】
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために、多くても2つの動きベクトルおよび参照インデックスを使用して、イントラ予測またはインター予測を使用して、コーディングおよびデコーディングされ得るものであり得る。同様に、複数予測ピクチャは、単一のブロックの再構築のために、2つより多い参照ピクチャおよび関連するメタデータを使用することができる。
【0102】
ソースピクチャは、一般に、複数のサンプルブロック(例えば、夫々、4×4、8×8、4×8、または16×16のサンプルのブロック)に空間的に細分化され、ブロックごとにコーディングされ得る。ブロックは、ブロックのそれぞれのピクチャに適用されているコーディング割り当てによって決定される他の(既にコーディングされた)ブロックを参照して予測的にコーディングされ得る。例えば、Iピクチャのブロックは、非予測的にコーディングされ得る、または、それらは、同じピクチャの既にコーディングされたブロックを参照して予測的にコーディングされ得る(空間予測またはイントラ予測)。Pピクチャのピクセルブロックは、1つの以前にコーディングされた参照ピクチャを参照して空間予測によりまたは時間予測により、予測的にコーディングされ得る。Bピクチャのブロックは、1つまたは2つの以前にコーディングされた参照ピクチャを参照して空間予測によりまたは時間予測により、予測的にコーディングされ得る。
【0103】
ビデオエンコーダ(603)は、ITU-T推奨H.265のような所定のビデオコーディング技術または標準に従ってコーディング動作を実行し得る。その動作において、ビデオエンコーダ(603)は、入力ビデオシーケンスにおける時間的および空間的冗長性を利用する予測コーディング動作を含む様々な圧縮動作を実行し得る。従って、コーディングされたビデオデータは、使用されているビデオコーディング技術または標準によって定められているシンタックスに従い得る。
【0104】
ビデオは、時間的シーケンスにおいて複数のソースピクチャ(イメージ)の形式であり得る。イントラピクチャ予測(しばしばイントラ予測と省略される)は、所与のピクチャにおける空間相関を利用し、インターピクチャ予測は、ピクチャ間の(時間的または他の)相関を利用する。一例では、現在のピクチャと呼ばれる、エンコード/デコード中の特定のピクチャは、ブロックにパーティション化される(partitioned)。現在のピクチャ内のあるブロックが、ビデオ内の以前にコーディングされ、依然としてバッファリングされている参照ピクチャ内の参照ブロックと類似している場合に、現在のピクチャ内のそのブロックは、動きベクトルと呼ばれるベクトルによってコーディングされることができる。動きベクトルは、参照ピクチャ内の参照ブロックを指し、複数の参照ピクチャが使用されている場合には、参照ピクチャを識別する第3の次元を有することができる。
【0105】
いくつかの実施形態では、双予測技術がインターピクチャ予測において使用されることができる。双予測技術に従って、2つの参照ピクチャ、例えば、ビデオ内で現在のピクチャに対してデコード順序において両方とも先行する(しかし、表示順序では、夫々、過去および将来にあり得る)第1の参照ピクチャおよび第2の参照ピクチャが、使用される。現在のピクチャ内のブロックは、第1の参照ピクチャ内の第1の参照ブロックを指す第1の動きベクトルと、第2の参照ピクチャ内の第2の参照ブロックを指す第2の動きベクトルとによって、コーディングされることができる。ブロックは、第1の参照ブロックおよび第2の参照ブロックの組み合わせによって予測することができる。
【0106】
さらに、マージモード技術が、コーディング効率を向上させるためにインターピクチャ予測において使用されることができる。
【0107】
本開示のいくつかの実施形態に従って、インターピクチャ予測およびイントラピクチャ予測などの予測は、ブロックのユニットにおいて実行される。例えば、HEVC標準に従って、ビデオピクチャのシーケンス内のピクチャが、圧縮のためにコーディングツリーユニット(CTU)にパーティション化され、ピクチャ内のCTUは、64×64ピクセル、32×32ピクセル、または16×16ピクセルなどの同じサイズを有する。一般に、CTUは、3つのコーディングツリーブロック(CTB)を含み、これは、1つのルーマCTBおよび2つのクロマCTBである。各CTUは、1つまたは複数のコーディングユニット(CU)に再帰的に四分木分割される(quadtree split)ことができる。例えば、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ピクセルなどのような、ピクセルの値(例えば、ルーマ値)の行列を含む。
【0108】
図7は、いくつかの例におけるG-PCCエンコーダ(700)のブロック図を示す。G-PCCエンコーダ(700)は、ポイントクラウドデータを受信し、圧縮されたポイントクラウドデータを運ぶビットストリームを生成するためにポイントクラウドデータを圧縮するよう構成されることができる。一実施形態では、G-PCCエンコーダ(700)は、位置量子化モジュール(710)、重複ポイント除去(duplicated points removal)モジュール(712)、八分木エンコーディング(octree encoding)モジュール(730)、属性転送(attribute transfer)モジュール(720)、詳細のレベル(level of detail)(LOD)生成モジュール(740)、属性予測モジュール(750)、残差量子化モジュール(760)、算術コーディングモジュール(770)、逆残差量子化モジュール(780)、加算モジュール(781)、および再構築された属性値を格納するメモリ(790)を含むことができる。
【0109】
図示のように、入力ポイントクラウド(701)は、G-PCCエンコーダ(700)で受信されることができる。ポイントクラウド(701)の位置(例えば、3D座標)は、量子化モジュール(710)に供給される。量子化モジュール(710)は、量子化された位置を生成するために座標を量子化するよう構成される。重複ポイント除去モジュール(712)は、量子化された位置を受信し、重複ポイントを識別し除去するためにフィルタプロセスを実行するように構成される。八分木エンコーディングモジュール(730)は、重複ポイント除去モジュール(712)からフィルタ処理された位置を受信し、ボクセルの3Dグリッドを記述する占有コード(occupancy codes)のシーケンスを生成するために八分木ベースのエンコーディングプロセスを実行するように構成される。占有コードは、算術コーディングモジュール(770)に提供される。
【0110】
属性転送モジュール(720)は、入力ポイントクラウドの属性を受信し、複数の属性値がそれぞれのボクセルに関連づけられる場合に各ボクセルに属性値を決定するために属性転送プロセスを実行するように構成される。属性転送プロセスは、八分木エンコーディングモジュール(730)から出力された再順序付けされたポイントに対して実行されることができる。転送動作後の属性は、属性予測モジュール(750)に供給される。LOD生成モジュール(740)は、八分木エンコーディングモジュール(730)から出力された再順序付けされたポイントに作用し、ポイントを異なるLODに再編成する(re-organize)ように構成される。LOD情報は、属性予測モジュール(750)に供給される。
【0111】
属性予測モジュール(750)は、LOD生成モジュール(740)からのLOD情報によって示されているLODベースの順序に従って、ポイントを処理する。属性予測モジュール(750)は、メモリ(790)に格納されている現在のポイントの隣接するポイントのセットの再構築された属性に基づいて、現在のポイントに対する属性予測を生成する。予測残差は、属性転送モジュール(720)から受信され元の属性値と、ローカルで生成された属性予測とに基づいて、その後に取得されることができる。候補インデックスがそれぞれの属性予測プロセスで使用される場合、選択された予測候補に対応するインデックスは、算術コーディングモジュール(770)に供給され得る。
【0112】
残差量子化モジュール(760)は、属性予測モジュール(750)から予測残差を受信し、量子化された残差を生成するために量子化を実行するように構成される。量子化された残差は、算術コーディングモジュール(770)に供給される。
【0113】
逆残差量子化モジュール(780)は、残差量子化モジュール(760)から量子化された残差を受信し、残差量子化モジュール(760)で実行された量子化動作の逆を実行することによって、再構成された予測残差を生成するように構成される。加算モジュール(781)は、逆残差量子化モジュール(780)からの再構築された予測残差と、属性予測モジュール(750)からのそれぞれの属性予測とを受信するように構成される。再構築された予測残差と属性予測とを組み合わせることによって、再構築された属性値は生成され、メモリ(790)に格納される。
【0114】
算術コーディングモジュール(770)は、占有コード、(使用される場合)候補インデックス、(生成される場合)量子化された残差、および他の情報を受信し、受信された値または情報を更に圧縮するためにエントロピエンコーディングを実行するように構成される。結果として、圧縮された情報を運ぶ圧縮されたビットストリーム(702)を生成することができる。ビットストリーム(702)は、圧縮されたビットストリームをデコードするデコーダに伝送され得る、または別の方法で提供され得る、あるいは、ストレージデバイスに格納され得る。
【0115】
図8は、一実施形態によるG-PCCデコーダ(800)のブロック図を示す。G-PCCデコーダ(800)は、圧縮されたビットストリームを受信し、デコードされたポイントクラウドデータを生成するためにビットストリーム解凍するポイントクラウドデータ解凍を実行するように構成されることができる。一実施形態では、G-PCCデコーダ(800)は、算術デコーディングモジュール(810)、逆残差量子化モジュール(820)、八分木デコーディングモジュール(830)、LOD生成モジュール(840)、属性予測モジュール(850)、および再構築された属性値を格納するメモリ(860)を含むことができる。
【0116】
図示されるように、圧縮されたビットストリーム(801)は、算術デコーディングモジュール(810)で受信されることができる。算術デコーディングモジュール(810)は、(生成される場合)量子化された残差およびポイントクラウドの占有コードを取得するために、圧縮されたビットストリームをデコードするように構成される。八分木デコーディングモジュール(830)は、占有コードに従って、ポイントクラウドの中のポイントの再構築された位置を決定するように構成される。LOD生成モジュール(840)は、再構築された位置に基づいてポイントを異なるLODに再編成し、LODベースの順序を決定するように構成される。逆残差量子化モジュール(820)は、算術デコーディングモジュール(810)から受信された量子化された残差に基づいて、再構築された残差を生成するよう構成される。
【0117】
属性予測モジュール(850)は、LODベースの順序に従ってポイントに対する属性予測を決定するために、属性予測プロセスを実行するように構成される。例えば、現在のポイントの属性予測は、メモリ(860)に格納されている現在のポイントの隣接するポイントの再構築された属性値に基づいて決定されることができる。いくつかの例では、属性予測は、現在のポイントに対する再構築された属性を生成するために、それぞれの再構築された残差と組み合わされることができる。
【0118】
八分木デコーディングモジュール(830)から生成された再構築された位置とともに属性予測モジュール(850)から生成された再構築された属性のシーケンスは、一例では、G-PCCデコーダ(800)から出力されるデコードされたポイントクラウド(802)に対応する。加えて、再構築された属性はまた、メモリ(860)に格納され、その後に、後続のポイントについての属性予測を導出するために使用されることができる。
【0119】
様々な実施形態では、エンコーダ(300)、デコーダ(400)、エンコーダ(700)、および/またはデコーダ(800)は、ハードウェア、ソフトウェア、またはそれらの組み合わせにより実装されることができる。例えば、エンコーダ(300)、デコーダ(400)、エンコーダ(700)、および/またはデコーダ(800)は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、などのような、ソフトウェアの有無によらず動作する1つ以上の集積回路(IC)などの処理回路により実装されることができる。他の例では、エンコーダ(300)、デコーダ(400)、エンコーダ(700)、および/またはデコーダ(800)は、不揮発性の(または非一時的な)コンピュータ可読記憶媒体に格納されている命令を含むソフトウェアまたはファームウェアとして実装されることができる。命令は、1つ以上のプロセッサなどの処理回路によって実行される場合、処理回路に、エンコーダ(300)、デコーダ(400)、エンコーダ(700)、および/またはデコーダ(800)の機能を実行させる。
【0120】
本明細書で開示されている属性予測技術を実装するよう構成される属性予測モジュール(750)および(850)は、
図7および
図8に示されているものと類似したまたは異なる構造を有し得る他のデコーダまたはエンコーダに含まれることができることが留意される。加えて、エンコーダ(700)およびデコーダ(800)は、様々な例において、同じデバイスまたは別個のデバイスに含まれることができる。
【0121】
本開示のいくつかの態様によれば、メッシュ圧縮は、PCCコーディングツールとは異なるコーディングツールを使用することができる、または、上記のPCC(例えば、G-PCC、V-PCC)エンコーダ、上記のPCC(例えば、G-PCC、V-PCC)デコーダなどのようなPCCコーディングツールを使用することができる。
【0122】
オブジェクトのメッシュ(メッシュモデル、メッシュフレームとも呼ばれる)は、オブジェクトのサーフェスを記述するポリゴンを含むことができる。各ポリゴンは、3D空間内のポリゴンの頂点および頂点をポリゴンに接続するエッジによって定義することができる。頂点がどのように接続されているかの情報(例えばエッジの情報)は、接続情報と呼ばれる。いくつかの例では、オブジェクトのメッシュは、オブジェクトのサーフェスを記述する接続された三角形によって形成される。エッジを共有する2つの三角形は、2つの接続された三角形と呼ばれる。他のいくつかの例では、オブジェクトのメッシュは、接続された四角形によって形成される。エッジを共有する2つの四角形は、2つの接続された四角形と呼ぶことができる。メッシュは、他の適切なポリゴンによって形成できることが留意される。
【0123】
いくつかの例では、メッシュは、また、頂点に関連付けられた色、法線などの属性を含むことができる。属性は、2D属性マップでメッシュをパラメータ化するマッピング情報を利用することによって、メッシュのサーフェスに関連付けることができる。マッピング情報は通常、メッシュ頂点に関連付けられた、UV座標またはテクスチャ座標と呼ばれるパラメトリック座標のセットによって記述される。2D属性マップ(いくつかの例ではテクスチャマップと呼ばれる)は、テクスチャ、法線、変位などの高解像度の属性情報を格納するために使用される。このような情報は、テクスチャマッピングおよびシェーディングなどのさまざまな目的に使用できる。
【0124】
いくつかの実施形態では、メッシュは、ジオメトリ情報、接続情報、マッピング情報、頂点属性、および属性マップと呼ばれるコンポーネントを含むことができる。いくつかの例では、ジオメトリ情報は、メッシュの頂点に関連付けられた3D位置のセットによって記述される。一例では、(x、y、z)座標が、頂点の3D位置を記述するために使用されることができ、3D座標とも呼ばれる。いくつかの例では、接続情報は、3Dサーフェスを作成するためにどのように頂点を接続するかを記述する頂点インデックスのセットを含む。いくつかの例では、マッピング情報は、メッシュサーフェスを平面の2D領域にどのようにマッピングするかを記述する。例では、マッピング情報は、接続情報とともに、メッシュ頂点に関連付けられたUVパラメトリック/テクスチャ座標(u、v)のセットによって記述される。いくつかの例では、頂点属性は、メッシュ頂点に関連付けられたスカラーまたはベクトル属性値を含む。いくつかの例では、属性マップは、メッシュサーフェスに関連付けられ、2Dイメージ/ビデオとして格納される属性を含む。一例では、ビデオ(例えば、2Dイメージ/ビデオ)とメッシュサーフェスとの間のマッピングは、マッピング情報によって定義される。
【0125】
本開示の一態様によると、3Dドメイン内のメッシュのサーフェスを2Dドメインにマッピングするために、UVマッピングまたはメッシュパラメータ化と呼ばれるいくつかの手法が使用される。いくつかの例では、メッシュは3Dドメイン内のパッチにパーティション化される。パッチは、境界エッジで形成された境界を持つメッシュの連続したサブセットである。パッチの境界エッジは、パッチの1つのポリゴンのみに属し、パッチ内の隣接する2つのポリゴンによって共有されないエッジである。パッチ内の境界エッジの頂点は、パッチの境界頂点と呼ばれ、パッチ内の非境界頂点は、いくつかの例では、パッチの内部頂点と呼ばれることがある。
【0126】
いくつかの例では、オブジェクトのメッシュは接続された三角形によって形成され、メッシュはパッチにパーティション化されることができ、各パッチは接続された三角形のサブセットである。パッチの境界エッジは、パッチ内の1つの三角形のみに属し、パッチ内の隣接する三角形によって共有されないエッジである。パッチ内の境界エッジの頂点は、パッチの境界頂点と呼ばれ、パッチ内の非境界頂点は、いくつかの例では、パッチの内部頂点と呼ばれることがある。
【0127】
本開示の一態様によると、いくつかの例では、パッチはそれぞれ2D形状(UVパッチとも呼ばれる)にパラメータ化される。2D形状は、いくつかの例では、アトラスとも呼ばれるマップにパック(例えば、方向付けられ、配置される)されることができる。いくつかの例では、マップは、2Dイメージまたはビデオ処理技術を使用してさらに処理されることができる。
【0128】
一例では、UVマッピング技術は、3Dメッシュのパッチに対応する2DのUVアトラス(UVマップとも呼ばれる)と1つ以上のテクスチャアトラス(テクスチャマップとも呼ばれる)を生成する。UVアトラスは、3Dメッシュの3D頂点の2Dドメイン内の2Dポイントへの割り当てを含む(例えば、長方形)。UVアトラスは、3Dサーフェスの座標から2Dドメインの座標へのマッピングである。一例では、2D座標(u,v)におけるUVアトラス内のポイントは、3Dドメイン内の頂点の座標(x,y,z)によって形成される値を有する。一例では、テクスチャアトラスは、3Dメッシュの色情報を含む。例えば、2D座標(u,v)におけるテクスチャアトラス内のポイント(UVアトラスの(x,y,z)の3D値を有する)は、3Dドメイン内の(x,y,z)にあるポイントの色属性を指定する色を有する。いくつかの例では、3Dドメインの座標(x,y,z)は、3D座標、またはxyz座標と呼ばれ、2D座標(u,v)はuv座標またはUV座標と呼ばれる。
【0129】
本開示のいくつかの態様によると、メッシュ圧縮は、1つ以上の2Dマップ(いくつかの例では2Dアトラスとも呼ばれる)を使用してメッシュを表現し、次にイメージまたはビデオコーデックを使用して2Dマップをエンコードすることによって実行することができる。2Dマップの生成には、さまざまな手法を使用することができる。
【0130】
図9は、いくつかの例において、3Dメッシュ(910)の2Dアトラス(920)へのマッピングを示す図を示している。
図9の例では、3Dメッシュ(910)は、4つのパッチA~Dを形成する4つの頂点1~4を含む。パッチの各々は、頂点のセットおよび関連する属性情報を有する。例えば、パッチAは、三角形に接続された頂点1、2および3によって形成される;パッチBは、三角形に接続された頂点1、3および4によって形成される;パッチCは、三角形に接続された頂点1、2および4によって形成される;パッチDは、三角形に接続された頂点2、3および4によって形成される。いくつかの例では、頂点1、2、3および4は、それぞれの属性を有することができ、頂点1、2、3および4によって形成される三角形はそれぞれの属性を有することができる。
【0131】
一例では、3DのパッチA、B、CおよびDは、UVアトラス(920)またはマップ(920)とも呼ばれる2Dアトラス(920)などの2Dドメインにマッピングされる。例えば、パッチAはマップ(920)において2D形状(UVパッチとも呼ばれる)A’にマッピングされ、パッチBはマップ(920)において2D形状(UVパッチとも呼ばれる)B’にマッピングされ、パッチCはマップ(920)において2D形状(UVパッチとも呼ばれる)C’にマッピングされ、パッチDはマップ(920)において2D形状(UVパッチとも呼ばれる)D’にマッピングされる。いくつかの例では、3Dドメインの座標は(x,y,z)座標と呼ばれ、マップ(920)などの2Dドメインの座標はUV座標と呼ばれる。3Dメッシュ内の頂点は、マップ(920)内の対応するUV座標を有することができる。
【0132】
マップ(920)は、ジオメトリ情報を含むジオメトリマップであることができる、または、色、法線、テキスタイル、若しくはその他の属性情報を持つテクスチャマップであることができる、または、占有率情報を持つ占有率マップであることができる。
【0133】
図9の例では、各パッチは三角形で表されているが、パッチは、メッシュの連続したサブセットを形成するように接続されている任意の適切な数の頂点を含むことができることが留意される。いくつかの例では、パッチ内の頂点は三角形に接続される。パッチ内の頂点は、他の適切な形状を使用して接続できることが留意される。
【0134】
一例では、頂点のジオメトリ情報は、2Dジオメトリマップに格納することができる。例えば、2Dジオメトリマップは、2Dジオメトリマップ内の対応するポイントにおけるサンプリングポイントの(x,y,z)座標を格納する。例えば、(u,v)位置における2Dジオメトリマップのポイントは、3Dメッシュ内の対応するサンプリングポイントのx、yおよびz値にそれぞれ対応する3つの成分のベクトル値である。
【0135】
本開示の一態様によると、マップ内の領域は完全に占有されていない可能性がある。例えば、
図9では、2D形状A’、B’、C’およびD’の外側の領域は未定義である。デコード後の2D形状A’、B’、C’およびD’の外側の領域のサンプル値は破棄されることができる。場合によっては、占有率マップが、ピクセルがパッチに属しているか未定義であるかを識別するためのバイナリ値を格納するなど、ピクセルごとにいくつかの追加情報を格納するために使用される。
【0136】
本開示の一態様によれば、動的メッシュは、コンポーネント(ジオメトリ情報、接続情報、マッピング情報、頂点属性、属性マップ)の少なくとも1つが時間とともに変化するメッシュである。動的メッシュは、メッシュのシーケンス(メッシュフレームとも呼ばれる)によって記述することができる。動的メッシュは、時間の経過とともに変化する大量の情報を含む場合があるため、動的メッシュは大量のデータを必要とすることがある。メッシュの圧縮技術は、メッシュ表現におけるメディアコンテンツの効率的なストレージおよび伝送を可能にする。
【0137】
いくつかの例では、動的メッシュは、一定の接続情報、時変ジオメトリおよび時変頂点属性を有することができる。いくつかの例では、動的メッシュは、時変接続情報を有することができる。一例では、デジタルコンテンツ作成ツールは通常、時変属性マップおよび時変接続情報を持つ動的メッシュを生成する。いくつかの例では、動的メッシュを生成するためにボリューム取得技術が使用される。ボリューム取得技術は、特にリアルタイムの制約の下で、時変接続情報を持つ動的メッシュを生成することができる。
【0138】
いくつかの技術はメッシュ圧縮のために使用される。いくつかの例では、UVアトラスサンプリングおよびV-PCCがメッシュ圧縮のために使用されることができる。例えば、UVアトラスは、通常のグリッドサンプルでジオメトリイメージを生成するために、通常のグリッドでサンプリングされる。通常のグリッドサンプルの接続性を推測することができる。通常のグリッドサンプルは、ポイントクラウド内のポイントと見なすことができ、したがって、V-PCCコーデックなどのPCCコーデックを使用してコーディングされることができる。
【0139】
本開示の一態様によると、3Dメッシュ情報を効率的に圧縮するために、ジオメトリマップ、テクスチャマップ(いくつかの例では属性マップとも呼ばれる)、占有率マップなどのような2Dマップは、コーディングされる前にダウンサンプリングされ得る。
【0140】
図10は、いくつかの例におけるダウンサンプリングを示す図を示す。
図10では、マップ(1020)が水平方向および垂直方向の両方において2の倍率で(by a factor of 2)ダウンサンプリングされ、それに応じてダウンサンプリングされたマップ(1030)が生成される。ダウンサンプリングされたマップ(1030)の幅(例えば、水平方向のピクセルの数)はマップ(1020)の幅(例えば、水平方向のピクセルの数)の1/2であり、ダウンサンプリングされたマップ(1030)の高さ(例えば、垂直方向のピクセルの数)はマップ(1020)の高さ(例えば、垂直方向のピクセルの数)の1/2である。
【0141】
図10において、マップ(1020)は2D形状(UVパッチとも呼ばれる)A’、B’、C’およびD’を含み、ダウンサンプリングされたマップ(1030)は2D形状A’、B’、C’およびD’にそれぞれ対応するサンプリングされた2D形状A”、B”、C”およびD”を含む。ダウンサンプリングされたマップ(1030)は、次に、いくつかの例ではメッシュエンコーダ側のイメージまたはビデオエンコーダによってコーディングされる。
【0142】
いくつかの例では、メッシュデコーダ側で、ダウンサンプリングされたマップがデコードされる。ダウンサンプリングされたマップのデコード後、3Dメッシュを再構築するために、ダウンサンプリングされたマップが、元の解像度(例えば、垂直方向の元のピクセルの数と水平方向の元のピクセルの数)に復元される。
【0143】
概して、動的メッシュシーケンスは、時間の経過とともに変化する大量の情報からなり得るため、大量のデータを必要とする。2Dマップ(例えば、UVアトラス、属性マップ)に適用されるサンプリングステップは、メッシュ情報を表すために必要な帯域幅を減らすのに役立つことができる。しかし、サンプリングステップは、また、ダウンサンプリング中に3Dメッシュの重要なジオメトリ形状などの重要な情報を削除することができる。
【0144】
いくつかの例では、適応サンプリング技術が、重要な情報をあまり失うことなく2Dアトラス(2Dではマップとも呼ばれる)を処理するために使用することができる。適応サンプリング技術は、静的メッシュ(1つのメッシュフレームまたはメッシュコンテンツは時間の経過とともに変化しない)圧縮および動的メッシュ圧縮のために使用することができる。さまざまな適応サンプリング技術を、個別に、または任意の形式の組み合わせで適用することができる。以下の説明では、適応サンプリング手法が2Dアトラス(例えば、2Dのマップ)に適用され、これは、ジオメトリマップまたは属性(テクスチャ)マップのいずれか、または両方であることができる。
【0145】
図11は、本開示のいくつかの実施例によるメッシュ圧縮のためのフレームワーク(1100)の図を示している。フレームワーク(1100)は、メッシュエンコーダ(1110)およびメッシュデコーダ(1150)を含む。メッシュエンコーダ(1110)は、入力メッシュ(1101)(動的メッシュ処理の場合はメッシュフレーム)を受信し、入力メッシュ(1101)をビットストリーム(1145)にエンコードし、メッシュデコーダ(1150)は、再構築されたメッシュ(1195)(動的メッシュ処理の場合は再構築されたメッシュフレーム)を生成するためにビットストリーム(1145)をデコードする。
【0146】
メッシュエンコーダ(1110)は、コンピュータ、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲーミングデバイス、ARデバイス、VRデバイスなど、任意の適切なデバイスであることができる。メッシュデコーダ(1150)は、コンピュータ、クライアントコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲーミングデバイス、ARデバイス、VRデバイスなど、任意の適切なデバイスであることができる。ビットストリーム(1145)は、任意の適切な通信ネットワーク(図示せず)を介してメッシュエンコーダ(1110)からメッシュデコーダ(1150)に送信することができる。
【0147】
図11の例では、メッシュエンコーダ(1110)は、前処理モジュール(1111)、適応サンプリングモジュール(1120)、ビデオエンコーダ(1130)および一緒に結合された補助データエンコーダ(1140)を含む。ビデオエンコーダ(1130)は、3Dメッシュの表現における2Dマップなどのイメージまたはビデオデータをエンコードするように構成される。
【0148】
図11の例では、前処理モジュール(1111)は、UVアトラス(1105)を持つメッシュを生成するために入力メッシュ(1101)に対して適切な操作を実行するように構成される。例えば、前処理モジュール(1111)は、トラッキング、再メッシュ、パラメータ化、およびボクセル化を含む一連の操作を実行することができる。
図11の例では、一連の操作は、エンコーダのみであり、デコードプロセスの一部ではない。いくつかの例では、UVアトラス(1105)を持つメッシュは、頂点の3D位置情報、3D位置情報を2DにマッピングするUVアトラス、およびその他の2D属性マップ(例えば、2Dカラーマップなど)を含む。
【0149】
いくつかの例では、入力メッシュ(1101)は、UVアトラスを持つメッシュの形式であり、その後、前処理モジュール(1111)は、UVアトラスを持つメッシュ(1105)になるように入力メッシュ(1101)を転送することができることが留意される。
【0150】
適応サンプリングモジュール(1120)は、UVアトラスを持つメッシュ(1105)を受信し、適応サンプリングマップ(1125)を生成するように適応サンプリングを実行する。いくつかの例では、適応サンプリングモジュール(1120)は、マップ内の情報密度など、マップ内またはマップの異なる領域の特性を検出し、その特性に基づいてマップまたはマップの異なる領域をサンプリングするための異なるサンプリングレートを決定するために、さまざまな技術を使用することができる。次に、2Dマップは、適応サンプリングマップ(1125)を生成するように、異なるサンプリングレートに従ってサンプリングされることができる。適応サンプリングマップ(1125)は、ジオメトリマップ (いくつかの例ではジオメトリイメージとも呼ばれる)、占有率マップ、その他の属性マップ(例えば、カラーマップ)などを含むことができる。
【0151】
ビデオエンコーダ(1130)は、イメージエンコーディングおよび/またはビデオエンコーディング技術を使用して、適応サンプリングマップ(1125)をビットストリーム(1145)にエンコードすることができる。
【0152】
適応サンプリングモジュール(1120)は、また、適応サンプリングに使用される支援情報を示す補助データ(1127)を生成する。補助データエンコーダ(1140)は、補助データ(1127)を受信し、補助データ(1127)をビットストリーム(1145)にエンコードする。
【0153】
適応サンプリングモジュール(1120)および補助データエンコーダ(1140)の動作は、本開示でさらに説明される。
【0154】
図11の例では、ビットストリーム(1145)はメッシュデコーダ(1150)に提供される。メッシュデコーダ(1150)は、
図11に示すように一緒に結合されたビデオデコーダ(1160)、補助データデコーダ(1170)およびメッシュ再構築モジュール(1190)を含む。一例では、ビデオデコーダ(1160)は、ビデオエンコーダ(1130)に対応し、ビデオエンコーダ(1130)によってエンコードされたビットストリーム(1145)の一部をデコードし、デコードされたマップ(1165)を生成することができる。いくつかの例では、デコードされたマップ(1165)は、デコードされたUVマップ、1つ以上のデコードされた属性マップなどを含む。いくつかの例では、デコードされたマップ(1165)は、デコードされた占有率マップ(例えば、初期のデコードされたマップ)を含む。
【0155】
図11の例では、補助データデコーダ(1170)は、補助データエンコーダ(1140)に対応し、補助データエンコーダ(1140)によってエンコードされたビットストリーム(1145)の一部をデコードし、デコードされた補助データ(1175)を生成することができる。
【0156】
図11の例では、デコードされたマップ(1165)およびデコードされた補助データ(1175)がメッシュ再構築モジュール(1190)に提供される。メッシュ再構築モジュール(1190)は、デコードされたマップ(1165)およびデコードされた補助データ(1175)に基づいて再構築されたメッシュ(1195)を生成する。いくつかの例では、メッシュ構築モジュール(1190)は、再構築されたメッシュ(1195)内の頂点および、頂点に関連付けられたそれぞれの3D座標、UV座標、色などの頂点の情報を決定することができる。補助データデコーダ(1170)およびメッシュ再構築モジュール(1190)の動作は、本開示でさらに説明される。
【0157】
前処理モジュール(1111)、適応サンプリングモジュール(1120)、ビデオエンコーダ(1130)および補助データエンコーダ(1140)などのメッシュエンコーダ(1110)のコンポーネントは、さまざまな技術によってそれぞれ実装できることが留意される。一例では、コンポーネントは集積回路によって実装される。別の例では、コンポーネントは、1つ以上のプロセッサで実行できるソフトウェアを使用して実装される。
【0158】
ビデオデコーダ(1160)、補助データデコーダ(1170)、およびメッシュ再構築モジュール(1190)などのメッシュデコーダ(1150)のコンポーネントは、さまざまな手法でそれぞれ実装できることが留意される。一例では、コンポーネントは集積回路によって実装される。別の例では、コンポーネントは、1つ以上のプロセッサで実行できるソフトウェアを使用して実装される。
【0159】
いくつかの実施形態では、サンプリング適応はマップタイプに基づくことができる。いくつかの例では、適応サンプリングモジュール(1120)は、異なるタイプのマップに異なるサンプリングレートを適用することができる。例えば、ジオメトリマップおよび属性マップに異なるサンプリングレートを適用することができる。一例では、メッシュは、通常の形状および豊富なテクスチャ(abundance texture)を持つオブジェクトのモデルである。例えば、オブジェクトは、長方形の形状を有するが、豊富な色を有する。したがって、ジオメトリマップの情報密度は比較的低い。一例では、適応サンプリングモジュール(1120)は、(垂直方向および水平方向の両方において)ジオメトリマップに2:1の第1のサンプリングレートを適用し、(垂直方向および水平方向の両方において)テクスチャマップに1:1の第2のサンプリングレートを適用する。
【0160】
いくつかの例では、ある方向のA:Bのサンプリングレートは、その方向の元のマップのAピクセルからBサンプルを生成することを示す。例えば、水平方向の2:1のサンプリングレートは、水平方向の元のマップの2ピクセルごとに1サンプルを生成することを示す。垂直方向の2:1のサンプリングレートは、垂直方向の元のマップの2ピクセルごとに1サンプルを生成することを示す。
【0161】
いくつかの例では、サンプリングステップという用語が使用される。方向のサンプリングステップは、方向の隣接する2つのサンプリング位置間のピクセル数を示す。例えば、水平方向の2つのサンプリングステップは、水平方向の隣接するサンプリング位置間の2つのピクセルを示す。垂直方向の2つのサンプリングステップは、垂直方向の隣接するサンプリング位置間の2つのピクセルを示す。本開示では、サンプリングレートは、サンプリングステップにあたる(equivalent to)ことが留意される。例えば、2のサンプリングレート(例えば、2:1)は、隣接するサンプリング位置間の2つのピクセルにあたる。
【0162】
いくつかの実施形態では、サンプリング適応はマップ内のサブ領域に基づいている。異なるサンプリングレートをマップの異なる部分に適用することができる。いくつかの例では、ピクセルのいくつかの行は、保存される情報が少なく、これらの行に沿ってより大きいサンプリングレートを適用することができ、結果としてより少ない数のコーディングされるサンプル行をもたらす。いくつかの例では、ピクセルのいくつかの列は、保存される情報が少なく、これらの列に沿ってより大きいサンプリングレートを適用することができ、結果としてより少ない数のコーディングされるサンプル列をもたらす。他の領域では、サンプリング後の情報の損失を最小限に抑えるために、より小さいサンプリングレートが適用される。
【0163】
図12は、いくつかの例における適応サンプリングの図を示している。マップ(1220)は、いくつかのブロック行に分割され、各ブロック行は固定数のサンプル(ピクセル)行を含む。異なるサンプリングレートが、適応サンプリングされたマップ(1230)を生成するために、ブロック行に垂直方向に適用される。例えば、各ブロック行は、CTU行(CTUラインとも呼ばれる)であり、64行のサンプル (ピクセルとも呼ばれる)を含む。
図12の例では、マップ(1220)のブロック行0およびブロック行6に対して、2:1の第1のサンプリングレートが垂直方向において適用され、サンプリング後の適応サンプリングマップ(1230)のブロック行0およびブロック行6のそれぞれに対して32行のサンプルをもたらす。マップ(1220)のブロック行1から5に対して、1:1の第2のサンプリングレートが垂直方向において適用され、適応サンプリングマップ(1230)のブロック行1から5のそれぞれに対して64行のサンプルをもたらす。
【0164】
1:1のサンプリングレートが
図12では水平方向に適用されていることが留意される。
【0165】
いくつかの例では、適応サンプリングされたマップ(1230)は、ビデオエンコーダ(1130)などのイメージまたはビデオエンコーダによってエンコードされる。デコーダ側では、一例では、適応サンプリングされたマップ(1230)がデコードされる。デコード後、サンプルの上位32行は、元の解像度(64行のサンプルなど)に復元(アップサンプリング)される。サンプルの下位32行は、元の解像度(64行のサンプルなど)に復元(アップサンプリング)される。
【0166】
他のいくつかの例では、3Dメッシュの2D表現でコーディングされるマップを、いくつかのサブ領域に分割することができる。マップ(例えば、ピクチャ)内のこのような分割の例は、スライス、タイル、タイルグループ、コーディングツリーユニットなどを含む。いくつかの例では、異なるサンプリングレートを異なるサブ領域に適用することができる。一例では、異なるサブ領域に関連付けられた異なるサンプリングレートを、3Dメッシュを伝送するビットストリームにおいてシグナリングすることができる。デコーダ側では、適応サンプリングマップのデコード後、各サブ領域は、サブ領域に関連付けられたサンプリングレートに従って、元の解像度に復元される。
【0167】
いくつかの例では、適応サンプリングされたマップの元の解像度への復元プロセスは、復元されたマップを生成する逆サンプリングプロセスと呼ばれる。逆サンプリングプロセスからの復元後、2Dアトラス形式の復元マップの出力を3Dメッシュ再構築に使用することができる。
【0168】
図12の例は、垂直方向の異なるブロック行への適応サンプリングを示しているが、同様の適応サンプリングを、水平方向の異なる列に適用することができる、または、垂直方向と水平方向の両方に適用することができる。
【0169】
いくつかの実施形態では、サンプリング適応はパッチに基づいている。いくつかの例では、マップ内の異なるパッチは異なるサンプリングレートを有することができる。
【0170】
図13は、いくつかの例における適応サンプリングの図を示している。高解像度の2Dアトラスなどのマップ(1320)は、第1の2D形状A’および第2の2D形状B’など、3Dメッシュ内のパッチに対応するUVパッチとも呼ばれる複数の2D形状を含む。
図13の例では、2:1の第1のサンプリングレートが、第1のサンプリングされた2D形状A”を生成するために垂直方向および水平方向の両方において第1の2D形状A’に適用される;1:1の第2のサンプリングレートが、第2のサンプリングされた2D形状B”を生成するために垂直方向および水平方向の両方において第2の2D形状B’に適用される。第1のサンプリングされた2D形状A”および第2のサンプリングされた2D形状B”は、適応サンプリングマップ(1330)と呼ばれる新しいマップに配置される。
【0171】
図13の例では、第1のサンプリングされた2D形状A”は第1の2D形状A’より小さく、第2のサンプリングされた2D形状B”は第2の2D形状B’と同じサイズである。適応サンプリングされたマップ(1330)は、ビデオエンコーダ(1130)などのイメージまたはビデオエンコーダによって、3Dメッシュを伝えるビットストリームにエンコードされる。いくつかの例では、サンプリングされた2D形状に関連付けられたサンプリングレートは、例えば補助データエンコーダ(1140)によって、3Dメッシュを伝えるビットストリームにエンコードされる。
【0172】
いくつかの例では、デコーダ側で、ビデオデコーダ(1160)などのイメージ/ビデオデコーダが、ビットストリームから適応サンプリングされたマップ(1330)などの初期マップをデコードする。さらに、サンプリングされた2D形状に関連するサンプリングレートは、例えば補助データデコーダ(1170)によって、ビットストリームからデコードされる。サンプリングされた2D形状に関連するサンプリングレートに従って、適応サンプリングされたマップ(1330)内のサンプリングされた2D形状が、復元されたマップを生成するように、元のサイズ(例えば、垂直方向および水平方向のピクセル数が同じ)に復元される。その後、復元されたマップは3Dメッシュ再構築に使用される。
【0173】
本開示の一態様によると、異なるマップタイプのためのサンプリングレート、異なるサブ領域のためのサンプリングレート、異なるパッチのためのサンプリングレートなどの適応サンプリング情報は、メッシュエンコーダ側およびメッシュデコーダ側において既知である。いくつかの例では、適応サンプリング情報は、3Dメッシュを伝えるビットストリームに適切にエンコードされる。したがって、メッシュデコーダおよびメッシュエンコーダは、同じ適応サンプリング情報に基づいて動作することができる。メッシュデコーダは、マップを正しいサイズに復元することができる。
【0174】
本開示の一態様によると、メッシュエンコーダ(1110)などのメッシュエンコーダは、2Dアトラスサンプリング(UVアトラスサンプリングとも呼ばれる)を実行することができる。例えば、適応サンプリングモジュール(1120)は、UVアトラス(1105)を持つメッシュを受信することができる。UVアトラス(1105)を持つメッシュの各頂点は、UVアトラス内に対応するポイントを有し、UVアトラス内の対応するポイントの位置はUV座標によって指定される。UVアトラスでは、対応するポイントは、3D空間内の頂点の3D座標(例:(x,y,z))を含むベクトル値を有することができる。さらに、UVアトラス(1105)を持つメッシュは、頂点に関連付けられた属性値を、1つ以上の属性マップ内のUV座標によって指定された位置のピクセルの属性値として格納する、1つ以上の属性マップを含む。例えば、カラーマップは、頂点の色を、カラーマップ内のUV座標によって指定された位置のピクセルの色として格納することができる。
【0175】
適応サンプリングモジュール(1120)は、UVアトラス(1105)を持つメッシュに適応サンプリング技術を適用し、例えば、サンプリングされたジオメトリマップ(サンプリングされたUVマップまたはサンプリングされたUVアトラスとも呼ばれる)、1つ以上のサンプリングされた属性マップ(いくつかの例ではテクスチャマップとも呼ばれる)などを含むことができる適応サンプリングされたマップ(1125)(いくつかの例では適応サンプリングアトラスとも呼ばれる)を出力することができる。いくつかの例では、適応サンプリングされたマップ(1125)は、サンプリングされた占有率マップを含む。
【0176】
本開示の一態様によると、同じサンプリングレート構成が、適応サンプリングマップを生成するために、ジオメトリマップ、属性マップ、占有率マップなどのさまざまなマップに適用されることができる。いくつかの例では、適応サンプリングモジュール(1120)は、(例えば、UVアトラス上のサンプリング位置に基づいて)UVアトラスにサンプリングすることによって、適応サンプリングされたマップ(1125)を生成することができる。適応サンプリングモジュール(1120)は、UVアトラス上のサンプリング位置を決定し、その後UVアトラス上のサンプリング位置に従って適応サンプリングされたマップを生成することができる。例えば、UVアトラス上のサンプリング位置が、例えばサンプリングレートに従って決定された後、適応サンプリングモジュール(1120)は、サンプリングされたマップ(1125)の各々におけるサンプリングされたポイントの位置を決定し、次に、サンプリングされたマップ(1125)内のそれぞれのサンプリングされたポイントの値を決定する。
【0177】
一例では、UVアトラス上のサンプリング位置が、メッシュの頂点によって定義されるポリゴンの内側にある場合、サンプリング位置が占有され、その後、サンプリング位置に対応するサンプリングされた占有率マップ内のサンプリングされたポイントが占有されるように設定される(例えば、サンプリングされた占有率マップ内のサンプリングされたポイントの値は「1」である)。しかし、サンプリング位置がメッシュの頂点によって定義されるポリゴンの内側にない場合、サンプリング位置は占有されず、その後、サンプリング位置に対応するサンプリングされた占有率マップ内のサンプリングされたポイントは占有されないように設定される(例えば、サンプリングされた占有率マップ内のサンプリングされたポイントの値は「0」である)。
【0178】
UVアトラス上の各占有されたサンプリング位置について、適応サンプリングモジュール(1120)は、占有されたサンプリング位置での3D(ジオメトリ)座標を決定し、決定された3D座標を、(サンプリングされたUVアトラスとも呼ばれる)サンプリングされたジオメトリマップ内の対応するサンプリングされたポイントのベクトル値として割り当てることができる。同様に、適応サンプリングモジュール(1120)は、占有されたサンプリング位置での属性値(例えば、色、普通など)を決定し、決定された属性値を、サンプリングされた属性マップ内の対応するサンプリングされたポイントの属性値として割り当てることができる。いくつかの例では、適応サンプリングモジュール(1120)は、関連するポリゴン頂点から補間することによって、占有されたサンプリング位置の3D座標および属性を決定することができる。
【0179】
一例では、メッシュは三角形によって形成される。サンプリング位置は、メッシュの3つの頂点によって定義される三角形の内側にあり、したがって、サンプリング位置は占有されたサンプリング位置である。適応サンプリングモジュール(1120)は、例えば三角形の3つの頂点の3D座標の加重平均3D座標(weighted average 3D coordinates)に従って、占有されたサンプリング位置における3D(ジオメトリ)座標を決定することができる。適応サンプリングモジュール(1120)は、加重平均3D座標を、サンプリングされたジオメトリマップ内の対応するサンプリングされたポイントのベクトル値になるように割り当てることができる。同様に、適応サンプリングモジュール(1120)は、例えば、三角形の3つの頂点の属性の加重平均属性値(例えば、加重平均カラー、加重平均法線など)に従って、占有されたサンプリング位置の属性値を決定することができる。適応サンプリングモジュール(1120)は、加重平均属性値をサンプリングされた属性マップ内の対応するサンプリングされたポイントの属性値になるように割り当てることができる。
【0180】
いくつかの例では、サンプリングレート(SR)は、2Dアトラス全体で一貫していることができる(例えば、ジオメトリマップ、属性マップなど)、u軸およびv軸のサンプリングレートは異なる場合がある。u軸およびv軸で異なるサンプリングレートを使用することは、異方性再メッシュ(anisotropic remeshing)を可能にする。
図12および
図13を参照して説明したように、いくつかの例では、2Dアトラスはスライスまたはタイルまたはパッチなどの複数の領域に分割することができ、複数の領域はそれぞれのサンプリングレートを有することができる。例えば、メッシュは接続された三角形で形成され、メッシュはいくつかのパッチに分割することができ、各パッチはメッシュ全体のサブセットを含む。異なるサンプリングレートを、例えば適応サンプリングモジュール(1120)によって、それぞれのパッチに適用することができる。
【0181】
本開示の一態様によれば、メッシュエンコーダ(1110)のようなメッシュエンコーダは、2Dアトラスの各領域について適切なサンプリングレートを決定することができる。
【0182】
いくつかの例では、適応サンプリングモジュール(1120)は、2Dアトラスにわたるサンプリングレート分布を決定することができる(例えば、ジオメトリマップ、属性マップなど)。例えば、適応サンプリングモジュール(1120)は、領域の特性に従って、領域に対して特定のサンプリングレート(SR)を決定することができる。一例では、特定のサンプリングレートは、領域の周波数スペクトルに基づいて決定される。例えば、リッチテクスチャ領域(rich-textured region)(または2Dアトラス全体)は、テクスチャ属性値において高い空間周波数成分を有することができ、適応サンプリングモジュール(1120)は、高い空間周波数成分に適したサンプリングレート(例えば、低いサンプリングレート、低いサンプリングステップ)をリッチテクスチャ領域に割り当てることができる。別の例では、高いアクティビティ(activity)を持つ領域(または2Dアトラス全体)は、座標(例えば、3D座標、UV座標)において高い空間周波数成分を含むことができ、適応サンプリングモジュール(1120)は、その高いアクティビティに適したサンプリングレート(例えば、低いサンプリングレート、低いサンプリングステップ)をその領域に割り当てることができる。別の例では、滑らかな領域(または2Dアトラス全体)は、テクスチャ属性値において高い空間周波数成分を欠くことができ、適応サンプリングモジュール(1120)は、滑らかな領域に適したサンプリングレート(例えば、高いサンプリングレート、高いサンプリングステップ)を割り当てることができる。別の例では、低いアクティビティを持つ領域(または2Dアトラス全体)は、座標(例えば、3D座標、UV座標)において高い空間周波数成分を欠くことができ、適応サンプリングモジュール(1120)は、その領域の低いアクティビティに適したサンプリングレート(例えば、高いサンプリングレート、低いサンプリングステップ)を割り当てることができる。
【0183】
本開示の一態様によると、サンプリングレートはオーバーサンプリング比(OR)パラメータで表すことができる。ORパラメータは、領域内のサンプリングポイントの数と領域内の元の頂点の数との間の比(ratio)として定義される。領域のORパラメータが1より大きい場合、ORパラメータは、元の頂点の数と比較して領域がオーバーサンプリングされていることを示す。領域のORパラメータが1より小さい場合、ORパラメータは、元の頂点の数と比較して領域がアンダーサンプリングされていることを示す。例えば、メッシュの領域が1000個の頂点からなり、その領域に特定のサンプリングレート(SR)を適用するとき、3000個のサンプリングポイントが得られる。この場合、領域のORパラメータはそのSRで3に等しい、すなわちOR(SR)=3。
【0184】
いくつかの実施形態では、適応サンプリングモジュール(1120)は、事前に定義されたターゲットORパラメータに最も近いORパラメータを達成するために、領域に対する最終的なサンプリングレートを決定するアルゴリズムを使用することができる。例えば、特定の領域i(例えば、iは特定の領域を識別するための領域インデックスである)に対して、ターゲットOR(TOR
iで示される)パラメータが特定の領域iに対して定義される。適応サンプリングモジュール(1120)は、式(1)によって示されるように、ターゲットOR(TOR
i)パラメータに最も近いORパラメータを生成するサンプリングレートとして特定の領域iの最終的なサンプリングレート(SR
iで示される)を決定することができる。
【数1】
【0185】
一例では、適応サンプリングモジュール(1120)は、複数のサンプリングレートを試すことができ、ターゲットORパラメータに最も近いORパラメータを生成する複数のサンプリングレートのちの1つを選択することができる。別の例では、適応サンプリングモジュール(1120)は、バイナリ検索アルゴリズムなどのアルゴリズムを使用して、サンプリングレートの検索範囲で検索を実行し、ターゲットORパラメータに最も近いORパラメータを生成する最終的なサンプリングレートを決定することができる。
【0186】
いくつかの実施形態では、適応サンプリングモジュール(1120)は、アルゴリズムを使用して、事前に定義されたしきい値(Th
0で示される)より小さい最大ORパラメータを達成することができる特定の領域i(例えば、iは特定の領域を識別するための領域インデックスである)に対する最終的なサンプリングレートを決定することができる。いくつかの例では、アルゴリズムは、比較的小さい(例えば、1:1)基本サンプリングレート(BSR)から開始し、反復サイクルを持つ反復プロセスを使用して最終的なサンプリングレートを決定する。現在のBSRをテストする各反復サイクルでは、領域に対するORパラメータが決定される。ORパラメータがしきい値Th
0より小さい場合、現在のBSRは特定の領域に対する最終的なサンプリングレートである。ORパラメータがしきい値Th
0より大きい場合、現在のBSRに基づいて新しいBSRが計算される。例えば、スケーリング係数(scaling factor)F
0(例えば、1より大きい)が、新しいBSRを決定するために現在のBSRに適用される。その後、新しいBSRが現在のBSRになり、反復プロセスは次の反復サイクルに進む。いくつかの例では、領域(i)の最終的なサンプリングレートを決定するプロセスは、式(2)のように決定される:
【数2】
ここで、SR
iは最終的なサンプリングレート、Th
0はORパラメータのしきい値、F
0>1はBSRを増加させるためのスケーリング係数である。したがって、BSRを持つORパラメータがしきい値Th
0より小さい場合、現在の領域は最終的なサンプリングレートとしてBSRを単に使用し、そうでない場合は最終的なサンプリングレートはスケーリング係数F
0によって変更される。プロセスは、OR(SR
i)がしきい値Th
0より小さくなるまで繰り返し実行することができる。
【0187】
いくつかの実施形態では、適応サンプリングモジュール(1120)は、アルゴリズムを使用して、第1の事前に定義されたしきい値(Th0で示される)より小さく、第2の事前に定義されたしきい値(Th1で示される)より大きいなど、特定の範囲でORパラメータを達成することができる特定の領域i(例えば、iは特定の領域を識別するための領域インデックスである)の最終的なサンプリングレート(SRi)を決定することができる。いくつかの例では、アルゴリズムは、任意の基本サンプリングレート(BSR)から開始し、反復サイクルによる反復プロセスを使用して最終的なサンプリングレートを決定する。現在のBSRをテストする各反復サイクルでは、特定の領域に対するORパラメータが決定される。ORパラメータが、第1の事前に定義されたしきい値Th0より小さく、Th1による第2の事前に定義されたしきい値より大きいなど、特定の範囲にある場合、現在のBSRは特定の領域に対する最終的なサンプリングレートである。しかし、ORパラメータが第1の事前に定義されたしきい値Th0より大きい場合、第1のスケーリング係数F0(例えば、1より大きい)が新しいBSRを決定するために現在のBSRに適用される。ORパラメータが第2の事前に定義されたしきい値Th1より小さい場合、第2のスケーリング係数(例えば、1より小さい)が新しいBSRを決定するために現在のBSRに適用される。その後、新しいBSRが現在のBSRになり、反復プロセスは次の反復サイクルに進む。
【0188】
いくつかの例では、領域iの最終的なサンプリングステップを決定するプロセスは式(3)のように決定される:
【数3】
ここで、BSRは基本サンプリングレート、Th
0は第1の事前に定義されたしきい値、Th
1は第2の事前に定義されたしきい値、F
0>1はBSRを増加させる第1のスケーリング係数、0<F
1<1はBSRを減少させる第2のスケーリング係数を示す。
【0189】
スケーリング係数F0およびF1は、領域ごとに異なる場合があることが留意される。BSRを持つORパラメータがしきい値(例えば、Th0およびTh1)によって定義された特定の範囲内にある場合、現在の領域は、BSRを最終的なサンプリングレートとして使用することができる。BSRを持つORパラメータがTh0以上の場合、最終的なサンプリングレートはスケーリング係数F0によって増加する。BSRを持つORパラメータがTh1以下の場合、最終的なサンプリングレートはスケーリング係数F1によって減少する。プロセスは、OR(SRi)がTh0およびTh1によって定義される範囲内になるまで反復的に実行することができる。
【0190】
本開示のいくつかの態様によると、適応サンプリングモジュール(1120)は、単一のマップに異なるサンプリングレート(または異なるサンプリングステップ)の領域を配置することができる。
【0191】
適応サンプリングレートが適用される場合、サンプリングされたマップ内のサンプリングされた領域のサイズは、元のUVアトラスと比較して、または均一なサンプリングレートが使用される場合と比較して、異なる比率で変化する可能性があることが留意される。適応サンプリングモジュール(1120)は、サンプリングされたマップ内に異なるサンプリングレートのサンプリングされた領域を配置し、サンプリングされた領域を互いに重複しないように保つことができ、したがって、サンプリングされたマップ内の各ポイントは特定の領域に一対一の対応を有する。
【0192】
いくつかの例では、適応サンプリングモジュール(1120)は、各サンプリングされた領域に対する境界ボックスを決定し、次いで境界ボックスに従ってサンプリングされた領域を配置することができる。一例では、元のUVアトラスの特定の領域について、u
minは特定の領域の頂点のすべてのうちの最小u座標であり、v
minは特定の領域の頂点のすべてのうちの最小v座標である。最小u座標および最小v座標に基づいて、適応サンプリングモジュール(1120)は、特定の領域に対応するサンプリングされた領域に対する境界ボックスを決定することができる。例えば、サンプリングされた領域に対する境界ボックスの左上隅を、サンプリングされたマップ内の(u
o、v
o)の位置に配置することができ、その位置は
【数4】
および
【数5】
によって計算することができ、SRは、u方向とv方向に同じサンプリングレートが使用されている場合に、特定の領域に適用されるサンプリングレートを示し、
【数6】
は、値Cよりも大きい最小整数を決定する天井関数を示す。
【0193】
いくつかの実施形態では、適応サンプリングモジュール(1120)は、サンプリングされた領域を特定の順序でサンプリングされたマップに1つずつ配置することができる。現在のサンプリングされた領域を配置するために、適応サンプリングモジュール(1120)は、位置(uo,vo)(例えば、現在のサンプリングされた領域の境界ボックスの左上隅)に従って、最初に現在のサンプリング領域を配置することができる。適応サンプリングモジュール(1120)が、現在のサンプリングされた領域がすでに配置されたサンプリングされた領域と重複していることを検出すると、適応サンプリングモジュール(1120)は、以前に配置されたサンプリングされた領域との重複を避けるように現在のサンプリングされた領域を配置する新しい位置を決定することができる。
【0194】
いくつかの例では、特定の検索ウィンドウおよび/または基準を定義することができ、適応サンプリングモジュール(1120)は、特定の検索ウィンドウおよび/または基準に従って現在のサンプリングされた領域を配置するための新しい位置((un,vn)で示される)を見つけることができる。いくつかの例では、新しい位置(un,vn)と元の位置(uo,vo)との間のオフセット(UVオフセットとも呼ばれる)を、再構築のためにエンコーダ側からデコーダ側にシグナリングすることができることが留意される。
【0195】
いくつかの実施形態では、サンプリングされた領域は、重複しないだけでなく、領域間に一定の量のギャップを有するように配置される。例えば、各サンプリングされた領域は、他のサンプリングされた領域に対して最低10ピクセルの距離を有することを必要とされ得る。サンプリングされた領域間の間隔はさまざまな手法で定義できることが留意される。いくつかの例では、サンプリングされた領域間の最小距離を、最小水平距離l0、および最小垂直距離l1によって定義することができる。
【0196】
本開示のいくつかの態様は、メッシュ圧縮のための適応サンプリングのためのシグナリング技術(signaling techniques)も提供する。
【0197】
いくつかの実施形態では、メッシュの異なる領域のサンプリングレートを、メッシュの情報を伝えるビットストリームでシグナリングすることができる。サンプリングレートは、ビットストリーム内の異なるレベルでシグナリングされることができることが留意される。一例では、サンプリングレートは、メッシュフレームのシーケンスを含むメッシュシーケンス全体のシーケンスヘッダーでシグナリングされることができる。別の例では、サンプリングレートは、(ピクチャのグループ(GOP)と同様の概念である)メッシュフレームのグループのグループヘッダーでシグナリングされることができる。別の例では、サンプリングレートは、各メッシュフレームのフレームヘッダーでシグナリングされることができる。別の例では、メッシュフレーム内のスライスのサンプリングレートが、スライスのスライスヘッダーでシグナリングされる。別の例では、メッシュフレーム内のタイルのサンプリングレートが、タイルのタイルヘッダーでシグナリングされる。別の例では、メッシュフレーム内のパッチのサンプリングレートが、パッチのパッチヘッダーでシグナリングされる。
【0198】
具体的には、いくつかの実施形態では、ビットストリーム内の異なるレベルで適応サンプリング方法が適用されているかどうかを示すために、制御フラグを通知シグナリングすることができる。一例では、制御フラグが、メッシュシーケンス全体のシーケンスヘッダーでシグナリングされる。別の例では、制御フラグが、メッシュフレームのグループのグループヘッダーでシグナリングされる。別の例では、制御フラグが、各メッシュフレームのフレームヘッダーでシグナリングされる。別の例では、メッシュフレーム内のスライスの制御フラグが、スライスのスライスヘッダーでシグナリングされる。別の例では、メッシュフレーム内のタイルの制御フラグが、タイルのタイルヘッダーでシグナリングされる。別の例では、メッシュフレーム内のパッチの制御フラグが、パッチのパッチヘッダーでシグナリングされる。あるレベルにおける制御フラグが真(true)の場合、適応サンプリングがそのレベルにおいて有効になり、適応サンプリングレートが適用される可能性がある。あるレベルにおける制御フラグが偽(false)の場合、適応サンプリングは無効になり、均一なサンプリングレートがそのレベルにおいて適用される。
【0199】
いくつかの例では、制御フラグは1ビットを含み、さまざまな手法でコーディングすることができる。一例では、制御フラグは、固定または更新された確率でエントロピーコーディング(例えば、算術コーディングおよびハフマンコーディング)によってコーディングされる。別の例では、制御フラグは、より複雑でないコーディング技術によってコーディングされる(バイパスコーディングと呼ばれる)。
【0200】
いくつかの例では、適応サンプリングが有効かどうかに関係なく、基本サンプリングレートをシグナリングすることができる。適応サンプリングが有効になっている場合、基本サンプリングレートを予測子として使用することができ、各領域は、その領域の実際のサンプリングレートを示すために、基本サンプリングレートとの差をシグナリングすることができる。適応サンプリングが無効になっている場合、基本サンプリングレートを、適切なレベルのコンテンツ全体で均一なサンプリングレートとして使用することができる。
【0201】
基本サンプリングレートを、ビットストリーム内のさまざまなレベルでシグナリングすることもできる。一例では、基本サンプリングレートを、メッシュシーケンス全体のシーケンスヘッダーでシグナリングすることができる。別の例では、基本サンプリングレートを、メッシュフレームのグループのグループヘッダーでシグナリングすることができる。別の例では、基本サンプリングレートを、各メッシュフレームのフレームヘッダーでシグナリングすることができる。別の例では、メッシュフレーム内のスライスの基本サンプリングレートが、スライスのスライスヘッダーでシグナリングされる。別の例では、メッシュフレーム内のタイルの基本サンプリングレートが、タイルのタイルヘッダーでシグナリングされる。別の例では、メッシュフレーム内のパッチの基本サンプリングレートが、パッチのパッチヘッダーでシグナリングされる。
【0202】
いくつかの例では、基本サンプリングレートは、固定長または可変長の表現(例えば、固定kビット表現またはk次指数ゴロム(k-ordered Exp-Golomb)表現)によって2進数化することができ、各ビットは、固定または更新された確率でエントロピーコーディング(例えば、算術コーディングおよびハフマンコーディング)によってコーディングされることができる、または、複雑さの少ないバイパスコーディングによってコーディングされることができる。
【0203】
本開示の一態様によると、適応サンプリングが有効になっている場合、メッシュフレーム内の領域のサンプリングレートが適切にシグナリングされる。いくつかの例では、メッシュフレーム全体の領域の数が、シグナリングされることができる、または、導出されることができる(例えば、CTU行数、タイル数、パッチ数など)。
【0204】
本開示の一態様によると、領域のサンプリングレートを、予測なしにシグナリングすることができる。一例では、各領域(または2Dアトラス全体)のサンプリングレートを、予測なしに直接シグナリングすることができる。別の例では、各領域(または2Dアトラス全体)のサンプリングレートは、エンコーダとデコーダの両方によって知られている事前に確立されたサンプリングレートのセットから選択されることができる。特定のサンプリングレートのシグナリングは、事前に確立されたレートセット内の特定のサンプリングレートのインデックスをシグナリングすることによって実行されることができる。例えば、事前に確立されたサンプリングステップのセットは、(2ピクセルごと、4ピクセルごと、8ピクセルごとなど)を含むことができる。インデックス1は、2ピクセルごとのサンプリングレート(例えば、2:1)を示すようにシグナリングされることができる。インデックス2は、4ピクセルごとのサンプリングレート(例えば、4:1)を示すようにシグナリングされることができる。インデックス3は、8ピクセルごとのサンプリングレート(例えば、8:1)を示すようにシグナリングされることができる。
【0205】
本開示の別の態様によると、領域のサンプリングレートを予測することができる。任意の適切な予測技術を使用できることが留意される。
【0206】
一例では、メッシュフレームの各領域(または2Dアトラス全体)のサンプリングレートを、事前に確立されたレートセットから予測することができる。別の例では、メッシュフレームの各領域(または2Dアトラス全体)のサンプリングレートを、同じフレームの他の既にコーディングされた領域において以前に使用されたサンプリングレートから予測することができる。別の例では、メッシュフレームの各領域(または2Dアトラス全体)のサンプリングレートを、他の既にコーディングされたメッシュフレームにおいて以前に使用されたサンプリングレートから予測することができる。
【0207】
本開示の別の態様によると、各領域(または2Dアトラス全体)のサンプリングレートを、予測と直接シグナリングの両方が許可される方法で決定することができる。一例では、シンタックスを、サンプリングレートが予測されるか直接シグナリングされるかを示すように構造化することができる。シンタックスがサンプリングレートを予測することを示している場合、サンプリングレートを予測するためにどの予測子(predictor)を使用するかは、例えば別のシンタックスによってさらにシグナリングされる。シンタックスがサンプリングレートを直接シグナリングされることを示している場合、サンプリングレートの値は例えば別のシンタックスによってシグナリングされる。
【0208】
いくつかの例では、サンプリングレートが直接(サンプリングレートをシグナリングする、または、サンプリングレートを指すインデックスをシグナリングすることによって)シグナリングされる場合、サンプリングレートまたはサンプリングレートを指すインデックスは、固定長または可変長表現(例えば、固定kビット表現またはk次指数ゴロム表現)によって2値化されることができ、各ビットは、固定または更新された確率でエントロピーコーディング(例えば、算術コーディングおよびハフマンコーディング)によって、または複雑さの低いバイパスコーディングによってコーディングされることができる。
【0209】
いくつかの例では、サンプリングレートが予測によってシグナリングされる場合、予測残差をシグナリングすることができる。予測残差は、固定長表現または可変長表現(例えば、固定kビット表現またはk次指数ゴロム表現)によって2値化されることができ、各ビットは、固定確率または更新確率でエントロピーコーディング(例えば、算術コーディングおよびハフマンコーディング)によってコーディングされることができる、または、複雑度の低いバイパスコーディングによってコーディングされることができる。例えば、予測残差の符号ビットはバイパスコーディングによってコーディングされることができ、予測残差の絶対値は更新された確率でエントロピーコーディングによってコーディングされることができる。
【0210】
本開示のいくつかの態様によると、適応サンプリングが有効になっている場合、UV座標のオフセット(UVオフセットとも呼ばれる)、すなわち、メッシュフレーム内の各領域のoffsetu=uo-unおよびoffsetv=vo-vnは、メッシュフレームを伝えるビットストリームでコーディングされることができる。いくつかの例では、メッシュフレーム全体の領域の数をシグナリングまたは導出することができる(例えば、CTU行数、タイル数、パッチ数など)。
【0211】
本開示の一態様によると、領域のUVオフセットを予測なしにシグナリングすることができる。一例では、各領域のUVオフセットを予測なしに直接シグナリングすることができる。
【0212】
本開示の別の態様によれば、領域のUVオフセットを予測することができる。任意の適切な予測技術を使用できることが留意される。一例では、各領域のUVオフセットは、事前に確立されたUVオフセットセットから予測される。別の例では、各領域のUVオフセットは、同じメッシュフレームの他のすでにコーディングされた領域における以前に使用されたUVオフセットから予測される。別の例では、各領域のUVオフセットは、他のすでにコーディングされたメッシュフレームにおける以前に使用されたUVオフセットから予測される。
【0213】
本開示の別の態様によると、各領域のUVオフセットを、予測シグナリングおよび直接シグナリングの両方が許可される方法でシグナリングすることができる。いくつかの例では、シンタックスを、UVオフセットが予測されるか直接シグナリングされるかを示すために構造化することができる。UVオフセットが予測されることをシンタックスが示す場合、UVオフセットの予測にどの予測子を使用するかは、別のシンタックスによってさらにシグナリングされる。UVオフセットが直接シグナリングされることをシンタックスが示す場合、UVオフセットの値は別のシンタックスによってシグナリングされる。
【0214】
いくつかの例では、UVオフセットは直接シグナリングされ、UVオフセットの値は固定長または可変長表現(例えば、固定kビット表現またはk次指数ゴロム表現)によって二値化されることができ、各ビットは固定確率または更新確率でエントロピーコーディング(例えば、算術コーディングおよびハフマンコーディング)によってコーディングされることができる、または、複雑さを抑えたバイパスコーディングによってコーディングされることができる。一例では、UVオフセットの符号ビットは、バイパスコーディングによってコーディングされることができ、UVオフセットの絶対値は更新された確率でエントロピーコーディングによってコーディングされることができる。
【0215】
いくつかの例では、UVオフセットの符号ビットはサンプリングレートの値から推測または予測されることができる。例えば、領域のサンプリングレートが基本サンプリングレートよりも大きい場合、UVオフセットの符号ビットは正として推測または予測することができる。また、領域のサンプリングレートが基本サンプリングレートよりも小さい場合、UVオフセットの符号ビットは負として推測または予測することができる。領域のサンプリングレートが基本サンプリングレートと等しい場合、UVオフセットはゼロとして推測または予測することができる。
【0216】
いくつかの例では、UVオフセットを予測することができ、予測残差をシグナリングすることができる。例えば、予測残差は固定長または可変長表現(例えば、固定kビット表現またはk次指数ゴロム表現)によって二値化され、各ビットは、固定確率または更新確率でエントロピーコーディング(例えば、算術コーディングおよびハフマンコーディング)によってコーディングされることができる、または、複雑さの少ないバイパスコーディングによってコーディングされることができる。一例では、予測残差の符号ビットはバイパスコーディングによってコーディングされることができ、予測残差の絶対値は更新確率でエントロピーコーディングによってコーディングされることができる。
【0217】
本開示のいくつかの態様は、また、デコーダ側で使用するためのメッシュ再構築技術も提供する。メッシュ再構築技術は、メッシュ再構築モジュール(1190)などのメッシュ再構築モジュールで使用されることができる。
【0218】
いくつかの例では、デコードされたマップ(1165)は、デコードされた占有率マップを含み、メッシュ再構築モジュール(1190)は、デコードされた占有率マップ、デコードされたジオメトリマップおよび1つ以上のデコードされた属性マップを含むデコードされたマップ(1165)に従ってメッシュフレームを再構築することができる。いくつかの例では、デコードされた占有率マップは、デコードされたジオメトリマップおよびデコードされた属性マップと同じサンプリングレートを使用した適応サンプリングの結果であることができるサンプリングされた占有率マップに対応し、したがってデコードされた占有率マップはサンプリングされた領域を含むことが留意される。
【0219】
いくつかの例では、デコードされたマップ(1165)は占有率マップを含まず、ビットストリーム(1145)は、各領域の境界頂点を識別する情報、例えば補助データエンコーダ(1140)によってエンコードされた補助データを含む。補助データデコーダ(1170)は、領域の境界頂点を識別する情報をデコードすることができる。メッシュ再構築モジュール(1190)は、領域の境界頂点に基づいて、推側された占有率マップについての領域を推測することができる。いくつかの例では、推側された占有率マップは適応サンプリングで処理されていないことが留意される。メッシュ再構築モジュール(1190)は、推側された占有率マップと、デコードされたジオメトリマップおよび1つ以上のデコードされた属性マップを含むデコードされたマップ(1165)に従ってメッシュフレームを再構築することができる。
【0220】
本開示の一態様によると、メッシュ再構築モジュール(1190)は、メッシュフレーム内の頂点のUV座標を決定し、デコードされたマップ(1165)およびデコードされた補助データ(例えば、サンプリングレート、UVオフセット、境界頂点を識別する情報など)に基づいて、メッシュフレーム内の頂点の3D座標および属性値を決定することができる。
【0221】
いくつかの実施形態では、領域内の頂点のUV座標を決定するために、領域のサンプリングレート(SR)が、ビットストリーム(1145)からデコードされたシンタックス値に従って決定される。いくつかの例では、領域の(offsetu,offsetv)などのUVオフセットは、ビットストリーム(1145)からデコードされたシンタックス値に従って決定される。
【0222】
一例では、デコードされたマップ(1165)は、デコードされた占有率マップを含む。メッシュ再構築モジュール(1190)は、デコードされた占有率マップのサンプリングされた領域内の各占有ポイントに対応する頂点のUV座標を決定することができる。例えば、サンプリングされた領域内の座標(u
i,v
i)を持つ各占有ポイントについて、メッシュ再構築モジュール(1190)は、式(4)および式(5)に従って占有ポイントに対応する頂点のUV座標(U
i,V
i)を決定することができる:
【数7】
【0223】
別の例では、デコードされたマップ(1165)は、デコードされた占有率マップを含まない。メッシュ再構築モジュール(1190)は、領域の境界頂点に従って、推側された占有率マップ内の推測された領域を決定することができる。推測された領域内の占有ポイントに対応する頂点のUV座標は、推測された占有率マップの領域内の占有ポイントの位置によって直接推測されることができる。例えば、推測された占有率マップ内の占有ポイントは、特定のUV座標(Us,Vs)によって定義される位置を有し、特定のUV座標(Us,Vs)は、メッシュフレーム内の対応する頂点のUV座標である。
【0224】
いくつかの実施形態では、占有率マップ(例えば、デコードされた占有率マップ、推測された占有率マップ)上の各占有ポイントについて、メッシュ再構築モジュール(1190)は、メッシュフレーム上の頂点を復元することができ、デコードされたジオメトリマップおよびデコードされた属性マップ内の対応する位置に従って、対応するジオメトリ値(例えば、3D座標)および属性値を決定することができる。
【0225】
いくつかの実施形態では、領域内の頂点のジオメトリマップおよび属性マップ内の対応する位置を導出するために、領域のサンプリングレート(SR)は、ビットストリーム(1145)からデコードされたシンタックス値に従って決定される。いくつかの例では、領域の(offsetu,offsetv)などのUVオフセットは、ビットストリーム(1145)からデコードされたシンタックス値に従って決定される。
【0226】
一例では、デコードされたマップ(1165)は、デコードされた占有率マップを含む。デコードされた占有率マップのサンプリングされた領域内の座標(ui,vi)を持つ各占有ポイントについて、デコードされたジオメトリマップおよびデコードされた属性マップ内の対応する位置を(ui,vi)から直接導出することができる。例えば、サンプリングされた占有率マップを取得するために占有率マップに適用されるサンプリングレートは、ジオメトリマップ(サンプリングされたジオメトリマップを取得するため)および属性マップ(サンプリングされた属性マップを取得するため)に適用されるサンプリングレートと一致する。デコードされた占有率マップはサンプリングされた占有率マップに対応し、デコードされたジオメトリマップはサンプリングされたジオメトリマップに対応し、デコードされた属性マップはサンプリングされた属性マップに対応する。したがって、デコードされた占有率マップ内の占有ポイントは、デコードされたジオメトリマップおよびデコードされた属性マップ内で同じ座標を持つ対応するポイントを有することができる。
【0227】
別の例では、デコードされたマップ(1165)は、デコードされた占有率マップを含まない。メッシュ再構築モジュール(1190)は、領域の境界頂点に従って、推側された占有率マップ内の推測された領域を決定することができる。推測された領域内の座標(U
i,V
i)を持つ各占有ポイントについて、ジオメトリマップおよび属性マップ内の対応する位置は式(6)および式(7)で導出されることができる:
【数8】
【0228】
いくつかの実施形態では、メッシュ再構築モジュール(1190)は、占有された位置から推測することによって、頂点間の接続情報を推測することができる。いくつかの実施形態では、接続情報はビットストリーム(1145)で明示的にシグナリングされることができる。
【0229】
図14は、開示の実施形態によるプロセス(1400)の概要を示すフローチャートを示す。プロセス(1400)は、メッシュのエンコード処理中に使用することができる。様々な実施形態では、プロセス(1400)は処理回路によって実行される。いくつかの実施形態では、プロセス(1400)はソフトウェア命令で実装され、したがって、処理回路がソフトウェア命令を実行するとき、処理回路はプロセス(1400)を実行する。プロセスは、(S1401)においてスタートし、(S1410)に進む。
【0230】
(S1410)において、オブジェクトのサーフェスを表すポリゴンを持つメッシュフレームのデータ構造が受信される。メッシュフレームのデータ構造は、メッシュフレームの頂点をUVアトラスのUV座標に関連付けるUVアトラスを含む。
【0231】
(S1420)において、メッシュフレームの領域のそれぞれのサンプリングレートが、メッシュフレームの領域のそれぞれの特性に従って決定される。
【0232】
(S1430)において、メッシュフレームの領域のそれぞれのサンプリングレートが、UVアトラス上のサンプリング位置を決定するためにUVアトラスに適用される。
【0233】
(S1440)において、メッシュフレームの1つ以上のサンプリングされた2次元(2D)マップが、UVアトラス上のサンプリング位置に従って、生成される。
【0234】
(S1450)において、1つ以上のサンプリングされた2Dマップがビットストリームにエンコードされる。
【0235】
メッシュフレームの領域のそれぞれのサンプリングレートを決定するために、いくつかの例では、メッシュフレームの第1の領域の第1のサンプリングレートが、第1の領域の第1のサンプリング位置の数を制限する要件に従って決定される。一例では、第1のサンプリングレートは、ターゲット値に最も近いオーバーサンプリング比(OR)を達成するように決定される。ORは、第1のサンプリング位置の数と、元はメッシュフレームの第1の領域にあった頂点の数との間の比である。
【0236】
別の例では、第1のサンプリングレートは、比較的小さくなるように初期化され、オーバーサンプリング比(OR)が第1のしきい値より小さくなるまで調整される。ORは、第1のサンプリング位置の数と、元はメッシュフレームの第1の領域にあった頂点の数との間の比である。
【0237】
別の例では、オーバーサンプリング比(OR)が第1のしきい値より小さく、第2のしきい値より大きくなるまで、第1のサンプリングレートが調整される。ORは、第1のサンプリング位置の数と、元はメッシュフレームの第1の領域にあった頂点の数との間の比である。
【0238】
いくつかの例では、1つ以上のサンプリングされた2Dマップのサンプリングされた2Dマップは、UVアトラス上のサンプリング位置に対応するサンプリングされたポイントを持つサンプリングされた領域を含む。一例では、サンプリング位置がポリゴン内にある場合、そのサンプリング位置は占有されていると決定される。そして、サンプリング位置に対応するサンプリングされた2Dマップ内のサンプリングされた点の属性が、そのポリゴンの頂点の属性に従って決定される。
【0239】
いくつかの例では、1つ以上のサンプリングされた2Dマップを形成するために、
メッシュの領域に対応するサンプリングされた領域が、メッシュの領域のそれぞれのサンプリングレートに基づいて決定されることができる。次に、サンプリング領域は、サンプリングされたマップを形成するよう重複しない構成に配置される。一例では、サンプリングされた領域は、1つずつ配置される。一例では、サンプリングされた領域の境界ボックスが決定され、サンプリングされた領域は、境界ボックスの1つ以上の角が既に配置されている他のサンプリングされた領域と重複しないように配置される。
【0240】
例えば、サンプリング領域を重複しない構成に配置するために、サンプリング領域のサブセットが重複しない構成に配置された後、現在のサンプリング領域について、初期配置位置が現在のサンプリングされた領域のサンプリングレートに従って決定される。その後、初期配置位置の現在のサンプリングされた領域がサンプリングされた領域のサブセットと重複するかどうかが決定される。
【0241】
いくつかの例では、初期配置位置へのオフセットが、サンプリングされた領域のサブセットと重複する初期配置位置における現在のサンプリングされた領域に応じて決定される。オフセットは、現在のサンプリングされた領域がサンプリングされた領域のサブセットと重複しないようにすることを可能にする。
【0242】
いくつかの例では、重複しない構成は、サンプリングされた領域間の最小距離要件を含む。
【0243】
いくつかの実施形態では、領域にそれぞれ関連付けられたサンプリングレートは、さまざまな技術によってエンコードされる。一例では、第1の領域の第1のサンプリングレートの値が、ビットストリームに直接エンコードされる。別の例では、第1のインデックスがビットストリームにエンコードされ、第1のインデックスは、サンプリングレートのセットからの第1のサンプリングレートの選択を示す。別の例では、事前に確立されたサンプリングレートのセットから第1のサンプリングレートを予測するための予測子を示すシンタックスがビットストリームにエンコードされる。別の例では、メッシュフレームのエンコードされた領域に対して以前に使用されたサンプリングレートから第1のサンプリングレートを予測するための予測子を示すシンタックスがビットストリームにエンコードされる。別の例では、メッシュフレームの前にエンコードされた別のメッシュフレームのエンコードされた領域に対して以前に使用されたサンプリングレートから第1のサンプリングレートを予測するための予測子を示すシンタックスがビットストリームにエンコードされる。
【0244】
いくつかの実施形態では、エンコーダ側は、第1の領域に関連付けられた第1のサンプリングレートをシグナリングすることまたは第1のサンプリングレートを予測することを決定し、その決定を示す第1のシンタックス値をビットストリームにエンコードすることができる。一例では、第1のサンプリングレートをシグナリングする決定に応答して、第1のサンプリングレートの値がビットストリームに直接エンコードされる。別の例では、第1のサンプリングレートをシグナリングする決定に応答して、インデックスがビットストリームにエンコードされ、インデックスはサンプリングレートのセットからの第1のサンプリングレートの選択を示す。
【0245】
いくつかの例では、第1のサンプリングレートを予測する決定に応答して、第2のシンタックスがビットストリームにエンコードされる。第2のシンタックスは、第1のサンプリングレートを予測するために使用する予測子を示す。さらに、一例では、予測残差がビットストリームにエンコードされる。予測残差は、第1のサンプリングレートと予測子のサンプリングレートとの間の差である。
【0246】
いくつかの例では、基本サンプリングレートがビットストリームにエンコードされる。基本サンプリングレートは、適応サンプリングが使用されているかどうかに関係なく、任意の適切なレベルでエンコードされることができる。基本サンプリングレートは、一例では予測子として使用することができる。
【0247】
いくつかの例では、制御フラグが、メッシュフレームへの適応2Dアトラスサンプリングの適用がいつ使用されるかを示すためにエンコードされる。
【0248】
いくつかの例では、メッシュフレームの第1の領域に関連付けられた第1のUVオフセットが決定される。第1のUVオフセットは、他のサンプリング領域との重複を避けるために、第1の領域に対応する第1のサンプリング領域に適用される。1つ以上のシンタックスをビットストリームにエンコードすることができ、1つ以上のシンタックスで第1のUVオフセットを示すことができる。一例では、第1のUVオフセットの値を持つシンタックスがビットストリームに直接エンコードされる。別の例では、事前に確立されたUVオフセットのセットに基づいて第1のUVオフセットを予測する予測子を示すシンタックスがビットストリームにエンコードされる。別の例では、メッシュフレームのエンコードされた領域に対して以前に使用されたUVオフセットに基づいて第1のUVオフセットを予測する予測子を示すシンタックスがビットストリームにエンコードされる。別の例では、メッシュフレームの前にエンコードされた別のメッシュフレームのエンコードされた領域に対して以前に使用されたUVオフセットに基づいて第1のUVオフセットを予測する予測子を示すシンタックスがビットストリームにエンコードされる。
【0249】
いくつかの例では、ビットストリームへの第1のUVオフセットを予測する予測子を示すシンタックスがビットストリームにエンコードされ、予測残差がビットストリームにエンコードされ、予測残差は、第1のUVオフセットと予測子のUVオフセットとの間の差である。
【0250】
その後、プロセスは(S1499)に進み、終了する。
【0251】
プロセス(1400)は、適切に適応させることができる。プロセス(1400)のステップ(複数可)は、変更および/または省略することができる。追加のステップ(複数可)を追加することができる。任意の適切な実装順序を使用することができる。
【0252】
図15は、本開示の一実施形態によるプロセス(1500)の概要を示すフローチャートを示している。プロセス(1500)は、メッシュのデコードプロセス中に使用することができる。様々な実施形態では、プロセス(1500)は処理回路によって実行される。いくつかの実施形態では、プロセス(1500)はソフトウェア命令で実装され、shいたがって、処理回路がソフトウェア命令を実行するとき、処理回路はプロセス(1500)を実行する。プロセスは(S1501)においてスタートし、(S1510)に進む。
【0253】
(S1510)において、2Dの複数のマップが、メッシュフレームを伝えるビットストリームからデコードされる。メッシュフレームは、ポリゴンを持つオブジェクトのサーフェスを表し、2Dの複数のマップは、少なくともデコードされたジオメトリマップとデコードされた属性マップとを含み、適応2Dアトラスサンプリングが適用されている。
【0254】
(S1520)において、少なくとも第1のサンプリングレートおよび第2のサンプリングレートが、ビットストリームのシンタックスに従って決定される。第1のサンプリングレートは適応2Dアトラスサンプリング中にメッシュフレームの第1の領域に適用され、第2のサンプリングレートは適応2Dアトラスサンプリング中にメッシュフレームの第2の領域に適用される。第1のサンプリングレートは第2のサンプリングレートとは異なる。
【0255】
(S1530)において、複数のマップに基づいて、少なくとも、メッシュフレームの第1の頂点が第1のサンプリングレートに従って再構築され、メッシュフレームの第2の頂点が第2のサンプリングレートに従って再構築される。
【0256】
いくつかの例では、複数のマップは、適応2Dアトラスサンプリングが適用されているデコードされた占有率マップを含む。第1のサンプリングレートに従って少なくとも第1の頂点を再構築するために、メッシュフレームの第1の領域に対応するデコードされた占有率マップの第1のサンプリングされた領域内の占有されたポイントの初期UV座標が決定され、占有されたポイントは第1の頂点に対応する。次に、第1の頂点の復元されたUV座標が、初期UV座標および第1のサンプリングレートに基づいて決定される。一例では、第1のサンプリングされた領域の第1のUVオフセットが、ビットストリームからのシンタックスに従って決定される。第1の頂点の復元されたUV座標は、初期UV座標、第1のサンプリングレートおよび第1のUVオフセットに基づいて決定される。さらに、一例では、第1の頂点の復元された3D座標は、初期UV座標のデコードされたジオメトリマップ内のピクセルに従って決定され、第1の頂点の復元された属性値は、初期UV座標のデコードされた属性マップ内のピクセルに従って決定される。
【0257】
いくつかの実施形態では、複数のマップは占有率マップを欠いている。第1のサンプリングレートに従って少なくとも第1の頂点を再構築するために、第1の領域の第1の境界頂点を示す情報がビットストリームからデコードされる。第1の領域に対応する占有率マップの第1の占有された領域は、第1の境界頂点に従って推側される。第1の占有された領域の占有されたポイントのUV座標が取得され、占有されたポイントは第1の頂点に対応することができる。UV座標は、少なくとも第1のサンプリングレートに従ってサンプリングされたUV座標に変換される。複数のマップに基づいて、第1の頂点が、サンプリングされたUV座標に従って再構築される。
【0258】
いくつかの例では、第1の頂点を再構築するために、第1の頂点の復元された3D座標は、サンプリングされたUV座標におけるデコードされたジオメトリマップ内のピクセルに従って決定され、第1の頂点の復元された属性値は、サンプリングされたUV座標におけるデコードされた属性マップ内のピクセルに従って決定される。
【0259】
いくつかの例では、UV座標をサンプリングされたUV座標に変換するために、第1の領域に関連付けられた第1のUVオフセットがビットストリームからデコードされ、UV座標は、第1のサンプリングレートおよび第1のUVオフセットに従ってサンプリングされたUV座標に変換される。
【0260】
いくつかの実施形態では、少なくとも第1のサンプリングレートおよび第2のサンプリングレートをさまざまな技法によって決定することができる。一例では、少なくとも第1のサンプリングレートおよび第2のサンプリングレートの値がビットストリームから直接デコードされる。別の例では、少なくとも第1のインデックスおよび第2のインデックスがビットストリームからデコードされ、第1のインデックスはサンプリングレートのセットからの第1のサンプリングレートの選択を示し、第2のインデックスはサンプリングレートのセットからの第2のサンプリングレートの選択を示す。別の例では、第1のサンプリングレートは事前に確立されたレートのセットに基づいて予測される。別の例では、第1のサンプリングレートは、メッシュフレームのデコードされた領域に対して以前に使用されたサンプリングレートに基づいて予測される。別の例では、第1のサンプリングレートは、メッシュフレームの前にデコードされた別のメッシュフレームのデコードされた領域に対して以前に使用されたサンプリングレートに基づいて予測される。
【0261】
いくつかの実施形態では、第1のサンプリングレートを決定するために、第1のサンプリングレートがシグナリングされるか予測されるかを示す第1のシンタックス値がビットストリームからデコードされる。一例では、第1のサンプリングレートがシグナリングされることを示す第1のシンタックス値に応答して、第1のサンプリングレートの値がビットストリームから直接デコードされる。別の例では、第1のサンプリングレートがシグナリングされることを示す第1のシンタックス値に応答して、インデックスがビットストリームからデコードされる。インデックスは、サンプリングレートのセットからの第1のサンプリングレートの選択を示す。
【0262】
いくつかの例では、第1のサンプリングレートが予測されることを示す第1のシンタックス値に応答して、第2のシンタックスがビットストリームからデコードされ、第2のシンタックスは第1のサンプリングレートを予測するために使用する予測子を示す。さらに、一例では、予測残差が、ビットストリームからデコードされたシンタックス値に基づいて決定され;第1のサンプリングレートは、予測子および予測残差に基づいて決定される。
【0263】
いくつかの例では、基本サンプリングレートがビットストリームからデコードされ、少なくとも第1のサンプリングレートおよび第2のサンプリングレートを、基本サンプリングレートに従って決定することができる。例えば、基本サンプリングレートは予測子として使用される。
【0264】
いくつかの例では、メッシュフレームへの適応2Dアトラスサンプリングの適用を示す制御フラグがビットストリームからデコードされる。次に、メッシュフレーム内の領域の数と、それぞれの領域のサンプリングレートが、例えばビットストリーム内のシンタックスに基づいて決定される。
【0265】
いくつかの例では、第1の領域に関連付けられた第1のUVオフセットがビットストリームから決定され、複数のマップに基づいて、メッシュフレームの第1の頂点が第1のサンプリングレートおよび第1のUVオフセットに従って再構築される。一例では、第1の領域に関連付けられた第1のUVオフセットを決定するために、第1のUVオフセットの値がビットストリームから直接デコードされる。別の例では、第1のUVオフセットは、事前に確立されたUVオフセットのセットに基づいて予測される。別の例では、第1のUVオフセットは、メッシュフレームのデコードされた領域に対して以前に使用されたUVオフセットに基づいて予測される。別の例では、第1のUVオフセットは、メッシュフレームの前にデコードされた別のメッシュフレームのデコードされた領域に対して以前に使用されたUVオフセットに基づいて予測される。
【0266】
いくつかの実施形態では、第1の領域に関連付けられた第1のUVオフセットを決定するために、第1のUVオフセットがシグナリングされるか予測されるかを示す第1のシンタックス値がビットストリームからデコードされる。一例では、第1のUVオフセットがシグナリングされることを示す第1のシンタックス値に応答して、第1のUVオフセットの値がビットストリームから直接デコードされる。一例では、第1のUVオフセットの符号が、第1のサンプリングレートと基本サンプリングレートとの比較に基づいて推側される。
【0267】
別の例では、第1のUVオフセットが予測されることを示す第1のシンタックス値に応答して、第2のシンタックスがビットストリームからデコードされ、第2のシンタックスは第1のUVオフセットを予測するために使用する予測子を示す。さらに、予測残差が、ビットストリームからデコードされたシンタックス値に基づいて決定され、第1のUVオフセットは予測子および予測残差に基づいて決定される。
【0268】
その後、プロセスは(S1599)に進み、終了する。
【0269】
プロセス(1500)は、適切に適応させることができる。プロセス(1500)のステップ(複数可)は、変更および/または省略することができる。追加のステップ(複数可)を追加することができる。任意の適切な実装順序を使用することができる。
【0270】
本開示で開示された技術は、別々にまたは任意の順序で組み合わせて使用され得る。さらに、各技術(例えば、方法、実施形態)、エンコーダ、およびデコーダは、処理回路(例えば、1つ以上のプロセッサまたは1つ以上の集積回路)によって実装され得る。いくつかの例では、1つ以上のプロセッサが、非一時的コンピュータ可読媒体に格納されているプログラムを実行する。
【0271】
上記の技術は、コンピュータ可読命令を使用しかつ1つ以上のコンピュータ可読媒体に物理的に格納されているコンピュータソフトウェアとして実装することができる。例えば、
図16は、開示された主題の特定の実施形態を実装するのに適したコンピュータシステム(1600)を示す。
【0272】
コンピュータソフトウェアは、1つ以上の中央演算処理装置(CPU)、グラフィクス処理ユニット(GPU)などによって、直接に、または解釈、マイクロコード実行などを通じて、実行されることができる命令を含むコードを生成するように、アセンブリ、コンパイル、リンキングなどのメカニズムの対象となり得る任意の適切なマシンコードまたはコンピュータ言語を使用してコーディングされることができる。
【0273】
命令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーミングデバイス、モノのインターネットデバイスなどを含む様々なタイプのコンピュータまたはそのコンポーネントで実行することができる。
【0274】
コンピュータシステム(1600)に関して
図16に示されるコンポーネントは、本質的に例示であり、本開示の実施形態を実装するコンピュータソフトウェアの使用または機能の範囲に関して如何なる限定も示唆することを意図しない。コンポーネントの構成は、コンピュータシステム(1600)の例示的な実施形態において説明されるコンポーネントのうちのいずれか1つまたは組み合わせに関して何らかの依存または要件を有するものとして解釈されるべきではない。
【0275】
コンピュータシステム(1600)は、特定のヒューマンインターフェース入力デバイスを含み得る。このようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(例えば、キーボード、スワイプ、データグロープ動作)、音声入力(例えば、声、拍手)、視覚入力(例えば、ジェスチャ)、嗅覚入力(図示せず)を通じた一人以上のユーザによる入力に応答し得る。ヒューマンインターフェースデバイスはまた、音声(例えば、発話、音楽、周囲音)、画像(例えば、スキャンされた画像、静止画カメラから取得された写真画像)、ビデオ(例えば、2次元ビデオ、立体視ビデオを含む3次元ビデオ)などの、人による意識的な入力に必ずしも直接には関係しない特定のメディアをキャプチャするために使用されることができる。
【0276】
入力ヒューマンインターフェースデバイスは、キーボード(1601)、マウス(1602)、トラックパッド(1603)、タッチスクリーン(1610)、データグローブ(図示せず)、ジョイスティック(1605)、マイク(1606)、スキャナ(1607)、カメラ(1608)(各1つしか描かれていない)のうちの1つ以上を含み得る。
【0277】
コンピュータシステム(1600)はまた、特定のヒューマンインターフェース出力デバイスを含み得る。このようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、および匂い/味を通じて一人以上のユーザの感覚を刺激し得る。このようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(1610)、データグローブ(図示せず。)、またはジョイスティック(1605)による触覚フィードバック、しかし、入力デバイスとして機能しない触覚フィードバックデバイスがあることもできる)、オーディオ出力デバイス(例えば、スピーカ(1609)、ヘッドホン(図示せず))、視覚出力デバイス(例えば、それぞれタッチスクリーン入力機能の有無によらず、それぞれ触覚フィードバック機能の有無によらず、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含み、それらのうちのいくつかは、立体視出力、仮想現実メガネ(図示せず)、ホログラフィックディスプレイおよびスモークタンク(図示せず)などの手段により2次元視覚出力または3次元よりも多い次元の出力を出力可能なスクリーン(1610))、およびプリンタ(図示せず)を含み得る。
【0278】
コンピュータシステム(1600)はまた、人がアクセス可能なストレージデバイスおよびそれらの関連する媒体、例えば、CD/DVDまたは同様の媒体(1621)を伴ったCD/DVD ROM/RW(1620)、サムドライブ(1622)、リムーバブルハードディスクまたはソリッドステートドライブ(1623)、レガシー磁気媒体、例えば、テープおよびフロッピー(登録商標)ディスク(図示せず)、専用のROM/ASIC/PLDベースのデバイス、例えば、セキュリティドングル(図示せず)、などを含むことができる。
【0279】
当業者はまた、目下開示されている主題に関連して使用されている「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、または他の一時的な信号を含まないことも理解すべきである。
【0280】
コンピュータシステム(1600)はまた、1つ以上の通信ネットワーク(1655)へのインターフェース(1654)を含むことができる。ネットワークは、例えば、ワイヤレス、ワイヤライン、光であることができる。ネットワークはさらに、ローカル、ワイドエリア、メトロポリタン、車両および産業、実時間、遅延耐性、などであることができる。ネットワークの例は、イーサネット(登録商標)などのローカルエリアネットワーク、ワイヤレスLAN、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルTV、衛星TV、および地上放送TVを含むTVワイヤラインまたはワイヤレス広域デジタルネットワーク、CANバスを含む車両および産業ネットワーク、などを含む。特定のネットワークは、一般に、特定の汎用目的データポートまたはペリフェラルバス(1649)(例えば、コンピュータシステム(1600)のUSBポートなど)に取り付けられた外付けネットワークインターフェースアダプタを必要とする。他は、一般に、後述されるようなシステムバスへの取り付け(例えば、PCコンピュータシステムへのイーサネットネットワーク、またはスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)によってコンピュータシステム(1600)のコアに組み込まれる。これらのネットワークのいずれかを使用して、コンピュータシステム(1600)は他のエンティティと通信することができる。そのような通信は、単方向の受信専用(例えば、ブロードキャストTV)、単方向の送信専用(例えば、特定のCANバスデバイスへのCANバス)、または例えば、ローカル若しくは広域デジタルネットワークを使用して他のコンピュータシステムに対して双方向であることができる。特定のプロトコルまたはプロトコルスタックが、上述されたようなネットワークおよびネットワークインターフェースの各々で使用されることができる。
【0281】
前述のヒューマンインターフェースデバイス、人がアクセス可能なストレージデバイス、およびネットワークインターフェースは、コンピュータシステム(1600)のコア(1640)に取り付けられることができる。
【0282】
コア(1640)は、1つ以上の中央演算処理装置(CPU)(1641)、グラフィクス処理ユニット(GPU)(1642)、フィールドプログラマブルゲートエリア(FPGA)(1643)の形の専用のプログラム可能処理ユニット、特定のタスクのためのハードウェアアクセラレータ(1644)、グラフィクスアダプタ(1650)などを含むことができる。これらのデバイスは、リードオンリーメモリ(ROM)(1645)、ランダムアクセスメモリ(RAM)(1646)、内部のユーザアクセス不能ハードドライブなどの内蔵大容量記憶装置、SSD、など(1647)とともに、システムバス(1648)を通じて接続され得る。いくつかのコンピュータシステムでは、システムバス(1648)は、追加のCPU、GPUなどによる拡張を可能にするように、1つ以上の物理プラグの形でアクセス可能であることができる。周辺機器が、コアのシステムバス(1648)に直接またはペリフェラルバス(1649)を通じて、取り付けられることができる。ペリフェラルバスのためのアーキテクチャは、PCI、USBなどを含む。
【0283】
CPU(1641)、GPU(1642)、FPGA(1643)、およびアクセラレータ(1644)は、組み合わせて上記のコンピュータコードを構成することができる特定の命令を実行することができる。そのコンピュータコードは、ROM(1645)またはRAM(1646)に格納されることができる。一時データもRAM(1646)に格納することができ、一方、永続性データは、例えば、内蔵大容量記憶装置(1647)に格納されることができる。メモリデバイスのいずれかへの高速な格納および読み出しは、キャッシュメモリの使用により可能にされることができ、このキャッシュメモリは、1つ以上のCPU(1641)、GPU(1642)、大容量記憶装置(1647)、ROM(1645)、RAM(1646)などと密接に関連づけられることができる。
【0284】
コンピュータ可読媒体は、様々なコンピュータ実装動作を実行するためのコンピュータコードを有することができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構成されたものであることができ、あるいは、それらは、コンピュータソフトウェア技術で通常の知識を有する者によく知られており利用可能である種類のものであることができる。
【0285】
一例として、限定としてではなく、アーキテクチャ(1600)、具体的にはコア(1640)を有するコンピュータシステムは、1つ以上の有形なコンピュータ可読媒体において具現されているソフトウェアを実行するプロセッサ(複数可)(CPU、GPU、FPGA、アクセラレータ、などを含む)の結果として機能を提供することができる。このようなコンピュータ可読媒体は、コア内蔵大容量記憶装置(1647)またはROM(1645)などの、非一時的な性質であるコア(1640)の特定の記憶装置に加えて、先に紹介されたユーザアクセス可能な大容量記憶装置に関連した媒体であることができる。本開示の様々な実施形態を実装するソフトウェアは、そのようなデバイスに格納され、コア(1640)によって実行されることができる。コンピュータ可読媒体は、特定のニーズに応じて、1つ以上のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(1640)、および、具体的には、その中のプロセッサ(CPU、GPU、FPGAなどを含む)に、RAM(1646)に格納されているデータ構造を定義することと、ソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を変更することとを含む、本明細書で説明されている特定のプロセスまたは特定のプロセスの特定の部分を実行させることができる。追加的にまたは代替として、コンピュータシステムは、本明細書で説明されている特定のプロセスまたは特定のプロセスの特定の部分を実行するようにソフトウェアの代わりにまたはそれとともに動作することができる、回路内でハードワイヤードまたはその他の方法で具現されたロジック(例えば、アクセラレータ(1644))の結果として、機能を提供することができる。ソフトウェアへの言及は、適切な場合には、ロジックを包含することができ、その逆も同様である。コンピュータ可読媒体への言及は、適切な場合には、実行のためのソフトウェアを格納する回路(例えば、集積回路(IC))、実行のためのロジックを具現する回路、または両方を包含することができる。本開示は、ハードウェアおよびソフトウェアの任意の適切な組み合わせを包含する。
【0286】
本開示はいくつかの非限定的な例示的な実施形態を説明してきたが、変更、順列、および様々な代替均等物があり、これらは本開示の範囲内にある。したがって、当業者は、ここに明示的に示されているわけでも記述されているわけでもないが、開示の原理を具体化し、したがってその精神と範囲内にある多数のシステムおよび方法を考え出すことができることが認められる。
【国際調査報告】