一実施形態において、本開示は、デコーダによって実装される方法を含み、前記方法は、前記デコーダの受信機によって、アトラスフレーム内の複数のパッチとカメラのためのカメラオフセットとを含むビットストリームを受信する段階と、前記デコーダのプロセッサによって、前記アトラスフレーム内の前記複数のパッチをデコードする段階と、前記プロセッサによって、前記複数のパッチを3次元(3D)パッチ座標系に変換して点群コンテンツを取得する段階と、前記プロセッサによって、前記カメラオフセットに基づくオフセット行列を判断する段階と、前記プロセッサによって、前記オフセット行列を前記点群コンテンツに適用する段階とを備える。
点群コーディング(PCC)システムは、PCC成分をデコードし、3D点群を再構成する。次に、いくつかのPCCシステムは、カメラをデコーダで予め定義されたデフォルトの位置に配置する。カメラは、フラットスクリーンに表示することができる2次元(2D)画像として3D点群をレンダリングすることに用いられる。カメラ位置は、対応する瞬間においてユーザに描写された3D点群の部分を定義する。このようなシステムでは、ユーザがカメラを制御し、カメラを好みの位置に動かして、好みの角度から所望のコンテンツをレンダリングすることが必要になることがある。このため、用途によっては、ユーザが所望のコンテンツを見るのに最良の位置を認識し得ないという問題が生じる場合がある。例えば、ユーザはサッカーの試合のPCCビデオを見る場合がある。デフォルトのカメラ位置は、サッカーフィールドの中央付近にあることがある。ユーザは、クォーターバックまたはストライカに近い位置からPCCビデオを見たいと希望することがあるが、クォーターバックまたはストライカがフィールド上のどこに位置しているか知らないことがある。その結果、検索に時間がかかり、望ましくないユーザエクスペリエンスを生成することがある。
本実施例は、好ましい視野位置および角度をシグナリングするメカニズムを含む。例えば、コンテンツ制作者は、エンコード時に1または複数の視野位置および/または視野角度を選択することができる。次に、ユーザはPCCビデオを見る際に、好ましい視野位置を選択することができる。この結果を達成するために、エンコーダは、カメラ位置を判断するための1または複数のカメラオフセットと、カメラ視野角を判断するための対応するカメラ回転とをエンコードすることができる。カメラオフセット(例えば、カメラ位置)は、PCCコンテンツを含む境界ボックスの予め定義された点からのX、Y、Zオフセットを含む。カメラ回転は、カメラオフセットによって説明された位置からカメラが向いている方向(例えば、視野角度)を説明する視野ベクトルを含む。デコーダは、カメラオフセットおよびカメラ回転を読み取り、次に、それに応じてPCCビデオをレンダリングすることができる。例えば、PCCビデオは、デコード時にモデル行列に配置することができる。3D点群から2D画像をレンダリングするために、カメラ情報をモデル行列に変換として適用することができる。例えば、カメラオフセットを用いてオフセット行列を生成し、カメラ回転を用いて回転行列を生成することができる。次に、オフセット行列および回転行列をモデル行列に適用することで、PCCコンテンツを所定の位置および角度から点群を表示する2D画像に変換することができる。したがって、本実施例では、PCCビデオコンテンツの所定のかつ選択可能な視野位置および角度を生成することで、エンコーダおよびデコーダの双方で機能性を向上させることができる。さらに、本開示はコーディングの効率を高めるメカニズムをサポートし、したがって、エンコーダおよび/またはデコーダにおけるプロセッサ、メモリ、および/またはネットワークリソース使用量の減少をサポートする。
任意選択的に、前述の態様のいずれかにおいて、態様の別の実装態様は、前記カメラオフセットは、X軸に対応する第1のオフセット、Y軸に対応する第2のオフセット、およびZ軸に対応する第3のオフセットを示す、ことを提供する。
任意選択的に、前述の態様のいずれかにおいて、態様の別の実装態様は、前記オフセット行列は、4行4列を含み、前記第1のオフセットが第1行第4列に配置され、前記第2のオフセットが第2行第4列に配置され、前記第3のオフセットが第3行第4列に配置される、ことを提供する。
任意選択的に、前述の態様のいずれかにおいて、態様の別の実装態様は、前記ビットストリームは、前記カメラに対するカメラ回転をさらに含み、前記方法は、前記プロセッサによって、前記カメラ回転に基づく回転行列を判断する段階と、前記プロセッサによって、前記回転行列を前記点群コンテンツに適用する段階とをさらに備える、ことを提供する。
任意選択的に、前述の態様のいずれかにおいて、態様の別の実装態様は、前記カメラ回転は、四元数表現を使用する前記カメラの回転に対するX成分、四元数表現を使用する前記カメラの前記回転に対するY成分、および四元数表現を使用する前記カメラの前記回転に対するZ成分を指定する、ことを提供する。
任意選択的に、前述の態様のいずれかにおいて、態様の別の実装態様は、前記回転行列は、四元数表現を使用する前記カメラの前記回転に対する前記X成分、前記Y成分、前記Z成分、およびW成分を含む、ことを提供する。
任意選択的に、前述の態様のいずれかにおいて、態様の別の実装態様は、前記W成分は、qW=Sqrt(1-(qX2+qY2+qZ2))によって計算され、qW、qX、qYおよびqZはそれぞれ、前記W成分、前記X成分、前記Y成分および前記Z成分を表し、Sqrtは平方根関数である、ことを提供する。
任意選択的に、前述の態様のいずれかにおいて、態様の別の実装態様は、前記アトラスフレーム内の前記複数のパッチは2Dパッチである、ことを提供する。
一実施形態において、本開示は、エンコーダによって実装される方法を含み、前記方法は、プロセッサによって、複数の2Dパッチと、点群フレームを説明するジオメトリとを点群コーディング(PCC)ビットストリームにエンコードする段階と、前記プロセッサによって、前記点群フレームに対するカメラの位置を説明するカメラオフセットを判断して、前記点群フレームのカメラ視野をレンダリングするためのオフセット行列の生成をサポートする段階と、前記プロセッサによって、前記カメラオフセットを前記PCCビットストリームにエンコードする段階と、前記エンコーダのメモリによって、デコーダへの通信のために前記PCCビットストリームを記憶する段階とを備える、方法を含む。
PCCシステムは、PCC成分をデコードして3D点群を再構成する。次に、いくつかのPCCシステムは、デコーダで予め定義されたデフォルトの位置にカメラを配置する。カメラは、3D点群をフラットスクリーンに表示可能な2D画像としてレンダリングするために使用される。カメラ位置は、対応する瞬間においてユーザに描写される3D点群の部分を定義する。このようなシステムでは、ユーザがカメラを制御し、カメラを好みの位置に動かして、好みの角度から所望のコンテンツをレンダリングすることが必要になることがある。このため、用途によっては、ユーザが所望のコンテンツを見るのに最良の位置を認識し得ないという問題が生じる場合がある。例えば、ユーザはサッカーの試合のPCCビデオを見る場合がある。デフォルトのカメラ位置は、サッカーフィールドの中央付近にあることがある。ユーザは、クォーターバックまたはストライカに近い位置からPCCビデオを見たいと希望することがあるが、クォーターバックまたはストライカがフィールド上のどこに位置しているか知らないことがある。その結果、検索に時間がかかり、望ましくないユーザエクスペリエンスを生成することがある。
本実施例では、好ましい視野位置および角度をシグナリングするメカニズムを含む。例えば、コンテンツ制作者は、エンコード時に1または複数の視野位置および/または視野角度を選択することができる。次に、ユーザはPCCビデオを見る際に、好ましい視野位置を選択することができる。この結果を達成するために、エンコーダは、カメラ位置を判断するための1または複数のカメラオフセットと、カメラ視野角を判断するための対応するカメラ回転とをエンコードすることができる。カメラオフセット(例えば、カメラ位置)は、PCCコンテンツを含む境界ボックスの予め定義された点からのX、Y、Zオフセットを含む。カメラ回転は、カメラオフセットによって説明された位置からカメラが向いている方向(例えば、視野角度)を説明する視野ベクトルを含む。デコーダは、カメラオフセットおよびカメラ回転を読み取り、次に、それに応じてPCCビデオをレンダリングすることができる。例えば、PCCビデオは、デコード時にモデル行列に配置することができる。3D点群から2D画像をレンダリングするために、カメラ情報をモデル行列に変換として適用することができる。例えば、カメラオフセットを用いてオフセット行列を生成し、カメラ回転を用いて回転行列を生成することができる。次に、オフセット行列および回転行列をモデル行列に適用することで、PCCコンテンツを所定の位置および角度から点群を表示する2D画像に変換することができる。したがって、本実施例では、PCCビデオコンテンツの所定のかつ選択可能な視野位置および角度を生成することで、エンコーダおよびデコーダの双方で機能性を向上させることができる。さらに、本開示はコーディングの効率を高めるメカニズムをサポートし、したがって、エンコーダおよび/またはデコーダにおけるプロセッサ、メモリ、および/またはネットワークリソース使用量の減少をサポートする。
任意選択的に、前述の態様のいずれかにおいて、態様の別の実装態様は、前記カメラオフセットは、X軸に対応する第1のオフセット、Y軸に対応する第2のオフセット、およびZ軸に対応する第3のオフセットを示す、ことを提供する。
任意選択的に、前述の態様のいずれかにおいて、態様の別の実装態様は、前記オフセット行列は、4行4列を含み、前記第1のオフセットが第1行第4列に配置され、前記第2のオフセットが第2行第4列に配置され、前記第3のオフセットが第3行第4列に配置される、ことを提供する。
任意選択的に、前述の態様のいずれかにおいて、態様の別の実装態様は、前記プロセッサによって、前記点群フレームに対する前記カメラのための視野ベクトルを説明するカメラ回転を判断して、前記点群フレームの前記カメラ視野をレンダリングするための回転行列の生成をサポートする段階と、前記プロセッサによって、前記カメラ回転を前記PCCビットストリームにエンコードする段階とをさらに備える、ことを提供する。
任意選択的に、前述の態様のいずれかにおいて、態様の別の実装態様は、前記カメラ回転は、四元数表現を使用する前記カメラの回転に対するX成分、四元数表現を使用する前記カメラの前記回転に対するY成分、および四元数表現を使用する前記カメラの前記回転に対するZ成分を指定する、ことを提供する。
任意選択的に、前述の態様のいずれかにおいて、態様の別の実装態様は、前記回転行列は、四元数表現を使用する前記カメラの前記回転に対する前記X成分、前記Y成分、前記Z成分、およびW成分を含む、ことを提供する。
任意選択的に、前述の態様のいずれかにおいて、態様の別の実装態様は、前記W成分は、qW=Sqrt(1-(qX2+qY2+qZ2))によって計算され、qW、qX、qYおよびqZはそれぞれ、前記W成分、前記X成分、前記Y成分および前記Z成分を表し、Sqrtは平方根関数である、ことを提供する。
一実施形態において、本開示は、ビデオコーディングデバイスであって、プロセッサと、前記プロセッサに結合された受信機と、前記プロセッサに結合されたメモリと、前記プロセッサに結合された送信機とを備え、前記プロセッサ、前記受信機、前記メモリ、および前記送信機は、前述の態様に記載の方法を実行するように構成されている、ビデオコーディングデバイスを含む。
一実施形態において、本開示は、ビデオコーディングデバイスによって用いるためのコンピュータプログラム製品を含む非一時的コンピュータ可読媒体であって、前記コンピュータプログラム製品は、プロセッサによって実行されたとき、前述の態様に記載の方法を前記ビデオコーディングデバイスに実行させるように、前記非一時的コンピュータ可読媒体に記憶された前記コンピュータ実施可能な命令を備える、非一時的コンピュータ可読媒体を含む。
一実施形態において、本開示は、アトラスフレーム内の複数のパッチと、カメラのためのカメラオフセットとを含むビットストリームを受信する受信手段と、前記複数のパッチをデコードするデコード手段と、前記複数のパッチを3Dパッチ座標系に変換して点群フレームを取得する変換手段と、前記カメラオフセットに基づいてオフセット行列を判断する判断手段と、前記オフセット行列を前記点群フレームに適用する適用手段とを備える、デコーダを含む。
PCCシステムは、PCC成分をデコードして3D点群を再構成する。次に、いくつかのPCCシステムは、デコーダで予め定義されたデフォルトの位置にカメラを配置する。カメラは、3D点群をフラットスクリーンに表示可能な2D画像としてレンダリングするために使用される。カメラ位置は、対応する瞬間においてユーザに描写される3D点群の部分を定義する。このようなシステムでは、ユーザがカメラを制御し、カメラを好みの位置に動かして、好みの角度から所望のコンテンツをレンダリングすることが必要になることがある。このため、用途によっては、ユーザが所望のコンテンツを見るのに最良の位置を認識し得ないという問題が生じる場合がある。例えば、ユーザはサッカーの試合のPCCビデオを見る場合がある。デフォルトのカメラ位置は、サッカーフィールドの中央付近にあることがある。ユーザは、クォーターバックまたはストライカに近い位置からPCCビデオを見たいと希望することがあるが、クォーターバックまたはストライカがフィールド上のどこに位置しているか知らないことがある。その結果、検索に時間がかかり、望ましくないユーザエクスペリエンスを生成することがある。
本実施例では、好ましい視野位置および角度をシグナリングするメカニズムを含む。例えば、コンテンツ制作者は、エンコード時に1または複数の視野位置および/または視野角度を選択することができる。次に、ユーザはPCCビデオを見る際に、好ましい視野位置を選択することができる。この結果を達成するために、エンコーダは、カメラ位置を判断するための1または複数のカメラオフセットと、カメラ視野角を判断するための対応するカメラ回転とをエンコードすることができる。カメラオフセット(例えば、カメラ位置)は、PCCコンテンツを含む境界ボックスの予め定義された点からのX、Y、Zオフセットを含む。カメラ回転は、カメラオフセットによって説明された位置からカメラが向いている方向(例えば、視野角度)を説明する視野ベクトルを含む。デコーダは、カメラオフセットおよびカメラ回転を読み取り、次に、それに応じてPCCビデオをレンダリングすることができる。例えば、PCCビデオは、デコード時にモデル行列に配置することができる。3D点群から2D画像をレンダリングするために、カメラ情報をモデル行列に変換として適用することができる。例えば、カメラオフセットを用いてオフセット行列を生成し、カメラ回転を用いて回転行列を生成することができる。次に、オフセット行列および回転行列をモデル行列に適用することで、PCCコンテンツを所定の位置および角度から点群を表示する2D画像に変換することができる。したがって、本実施例では、PCCビデオコンテンツの所定のかつ選択可能な視野位置および角度を生成することで、エンコーダおよびデコーダの双方で機能性を向上させることができる。さらに、本開示はコーディングの効率を高めるメカニズムをサポートし、したがって、エンコーダおよび/またはデコーダにおけるプロセッサ、メモリ、および/またはネットワークリソース使用量の減少をサポートする。
任意選択的に、前述の態様のいずれかにおいて、態様の別の実装態様は、デコーダが、前述の態様のいずれかの方法を実行するようにさらに構成されていることを提供する。
一実施形態において、本開示は、点群フレームに対するカメラの位置を説明するカメラオフセットを判断して、前記点群フレームのカメラ視野をレンダリングするためのオフセット行列の生成をサポートする判断手段と、複数の2Dパッチと点群フレームを説明するジオメトリをPCCビットストリームにエンコードすることと、前記カメラオフセットを前記PCCビットストリームにエンコードすることとを実行するエンコード手段と、デコーダへの通信のために前記ビットストリームを記憶する記憶手段とを備える、エンコーダを含む。
PCCシステムは、PCC成分をデコードして3D点群を再構成する。次に、いくつかのPCCシステムは、カメラをデコーダで予め定義されたデフォルトの位置に配置する。カメラは、3D点群をフラットスクリーンに表示可能な2D画像としてレンダリングするために使用される。カメラ位置は、対応する瞬間においてユーザに描写された3D点群の部分を定義する。このようなシステムでは、ユーザがカメラを制御し、カメラを好みの位置に動かして、好みの角度から所望のコンテンツをレンダリングすることが必要になることがある。このため、用途によっては、ユーザが所望のコンテンツを見るのに最良の位置を認識し得ないという問題が生じる場合がある。例えば、ユーザはサッカーの試合のPCCビデオを見る場合ができる。デフォルトのカメラ位置は、サッカーフィールドの中央付近にあることがある。ユーザは、クォーターバックまたはストライカに近い位置からPCCビデオを見たいと希望することがあるが、クォーターバックまたはストライカがフィールド上のどこに位置しているか知らないことがある。その結果、検索に時間がかかり、望ましくないユーザエクスペリエンスを生成することがある。
本実施例では、好ましい視野位置および角度をシグナリングするメカニズムを含む。例えば、コンテンツ制作者は、エンコード時に1または複数の視野位置および/または視野角度を選択することができる。次に、ユーザはPCCビデオを見る際に、好ましい視野位置を選択することができる。この結果を達成するために、エンコーダは、カメラ位置を判断するための1または複数のカメラオフセットと、カメラ視野角を判断するための対応するカメラ回転とをエンコードすることができる。カメラオフセット(例えば、カメラ位置)は、PCCコンテンツを含む境界ボックスの予め定義された点からのX、Y、Zオフセットを含む。カメラ回転は、カメラオフセットによって説明された位置からカメラが向いている方向(例えば、視野角度)を説明する視野ベクトルを含む。デコーダは、カメラオフセットおよびカメラ回転を読み取り、次に、それに応じてPCCビデオをレンダリングすることができる。例えば、PCCビデオは、デコード時にモデル行列に配置することができる。3D点群から2D画像をレンダリングするために、カメラ情報をモデル行列に変換として適用することができる。例えば、カメラオフセットを用いてオフセット行列を生成し、カメラ回転を用いて回転行列を生成することができる。次に、オフセット行列および回転行列をモデル行列に適用することで、PCCコンテンツを所定の位置および角度から点群を表示する2D画像に変換することができる。したがって、本実施例では、PCCビデオコンテンツの所定のかつ選択可能な視野位置および角度を生成することで、エンコーダおよびデコーダの双方で機能性を向上させることができる。さらに、本開示はコーディングの効率を高めるメカニズムをサポートし、したがって、エンコーダおよび/またはデコーダにおけるプロセッサ、メモリ、および/またはネットワークリソース使用量の減少をサポートする。
任意選択的に、前述の態様のいずれかにおいて、態様の別の実装態様は、エンコーダが、前述の態様のいずれかの方法を実行するようにさらに構成されていることを提供する。
明確にするために、前述の実施形態のいずれか1つを他の前述の実施形態のうちいずれか1または複数と組み合わせて、本開示の範囲内の新たな実施形態を生成することができる。
これらおよび他の特徴は、添付図面および特許請求の範囲と併せて以下の詳細な説明からより明確に理解されるであろう。
最初に、1または複数の実施形態の例示的な実装態様が以下に提供されるが、開示されたシステムおよび/または方法は、現在知られているかまたは存在しているかにかかわらず、任意の数の技術を使用して実装され得ることを理解されたい。 本開示は、本明細書に示され説明される例示的な設計および実装態様を含む、以下に示される例示的な実装態様、図面、および技術に決して限定されるべきではなく、それらの均等物の全範囲と共に添付の特許請求の範囲内で修正することができる。
以下の用語は、本明細書で反対の文脈で使用されない限り、以下のように定義される。具体的には、以下の定義は、本開示をさらに明確にすることを意図している。しかしながら、用語は、異なる文脈において異なって記載され得る。したがって、以下の定義は、補足と見なされるべきであり、本明細書においてそのような用語について提供される説明の任意の他の定義を限定すると見なされるべきではない。
エンコーダは、ビデオデータをビットストリームに圧縮するためにエンコード処理を利用するように構成されているデバイスである。デコーダは、表示のためにビットストリームからビデオデータを再構成するためにデコード処理を利用するように構成されたデバイスである。点群/点群表現は、3次元(3D)空間における点(例えば、サンプル)のグループであり、各点は位置、色、および/または属性を含むことができる。ビットストリームは、エンコーダおよびデコーダの間を伝送するように圧縮されたビデオデータを含むビットシーケンスである。PCCコンテキストでは、ビットストリームは、コードされたV-PCC成分および関連付けられたパラメータのビットシーケンスを含む。
V-PCC成分(またはより一般的には、PCC成分)は、V-PCC点群に関連付けられた特定のタイプのアトラスデータ、占有データ、ジオメトリデータ、または属性データであってよい。アトラス/アトラスフレームは、3D境界ボックスと呼ばれる3D空間のボリュームに対応する長方形フレームに投影された2次元(2D)境界ボックス(パッチとも呼ばれる)の集合で、ボリュメトリックデータはその上にレンダリングされてよい。各2D境界ボックス/パッチは、点群のサブセットを表す。パッチとは、アトラス内のボリュメトリック情報に関連付けられた2D長方形領域のことである。投影とは、表面上に画像(例えば、パッチ)を表示することである。3D境界ボックスは、6つの長方形面を直角に配置した立方体として定義されるボリュームである。占有とは、アトラスサンプルが3D空間において関連付けられたサンプルに対応しているかどうかを示す値のセットである。占有フレームは、2Dアレイを構成する占有値の集合であってよく、単一のアトラスフレームの占有情報全体を表す。したがって、占有フレームは、アトラス内の各サンプル位置について、その位置が点群表現内の有効な3D点に対応するかどうかを示すことができる。ジオメトリは、ボリュメトリックフレームに関連付けられたデカルト座標のセットである。ジオメトリマップは、特定の深さに投影されたジオメトリパッチ情報を含むフレームである。属性は、色、反射率、面法線、タイムスタンプ、材料識別子(ID)など、点群のボリュメトリックフレーム内の各点に任意に関連付けられたスカラまたはベクトル特性であってもよい。点群フレームとしても知られるボリュメトリックフレームは、特定の時間インスタンスにおけるデカルト座標と0個以上の対応する属性セットとによって指定される3D点のセットである。点群コンテンツは、点群フレームに含まれた任意のデータである。特定の時間インスタンス/ボリュメトリックフレームに関連付けられたアトラスデータ、占有データ、ジオメトリマップ、または属性の完全なセットは、それぞれアトラスフレーム、占有フレーム、ジオメトリフレーム、および属性フレームと呼ばれることがある。アトラスデータ、占有データ、ジオメトリデータ、または属性データは、点群の成分である場合があり、したがって、それぞれアトラス成分、占有成分、ジオメトリ成分、および属性フレーム成分と呼ばれることがある。
カメラは、3Dオブジェクトの2D視野を提供する視野ポートである。カメラオブジェクトは、3D点群の2D表現を対応する瞬間においてレンダリングするために利用されることができる。カメラおよび/またはカメラオブジェクトは、カメラ位置および/またはカメラ回転を含む1または複数の行列であるカメラモデルとして実装されることができる。座標系は、空間内の点の位置を一意的に判断するための複数の数値指定を用いるメカニズムである。3D座標系は、3D空間内の位置を説明する座標系である。カメラオフセットは、カメラ位置と、点群を含む3D境界ボックスの予め定義された点との間の3D空間における距離を示すパラメータである。オフセット行列は、モデル行列内の点の3Dモデルを2D表現に変換することに適用されることができるカメラオフセットの行列表現である。行列の列は、行列の頂部から行列の底部まで縦方向に続く数のグループである。行列の行は、行列の左側から行列の右側まで横向きに続く数のグループである。カメラ回転は、カメラから、点群を含む3D境界ボックスに向ける視野ベクトルを示すパラメータである。回転行列は、モデル行列内の点の3Dモデルを2D表現に変換するために適用されることができるカメラ回転の行列表現である。四元数表現は、スカラ値および空間軸に沿う3つの単位ベクトルを用いる複素数領域におけるベクトルの表現である。
V-PCCは、様々な色の点の3D群で表現される3次元(3D)オブジェクトを効率的にコードするメカニズムである。V-PCCはPCCの一種であるため、このような用語はほとんどのコンテキストで互換的に使用することができる。点群は経時的にキャプチャされ、PCC成分に含まれる。PCC成分は次にエンコードされる。時間インスタンスにおける群の各有効点の位置は、ジオメトリフレームにおけるジオメトリマップとして記憶される。色および輝度はパッチとして記憶される。具体的には、時間内のある瞬間におけるパッチは、アトラスフレームとしてパックされる。パッチは、一般に、アトラスフレーム全体を網羅しない。したがって、アトラスフレームのどの部分がパッチデータを含むかを示す占有フレームも生成される。任意選択で、透過率など、点の属性が属性フレームに含まれてよい。このように、各PCCフレームは、対応する瞬間における点群を説明する異なる成分を含む複数のフレームとしてエンコードすることができる。
PCCシステムは、PCC成分をデコードして3D点群を再構成する。次に、いくつかのPCCシステムは、カメラをデコーダで予め定義されたデフォルトの位置に配置する。カメラは、フラットスクリーンに表示することができる2次元(2D)画像として3D点群をレンダリングすることに用いられる。カメラ位置は、対応する瞬間においてユーザに描写された3D点群の部分を定義する。このようなシステムでは、ユーザがカメラを制御し、カメラを好みの位置に動かして、好みの角度から所望のコンテンツをレンダリングすることが必要になることがある。このため、用途によっては、ユーザが所望のコンテンツを見るのに最良の位置を認識し得ないという問題が生じる場合がある。例えば、ユーザはサッカーの試合のPCCビデオを見る場合がある。デフォルトのカメラ位置は、サッカーフィールドの中央付近にあることがある。ユーザは、クォーターバックまたはストライカに近い位置からPCCビデオを見たいと希望することがあるが、クォーターバックまたはストライカがフィールド上のどこに位置しているか知らないことがある。その結果、検索に時間がかかり、望ましくないユーザエクスペリエンスを生成することがある。
本明細書に開示されたのは、好ましい視野位置および角度をシグナリングするメカニズムである。例えば、コンテンツ制作者は、エンコード時に1または複数の視野位置および/または視野角度を選択することができる。次に、ユーザはPCCビデオを見る際に、好ましい視野位置を選択することができる。この結果を達成するために、エンコーダは、カメラ位置を判断するための1または複数のカメラオフセットと、カメラ視野角を判断するための対応するカメラ回転とをエンコードすることができる。カメラオフセット(例えば、カメラ位置)は、PCCコンテンツを含む境界ボックスの予め定義された点からのX、Y、Zオフセットを含む。カメラ回転は、カメラオフセットによって説明された位置からカメラが向いている方向(例えば、視野角度)を説明する視野ベクトルを含む。デコーダは、カメラオフセットおよびカメラ回転を読み取り、次に、それに応じてPCCビデオをレンダリングすることができる。例えば、PCCビデオは、デコード時にモデル行列に配置することができる。3D点群から2D画像をレンダリングするために、カメラ情報をモデル行列に変換として適用することができる。例えば、カメラオフセットを用いてオフセット行列を生成し、カメラ回転を用いて回転行列を生成することができる。次に、オフセット行列および回転行列をモデル行列に適用することで、PCCコンテンツを所定の位置および角度から点群を表示する2D画像に変換することができる。したがって、本実施例では、PCCビデオコンテンツの所定のかつ選択可能な視野位置および角度を生成することで、エンコーダおよびデコーダの双方で機能性を向上させることができる。さらに、本開示はコーディングの効率を高めるメカニズムをサポートし、したがって、エンコーダおよび/またはデコーダにおけるプロセッサ、メモリ、および/またはネットワークリソース使用量の減少をサポートする。
図1~4は、ビデオをエンコードおよびデコードすることに用いられる様々なコーディングメカニズムを説明する。図5~7Cは、点群を、図1~4に説明されたメカニズムによってエンコードおよびデコードすることができるフォーマットに変換することに用いられるメカニズムを説明する。
図1は、ビデオ信号をコードする例示的な動作方法100のフローチャートである。具体的には、ビデオ信号はエンコーダでエンコードされる。エンコード処理は、ビデオファイルサイズを縮小するための様々なメカニズムを利用することによって、ビデオ信号を圧縮する。より小さいファイルサイズは、関連付けられた帯域幅オーバヘッドを低減しながら、圧縮されたビデオファイルをユーザに向けて送信することを可能にする。次いで、デコーダは、圧縮されたビデオファイルをデコードして、エンドユーザに表示するための元のビデオ信号を再構成する。デコード処理は、一般に、デコーダがビデオ信号を一貫して再構成することを可能にするためにエンコード処理をミラーリングする。
段階101において、ビデオ信号がエンコーダに入力される。例えば、ビデオ信号は、メモリに記憶された非圧縮ビデオファイルであってもよい。別の例として、ビデオファイルは、ビデオカメラなどのビデオキャプチャデバイスによってキャプチャされ、ビデオのライブストリーミングをサポートするためにエンコードされ得る。ビデオファイルは、オーディオコンポーネントおよびビデオコンポーネントの両方を含み得る。ビデオコンポーネントは、シーケンスで見たときに動きの視覚的印象を与える一連の画像フレームを含む。フレームは、本明細書では輝度成分(または輝度サンプル)と呼ばれる光、およびクロマ成分(または色サンプル)と呼ばれる色に関して表現される画素を含む。いくつかの例において、フレームは、3次元視野をサポートする深度値も含み得る。
段階103において、ビデオがブロックに分割される。分割は、各フレーム内の画素を圧縮のために正方形および/または長方形のブロックに細分することを含む。例えば、高効率ビデオコーディング(HEVC)(H.265およびMPEG-H Part 2としても知られる)において、フレームは、最初に、予め定義されたサイズ(例えば、64画素×64画素)のブロックであるコーディングツリーユニット(CTU)に分割され得る。CTUは、輝度サンプルおよびクロマサンプルの両方を含む。コーディングツリーを使用して、CTUをブロックに分割し、次いで、さらなるエンコードをサポートする構成が達成されるまでブロックを再帰的に細分することができる。例えば、フレームの輝度成分は、個々のブロックが比較的均一な照明値を含むまで細分され得る。さらに、フレームのクロマ成分は、個々のブロックが比較的均一な色値を含むまで細分され得る。したがって、分割メカニズムは、ビデオフレームのコンテンツに応じて変化する。
段階105において、段階103において分割された画像ブロックを圧縮するために様々な圧縮メカニズムが使用される。例えば、インター予測および/またはイントラ予測が使用され得る。インター予測は、共通のシーン内のオブジェクトが連続するフレームに現れる傾向があるという事実を利用するように設計される。したがって、参照フレーム内のオブジェクトを描写するブロックは、隣接フレーム内で繰り返し説明される必要はない。具体的には、テーブルなどのオブジェクトは、複数のフレームにわたって一定の位置に留まることがある。したがって、テーブルは一度説明され、隣接フレームは参照フレームを参照することができる。パターンマッチングメカニズムを使用して、複数のフレームにわたってオブジェクトをマッチングすることができる。さらに、移動するオブジェクトは、例えば、オブジェクトの移動またはカメラの動きに起因して、複数のフレームにわたって表され得る。特定の例として、ビデオは、複数のフレームにわたって画面を横切って移動する自動車を示し得る。動きベクトルを使用して、そのような動きを説明することができる。動きベクトルは、フレーム内のオブジェクトの座標から参照フレーム内のオブジェクトの座標へのオフセットを提供する2次元ベクトルである。このように、インター予測は、現在のフレーム内の画像ブロックを、参照フレーム内の対応するブロックからのオフセットを示す動きベクトルのセットとしてエンコードすることができる。
イントラ予測は、共通フレーム内のブロックをエンコードする。イントラ予測は、輝度成分およびクロマ成分がフレーム内でクラスタ化する傾向があるという事実を利用する。例えば、ツリーの一部の緑色のパッチは、同様の緑色のパッチに隣接して位置する傾向がある。イントラ予測は、複数の指向性予測モード(例えば、HEVCでは33)、平面モード、および直流(DC)モードを使用する。指向性モードは、現在のブロックが、対応する方向において隣接ブロックのサンプルと同様/同じであることを示す。平面モードは、行/列に沿った一連のブロック(例えば、平面)が、行の端部にある隣接ブロックに基づいて補間され得ることを示す。平面モードは、実際には、変化する値に比較的一定の傾きを使用することによって、行/列にわたる光/色の滑らかな遷移を示す。DCモードは、境界平滑化に使用され、ブロックが、指向性予測モードの角度方向に関連付けられた全ての隣接ブロックのサンプルに関連付けられた平均値と同様/同じであることを示す。したがって、イントラ予測ブロックは、実際の値ではなく、様々な関係予測モード値として画像ブロックを表すことができる。さらに、インター予測ブロックは、実際の値ではなく、動きベクトル値として画像ブロックを表すことができる。いずれの場合も、予測ブロックは、場合によっては、画像ブロックを正確に表さないことがある。いかなる差分も、残差ブロックに記憶される。ファイルをさらに圧縮するために、変換が残差ブロックに適用され得る。
段階107において、様々なフィルタリング技術を適用することができる。HEVCでは、フィルタは、インループフィルタリング方式に従って適用される。上述したブロックベースの予測は、デコーダにおいてブロック状画像の生成をもたらし得る。さらに、ブロックベースの予測方式は、ブロックをエンコードし、次いで、エンコードされたブロックを参照ブロックとして後で使用するために再構成することができる。インループフィルタリング方式は、ノイズ抑制フィルタ、デブロックフィルタ、適応ループフィルタ、およびサンプル適応オフセット(sample adaptive offset、SAO)フィルタをブロック/フレームに繰り返し適用する。これらのフィルタは、エンコードされたファイルを正確に再構成することができるように、そのようなブロッキングアーチファクトを軽減する。さらに、これらのフィルタは、再構成された参照ブロックにおけるアーチファクトを軽減し、その結果、アーチファクトは、再構成された参照ブロックに基づいてエンコードされる後続のブロックにおいて追加のアーチファクトを生成する可能性が低くなる。
ビデオ信号が分割、圧縮、およびフィルタリングされると、段階109において、結果として得られるデータがビットストリームにエンコードされる。ビットストリームは、上述したデータ、および、デコーダにおいて適切なビデオ信号再構成をサポートすることが望まれるあらゆるシグナリングデータを含む。例えば、そのようなデータは、デコーダにコーディング命令を提供する、分割データ、予測データ、残差ブロック、および様々なフラグを含み得る。ビットストリームは、要求に応じて、デコーダに向けて送信するためにメモリに記憶されてもよい。ビットストリームはまた、複数のデコーダに向けてブロードキャストおよび/またはマルチキャストされてもよい。ビットストリームの生成は、反復処理である。したがって、段階101、103、105、107、および109は、多くのフレームおよびブロックにわたって連続的におよび/または同時に行われ得る。図1に示す順序は、説明を明確かつ容易にするために提示されており、ビデオコーディングプロセスを特定の順序に限定することを意図していない。
デコーダは、ビットストリームを受信し、段階111においてデコード処理を開始する。具体的には、デコーダは、エントロピーデコード方式を使用して、ビットストリームを対応するシンタックスおよびビデオデータに変換する。デコーダは、段階111において、ビットストリームからのシンタックスデータを使用して、フレームの分割を判断する。分割は、段階103におけるブロック分割の結果と一致すべきである。ここで、段階111で使用されるエントロピーエンコード/デコードについて説明する。 エンコーダは、圧縮処理中に、入力画像内の値の空間的位置に基づいていくつかの可能な選択からブロック分割方式を選択するなど、多くの選択を行う。正確な選択をシグナリングするには、多数のビンを使用し得る。本明細書で使用される場合、ビンは、変数(例えば、文脈に応じて変わり得るビット値)として扱われるバイナリ値である。エントロピーコーディングは、エンコーダが、特定のケースのために実行可能ではないことが明らかである任意のオプションを廃棄し、許容可能なオプションのセットを残すことを可能にする。次いで、各許容可能なオプションにコードワードが割り当てられる。コードワードの長さは、許容可能なオプションの数に基づく(例えば、2つのオプションに対して1つのビン、3~4つのオプションに対して2つのビンなど)。次いで、エンコーダは、選択されたオプションのコードワードをエンコードする。全ての可能なオプションの潜在的に大きなセットからの選択を一意に示すのとは対照的に、コードワードは許容可能なオプションの小さなサブセットからの選択を一意に示すのに所望されるくらいの大きさなので、この方式は、コードワードのサイズを小さくする。次いで、デコーダは、エンコーダと同様の方式で許容可能なオプションのセットを判断することによって選択をデコードする。許容可能なオプションのセットを判断することにより、デコーダは、コードワードを読み取り、エンコーダによって行われた選択を判断し得る。
段階113において、デコーダは、ブロックのデコードを実行する。具体的には、デコーダは、残差ブロックを生成するために逆変換を使用する。次いで、デコーダは、残差ブロックおよび対応する予測ブロックを使用して分割に従って画像ブロックを再構成する。予測ブロックは、段階105においてエンコーダで生成されるようなイントラ予測ブロックおよびインター予測ブロックの両方を含み得る。次いで、再構成された画像ブロックは、段階111で判断された分割データに従って再構成されたビデオ信号のフレームに配置される。段階113のシンタックスはまた、上述のように、エントロピーコーディングを介してビットストリーム内でシグナリングされ得る。
段階115において、エンコーダにおける段階107と同様の方式で、再構成されたビデオ信号のフレームに対してフィルタリングが実行される。例えば、ブロッキングアーチファクトを除去するために、ノイズ抑制フィルタ、デブロックフィルタ、適応ループフィルタ、およびSAOフィルタをフレームに適用することができる。フレームがフィルタリングされると、ビデオ信号は、エンドユーザが見るために段階117でディスプレイに出力することができる。
図2は、ビデオコーディングのための例示的なコーディングおよびデコード(コーデック)システム200の概略図である。具体的には、コーデックシステム200は、動作方法100の実装態様をサポートする機能を提供する。コーデックシステム200は、エンコーダおよびデコーダの両方で使用されるコンポーネントを描写するために一般化される。コーデックシステム200は、動作方法100における段階101および103に関して説明したように、ビデオ信号を受信して分割し、その結果、分割されたビデオ信号201が得られる。 次いで、コーデックシステム200は、方法100における段階105、107、および109に関して説明したように、エンコーダとして機能するときに、分割されたビデオ信号201を、コードされたビットストリームに圧縮する。 デコーダとして動作するとき、コーデックシステム200は、動作方法100における段階111、113、115、および117に関して説明したように、ビットストリームから出力ビデオ信号を生成する。コーデックシステム200は、汎用コーダ制御コンポーネント211、変換スケーリングおよび量子化コンポーネント213、イントラピクチャ推定コンポーネント215、イントラピクチャ予測コンポーネント217、動き補償コンポーネント219、動き推定コンポーネント221、スケーリングおよび逆変換コンポーネント229、フィルタ制御分析コンポーネント227、インループフィルタコンポーネント225、デコードされたピクチャバッファコンポーネント223、ならびにヘッダフォーマッティングおよびコンテキスト適応バイナリ算術コーディング(CABAC)コンポーネント231を含む。そのようなコンポーネントは、図示のように結合される。図2において、黒線はエンコード/デコード対象のデータの移動を示し、破線は他のコンポーネントの動作を制御する制御データの移動を示す。コーデックシステム200のコンポーネントは、全てエンコーダに存在してもよい。デコーダは、コーデックシステム200のコンポーネントのサブセットを含み得る。例えば、デコーダは、イントラピクチャ予測コンポーネント217、動き補償コンポーネント219、スケーリングおよび逆変換コンポーネント229、インループフィルタコンポーネント225、ならびにデコードされたピクチャバッファコンポーネント223を含み得る。次に、これらのコンポーネントについて説明する。
分割されたビデオ信号201は、コーディングツリーによって画素のブロックに分割されたキャプチャされたビデオシーケンスである。コーディングツリーは、画素のブロックをより小さい画素のブロックに細分するために様々なスプリットモードを使用する。次いで、これらのブロックをより小さいブロックにさらに細分することができる。ブロックは、コーディングツリー上のノードと呼ばれる場合がある。より大きな親ノードは、より小さな子ノードへ分割される。ノードが細分される回数は、ノード/コーディングツリーの深度と呼ばれる。分割されたブロックは、場合によっては、コーディングユニット(CU)に含まれ得る。 例えば、CUは、CUのための対応するシンタックス命令と共に、輝度ブロック、赤色差分クロマ(Cr)ブロック、および青色差分クロマ(Cb)ブロックを含むCTUのサブ部分であり得る。スプリットモードには、使用されるスプリットモードに応じて様々な形状のノードをそれぞれ2つ、3つ、または4つの子ノードに分割するために使用されるバイナリツリー(BT)、トリプルツリー(TT)、およびクワッドツリー(QT)が含まれ得る。分割されたビデオ信号201は、圧縮のために、汎用コーダ制御コンポーネント211、変換スケーリングおよび量子化コンポーネント213、イントラピクチャ推定コンポーネント215、フィルタ制御分析コンポーネント227、ならびに動き推定コンポーネント221に転送される。
汎用コーダ制御コンポーネント211は、アプリケーション制約に従って、ビデオシーケンスの画像のビットストリームへのコーディングに関する決定を行うように構成されている。例えば、汎用コーダ制御コンポーネント211は、ビットレート/ビットストリームサイズ対再構成品質の最適化を管理する。そのような決定は、記憶空間/帯域幅有効性および画像解像度要求に基づいて行うことができる。汎用コーダ制御コンポーネント211はまた、バッファのアンダーランおよびオーバーランの問題を軽減するために、送信速度に照らしてバッファ利用を管理する。これらの問題を管理するために、汎用コーダ制御コンポーネント211は、他のコンポーネントによる分割、予測、およびフィルタリングを管理する。例えば、汎用コーダ制御コンポーネント211は、圧縮複雑性を動的に増加させて解像度を高めて帯域幅使用量を増加させ、または圧縮複雑度を減少させて解像度および帯域幅使用量を減少させ得る。したがって、汎用コーダ制御コンポーネント211は、ビデオ信号再構成品質とビットレートの懸念とのバランスをとるために、コーデックシステム200の他のコンポーネントを制御する。 汎用コーダ制御コンポーネント211は、他のコンポーネントの動作を制御する制御データを生成する。制御データはまた、デコーダでデコードするための信号パラメータにビットストリームでエンコードされるようにヘッダフォーマッティングおよびCABACコンポーネント231に転送される。
分割されたビデオ信号201はまた、インター予測のために動き推定コンポーネント221および動き補償コンポーネント219に送信される。分割されたビデオ信号201のフレームまたはスライスは、複数のビデオブロックに分割され得る。動き推定コンポーネント221および動き補償コンポーネント219は、時間予測を提供するために、受信されたビデオブロックの、1または複数の参照フレームにおける1または複数のブロックに対するインター予測コーディングを実行する。コーデックシステム200は、例えば、ビデオデータの各ブロックに適切なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
動き推定コンポーネント221および動き補償コンポーネント219は、高度に統合されてもよいが、概念的な目的のために別々に示されている。動き推定コンポーネント221によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成する処理である。動きベクトルは、例えば、予測ブロックに対するコードされたオブジェクトの変位を示し得る。予測ブロックは、画素差に関して、コードされるべきブロックと厳密に一致することがわかっているブロックである。予測ブロックはまた、参照ブロックと呼ばれることもある。そのような画素差は、絶対差の和(sum of absolute difference、SAD)、二乗差の和(sum of square difference、SSD)、または他の差メトリックによって判断され得る。HEVCは、CTU、コーディングツリーブロック(CTB)、およびCUを含むいくつかのコードされたオブジェクトを使用する。 例えば、CTUはCTBに分割することができ、次いで、CUに含めるためにCBに分割され得る。CUは、予測データを含む予測ユニット(prediction unit、PU)および/またはCU用の変換された残差データを含む変換ユニット(transform unit、TU)としてエンコードすることができる。動き推定コンポーネント221は、レート歪み最適化プロセスの一部としてレート歪み分析を使用することによって、動きベクトル、PU、およびTUを生成する。例えば、動き推定コンポーネント221は、現在のブロック/フレームについて複数の参照ブロック、複数の動きベクトルなどを判断することができ、最良のレート歪み特性を有する参照ブロック、動きベクトルなどを選択することができる。最良のレート歪み特性は、ビデオ再構成(例えば、圧縮によるデータ損失の量)の品質およびコーディング効率(例えば、最終エンコードのサイズ)の両方のバランスをとる。
いくつかの例では、コーデックシステム200は、デコードされたピクチャバッファコンポーネント223に記憶された参照ピクチャのサブ整数画素位置の値を計算することができる。例えば、ビデオコーデックシステム200は、参照ピクチャの4分の1画素位置、8分の1画素位置、または他の小数画素位置の値を補間し得る。したがって、動き推定コンポーネント221は、全画素位置および小数画素位置に対して動き探索を実行し、小数画素精度で動きベクトルを出力することができる。動き推定コンポーネント221は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコーディングスライス内のビデオブロックのPUに対する動きベクトルを計算する。動き推定コンポーネント221は、計算された動きベクトルを動きデータとしてヘッダフォーマッティングに出力し、エンコードおよび動きのためのCABACコンポーネント231を動き補償コンポーネント219に出力する。
動き補償コンポーネント219によって実行される動き補償は、動き推定コンポーネント221によって判断された動きベクトルに基づいて、予測ブロックをフェッチまたは生成することを含み得る。ここでも、いくつかの例では、動き推定コンポーネント221および動き補償コンポーネント219は、機能的に統合されてもよい。現在のビデオブロックのPUの動きベクトルを受信すると、動き補償コンポーネント219は、動きベクトルが指し示す予測ブロックを特定し得る。次いで、コードされている現在のビデオブロックの画素値から予測ブロックの画素値を減算して画素差値を形成することによって、残差ビデオブロックが形成される。一般に、動き推定コンポーネント221は、輝度成分に対する動き推定を実行し、動き補償コンポーネント219は、クロマ成分および輝度成分の両方について輝度成分に基づいて計算された動きベクトルを使用する。予測ブロックおよび残差ブロックは、変換スケーリングおよび量子化コンポーネント213に転送される。
分割されたビデオ信号201はまた、イントラピクチャ推定コンポーネント215およびイントラピクチャ予測コンポーネント217にも送信される。動き推定コンポーネント221および動き補償コンポーネント219と同様に、イントラピクチャ推定コンポーネント215およびイントラピクチャ予測コンポーネント217は、高度に統合されてもよいが、概念的な目的のために別々に示されている。イントラピクチャ推定コンポーネント215およびイントラピクチャ予測コンポーネント217は、上述したように、フレーム間で動き推定コンポーネント221および動き補償コンポーネント219によって実行されるインター予測の代替として、現在のフレーム内のブロックに対して現在のブロックをイントラ予測する。特に、イントラピクチャ推定コンポーネント215は、現在のブロックをエンコードするために使用するイントラ予測モードを判断する。いくつかの例では、イントラピクチャ推定コンポーネント215は、複数の試験されたイントラ予測モードから現在のブロックをエンコードするために適切なイントラ予測モードを選択する。 次いで、選択されたイントラ予測モードは、エンコードのためにヘッダフォーマッティングおよびCABACコンポーネント231に転送される。
例えば、イントラピクチャ推定コンポーネント215は、様々な試験されたイントラ予測モードのレート歪み分析を使用してレート歪み値を計算し、試験されたモードの中で最良のレート歪み特性を有するイントラ予測モードを選択する。レート歪み分析は、一般に、エンコードされたブロックとエンコードされたブロックを生成するためにエンコードされた元のエンコードされていないブロックとの間の歪み(またはエラー)の量、およびエンコードされたブロックを生成するために使用されるビットレート(例えば、ビット数)を判断する。イントラピクチャ推定コンポーネント215は、様々なエンコードされたブロックの歪みおよびレートから比率を計算して、どのイントラ予測モードがブロックの最良のレート歪み値を示すかを判断する。加えて、イントラピクチャ推定コンポーネント215は、レート歪み最適化(rate-distortion optimization、RDO)に基づく深度モデリングモード(depth modeling mode、DMM)を使用して、深度マップの深度ブロックをコードするように構成され得る。
イントラピクチャ予測コンポーネント217は、エンコーダ上で実装された場合、イントラピクチャ推定コンポーネント215によって判断された選択されたイントラ予測モードに基づいて予測ブロックから残差ブロックを生成し得るか、またはデコーダ上で実装された場合、ビットストリームから残差ブロックを読み出し得る。残差ブロックは、行列として表される、予測ブロックと元のブロックとの間の値の差を含む。次いで、残差ブロックは、変換スケーリングおよび量子化コンポーネント213に転送される。イントラピクチャ推定コンポーネント215およびイントラピクチャ予測コンポーネント217は、輝度成分およびクロマ成分の両方で動作し得る。
変換スケーリングおよび量子化コンポーネント213は、残差ブロックをさらに圧縮するように構成されている。変換スケーリングおよび量子化コンポーネント213は、離散コサイン変換(discrete cosine transform、DCT)、離散サイン変換(discrete sine transform、DST)、または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を含むビデオブロックを生成する。 ウェーブレット変換、整数変換、サブバンド変換、または他のタイプの変換も使用することができる。変換は、残差情報を画素値領域から周波数領域などの変換領域に変換することができる。変換スケーリングおよび量子化コンポーネント213はまた、例えば、周波数に基づいて、変換された残差情報をスケーリングするように構成されている。そのようなスケーリングは、異なる周波数情報が異なる粒度で量子化されるように残差情報にスケールファクタを適用することを含み、これは、再構成されたビデオの最終的な視覚的品質に影響を及ぼし得る。変換スケーリングおよび量子化コンポーネント213はまた、ビットレートをさらに低減するために、変換係数を量子化するように構成されている。量子化処理は、係数の一部または全部に関連付けられたビット深度を低減することができる。量子化の程度は、量子化パラメータを調整することによって変更することができる。いくつかの例では、変換スケーリングおよび量子化コンポーネント213は、次いで、量子化された変換係数を含む行列のスキャンを実行することができる。量子化された変換係数は、ヘッダフォーマッティングおよびCABACコンポーネント231に転送されてビットストリーム内でエンコードされる。
スケーリングおよび逆変換コンポーネント229は、動き推定をサポートするために、変換スケーリングおよび量子化コンポーネント213の逆動作を適用する。スケーリングおよび逆変換コンポーネント229は、例えば、別の現在のブロックの予測ブロックになり得る参照ブロックとして後で使用するために、逆スケーリング、変換、および/または量子化を適用して、画素領域内の残差ブロックを再構成する。動き推定コンポーネント221および/または動き補償コンポーネント219は、後のブロック/フレームの動き推定に使用するために、残差ブロックを対応する予測ブロックに加算し戻すことによって、参照ブロックを計算することができる。フィルタは、再構成された参照ブロックに適用され、スケーリング、量子化、および変換中に生成されるアーチファクトを軽減する。そうでなければ、このようなアーチファクトは、後続のブロックが予測されるときに不正確な予測を引き起こす(および追加のアーチファクトを生成する)場合がある。
フィルタ制御分析コンポーネント227およびインループフィルタコンポーネント225は、フィルタを、残差ブロックおよび/または再構成された画像ブロックに適用する。例えば、スケーリングおよび逆変換コンポーネント229からの変換された残差ブロックは、イントラピクチャ予測コンポーネント217および/または動き補償コンポーネント219からの対応する予測ブロックと組み合わされて、元の画像ブロックを再構成することができる。次いで、フィルタを再構成された画像ブロックに適用することができる。いくつかの例では、フィルタは、代わりに、残差ブロックに適用されてもよい。図2の他のコンポーネントと同様に、フィルタ制御分析コンポーネント227およびインループフィルタコンポーネント225は、高度に統合されており、一緒に実装することができるが、概念的な目的のために別々に描写されている。再構成された参照ブロックに適用されるフィルタは、特定の空間領域に適用され、そのようなフィルタがどのように適用されるかを調整するための複数のパラメータを含む。フィルタ制御分析コンポーネント227は、再構成された参照ブロックを分析して、そのようなフィルタが適用されるべき場所を判断し、対応するパラメータを設定する。そのようなデータは、エンコードのためのフィルタ制御データとしてヘッダフォーマッティングおよびCABACコンポーネント231に転送される。インループフィルタコンポーネント225は、フィルタ制御データに基づいてそのようなフィルタを適用する。フィルタは、デブロッキングフィルタ、ノイズ抑制フィルタ、SAOフィルタ、および適応ループフィルタを含み得る。そのようなフィルタは、例に応じて、空間/画素領域(例えば、再構成された画素ブロック上)または周波数領域に適用することができる。
エンコーダとして動作するとき、フィルタリングされた再構成された画像ブロック、残差ブロック、および/または予測ブロックは、上述のように、動き推定に後で使用するためにデコードされたピクチャバッファコンポーネント223に記憶される。デコーダとして動作するとき、デコードされたピクチャバッファコンポーネント223は、再構成およびフィルタリングされたブロックを記憶し、出力ビデオ信号の一部としてディスプレイに向けて転送する。デコードされたピクチャバッファコンポーネント223は、予測ブロック、残差ブロック、および/または再構成された画像ブロックを記憶することができる任意のメモリデバイスとすることができる。
ヘッダフォーマッティングおよびCABACコンポーネント231は、コーデックシステム200の様々なコンポーネントからデータを受信し、デコーダに向けて送信するためにそのようなデータをコードされたビットストリームにエンコードする。具体的には、ヘッダフォーマッティングおよびCABACコンポーネント231は、汎用制御データおよびフィルタ制御データなどの制御データをエンコードするための様々なヘッダを生成する。さらに、イントラ予測および動きデータを含む予測データ、ならびに量子化された変換係数データの形態の残差データは、全てビットストリーム内でエンコードされる。最終ビットストリームは、元の分割されたビデオ信号201を再構成するためにデコーダによって所望される全ての情報を含む。そのような情報はまた、イントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)、様々なブロックのためのエンコードコンテキストの定義、最も可能性の高いイントラ予測モードの指示、分割情報の指示などを含み得る。そのようなデータは、エントロピーコーディングを使用することによって、エンコードされ得る。例えば、情報は、コンテキスト適応可変長コーディング(context adaptive variable length coding、CAVLC)、CABAC、シンタックスベースのコンテキスト適応バイナリ算術コーディング(syntax-based context-adaptive binaryarithmetic coding、SBAC)、確率区間分割エントロピー(probabilityinterval partitioning entropy、PIPE)コーディング、または別のエントロピーコーディング技術を使用することによって、エンコードされ得る。エントロピーコーディングに続いて、コードされたビットストリームは、別のデバイス(例えば、ビデオデコーダ)へ送信され得るか、または、後の送信もしくは取得のためにアーカイブされ得る。
図3は、例示的なビデオエンコーダ300を示すブロック図である。ビデオエンコーダ300は、コーデックシステム200のエンコード機能を実装するために、および/または動作方法100の段階101、103、105、107、および/または109を実装するために使用され得る。エンコーダ300は、入力されるビデオ信号を分割し、分割されたビデオ信号201と実質的に同様の分割されたビデオ信号301とする。分割されたビデオ信号301は、次いで、エンコーダ300のコンポーネントによって圧縮され、ビットストリームにエンコードされる。
具体的には、分割されたビデオ信号301は、イントラ予測のためにイントラピクチャ予測コンポーネント317に転送される。イントラピクチャ予測コンポーネント317は、イントラピクチャ推定コンポーネント215およびイントラピクチャ予測コンポーネント217と実質的に同様であってもよい。分割されたビデオ信号301はまた、デコードされたピクチャバッファコンポーネント323内の参照ブロックに基づいて、インター予測のために動き補償コンポーネント321に転送される。動き補償コンポーネント321は、動き推定コンポーネント221および動き補償コンポーネント219と実質的に同様であってもよい。イントラピクチャ予測コンポーネント317および動き補償コンポーネント321からの予測ブロックおよび残差ブロックは、残差ブロックの変換および量子化のために変換および量子化コンポーネント313に転送される。変換および量子化コンポーネント313は、変換スケーリングおよび量子化コンポーネント213と実質的に同様であってもよい。変換および量子化された残差ブロックならびに対応する予測ブロック(関連付けられた制御データと共に)は、ビットストリームへのコーディングのためにエントロピーコーディングコンポーネント331に転送される。エントロピーコーディングコンポーネント331は、ヘッダフォーマッティングおよびCABACコンポーネント231と実質的に同様であってもよい。
変換および量子化された残差ブロックおよび/または対応する予測ブロックはまた、動き補償コンポーネント321による使用のための参照ブロックへの再構成のために、変換および量子化コンポーネント313から逆変換および量子化コンポーネント329に転送される。逆変換および量子化コンポーネント329は、スケーリングおよび逆変換コンポーネント229と実質的に同様であってもよい。インループフィルタコンポーネント325内のインループフィルタはまた、例に応じて、残差ブロックおよび/または再構成された参照ブロックに適用される。インループフィルタコンポーネント325は、フィルタ制御分析コンポーネント227およびインループフィルタコンポーネント225と実質的に同様であってもよい。インループフィルタコンポーネント325は、インループフィルタコンポーネント225に関して説明したように、複数のフィルタを含み得る。次いで、フィルタリングされたブロックは、動き補償コンポーネント321によって参照ブロックとして使用されるために、デコードされたピクチャバッファコンポーネント323に記憶される。デコードされたピクチャバッファコンポーネント323は、デコードされたピクチャバッファコンポーネント223と実質的に同様であってもよい。
図4は、例示的なビデオデコーダ400を示すブロック図である。ビデオデコーダ400は、コーデックシステム200のデコード機能を実装するために、ならびに/もしくは動作方法100の段階111、113、115、および/または117を実装するために使用され得る。デコーダ400は、例えば、エンコーダ300からビットストリームを受信し、エンドユーザに表示するためにビットストリームに基づいて再構成された出力ビデオ信号を生成する。
ビットストリームは、エントロピーデコードコンポーネント433によって受信される。エントロピーデコードコンポーネント433は、CAVLC、CABAC、SBAC、PIPEコーディング、または他のエントロピーコーディング技術などのエントロピーデコード方式を実装するように構成されている。例えば、エントロピーデコードコンポーネント433は、ヘッダ情報を使用して、ビットストリーム内のコードワードとしてエンコードされた追加のデータを解釈するためのコンテキストを提供することができる。デコードされた情報は、汎用制御データ、フィルタ制御データ、分割情報、動きデータ、予測データ、および残差ブロックからの量子化された変換係数など、ビデオ信号をデコードするための任意の所望の情報を含む。量子化された変換係数は、残差ブロックへの再構成のために、逆変換および量子化コンポーネント429に転送される。逆変換および量子化コンポーネント429は、逆変換および量子化コンポーネント329と同様であってもよい。
再構成された残差ブロックおよび/または予測ブロックは、イントラ予測動作に基づいて画像ブロックに再構成するために、イントラピクチャ予測コンポーネント417に転送される。イントラピクチャ予測コンポーネント417は、イントラピクチャ推定コンポーネント215およびイントラピクチャ予測コンポーネント217と同様であってもよい。具体的には、イントラピクチャ予測コンポーネント417は、予測モードを使用してフレーム内の参照ブロックを特定し、その結果に残差ブロックを適用してイントラ予測された画像ブロックを再構成する。再構成されたイントラ予測された画像ブロックおよび/または残差ブロックならびに対応するインター予測データは、それぞれ、デコードされたピクチャバッファコンポーネント223およびインループフィルタコンポーネント225と実質的に同様であり得る、インループフィルタコンポーネント425を介してデコードされたピクチャバッファコンポーネント423に転送される。インループフィルタコンポーネント425は、再構成された画像ブロック、残差ブロック、および/または予測ブロックをフィルタリングし、そのような情報は、デコードされたピクチャバッファコンポーネント423に記憶される。デコードされたピクチャバッファコンポーネント423からの再構成された画像ブロックは、インター予測のために動き補償コンポーネント421に転送される。動き補償コンポーネント421は、動き推定コンポーネント221および/または動き補償コンポーネント219と実質的に同様であってもよい。具体的には、動き補償コンポーネント421は、参照ブロックからの動きベクトルを使用して予測ブロックを生成し、残差ブロックを結果に適用して画像ブロックを再構成する。結果として得られた再構成されたブロックはまた、インループフィルタコンポーネント425を介してデコードされたピクチャバッファコンポーネント423に転送されてもよい。デコードされたピクチャバッファコンポーネント423は、分割情報を介してフレームに再構成することができる追加の再構成された画像ブロックを記憶し続ける。そのようなフレームはまた、シーケンス内に配置されてもよい。シーケンスは、再構成された出力ビデオ信号としてディスプレイに向けて出力される。
前述のメカニズムは、正方形/長方形フレームで表示される2Dビデオのエンコードおよびデコードに使用できる例示的な機械および/または処理である。しかし、PCCのビデオデータは、点を用いて不規則な3Dオブジェクトを表現している。以下のメカニズムは、PCC固有のビデオコーディング処理である。これらのメカニズムは、3D点群を2D正方形/長方形フレームで表現し、その2Dフレームを前述のメカニズムでエンコード/デコードできるようにするために使用され得る。一般的な例として、時間内の特定の瞬間における3D点群を、各点の位置を示すジオメトリフレームで説明することができる。点の色値および光の値は、ジオメトリフレームが示すように、点に投影される2Dパッチとして表現することができる。時間内のある瞬間のパッチを正方形/長方形アトラスフレームにパックし、上記のようなメカニズムでエンコード/デコードすることができる。パッチはアトラスフレームを完全に網羅しない場合があるので、アトラスフレームのどの領域がパッチデータを含み、どの領域が使用可能なビデオデータの空であるかを示すために、対応する占有フレームを利用することができる。点に対する追加属性は、対応する属性フレームにコードすることができる。以下、これらのメカニズムについて詳しく説明する。
図5は、PCCメカニズムに従ってコードされ得る点群媒体500の一例である。したがって、点群媒体500は、方法100を実行するとき、コーデックシステム200および/またはエンコーダ300などのエンコーダによってコードされてよく、コーデックシステム200および/またはデコーダ400などのデコーダによって再構成されてよい。
図1~4に説明されたメカニズムは、概して2Dフレームがコードされていると想定している。しかしながら、点群媒体500は、経時的に変化する点の群である。具体的には、点群媒体500はまた、点群および/または点群表現と呼ばれてもよいが、3D空間における点のグループである。点は、また、サンプルと呼ばれてよい。各点は、複数の種類のデータに関連付けられ得る。例えば、各点は、位置の観点から説明され得る。位置は、デカルト座標のセットとして説明され得る3D空間における位置である。さらに、各点は色を含み得る。色は、輝度(例えば、光)およびクロミナンス(例えば、色)の観点で説明され得る。色は、赤(R)、緑(G)、青(B)の値、または輝度(Y)、青色差(U)、赤色差(V)で説明することができ、それぞれ(R、G、B)または(Y、U、V)と説明される。点はまた、他の属性を含み得る。属性は、点群における各点に関連付けられ得る、オプションのスカラまたはベクトル特性である。属性は、反射率、透過率、面法線、タイムスタンプ、材料識別子(ID)、などを含み得る。
点群媒体500の各点が複数の種類のデータに関連付けられ得るので、図1~4に説明されたメカニズムに従って圧縮のために点群媒体500を準備するように、いくつかのサポートメカニズムが使用される。例えば、点群媒体500はフレームにソートされることができ、各フレームは、特定の状態または時間内のある瞬間における、点群に関する全てのデータを含む。このように、図5は、点群媒体500のシングルフレームを描写する。点群媒体500は次に、フレームごとにコードされる。点群媒体500は、3D境界ボックス501によって取り囲まれ得る。3D境界ボックス501は、対応するフレームに関する点群媒体500の点の全てを取り囲むようにサイズ決めされた3D長方形角柱である。3D境界ボックス501は、形式的には、直角に配置された6つの長方形面を有する立方体として定義されるボリュームとして定義され得る。点群媒体500が互いに素なセット(disjoint set)を含む場合には、複数の3D境界ボックス501が使用され得ることに留意されるべきである。例えば、点群媒体500は、接続されていない2つの図を描写できる場合があり、この場合、3D境界ボックス501は各図の周りに配置される。3D境界ボックス501における点は、以下に説明されるように処理される。
図6は、点群600から生成されたパッチ603の一例である。点群600は、点群媒体500のシングルフレームである。さらに、点群600は、3D境界ボックス501と実質的に同様である3D境界ボックス601によって取り囲まれる。したがって、方法100を実行するとき、点群600は、コーデックシステム200および/またはエンコーダ300などのエンコーダによってコードされてよく、コーデックシステム200および/またはデコーダ400などのデコーダによって再構成されてよい。
3D境界ボックス601は6つの面を含み、したがって、3D境界ボックス601の面にそれぞれ位置する6つの2D長方形フレーム602(例えば、頂部、底部、左、右、前、および後)を含む。点群600は、点群600を、対応する2D長方形フレーム602上に投影することによって、3Dデータから2Dデータに変換され得る。 これは、パッチ603の生成をもたらす。なお、2D長方形フレーム602は、(例えば、3D境界ボックス601の)2D境界ボックスと呼ばれることもある。パッチ603は、3D点群600の一部の2D表現であり、パッチ603は、対応する2D長方形フレーム602から見える点群600の部分の表現を含む。パッチ603は、ボリュメトリック情報に関連付けられたアトラス内の2D長方形領域として形式的に定義され得る。2D長方形フレーム602からの点群600の表現は、複数の互いに素な成分を含み得ることに留意すべきである。このように、2D長方形フレーム602は、複数のパッチ603を含み得る。したがって、点群600は、6個より多いパッチ603によって表現される場合がある。パッチ603はまた、アトラス、アトラスデータ、アトラス情報、および/またはアトラス成分と呼ばれることがある。3Dデータを2Dフォーマットに変換することにより、点群600のパッチ603は、インター予測および/またはイントラ予測などのビデオコーディングメカニズムに従ってコードすることができる。
図7A~7Cは、図6に説明されたように2D情報に変換された3D点群をエンコードするメカニズムを示す。具体的には、図7Aは、パッチ603などのパッチのセットに関連付けられた、例示的な占有フレーム710を示す。占有フレーム710は、値がバイナリ形式でコードされた占有713および715を含む。占有713および715は、アトラスサンプルが3D空間において関連付けられたサンプルに対応しているかどうかを示す値である。例えば、占有715として描写される占有値0は、境界ボックス601の一部がパッチ603の1つによって占有されていないことを表す。0によって表された境界ボックス601のそれらの部分は、ボリュメトリック表現(例えば、点群600)の再構成に関与しない。一方、占有713として描写される占有値1は、境界ボックス601の一部がパッチ603の1つによって占有されていることを表す。1によって表された境界ボックス601のそれらの部分は、ボリュメトリック表現(例えば、点群600)の再構成に関与する。占有フレーム710は、2Dアレイを構成する占有値の集合として形式的に定義されてよく、単一のアトラスフレームの占有情報全体を表す。したがって、占有フレーム710は、アトラス内の各サンプル位置について、その位置が点群表現内の有効な3D点に対応するかどうかを示すことができる。
3D情報を2D平面上に投影することによって生成される様々なパッチが、長方形(または正方形)ビデオフレームにパックされ得る。AVC、HEVCおよびVVCなどの様々なビデオコーデックが、そのようなビデオフレームをコードするように予め構成されているので、このアプローチは有利であり得る。このように、PCCコーデックは、パッチをコードするために、他のビデオコーデックを使用し得る。図7Aに示されるように、パッチはフレームにパックされ得る。パッチは任意のアルゴリズムによってパックされ得る。例えば、パッチは、サイズに基づいてフレームにパックされ得る。特定の例において、パッチは最大から最小までを含む。最大のパッチは、任意の開放空間に最初に配置され得、一度サイズ閾値が交差されると、より小さいパッチ隙間を埋めるように配置され得る。例えば、最大のパッチはフレームの左上方向に配置され得、漸進的により小さいパッチは、右下方向に、かつ一度サイズ閾値が交差されると隙間を埋めるように、配置され得る。図7Aに示されるように、そのようなパッキング方式は、パッチデータを含まない空白をもたらす。空白のエンコーディングを回避するために、占有フレーム710が使用される。占有フレーム710は、時間内の特定の瞬間における点群の全ての占有データを含む。具体的には、占有フレーム710は、1または複数の占有値(占有データ、占有情報、および/または占有成分とも呼ばれる)を含む。占有713および/または715は、アトラス733(パッチのグループ)に対応する2Dアレイとして実装することができ、その値は、アトラス733内の各サンプル位置について、その位置が点群表現内の有効な3D点に対応するか否かを示す。図7Aに示すように、占有フレーム710は、占有713として描写された有効データの領域を含む。有効データの領域は、占有フレーム710の対応する位置にアトラス733/パッチデータが存在することを示す。また、占有フレーム710には、占有715として描写された無効データの領域が含まれる。無効データの領域は、占有フレーム710の対応する位置にアトラス733/パッチデータが存在しないことを示す。
図7Bは、パッチ603などのパッチのセットに関連付けられた例示的なジオメトリフレーム720を示す。ジオメトリフレーム720は、ジオメトリマップとしても知られ、パッチ603の各々の輪郭または地形を提供または描写する。具体的には、ジオメトリフレーム720は、パッチ603における各点が境界ボックス601の平面(例えば、2D長方形フレーム602)から離れる距離を示す。ジオメトリフレーム720は、ジオメトリ723を含む。ジオメトリ723は、ボリュメトリックフレームに関連付けられたデカルト座標のセットとして定義することができる。ボリュメトリックフレームは、特定の時間インスタンスにおけるデカルト座標および0個以上の対応する属性セットによって指定される3D点のセットである。したがって、ボリュメトリックフレームは、占有フレーム710、ジオメトリフレーム720、アトラスフレーム730、およびオプションとして、指定された瞬間における点群を説明する任意の1または複数の属性フレームの組み合わせである。例えば、ジオメトリ723は、時間内の対応する瞬間における3D境界ボックス内の各点の位置を説明することができる。
上述のように、ジオメトリフレーム720は、時間内の特定の瞬間における点群に対するジオメトリ723(ジオメトリマップ、ジオメトリデータ、ジオメトリ情報、および/またはジオメトリ成分としても知られる)を含む。ジオメトリ723は、各パッチに関連付けられたジオメトリ情報の集約によって生成される2Dアレイとして実装されてもよく、ジオメトリ情報/データは点群フレームに関連付けられたデカルト座標のセットである。具体的には、パッチは全て3D空間における点から投影される。そのような投影は、パッチから3D情報を除去する効果を有する。ジオメトリ723は、パッチから除去された3D情報を維持する。例えば、パッチにおける各サンプルが、3D空間における点から取得される。したがって、ジオメトリフレーム720は、各パッチ内の各サンプルに関連付けられた3D座標を含んでもよい。したがって、ジオメトリフレーム720/ジオメトリ723は、2Dパッチを3D空間にマッピング/変換して3D点群を再構成するために、デコーダによって使用されることができる。具体的には、デコーダは各パッチサンプルを適切な3D座標上にマッピングして、点群を再構成し得る。
図7Cは、パッチ603などのパッチのセットに関連付けられた例示的なアトラスフレーム730を示す。アトラスフレーム730は、境界ボックス601におけるパッチ603のサンプルを提供または描写する。アトラスフレーム730は、3D境界ボックスとして知られる3D空間のボリュームに対応する長方形フレームに投影された2次元(2D)境界ボックス(パッチおよび/またはアトラス733としても知られる)の集合として形式的に定義されており、ボリュメトリックデータはその上にレンダリングされてよい。アトラスフレーム730は、例えば、パッチ603の点の、色成分および/または輝度成分を含んでもよい。色成分は、RGB色モデル、YUV色モデルに基づいてよく、または別の知られている色モデルに基づいてよい。占有フレーム710、ジオメトリフレーム720、およびアトラスフレーム730は、点群600および/または点群媒体500をコードするために使用され得る。このように、方法100を実行するとき、占有フレーム710、ジオメトリフレーム720、およびアトラスフレーム730は、コーデックシステム200および/またはエンコーダ300などのエンコーダによってコードされてよく、コーデックシステム200および/またはデコーダ400などのデコーダによって再構成されてよい。
上述のように、アトラスフレーム730は、時間内の特定の瞬間における点群に対する1または複数のアトラス733(アトラスデータ、アトラス情報、アトラス成分、および/またはパッチとしても知られる)を含む。アトラス733は、3D空間における3D境界ボックスに対応する長方形フレームに投影された2D境界ボックスの集合であり、各2D境界ボックス/パッチは、点群のサブセットを表す。具体的には、アトラス733は、図6に関して説明されたように、3D点群が2D空間に投影されたときに生成されたパッチを含む。このように、アトラス733/パッチは、時間内の対応する瞬間における点群に関連付けられた画像データ(例えば、色および光の値)を含む。アトラス733は、図7Aの占有フレーム710と図7Bのジオメトリフレーム720とに対応する。具体的には、アトラス733は、占有率713に応じた有効データの領域にはデータを含み、占有率715に応じた無効データの領域にはデータを含まない。さらに、ジオメトリ723は、アトラス733内のサンプルの3D情報を含む。
点群が属性(属性データ、属性情報、および/または属性成分としてもまた知られる)を含み得ることもまた留意すべきである。そのような属性は、属性フレームに含まれ得る。属性は、時間内の特定の瞬間における点群の対応する属性に関する全てのデータを含み得る。属性は幅広い異なるデータを含み得るので、属性フレームの一例は図示しない。具体的には、反射率、面法線、タイムスタンプ、素材IDなど、属性は点群における各点に関連付けられた任意のスカラまたはベクトル特性であり得る。さらに、属性は任意選択(例えば、ユーザ定義)であり、用途に基づいて変わり得る。しかしながら、使用される場合、点群属性は、アトラス733、ジオメトリ723および占有と同様な方式で属性フレームに含まれ得る。
したがって、エンコーダは、点群フレームを、アトラス733のアトラスフレーム730、ジオメトリ723のジオメトリフレーム720、占有713および715の占有フレーム710、ならびにオプションとして属性の属性フレーム(集合的に、ボリュメトリックフレーム)に圧縮することができる。アトラスフレーム730、ジオメトリフレーム720、占有フレーム710、および/または属性フレームは、デコーダへの伝送のために、例えば異なるエンコーダによってさらに圧縮され得る。デコーダは、アトラスフレーム730、ジオメトリフレーム720、占有フレーム710、および/または属性フレームを解凍し得る。デコーダは次に、点群フレームを再構成して、対応する瞬間において再構成された点群を判断するために、アトラスフレーム730、ジオメトリフレーム720、占有フレーム710、および/または属性フレームを使用する。再構成された点群フレームは次に、元の点群シーケンスを再構成するように(例えば、表示のために、および/または、データ分析における使用のために)、シーケンスで含まれてよい。特定の例として、アトラスフレーム730および/またはアトラス733は、図1~4に関して説明された技術を使用することによって、例えば、VVC、HEVC、および/またはAVCコーデックを使用することによって、エンコードおよびデコードされ得る。
図8は、V-PCCフレーム、例えば、3D境界ボックス801に含まれるものをレンダリングするためのカメラ位置811および視野ベクトル815を定義するための例示的なメカニズム800を示す図。1つの例において、点群媒体500などの点群を、3D境界ボックス501および/または601と実質的に同様であり得る3D境界ボックス801において再構成することができる。具体例として、パッチ603のセットを、占有フレーム710、ジオメトリフレーム720、アトラスフレーム730および/または属性フレームからデコードすることができる。パッチを、3D境界ボックス801内の点に投影して、点群を再構成することができる。カメラ位置811のカメラは、3D境界ボックス801内の再構成された点群をレンダリングするために使用することができる。このように、メカニズム800は、方法100、1100および/または1200を実装するときに使用されることができる。さらに、メカニズム800は、例えば、エンコーダでのエラーテストのために、またはデコーダでの表示のために点群を再構成するときに、コーデックシステム200、エンコーダ300、デコーダ400、ビデオコーディングデバイス1000、および/またはシステム1300によって使用されることができる。さらに、メカニズム800を説明するデータを、V-PCCビットストリーム900などのPCCビットストリームによってシグナリングすることができる。
上述のように、点群を3D境界ボックス501および/または601と実質的に同様であり得る3D境界ボックス801において再構成することができる。具体的には、ジオメトリを使用して、3D境界ボックス801内の点群の点を配置することができる。次に、パッチおよび/または属性を、3D境界ボックス801内の点に投影して、点群のフレームを再構成することができる。3D境界ボックス801は、頂部801a、底部801b、右側801c、左側801d、近傍部801f、および遠方部801eを含むように説明されてよい。このような呼称は、他のコンポーネントに関する説明を明確にするために使用される。例えば、3D境界ボックス801は、予め定められた座標である原点802の周りに配置されてもよい。
したがって、頂部801aは原点802の上にあり、底部801bは原点802の下にあり、右側801cは原点802の右にあり、左側801dは原点802の左にあり、近傍部801fは原点802の前にあり、遠方部801eは原点802の後にある。
3D境界ボックス801は3Dオブジェクトであり、3Dデータを含む。カメラ810を使用して、3Dデータを、2Dスクリーンに表示することができる形態に変換することができる。カメラ810は、3Dオブジェクトの2D視野を提供する視野ポートである。別の言い方をすれば、カメラ810は、視野ベクトル815によって定義される角度でカメラ位置811から3D境界ボックス801のコンテンツの2D視野を提供することができる。カメラ位置811は、カメラ810の視野ポートの中心を説明する座標である。視野ベクトル815は、カメラ810の視野ポートの正面から90度の角度で延びるベクトルであり、したがって、カメラ位置811から視野ポートが向けられる方向を定義する。いくつかのPCCシステムでは、デコーダは、3D境界ボックス801に含まれるコンテンツにかかわらず、カメラ810を予め定義されたカメラ位置811に配置し、予め定義された視野ベクトル815を使用する。このようなシステムでは、ユーザがカメラ810を制御し、カメラ810を好みの位置に動かして、好みの角度から所望のコンテンツをレンダリングすることが必要になることがある。このため、用途によっては、ユーザが所望のコンテンツを見るのに3D境界ボックス801での最良の位置を認識し得ないという問題が生じる場合がある。例えば、ユーザはサッカーの試合のPCCビデオを見る場合がある。デフォルトのカメラ位置811は、3D境界ボックス801内のサッカーフィールドの中心に近く、および/または、その中心に向けられることがある。ユーザは、クォーターバックまたはストライカに近い位置からPCCビデオを見たいと希望することがあるが、クォーターバックまたはストライカが3D境界ボックス801内のフィールド上のどこに位置しているか知らないことがある。その結果、検索に時間がかかり、望ましくないユーザエクスペリエンスを生成することがある。
本開示では、コンテンツ制作者が、提案されたカメラ位置811および提案された視野ベクトル815を選択し、提供することが可能である。これにより、コンテンツ制作者は、どの視野ポートが興味深い素材を含む可能性が高いかをユーザに示すことができる。さらに、これにより、コンテンツ制作者がユーザのエクスペリエンスを誘導することが可能になる。複数のカメラ810を使用することができ、したがって、複数のカメラ位置811および視野ベクトル815が、選択のためにユーザに提案されることができる。各カメラ810について、カメラ位置811は、カメラオフセット813によって示すことができる。カメラオフセット813は、カメラ位置811と、点群を含む3D境界ボックス801の予め定義された点との間の3D空間における距離を示すパラメータである。いくつかのシステムでは、カメラオフセット813は、3D境界ボックス801の底部801b、左側801d、近傍部801fコーナからの測定値として示される。このように、カメラオフセット813は、カメラ位置811と3D境界ボックス801の底部801b、左側801d、近傍部801fコーナとのX軸、Y軸およびZ軸方向の差を示している。このように、カメラオフセット813は、そのような差異を説明するX成分、Y成分、およびZ成分を含む。カメラオフセット813は、PCCビットストリームにエンコードすることができ、カメラ810をカメラ位置811に配置するために十分なデータを提供する。
各カメラ810の視野ベクトル815は、カメラ回転817によって示すことができる。このように、カメラ回転817は、カメラ810から、点群を含む3D境界ボックス801に向ける視野ベクトル815を示すパラメータである。いくつかの例では、カメラ回転817は、四元数表現で説明される。四元数表現は、スカラ値、および空間軸に沿う3つの単位ベクトルを使用する複素数領域におけるベクトルの表現である。四元数表現は、3D空間の任意のベクトルを説明するために使用することができる。デコーダは、PCCビットストリームに示されるカメラオフセット813およびカメラ回転817に基づいて、カメラ810の視野ポートを配置することができる。次いで、この視野ポートを使用して、3D境界ボックス801内のPCCコンテンツの2D表現を、提案された位置および角度からレンダリングすることができる。
具体的な実装態様において、行列乗算を使用してそのようなレンダリングを遂行することができる。例えば、PCCコンテンツを、3D境界ボックス801を表すモデル行列を初期化することで再構成することができる。ジオメトリを、点を表す値をモデル行列に配置することで定義することができる。パッチおよび属性を、モデル行列におけるそのような点との相関によって、ジオメトリに投影することもできる。次に、モデル行列に様々な変換を適用することができる。例えば、3D点群から2D画像をレンダリングするために、カメラ810の情報をモデル行列に変換として適用することができる。例えば、カメラオフセット813をオフセット行列として適用し、カメラ回転817を回転行列として適用することができる。オフセット行列は、モデル行列内の点の3Dモデルを2D表現に変換するために適用されることができるカメラオフセット813の行列表現である。具体例において、オフセット行列を以下のように表すことができる:
ここで、Offset[0]、Offset[1]、Offset[2]はそれぞれ、カメラオフセット813のX成分、Y成分およびZ成分を含む。また、1つの値をスケーリングファクタに置き換えて、PCCコンテンツをスケーリングすることができる。
回転行列は、モデル行列内の点の3Dモデルを2D表現に変換することに適用されることができるカメラ回転817の行列表現である。回転行列は、モデル行列に適用するために、カメラ回転817の四元数値を含んでもよい。具体例において、回転行列は以下のように表すことができる:
ここで、qXはカメラ回転817のX成分を指定し、qYはカメラ回転817のY成分を指定し、qZはカメラ回転817のZ成分を指定し、qWはカメラ回転817のスカラ成分を指定する。qWを以下のように計算することができる:
qW=Sqrt(1-(qX
2+qY
2+qZ
2))
このように、エンコーダは、qX、qYおよびqZをエンコードすることによってカメラ回転817をシグナリングすることができる。次に、デコーダは、qX、qYおよびqZに基づいてqWを計算することができる。次に、デコーダは、カメラ位置811および視野ベクトル815によって定義される視野ポートから3D境界ボックス801内のPCCコンテンツの2Dレンダリングを取得するために、モデル行列にオフセット行列および回転行列を乗算することができる。その結果、ユーザによる指示されたカメラ810の選択、またはデフォルトでの選択により、ユーザは、コンテンツ制作者が意図した通りの位置および角度から3D境界ボックス801内のコンテンツを見ることができるようになる。以下でそのようなデータのシグナリングをより詳しく説明する。したがって、本実施例では、PCCビデオコンテンツの所定のかつ選択可能な視野位置および角度を生成することで、エンコーダおよびデコーダの双方で機能性を向上させることができる。さらに、そのようなデータを最小限の方法でシグナリングすることによって本開示はコーディングの効率を高めるメカニズムをサポートし、したがって、エンコーダおよび/またはデコーダにおけるプロセッサ、メモリ、および/またはネットワークリソース使用量の減少をサポートする。
図9は、点群をレンダリングするためのカメラパラメータのシグナリングに使用する例示的なV-PCCビットストリーム900を示す概略図である。例えば、V-PCCビットストリーム900を、コーデックシステム200、デコーダ400および/またはビデオコーディングデバイス1000によってデコードするためのコーデックシステム200、エンコーダ300、および/またはビデオコーディングデバイス1000により、方法100、1100および/または1200に従って生成することができる。さらに、V-PCCビットストリーム900を使用して、占有フレーム710、ジオメトリフレーム720、アトラスフレーム730および/または属性フレームとして点群媒体500からパッチ603のセットをエンコードすることができる。さらに、V-PCCビットストリーム900は、カメラオフセット813および/またはカメラ回転817をエンコードして、デコーダとしたシグナリングされたカメラ視点からのレンダリングをサポートすることができる。
V-PCCビットストリーム900は、一連のV-PCCユニット910を含む。V-PCCユニット910は、デコーダに向けて伝送するためのデータパケットに配置されるようにサイズ決めされたデータコンテナである。具体的には、V-PCCユニット910は、V-PCCビデオシーケンス内の対応する瞬間における点群を表す1または複数のボリュメトリックフレームに関連するV-PCC成分および/または対応するパラメータセットを含む。具体例として、V-PCCユニット910は、多角的ビデオコーディング(VVC)規格に対応するネットワーク抽象化層(NAL)ユニットとして構成されてもよい。NALユニットは、パケットサイズのデータコンテナである。例えば、単一のNALユニットは、概して、ネットワーク伝送が可能であるようにサイズ決めされる。 NALユニットは、NALユニットタイプを示すヘッダおよび関連データを含むペイロードを含んでよい。V-PCCユニット910はV-PCCユニットペイロード914およびV-PCCユニットヘッダ912を含む。V-PCCユニットペイロード914は、ボリュメトリックフレームに関連するビデオデータの対応するタイプを含む。V-PCCユニットヘッダ912は、V-PCCユニットペイロード914に含まれたデータのタイプを示すヘッダである。
V-PCCユニットペイロード914は、例に応じて、V-PCCパラメータセット911、アトラスフレーム913、占有フレーム915、ジオメトリフレーム917および/または属性フレーム919を含んでよい。V-PCCパラメータセット911は、1または複数の対応するボリュメトリックフレームをコードするために使用される設定を説明するパラメータのグループである。一例として、V-PCCパラメータセット911は、アトラス適応パラメータセット(APS)921を含み得る。アトラスAPS921は、アトラスフレーム913に含まれる1または複数のパッチに適用されるシンタックス要素/パラメータを含むシンタックス構造である。例えば、アトラスAPS921のパラメータは、PCCフレームに関連付けられた全ての1または複数の(例えば、全ての)パッチに適用されてもよい。V-PCCパラメータセット911は、アトラスフレームパラメータセット、アトラスシーケンスパラメータセット、ビデオに基づく視覚的ボリュメトリックコーディング(V3C)パラメータセットなどの他のパラメータセットも含むことができる。パラメータセット間の主要な区別は、含まれるパラメータが、ビデオレベル(例えば、V3Cパラメータセット)、シーケンスレベル(例えば、アトラスシーケンスパラメータセット)、フレームレベル(例えば、アトラスフレームパラメータセット)、および/またはパッチレベル(例えば、アトラスAPS)でV-PCCに関連するかどうかということである。また、特定の目的のために他のパラメータセットを使用することも可能であり、前述のものは完全なリストとして意図されたものではない。
アトラスフレーム913は、3D境界ボックス501、601、および/または801などの3D空間内のボリュームに対応する長方形フレームに投影された2D境界ボックス/パッチ/アトラスの集合であり、その上にボリュメトリックデータがレンダリングされる。アトラスフレーム913は、実質的にアトラスフレーム730と同様である。占有フレーム915は、2Dアレイを構成する占有値の集合であり、単一のアトラスフレームのための占有情報全体を表す。占有は、アトラスサンプルが3D空間内の関連付けられたサンプルに対応するかどうかを示す値である。占有フレーム915は、実質的に占有フレーム710と同様であってよい。ジオメトリマップとしても知られるジオメトリフレーム917は、特定の深さに投影されたジオメトリパッチ情報を含むフレームである。ジオメトリは、ボリュメトリックフレームに関連付けられたデカルト座標のセットである。ジオメトリフレーム917は、実質的にジオメトリフレーム720と同様である。属性フレーム919は、色、反射率、面法線、タイムスタンプ、材料識別子(ID)など、点群のボリュメトリックフレーム内の各点に任意に関連付けられたスカラまたはベクトル特性を含むフレームであってよい。ボリュメトリックフレームは、特定の時間インスタンスにおけるデカルト座標と0個以上の対応する属性セットによって指定される3D点のセットである。点群のビデオは一連のボリュメトリックフレームを含む。このように、V-PCCパラメータセット911は、1または複数のボリュメトリックフレームをどのようにデコードすべきかを示すパラメータセットを含み、アトラスフレーム913、占有フレーム915、ジオメトリフレーム917、および属性フレーム919は、ボリュメトリックフレームを再構成するためのビデオデータを含む。
上述のように、いくつかのV-PCCシステムは常に、デフォルトの位置における3D点群の2D視野をレンダリングするようにカメラを配置する。このようなシステムにおいて、アトラスフレーム913、占有フレーム915、ジオメトリフレーム917、および属性フレーム919からのデータは、ボリュメトリックフレームを再構成するために使用される。次に、ボリュメトリックフレームは、デフォルトの位置におけるカメラによってレンダリングされる。このアプローチは、ビデオごとにデフォルトの位置が変わらず、したがって、有用な情報が特に表示されない可能性が高いボリュメトリックフレームの視野を提供するため、多くの状況で有益でないことがある。
本開示では、コンテンツ制作者が、提案されたカメラ位置および提案された視野ベクトルを選択し、提供することが可能である。これにより、コンテンツ制作者は、どの視野ポートがボリュメトリックフレームの興味深い視野を含む可能性が高いかをユーザに示すことができる。さらに、これにより、コンテンツ制作者がユーザのエクスペリエンスを誘導することが可能になる。具体例において、アトラスAPS921を使用して、提案されたカメラ位置および提案された視野ベクトルをコードすることができる。例えば、アトラスAPS921は、1または複数のアトラスカメラパラメータ(ACP)シンタックス構造を含むことができる。各ACPシンタックス構造は、レンダリングに使用するためのカメラを説明するデータを含むことができる。例えば、アトラスAPS921は、カメラオフセット813などのカメラオフセットとしてカメラ位置をコードするACPシンタックス構造をエンコードすることができる。さらに、ACPシンタックス構造は、例えば、四元数表現でのカメラ回転817としてカメラ視野ベクトルをコードすることができる。
具体的な実装態様において、カメラオフセットを、軸dのACPオフセット(Acp_offset_on_axis[d])933としてコードすることができる。例えば、Acp_offset_on_axis[d]933は、カメラオフセットのX成分、Y成分およびZ成分を含んでよく、ここで、dは、どのオフセット成分が示されたかを示すカウンタ変数である。例えば、dは、それぞれX成分、Y成分またはZ成分を示す、0、1、または2に設定されることができる。具体的な実装態様において、Acp_offset_on_axis[d]933を以下のように定義することができる。Acp_offset_on_axis[d]933は、現在のカメラモデルの軸dに沿って、Offset[d]と表記されるオフセットの値を2
-16のインクリメントで示す。Acp_offset_on_axis[d]933の値は、-2
31から2
31-1の範囲(両端を含む)内にある必要があり、ここで、dは0から2の範囲(両端を含む)内にある。0、1および2に等しいdの値はそれぞれ、X軸、Y軸およびZ軸に対応する。存在しない場合、Acp_offset_on_axis[d]は0に等しいことを推測することができる。Offset[d]を、Offset[d]=Acp_offset_on_axis[d]÷2
16によって判断することができる。デコーダは、Acp_offset_on_axis[d]933内のデータに基づいてオフセット行列を生成することができる。オフセット行列を以下のように表すことができる。
ここで、Offset[0]、Offset[1]、Offset[2]はカメラのX、Y、Z変位であり、1はスケーリングファクタを用いて所望されるように置き換えることができる。
さらに、カメラ回転の単位ベクトル四元数成分は、ACP回転qx(Acp_rotation_qx)935、ACP回転qy(Acp_rotation_qy)937、ACP回転qz(Acp_rotation_qz)939としてエンコードされることができる。カメラ回転のスカラ成分を、単位ベクトル成分に基づいてデコーダによって判断することができる。具体例において、Acp_rotation_qx935、Acp_rotation_qy937およびAcp_rotation_qz939を以下のように定義することができる。Acp_rotation_qx935は、四元数表現を使用する現在のカメラモデルの回転に対して、X成分qXを指定する。Acp_rotation_qxの値は、-214から214の範囲(両端を含む)内にある必要がある。存在しない場合、Acp_rotation_qx935は0に等しいと推測することができる。qXの値を、qX=Acp_rotation_qx÷214によって判断することができる。
さらに、Acp_rotation_qy937は、四元数表現を使用する現在のカメラモデルの回転に対して、Y成分qYを指定する。Acp_rotation_qy937の値は、-214から214の範囲(両端を含む)内にある必要がある。存在しない場合、Acp_rotation_qy937は0に等しいと推測することができる。qYの値を、qY=acp_rotation_qy÷214によって判断することができる。
さらに、Acp_rotation_qz939は、四元数表現を使用して、現在のカメラモデルの回転に対して、Z成分qZを指定する。Acp_rotation_qz939の値は、-214から214の範囲(両端を含む)内にある必要がある。存在しない場合、Acp_rotation_qz939は0に等しいと推測することができる。qZの値を、qZ=acp_rotation_qz÷214によって判断することができる。
四元数表現を使用する現在のカメラモデルの回転に対する第4/スカラ成分qWは、以下のように計算することができる。qW=Sqrt(1-(qX
2+qY
2+qZ
2))。デコーダは、Acp_rotation_qx935、Acp_rotation_qy937およびAcp_rotation_qz939からのデータに基づいて回転行列を生成することができる。例えば、単位四元数を以下のように回転行列として表すことができる。
このように、エンコーダは、V-PCCビットストリーム900内のカメラオフセットをAcp_offset_on_axis[d]933として、カメラ回転をAcp_rotation_qx935、Acp_rotation_qy937およびAcp_rotation_qz939としてコードすることができる。デコーダは、対応するPCCビデオデータをモデル行列に含めることによって3D境界ボックス内の点群を再構成することができる。次に、デコーダは、Acp_offset_on_axis[d]933に基づいて、カメラオフセットを説明するオフセット行列と、Acp_rotation_qx935、Acp_rotation_qy937およびAcp_rotation_qz939に基づいて、カメラ回転を説明する回転行列とを生成することができる。次に、デコーダは、例えば、行列乗算を介して、オフセット行列および回転行列をモデル行列に適用することによって、示された視野ポートからの3D点群の2D視野をレンダリングすることができる。したがって、Acp_offset_on_axis[d]933、Acp_rotation_qx935、Acp_rotation_qy937、およびAcp_rotation_qz939は、3Dボリュメトリック表現から、エンドユーザが見るために2Dスクリーンに表示され得る、示されたカメラ位置および視野角からの2D表現に再構成された点群を変換するための変換として使用できるデータを含む。このように、Acp_offset_on_axis[d]933、Acp_rotation_qx935、Acp_rotation_qy937およびAcp_rotation_qz939は、好ましい視野位置および角度を示すためにコンテンツ制作者によって使用されることができ、したがって、V-PCCビットストリーム900によってコードされた3D V-PCCコンテンツのユーザのエクスペリエンスを誘導するためにエンコーダによって使用されることができる。
ここで、前述の情報の具体的な実装態様を本明細書において以下のようにより詳しく説明する。3D再構成された情報は、オブジェクトのボリュームおよび形状の説明を提供する。しかしながら、空間内の方向および位置を含む外部カメラパラメータなどのいくつかのさらなるパラメータも存在する。さらに、スケーリングパラメータは、点のサイズおよび物理空間における空間に関する情報を提供する。しかし、いくつかのPCCシステムは、没入型オブジェクトに対するディレクタのデフォルト視野を定義するような情報を利用しない。カメラを定義するために、2セットのパラメータが使用される。これらは、3D空間における位置を含み、点群フレーム原点に対する並進として定義されることがある。カメラパラメータはさらに、点群フレームの座標系に関する回転を含む。カメラに対して回転および並進パラメータを提供すべく、PCCビットストリームにおけるメッセージは、対応するパラメータのリストを含むように修正される。
3Dレンダリングパイプラインにおける外部カメラパラメータは、以下のように定義してよい。具体的に、ワールド座標におけるカメラの定義には、2つのファクタが含まれる。1つ目は、ワールド座標系に対するカメラのX変位、Y変位およびZ変位であるオフセットパラメータである。Tと表記されたオフセット行列を、以下のように定義することができる。
ここで、X、YおよびZは、カメラのX変位、Y変位およびZ変位であり、1は、スケーリングファクタを用いて所望されるように置き換えることができる。
第2のパラメータは、ワールド座標系に対するカメラ回転を定義するRと表記される配向行列で、その一例を以下に説明する。
ここで、α、β、γはそれぞれ、ワールド座標のx、yおよびz軸に対する回転角である。得られた変換は、シーングラフで使用され、再構成された点群を含む境界ボックスに適用することができる。これらのパラメータを使用することによって、いくつかの予め定義されたカメラ位置がコンテンツ制作者によって提案され得る。このようなカメラ位置は、ディレクタの視野と呼ばれることがある。
例示的な実装態様において、補足拡張情報(SEI)メッセージは、ジオメトリ変換パラメータを保持してよく、以下に挙げる情報を追加することによって修正されてよい。例えば、1または複数のカメラは、ボリュメトリックシーン内の特定の動作に視聴者の注意を向けるために使用される予め定義されたまたはディレクタの視野を示すためにモデルに関連付けられることができる。各カメラを、グローバルシーン座標系における各軸に沿ってオフセットで示すことができる。各カメラを、各軸に沿って特定の回転で特徴付けることができる。別の例において、各カメラ回転を、四元数x、y、zおよびw2=1-(x2+y2+z2)で特徴付けてよい。
上記パラメータを含むジオメトリ変換パラメータSEIメッセージシンタックスを以下のように説明することができる。
ジオメトリ変換パラメータSEIメッセージセマンティクスに対する例示的なセマンティクス変更は以下の通りである。gtp_num_camera_infoは予め定義されたカメラ事前設定の数を示す。0に等しいgtp_num_camera_infoが、カメラ情報が存在しないことを指定する。存在しない場合、gtp_num_camera_infoの値は0に等しいと推測してよい。gtp_camera_offset_on_axis[i][d]は、軸dに沿ったi番目のカメラオフセットの値を示す。gtp_geometry_scale_on_axis[i][d]の値は、0から232-1の範囲(両端を含む)内にあり、ここで、dは0から2の範囲(両端を含む)内にある。0、1および2に等しいdの値はそれぞれ、X軸、Y軸およびZ軸に対応する。存在しない場合、gtp_geometry_scale_on_axis[i][d]が0に等しいと推測してよい。gtp_camera_orientation_on_axis[i][d]は、i番目のカメラ方向に対するd番目の成分、Orientation[i][d]を指定する。gtp_camera_orientation_on_axis[i][d]の値は、-215から215-1の範囲(両端を含む)内にあってよい。0、1および2に等しいdの値はそれぞれ、X回転成分、Y回転成分およびZ回転成分に対応する。存在しない場合、gtp_camera_orientation_on_axis[i][d]は0に等しいと推測すべきである。Orientation[i][d]の値を以下のように計算してよい:
Orientation[i][d]=gtp_camera_orientation_on_axis[i][d]÷215
また、四元数アプローチをカメラ回転のコーディングに使用してよい。3つのベクトルを使用してカメラを定義してよい。上記3つのベクトルは、位置、視野および上方を含む。代わりに、視野ベクトルを回転することによって一人称カメラを定義してよい。四元数を用いて、ベクトルを任意の軸を中心に回転することができる。これを実現するために、視野ベクトルを四元数に変換することができる。次に、回転四元数を定義することができる。次に、回転四元数を視野四元数に適用して、回転を行うことができる。視野四元数(V)を生成するために、x値、y値およびz値を視野ベクトルから取得して、0をスカラ成分(w)として追加することができる。したがって、V=[0,view]である。次に、四元数は生成され、回転を表すことができる。これを達成するように、回転の中心(A)および回転の角度(theta)として作用するベクトルを取得することができる。回転四元数(R)を構築する式は以下のようである:ベクトルA=A.x*sin(theta/2)R.y=A.y*sin(theta/2)R.z=A.z*sin(theta/2)R.w =cos(theta/2)。回転四元数Rはこの回転を定義する。回転後、Wと表記された、視野を表す四元数が使用される。回転動作を、W=R*V*R'のように説明する。ここで、R'はRのコンジュゲートである。四元数表現を使用する現在の点群画像のジオメトリ回転に対する第4の成分である回転Wを、以下のように計算することができる:
RotationX=Orientation[0]
RotationY=Orientation[1]
RotationZ=Orientation[2]
RotationW=Sqrt(1-(Orientation[0]2+Orientation[1]2+Orientation[2]2))
以上、点群フレーム原点に対して、シーンで使用するためのカメラ変位パラメータのセットを提供する例示的なV-PCCメッセージを説明した。カメラ位置は、シーン内のx、y、z方向の軸のオフセットで示すことができる。V-PCCメッセージは、シーン内のカメラの向きに関するパラメータのセットも提供することもできる。カメラの向きは、x、yおよびz軸のオイラー回転を表すα、β、γ回転角で示すことができる。あるいは、カメラの向きは、四元数表記で回転を表すRotationX、RotationY、r_z、およびr_wによって示すことができ、ここで、r_w回転は導出される。
図10は、例示的なビデオコーディングデバイス1000を示す概略図である。ビデオコーディングデバイス1000は、本明細書に記載の開示された例/実施形態を実装するのに好適である。ビデオコーディングデバイス1000は、下流ポート1020、上流ポート1050、ならびに/または、ネットワークを介して上流および/もしくは下流にデータを通信するための送信機および/もしくは受信機を含むトランシーバユニット(Tx/Rx)1010を備える。ビデオコーディングデバイス1000はまた、データを処理するための論理ユニットおよび/または中央処理デバイス(central processing unit、CPU)を含むプロセッサ1030と、データを記憶するためのメモリ1032とを含む。ビデオコーディングデバイス1000はまた、電気、光、または無線通信ネットワークを介したデータの通信のために、上流ポート1050および/または下流ポート1020に結合された、電気、光-電気(OE)コンポーネント、電気-光(EO)コンポーネント、および/または無線通信コンポーネントを備え得る。ビデオコーディングデバイス1000はまた、ユーザとの間でデータを通信するための入力および/または出力(I/O)デバイス1060を含み得る。I/Oデバイス1060は、ビデオデータを表示するためのディスプレイ、音声データを出力するためのスピーカなどの出力デバイスを含み得る。I/Oデバイス1060はまた、キーボード、マウス、トラックボールなどの入力デバイス、および/またはこのような出力デバイスと対話するための対応するインタフェースを含み得る。
プロセッサ1030は、ハードウェアおよびソフトウェアによって実装される。プロセッサ1030は、1または複数のCPUチップ、コア(例えば、マルチコアプロセッサとして)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、およびデジタル信号プロセッサ(DSP)として実装され得る。プロセッサ1030は、下流ポート1020、Tx/Rx1010、上流ポート1050、およびメモリ1032と通信する。プロセッサ1030は、コーディングモジュール1014を含む。コーディングモジュール1014は、パッチ603のセットに分離され、V-PCCビットストリーム900において占有フレーム710、ジオメトリフレーム720およびアトラスフレーム730にエンコードされた点群媒体500を使用し得る、方法100、1100および1200などの本明細書に説明した開示される実施形態を実装する。コーディングモジュール1014はまた、メカニズム800、および本明細書に説明した任意の他の方法/メカニズムを実装してよい。さらに、コーディングモジュール1014は、コーデックシステム200、エンコーダ300、および/またはデコーダ400を実装し得る。例えば、エンコーダでのコーディングモジュール1014は、PCCビットストリームでカメラオフセットおよび/またはカメラ回転をエンコードすることができる。さらに、デコーダでのコーディングモジュール1014は次に、カメラオフセットを使用してオフセット行列を生成し、および/またはカメラ回転を使用して回転行列を生成することができる。次に、デコーダは、オフセット行列および回転行列を再構成された点群を含むモデル行列に適用して、示された位置および角度からの点群フレームをレンダリングする。これにより、ユーザに対して再構成された点群を表示する1または複数の予め定義されたカメラ位置および角度を、エンコーダが指定する、およびデコーダが使用することが可能である。したがって、コーディングモジュール1014は、ビデオデータをコーディングするときに、ビデオコーディングデバイス1000に追加の機能性および/またはコーディング効率を提供させる。このように、コーディングモジュール1014は、ビデオコーディングデバイス1000の機能性を改善し、ビデオコーディング技術に特有の問題に対処する。さらに、コーディングモジュール1014は、ビデオコーディングデバイス1000が異なる状態に変換することをもたらす。あるいは、コーディングモジュール1014は、(例えば、非一時的媒体に記憶されたコンピュータプログラム製品として)メモリ1032に記憶され、プロセッサ1030によって実行される命令として実装されることができる。
メモリ1032は、ディスク、テープドライブ、ソリッドステートドライブ、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、フラッシュメモリ、三値連想メモリ(TCAM)、スタティックランダムアクセスメモリ(SRAM)などの1または複数のメモリタイプを含む。メモリ1032は、オーバーフローデータ記憶装置として使用されて、そのようなプログラムが実行のために選択されたときにプログラムを記憶し、プログラム実行中に読み出される命令およびデータを記憶することができる。
図11は、例えばメカニズム800に基づいて、点群をレンダリングするためのカメラパラメータをシグナリングするために、V-PCCビットストリーム900などのV-PCCビットストリームをエンコードする例示的な方法1100を示すフローチャートである。方法1100は、方法100を実行するときに、コーデックシステム200、エンコーダ300、および/またはビデオコーディングデバイス1000などのエンコーダによって使用され得る。このように、方法1100は、パッチ603のセットに分離され、占有フレーム710、ジオメトリフレーム720、アトラスフレーム730、および/または属性フレームにエンコードされた点群媒体500で動作してもよい。
方法1100は、コンテンツ制作者が、PCCメカニズムに従って3D点群としてビデオをエンコードすることを判断したときに開始されてもよい。例えば、エンコーダは、コンテンツ制作者からの入力に基づいて、複数のフレームに対してPCCコンテンツをエンコードすることを開始してよい。段階1101において、エンコーダは、点群フレームを説明する複数の2Dパッチ、ジオメトリ、占有、および/または属性をエンコードする。エンコーダは、これらの項目をV-PCCビットストリーム900(例えば、アトラスフレーム913、ジオメトリフレーム917、占有フレーム915および属性フレーム919)などのPCCビットストリームにエンコードすることができる。そのようなデータは、デコーダでボリュメトリック/点群フレームを再構成するのに十分であり得る。例えば、占有を使用して、実際のビデオデータではないアトラスフレーム内の特定の圧縮関連コーディングアーチファクトを除去することができる。3D境界ボックス内の3D点群を再生成するために、ジオメトリをモデル行列に含めることができ、2Dパッチおよび/または属性をジオメトリに投影することができる。
段階1103において、エンコーダは、点群フレームに関するカメラの位置を説明するカメラオフセットを判断することができる。カメラオフセットは、ユーザ入力に基づいて判断することができる。例えば、コンテンツ制作者は、ビデオコンテンツの視聴者の視野を誘導するために、様々なカメラの1または複数の好ましい位置を示すことができる。カメラオフセットは、そのような好ましいカメラ位置を示し、点群がデコーダで再構成された後に(例えば、段階1101からのデータに基づいて)点群フレームのカメラ視野をレンダリングするためのオフセット行列の生成をサポートするためにデコーダによって使用され得る。例えば、カメラオフセットは、X軸に対応する第1のオフセットと、Y軸に対応する第2のオフセットと、Z軸に対応する第3のオフセットとを示してよい。具体的な実装態様において、カメラオフセットは、アトラスAPS921におけるACPシンタックス構造内のAcp_offset_on_axis[d]933に含まれることができる。これによって、3D点群の2D視野をレンダリングするためのオフセット行列をデコーダが生成するのに十分な情報が提供される。一例において、オフセット行列は、4行4列で構成されている。第1のオフセット(例えば、X成分)を第1行第4列に配置し、第2のオフセット(例えば、Y成分)を第2行第4列に配置し、第3のオフセット(例えば、Z成分)を第3行第4列に配置することができる。一例において、このようなオフセット行列を以下のように表ことができる。
段階1105において、エンコーダは、点群フレームに関するカメラの視野ベクトルを説明するカメラ回転を判断することができる。カメラ回転をユーザ入力に基づいて判断することができる。例えば、コンテンツ制作者は、ビデオコンテンツの視聴者の視野を誘導するために、様々なカメラの1または複数の好ましい視野角を示すことができる。カメラ回転は、そのような好ましいカメラ視野を示し、点群がデコーダで再構成された後に(例えば、段階1101からのデータに基づいて)点群フレームのカメラ視野をレンダリングするための回転行列の生成をサポートするためにデコーダによって使用され得る。上述したように、視野角は、カメラに関連付けられた視野ポートを説明する平面から90度の角度で延びる視野ベクトルによって説明され得る。このように、カメラ位置および視野角は、ユーザに対して選択された視野ポートの位置および向きを説明している。視野ベクトルは、四元数表現のカメラ回転として説明することができる。例えば、カメラ回転は、四元数表現を使用するカメラの回転のX成分、四元数表現を使用するカメラの回転のY成分、および四元数表現を使用するカメラの回転のZ成分を指定する。カメラ回転はまた、X成分、Y成分およびZ成分から計算できるW成分を含む。例えば、W成分は、qW=Sqrt(1-(qX2+qY2+qZ2))により計算することができ、qW、qX、qYおよびqZはそれぞれW成分、X成分、Y成分、Z成分を表し、Sqrtは平方根関数である。
具体的な実装態様では、カメラ回転のqX成分、qY成分およびqZ成分は、アトラスAPS921におけるACPシンタックス構造内のacp_rotation_qx 935、acp_rotation_qy 937、およびacp_rotation_qz 939にそれぞれ含めることが可能である。また、qWはコードせず、代わりに、上述したqX成分、qY成分およびqZ成分に基づいてデコーダで計算されてもよい。これによって、3D点群の2D視野をレンダリングするための回転行列をデコーダが生成するのに十分な情報が提供される。一例において、回転行列は4行4列で構成され、以下のようにqW成分、qX成分、qY成分およびqZ成分の様々な組み合わせを含むことができる。
このように、回転行列は、四元数表現を使用するカメラの回転のためのX成分、Y成分、Z成分およびW成分を含む。
段階1107において、エンコーダは、カメラオフセットおよびカメラ回転をPCCビットストリームにエンコードする。また、段階1109において、PCCビットストリームを、デコーダに向けた通信のために記憶することができる。PCCビットストリームは、要求に応じて、長期記憶のためにコンテンツサーバに転送され、および/またはデコーダ/エンドユーザに伝送されてよい。このように、コンテンツ制作者は、デコーダでの再構成されたV-PCCコンテンツを視聴する際に視聴者の視点を誘導するために、V-PCCビットストリームでの1または複数のカメラ位置および視野角を選択し、エンコードすることができる。したがって、方法1100は、PCCビデオコンテンツの所定のかつ選択可能な視野位置および角度を生成することで、エンコーダおよびデコーダの双方で機能性を向上させることができる。さらに、方法1100は、例えば、V-PCCビットストリームからqWを省略することによって、コーディング効率を高めるメカニズムをサポートする。したがって、方法1100は、エンコーダおよび/またはデコーダにおけるプロセッサ、メモリおよび/またはネットワークリソース使用量の減少をサポートする。
図12は、シグナリングされたカメラパラメータに基づいて、例えば、メカニズム800に基づいて、点群をレンダリングするために、V-PCCビットストリーム900などのV-PCCビットストリームをデコードする例示的な方法のフローチャートである。方法1200は、方法100を実行するときに、コーデックシステム200、デコーダ400、および/またはビデオコーディングデバイス1000などのデコーダによって使用され得る。このように、方法1200は、パッチ603のセットに分離され、占有フレーム710、ジオメトリフレーム720、アトラスフレーム730、および/または属性フレームにエンコードされた点群媒体500で動作してもよい。
方法1200は、例えば方法1100の結果として、デコーダが点群のビデオシーケンスを表すコードされたデータのV-PCCビットストリームの受信を開始するときに開始することができる。段階1201において、デコーダは、PCC成分を含むPCCビットストリームを受信する。具体的には、ビットストリームは、アトラスフレームにおける複数の2Dパッチ、ジオメトリフレームにおけるジオメトリ、占有フレームにおける占有および/または属性フレームにおける属性を含んでよい。ビットストリームはまた、1または複数のカメラに対する1または複数のカメラオフセットおよび1または複数のカメラ回転を含んでよい。カメラオフセットおよびカメラ回転は、コンテンツ制作者によって示されたように、V-PCCコンテンツを視聴する視野ポートを定義する。
段階1203において、デコーダは、3D境界ボックスを表すモデル行列を初期化し、モデル行列におけるジオメトリを含め得る。次に、デコーダは、パッチをデコードし、3D境界ボックス/モデル行列における点にパッチを投影することによってパッチを3Dパッチ座標系に変換して、点群コンテンツの点群フレームを取得することができる。属性が存在する場合、属性をジオメトリに投影し、再構成された点群フレーム/ボリュメトリックフレームも生成し得る。
段階1205において、デコーダは、カメラに関するカメラオフセットに基づいてオフセット行列を判断することができる。例えば、カメラオフセットは、X軸に対応する第1のオフセットと、Y軸に対応する第2のオフセットと、Z軸に対応する第3のオフセットとを示してよい。このようなオフセットは、カメラ位置と3D境界ボックスの所定点(3D境界ボックスの底部、左側、角付近など)との間の各軸の変位を示す。具体的な実装態様において、カメラオフセットは、アトラスAPS921におけるACPシンタックス構造内のAcp_offset_on_axis[d]933に含まれることができる。これによって、3D点群の2D視野をレンダリングするためのオフセット行列をデコーダが生成/判断するのに十分な情報が提供される。一例において、オフセット行列は、4行4列で構成されている。第1のオフセット(例えば、X成分)を第1行第4列に配置し、第2のオフセット(例えば、Y成分)を第2行第4列に配置し、第3のオフセット(例えば、Z成分)を第3行第4列に配置することができる。一例において、このようなオフセット行列を以下のように表ことができる。
段階1207において、デコーダは、カメラに関するカメラ回転に基づいて回転行列を判断することができる。上述したように、カメラの視野角は、カメラに関連付けられた視野ポートを説明する平面から90度の角度で延びる視野ベクトルによって説明され得る。このように、カメラ位置および視野角は、ユーザに対してコンテンツ制作者によって選択された視野ポートの位置および向きを説明している。視野ベクトルは、四元数表現でのカメラ回転として説明することができる。例えば、カメラ回転は、四元数表現を使用するカメラの回転のX成分、四元数表現を使用するカメラの回転のY成分、および四元数表現を使用するカメラの回転のZ成分を指定してよい。カメラ回転はまた、X成分、Y成分およびZ成分から計算できるW成分を含む。例えば、W成分は、qW=Sqrt(1-(qX2+qY2+qZ2))により計算することができ、qW、qX、qYおよびqZはそれぞれW成分、X成分、Y成分、Z成分を示し、Sqrtは平方根関数である。
具体的な実装態様では、カメラ回転のqX成分、qY成分およびqZ成分は、アトラスAPS921におけるACPシンタックス構造内のacp_rotation_qx935、acp_rotation_qy937、およびacp_rotation_qz939にそれぞれ含めることが可能である。また、qWはコードせず、代わりに、上述したqX成分、qY成分およびqZ成分に基づいてデコーダで計算されてもよい。デコーダは、V-PCCビットストリームからqX成分、qY成分およびqZ成分を取得し、qX成分、qY成分およびqZ成分に基づいてqW成分を計算することができる。次に、デコーダは、qW成分、qX成分、qY成分およびqZ成分に基づいて、段階1207において回転行列を生成することができる。一例において、回転行列は4行4列で構成されており、以下のようにqW成分、qX成分、qY成分およびqZ成分の様々な組み合わせを含むことができる。
このように、回転行列は、四元数表現を使用するカメラの回転のためのX成分、Y成分、Z成分およびW成分を含む。
次に、デコーダは、カメラによって定義された視野ポートを使用して3D点群の2D視野をレンダリングすることができる。段階1209において、デコーダは、オフセット行列および回転行列を適用して、例えば行列乗算を介して、モデル行列における点/データを変換することができる。このように、デコーダは、オフセット行列および回転行列を点群コンテンツに適用することによって、3D点群の2D視野をレンダリングすることができる。このアプローチは、3D座標系からのデータを、フラットスクリーン上に表示され得る2D座標系に変換する。このように、このアプローチにより、コンテンツ制作者によって定義された視野ポートの視点からの3Dコンテンツの視野が得られる。次に、レンダリングされた点群コンテンツは、段階1211において、ディスプレイに転送される。したがって、方法1200は、PCCビデオコンテンツの所定のかつ選択可能な視野位置および角度を生成することで、エンコーダおよびデコーダの双方で機能性を向上させることができる。さらに、方法1200は、例えば、V-PCCビットストリームからqWを省略することによって、コーディング効率を高めるメカニズムをサポートする。したがって、方法1200は、エンコーダおよび/またはデコーダにおけるプロセッサ、メモリおよび/またはネットワークリソース使用量の減少をサポートする。
図13は、例えば、メカニズム800に従って点群をレンダリングするための、例えば、V-PCCビットストリーム900におけるカメラパラメータをシグナリングするための例示的なシステムの概略図である。システム1300は、コーデックシステム200、エンコーダ300、デコーダ400、および/またはビデオコーディングデバイス1000などのエンコーダおよびデコーダによって実装され得る。このように、システム1300は、パッチ603のセットに分離され、占有フレーム710、ジオメトリフレーム720、アトラスフレーム730、および/または属性フレームにエンコードされた点群媒体500で動作してもよい。さらに、システム1300は、方法100、1100および/または1200を実装するときに使用され得る。
システム1300は、ビデオエンコーダ1302を含む。ビデオエンコーダ1302は、点群フレームに関するカメラの位置を説明するカメラオフセットを判断して、点群フレームのカメラ視野をレンダリングするためのオフセット行列の生成をサポートするための判断モジュール1303を含む。ビデオエンコーダ1302はさらに、複数の2Dパッチ、および点群フレームをPCCビットストリームに説明するジオメトリをエンコードするためのエンコーディングモジュール1305を含む。エンコーディングモジュール1305はさらに、カメラオフセットをPCCビットストリームにエンコードするためのものである。ビデオエンコーダ1302はさらに、デコーダに向けて通信するためにビットストリームを記憶するための記憶モジュール1306を備える。ビデオエンコーダ1302はさらに、ビットストリームをビデオデコーダ1310に向けて送信するための送信モジュール1307を備える。ビデオエンコーダ1302はさらに、方法1100の段階のうちのいずれかを実行するように構成され得る。
システム1300はまた、ビデオデコーダ1310を含む。ビデオデコーダ1310は、アトラスフレームにおける複数の2Dパッチおよびカメラのカメラオフセットを含むビットストリームを受信するための受信モジュール1311を含む。ビデオデコーダ1310はさらに、パッチをデコードするためのデコードモジュール1313を含む。ビデオデコーダ1310はさらに、3D境界ボックスでの投影を介して、パッチを3Dパッチ座標系に変換して、点群フレームを取得する変換モジュール1315を含む。ビデオデコーダ1310はさらに、カメラオフセットに基づいてオフセット行列を判断する判断モジュール1317を含む。ビデオデコーダ1310はさらに、オフセット行列を点群フレームに適用するための適用モジュール1318を含む。ビデオデコーダ1310はさらに、表示するための点群フレームを転送する転送モジュール1319を含む。ビデオデコーダ1310はさらに、方法1200の段階のうちのいずれかを実行するように構成され得る。
第1のコンポーネントと第2のコンポーネントとの間にライン、トレース、または別の媒体を除いて、介在する成分がない場合、第1のコンポーネントは第2のコンポーネントに直接結合される。第1のコンポーネントと第2のコンポーネントとの間にライン、トレース、または別の媒体以外の介在する成分がある場合、第1のコンポーネントは第2のコンポーネントに間接的に結合される。「結合された」という用語およびその変形は、直接結合されたものおよび間接的に結合されたものの両方を含む。「約」という用語の使用は、特に明記しない限り、後続の数の±10%を含む範囲を意味する。
本明細書に記載される例示的な方法の段階は、必ずしも記載された順序で実行される必要はなく、かかる方法の段階の順序は単なる例示であると理解されるべきであることも理解されるべきである。同様に、本開示の様々な実施形態と一致する方法では、そのような方法に追加の段階を含めることができ、特定の段階を省略または組み合わせることができる。
本開示ではいくつかの実施形態が提供されたが、開示されたシステムおよび方法は、本開示の趣旨または範囲から逸脱することなく、多くの他の特定の形態で具現化され得ることが理解されよう。本実施例は、例示的であり、限定的ではないと考えられるべきであり、その意図は本明細書に与えられた詳細に限定されるべきではない。例えば、様々な要素またはコンポーネントは、別のシステムに組み合わされ、もしくは統合されてもよく、または特定の特徴は、省略され、もしくは実装されなくてもよい。
加えて、本開示の範囲から逸脱することなく、様々な実施形態において個別のまたは別個のものとして説明および図示された技術、システム、サブシステム、および方法は、他のシステム、コンポーネント、技術、または方法と組み合わされても、または統合されてもよい。変更、置換、および代替の他の例は、当業者によって確認可能であり、本明細書に開示される精神および範囲から逸脱することなく行われ得る。
[他の可能な項目]
[項目1]
デコーダによって実装される方法であって、前記方法は、
前記デコーダの受信機によって、アトラスフレーム内の複数のパッチとカメラのためのカメラオフセットとを含むビットストリームを受信する段階と、
前記デコーダのプロセッサによって、前記アトラスフレーム内の前記複数のパッチをデコードする段階と、
前記プロセッサによって、前記複数のパッチを3次元(3D)パッチ座標系に変換して点群コンテンツを取得する段階と、
前記プロセッサによって、前記カメラオフセットに基づくオフセット行列を判断する段階と、
前記プロセッサによって、前記オフセット行列を前記点群コンテンツに適用する段階と
を備える、方法。
[項目2]
前記カメラオフセットは、X軸に対応する第1のオフセット、Y軸に対応する第2のオフセット、およびZ軸に対応する第3のオフセットを示す、項目1に記載の方法。
[項目3]
前記オフセット行列は、4行4列を含み、前記第1のオフセットが第1行第4列に配置され、前記第2のオフセットが第2行第4列に配置され、前記第3のオフセットが第3行第4列に配置される、項目1または2に記載の方法。
[項目4]
前記ビットストリームは、前記カメラに対するカメラ回転をさらに含み、前記方法は、
前記プロセッサによって、前記カメラ回転に基づく回転行列を判断する段階と、
前記プロセッサによって、前記回転行列を前記点群コンテンツに適用する段階と
をさらに備える、項目1から3のいずれか一項に記載の方法。
[項目5]
前記カメラ回転は、四元数表現を使用する前記カメラの回転に対するX成分、四元数表現を使用する前記カメラの前記回転に対するY成分、および四元数表現を使用する前記カメラの前記回転に対するZ成分を指定する、項目1から4のいずれか一項に記載の方法。
[項目6]
前記回転行列は、四元数表現を使用する前記カメラの前記回転に対する前記X成分、前記Y成分、前記Z成分、およびW成分を含む、項目1から5のいずれか一項に記載の方法。
[項目7]
前記W成分は、qW=Sqrt(1-(qX2+qY2+qZ2))によって計算され、qW、qX、qYおよびqZはそれぞれ、前記W成分、前記X成分、前記Y成分および前記Z成分を表し、Sqrtは平方根関数である、項目1から6のいずれか一項に記載の方法。
[項目8]
前記アトラスフレーム内の前記複数のパッチは2次元(2D)パッチである、項目1から7のいずれか一項に記載の方法。
[項目9]
エンコーダによって実装される方法であって、前記方法は、
プロセッサによって、複数の2次元(2D)パッチと、点群フレームを説明するジオメトリとを点群コーディング(PCC)ビットストリームにエンコードする段階と、
前記プロセッサによって、前記点群フレームに対するカメラの位置を説明するカメラオフセットを判断して、前記点群フレームのカメラ視野をレンダリングするためのオフセット行列の生成をサポートする段階と、
前記プロセッサによって、カメラオフセットを前記PCCビットストリームにエンコードする段階と、
前記エンコーダのメモリによって、デコーダへの通信のために前記PCCビットストリームを記憶する段階と
を備える、方法。
[項目10]
前記カメラオフセットは、X軸に対応する第1のオフセット、Y軸に対応する第2のオフセット、およびZ軸に対応する第3のオフセットを示す、項目9に記載の方法。
[項目11]
前記オフセット行列は、4行4列を含み、前記第1のオフセットが第1行第4列に配置され、前記第2のオフセットが第2行第4列に配置され、前記第3のオフセットが第3行第4列に配置される、項目9または10に記載の方法。
[項目12]
前記プロセッサによって、前記点群フレームに対する前記カメラのための視野ベクトルを説明するカメラ回転を判断して、前記点群フレームの前記カメラ視野をレンダリングするための回転行列の生成をサポートする段階と、
前記プロセッサによって、前記カメラ回転を前記PCCビットストリームにエンコードする段階と
をさらに備える、項目9から11のいずれか一項に記載の方法。
[項目13]
前記カメラ回転は、四元数表現を使用する前記カメラの回転に対するX成分、四元数表現を使用する前記カメラの前記回転に対するY成分、および四元数表現を使用する前記カメラの前記回転に対するZ成分を指定する、項目9から12のいずれか一項に記載の方法。
[項目14]
前記回転行列は、四元数表現を使用する前記カメラの前記回転に対する前記X成分、前記Y成分、前記Z成分、およびW成分を含む、項目9から13のいずれか一項に記載の方法。
[項目15]
前記W成分は、qW=Sqrt(1-(qX2+qY2+qZ2))によって計算され、qW、qX、qYおよびqZはそれぞれ、前記W成分、前記X成分、前記Y成分および前記Z成分を表し、Sqrtは平方根関数である、項目9から14のいずれか一項に記載の方法。
[項目16]
ビデオコーディングデバイスであって、
プロセッサと、前記プロセッサに結合された受信機と、前記プロセッサに結合されたメモリと、前記プロセッサに結合された送信機とを備え、前記プロセッサ、前記受信機、前記メモリ、および前記送信機は、項目1から15のいずれか一項に記載の方法を実行するように構成されている、ビデオコーディングデバイス。
[項目17]
ビデオコーディングデバイスによって用いるためのコンピュータプログラム製品を含む非一時的コンピュータ可読媒体であって、前記コンピュータプログラム製品は、プロセッサによって実行されたとき、項目1から15のいずれか一項に記載の方法を前記ビデオコーディングデバイスに実行させるように、前記非一時的コンピュータ可読媒体に記憶された前記コンピュータ実施可能な命令を含む、非一時的コンピュータ可読媒体。
[項目18]
アトラスフレーム内の複数の2次元(2D)パッチと、カメラのためのカメラオフセットとを含むビットストリームを受信する受信手段と、
前記複数のパッチをデコードするデコード手段と、
前記複数のパッチを3次元(3D)パッチ座標系に変換して点群フレームを取得する変換手段と、
前記カメラオフセットに基づいてオフセット行列を判断する判断手段と、
前記オフセット行列を前記点群フレームに適用する適用手段と
を備える、デコーダ。
[項目19]
前記デコーダはさらに、項目1から8のいずれか一項に記載の方法を実行するように構成されている、項目18に記載のデコーダ。
[項目20]
点群フレームに対するカメラの位置を説明するカメラオフセットを判断して、前記点群フレームのカメラ視野をレンダリングするためのオフセット行列の生成をサポートする判断手段と、
複数の2次元(2D)パッチと点群フレームを説明するジオメトリを点群コーディング(PCC)ビットストリームにエンコードすることと、
前記カメラオフセットを前記PCCビットストリームにエンコードすることと
を実行するエンコード手段と、
デコーダへの通信のために前記ビットストリームを記憶する記憶手段と
を備える、エンコーダ。
[項目21]
前記エンコーダはさらに、項目9から15のいずれか一項に記載の方法を実行するように構成されている、項目20に記載のエンコーダ。