(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-19
(45)【発行日】2024-04-30
(54)【発明の名称】メッシュ復元のための方法、装置及びコンピュータプログラム
(51)【国際特許分類】
G06T 9/00 20060101AFI20240422BHJP
【FI】
G06T9/00
(21)【出願番号】P 2023532661
(86)(22)【出願日】2022-09-07
(86)【国際出願番号】 US2022076019
(87)【国際公開番号】W WO2023039402
(87)【国際公開日】2023-03-16
【審査請求日】2023-05-30
(32)【優先日】2021-09-07
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-09-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ジャン,シャン
(72)【発明者】
【氏名】ホアン,チャオ
(72)【発明者】
【氏名】シュー,シャオジョン
(72)【発明者】
【氏名】ティエン,ジュン
(72)【発明者】
【氏名】リウ,シャン
【審査官】岩井 健二
(56)【参考文献】
【文献】米国特許出願公開第2020/0043199(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 9/00 ー 9/40
(57)【特許請求の範囲】
【請求項1】
プロセッサによって実行される、メッシュ復元のための方法であって、
第1ビット深度をサポートするデコーダを使用して、オブジェクトの表面を表すメッシュを担持するビットストリームから前記第1ビット深度を有する複数のセグメント属性値を復号するステップであって、前記複数のセグメント属性値は、前記メッシュの属性値に関連付けられ、前記メッシュの属性値は、前記第1ビット深度よりも高い第2ビット深度を有する、ステップと、
前記第2ビット深度を有する前記メッシュの属性値を、前記第1ビット深度を有する前記複数のセグメント属性値に従って決定するステップと、
を含む、方法。
【請求項2】
前記複数のセグメント属性値は、前記メッシュの第1空間セグメントに関連付けられ、前記メッシュの前記第1空間セグメントにおける第1属性値のダイナミックレンジは、前記第1ビット深度によって表現可能である、
請求項1に記載の方法。
【請求項3】
前記ビットストリームから前記第1空間セグメントに関連付けられる第1アンカー値を復号するステップと、
前記第1アンカー値を前記複数のセグメント属性値と組み合わせることによって、前記第1空間セグメントにおける前記第1属性値を決定するステップと、
を更に含む、請求項2に記載の方法。
【請求項4】
前記複数のセグメント属性値内のセグメント属性値に第1アンカー値を追加して、前記第1属性値内の属性値を決定するステップ、
を更に含む、請求項3に記載の方法。
【請求項5】
前記第1アンカー値から前記複数のセグメント属性値内のセグメント属性値を減算して、前記第1属性値内の属性値を決定するステップ、
を更に含む、請求項3に記載の方法。
【請求項6】
他の空間セグメントに関連付けられる他のアンカー値とは独立に、前記第1空間セグメントに関連付けられる前記第1アンカー値を復号するステップ、
を更に含む、請求項3に記載の方法。
【請求項7】
別の空間セグメントに関連付けられる別のアンカー値に少なくとも部分的に基づいて、前記第1空間セグメントに関連付けられる前記第1アンカー値を決定するステップ、
を更に含む、請求項3に記載の方法。
【請求項8】
前記複数のセグメント属性値は、前記第2ビット深度の属性値に対するビットの第1サブセットに対応する第1セグメント属性値と、前記第2ビット深度の属性値に対するビットの第2サブセットに対応する第2セグメント属性値とを少なくとも含む、
請求項1に記載の方法。
【請求項9】
ビットの前記第1サブセットをビットの前記第2サブセットと連結して、前記属性値を決定するステップ、
を更に含む、請求項8に記載の方法。
【請求項10】
第1復号構成に従って、前記第1セグメント属性値を含む第1の複数のセグメント属性値を復号するステップと、
前記第1復号構成とは異なる第2復号構成に従って、前記第2セグメント属性値を含む第2の複数のセグメント属性値を復号するステップと、
を更に含む、請求項8に記載の方法。
【請求項11】
請求項1乃至10のいずれか一項に記載の方法を実行するように構成される処理回路を備える、装置。
【請求項12】
コンピュータによって実行されると、該コンピュータに請求項1乃至10のいずれか一項に記載の方法を実行させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
参照による組み込み
本出願は、2022年9月6日に出願された米国特許出願第17/903,541号「SEGMENT BASED COMPRESSION METHODS FOR MESH COMPRESSION」に対する優先権の利益を主張し、これは2021年9月7日に出願された米国仮出願第63/241,481号「Segment based Compression Methods for Mesh Compression」に対する優先権の利益を主張している。先行出願の開示は、参照によりその全体が本明細書に組み込まれる。
【0002】
技術分野
本開示は、一般にメッシュコーディングに関連する実施形態を説明する。
【背景技術】
【0003】
本明細書で提供される背景説明は、本開示の文脈を一般的に提示するためのものである。現在名前を挙げられている発明者の研究は、その研究がこの背景技術に記載された範囲において、出願時に先行技術として通常見なされ得ない記載の側面とともに、明示的にも暗黙的にも本開示に対する先行技術として認められない。
【0004】
3次元(3D)空間における世界の物体、世界の環境等のような、世界を捉えて表現するための様々な技術が開発されている。世界の3D表現は、より没入感のある形式の対話及び通信を可能にすることができる。いくつかの例では、点群やメッシュを世界の3D表現として使用することができる。
【発明の概要】
【0005】
本開示の側面は、メッシュコーディング(例えば圧縮及び復元)のための方法及び装置を提供する。いくつかの例では、メッシュコーディングのための装置は処理回路を含む。処理回路は、第1ビット深度をサポートするデコーダを使用して、オブジェクトの表面を表すメッシュを担持するビットストリームから第1ビット深度を有する複数のセグメント属性値を復号する。複数のセグメント属性値は、メッシュの属性値に関連付けられ、メッシュの属性値は、第1ビット深度よりも高い第2ビット深度を有する。処理回路は、第2ビット深度を有するメッシュの属性値を、第1ビット深度を有する複数のセグメント属性値に従って決定する。
【0006】
本開示の側面によると、複数のセグメント属性値は、メッシュの第1空間セグメントに関連付けられ、メッシュの第1空間セグメントにおける第1属性値のダイナミックレンジは、第1ビット深度によって表現可能である。いくつかの例では、処理回路は、ビットストリームから第1空間セグメントに関連付けられる第1アンカー値を復号し、第1アンカー値を複数のセグメント属性値と組み合わせることによって、第1空間セグメントにおける第1属性値を決定する。一例では、処理回路は、複数のセグメント属性値内のセグメント属性値に第1アンカー値を追加して、第1属性値内の属性値を決定する。別の例では、処理回路は、第1アンカー値から複数のセグメント属性値内のセグメント属性値を減算して、第1属性値内の属性値を決定する。
【0007】
いくつかの例では、処理回路は、他の空間セグメントに関連付けられる他のアンカー値とは独立に、第1空間セグメントに関連付けられる第1アンカー値を復号する。いくつかの他の例では、処理回路は、別の空間セグメントに関連付けられる別のアンカー値に少なくとも部分的に基づいて、第1空間セグメントに関連付けられる第1アンカー値を決定する。
【0008】
本開示の別の側面によると、複数のセグメント属性値は、第2ビット深度の属性値に対するビットの第1サブセットに対応する第1セグメント属性値と、第2ビット深度の属性値に対するビットの第2サブセットに対応する第2セグメント属性値とを少なくとも含む。処理回路は、ビットの第1サブセットをビットの第2サブセットと連結して、属性値を決定する。一例では、処理回路は、第1復号構成に従って、第1セグメント属性値を含む第1の複数のセグメント属性値を復号し、第1復号構成とは異なる第2復号構成に従って、第2セグメント属性値を含む第2の複数のセグメント属性値を復号する。
【0009】
本開示の側面はまた、コンピュータによって実行されると、コンピュータにメッシュコーディングのための方法のいずれか1つ又は組合せを実行させる命令を記憶する、非一時的なコンピュータ読取可能媒体も提供する。
【図面の簡単な説明】
【0010】
開示される主題の更なる特徴、性質及び様々な利点は、以下の詳細な説明及び添付の図面からより明らかになる。
【0011】
【
図1】いくつかの例における通信システムのブロック図を示す図である。
【0012】
【
図2】いくつかの例におけるストリーミングシステムのブロック図を示す図である。
【0013】
【
図3】いくつかの例における点群フレームを符号化するためのエンコーダのブロック図を示す図である。
【0014】
【
図4】いくつかの例における点群フレームに対応する圧縮ビットストリームを復号するためのデコーダのブロック図を示す図である。
【0015】
【
図5】いくつかの例におけるビデオデコーダのブロック図を示す図である。
【0016】
【
図6】いくつかの例におけるビデオエンコーダのブロック図を示す図である。
【0017】
【
図7】いくつかの例における点群フレームを符号化するエンコーダのブロック図を示す図である。
【0018】
【
図8】いくつかの例における点群フレームに対応する圧縮ビットストリームを復号するデコーダのブロック図を示す図である。
【0019】
【
図9】いくつかの例におけるメッシュコーディングフレームワークのブロック図を示す図である。
【0020】
【
図10】いくつかの例における属性値フィールドを例示するための図である。
【0021】
【
図11】いくつかの例における属性値平面を示す図である。
【0022】
【
図12】いくつかの例におけるプロセス例を概説するフローチャートである。
【0023】
【
図13】いくつかの例におけるプロセス例を概説するフローチャートである。
【0024】
【
図14】いくつかの例におけるコンピュータシステムの概略図である。
【発明を実施するための形態】
【0025】
本開示の側面は、3次元(3D)メディア処理の分野における技術を提供する。
【0026】
3次元(3D)キャプチャ、3Dモデリング及び3Dレンダリング等の進歩のような、3Dメディア処理における技術開発は、いくつかのプラットフォーム及びデバイスにわたって3Dメディアコンテンツのユビキタスな存在を促進している。一例として、ある大陸において、赤ちゃんの最初の一歩をキャプチャすることができ、メディア技術は、祖父母が、別の大陸において赤ちゃんとの没入型体験を視聴して(及び場合によっては対話して)楽しむことを可能にする。本開示の側面によると、没入型体験を向上させるために、3Dモデルはますます高度化しており、3Dモデルの作成と消費は、データストレージ、データ伝送リソースのような、かなりの量のデータリソースを占める。
【0027】
本開示のいくつかの側面によると、点群とメッシュを3Dモデルとして使用して、没入型コンテンツを表現することができる。
【0028】
点群は一般に、3D空間内の点のセットを指してよく、各点は、色、材料特性、テクスチャ情報、強度属性、反射率属性、動き関連属性、モダリティ属性及び様々な他の属性のような関連する属性を有する。点群を使用して、そのようなポイントの構成としてオブジェクト又はシーンを再構成することができる。
【0029】
オブジェクトのメッシュ(メッシュモデルとも呼ばれる)は、オブジェクトの表面を記述するポリゴンを含むことができる。各ポリゴンは、3D空間内のポリゴンの頂点と、頂点がポリゴンにどのように接続されているかの情報によって定義されることができる。頂点がどのように接続されているかの情報は、接続情報と呼ばれる。いくつかの例では、メッシュは、頂点に関連付けられる色、法線(normal)等の属性も含むことができる。
【0030】
本開示のいくつかの側面によると、点群圧縮(PCC、point cloud compression)のためのいくつかのコーディングツールをメッシュ圧縮に使用することができる。例えばメッシュを再メッシュして、新しいメッシュの接続情報を推測することができる新しいメッシュを生成することができる。新しいメッシュの頂点及び新しいメッシュの頂点に関連付けられる属性を、点群内の点と見なすことができ、PCCコーデックを使用して圧縮することができる。
【0031】
点群を使用して、オブジェクトやシーンをそのような点の構成物(composition)として再構成することができる。点を、様々な設定で複数のカメラ、深度センサ又はLidarを使用してキャプチャすることができ、再構成されたシーン又はオブジェクトをリアルに表現するために、数千から数十億の点で構成されることがある。パッチは一般に、点群によって記述される表面の連続したサブセットを指すことがある。一例では、パッチは、閾値量(threshold amount)よりも小さく互いに逸脱する表面法線ベクトルを有する点を含む。
【0032】
PCCを、G-PCCと呼ばれるジオメトリベースのスキーム、V-PCCと呼ばれるビデオコーディングベースのスキーム等のような、様々なスキームに従って実行することができる。本開示のいくつかの側面によると、G-PCCは3Dジオメトリを直接符号化し、ビデオコーディングとあまり共有することがない純粋なジオメトリベースのアプローチであり、V-PCCはビデオコーディングに大きく基づく。例えばV-PCCは、3Dクラウドの点を2D格子(画像)のピクセルにマップすることができる。V-PCCスキームは、点群圧縮に汎用ビデオコーデックを利用することができる。本開示におけるPCCコーデック(エンコーダ/デコーダ)は、G-PCCコーデック(エンコーダ/デコーダ)又はV-PCCコーデックとすることができる。
【0033】
本開示の側面によると、V-PCCスキームは、既存のビデオコーデックを使用して、点群のジオメトリ、占有及びテクスチャを3つの別個のビデオシーケンスとして圧縮することができる。3つのビデオシーケンスを解釈するために必要な追加のメタデータは別個に圧縮される。全体のビットストリームのごく一部はメタデータであり、これは、例ではソフトウェア実装を使用して効率的に符号化/復号することができる。情報の大部分はビデオコーデックによって処理される。
【0034】
図1は、いくつかの例における通信システム(100)のブロック図を示している。通信システム(100)は、例えばネットワーク(150)を介して相互に通信することができる複数の端末デバイスを含む。例えば通信システム(100)は、ネットワーク(150)を介して相互に接続される端末デバイス(110)と(120)のペアを含む。
図1の例では、端末デバイス(110)と(120)の第1のペアは、点群データの一方向伝送を行うことができる。例えば端末デバイス(110)は、端末デバイス(110)に接続されたセンサ(105)によってキャプチャされる点群(例えば構造を表す点)を圧縮してよい。圧縮された点群は、例えばビットストリームの形式で、ネットワーク(150)を介して他の端末デバイス(120)に送信され得る。端末デバイス(120)は、ネットワーク(150)から圧縮された点群を受信し、ビットストリームを復元して点群を再構成し、再構成された点群を適切に表示することができる。一方向データ伝送はメディアサービングアプリケーション等において一般的であり得る。
【0035】
図1の例では、端末デバイス(110)及び(120)を、サーバ及びパーソナルコンピュータとして図示することができるが、本開示の原理はそのように限定されない。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲーム端末、メディアプレーヤ及び/又は専用の3次元(3D)機器との用途を見出す。ネットワーク(150)は、端末デバイス(110)と(120)の間で圧縮された点群を送信する任意の数のネットワークを表す。ネットワーク(150)は、例えば有線(ワイヤード)及び/又は無線通信ネットワークを含むことができる。ネットワーク(150)は、回線交換及び/又はパケット交換チャネルでデータを交換してよい。代表的なネットワークは、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、インターネット等を含む。
【0036】
図2は、いくつかの例におけるストリーミングシステム(200)のブロック図を示している。ストリーミングシステム(200)は、点群の使用アプリケーションである。開示される主題は、3Dテレプレゼンスアプリケーション、仮想現実アプリケーション等のような、他の点群対応型アプリケーションにも同様に適用可能であり得る。
【0037】
ストリーミングシステム(200)は、キャプチャサブシステム(213)を含んでよい。キャプチャサブシステム(213)は、点群ソース(201)、例えば光検出及び測距(LIDAR)システム、3Dカメラ、3Dスキャナ、圧縮されていない点群(202)を生成するソフトウェアで非圧縮点群を生成するグラフィクス生成構成要素等を含むことができる。一例では、点群(202)は、3Dカメラによってキャプチャされる点を含む。点群(202)は、圧縮された点群(204)(圧縮された点群のビットストリーム)と比較して高いデータ量を強調するために太線で示されている。圧縮された点群(204)を、点群ソース(201)に結合されたエンコーダ(203)を含む電子デバイス(220)によって生成することができる。エンコーダ(203)は、以下でより詳細に説明されるように、開示される主題の側面を可能にするか又は実装するために、ハードウェア、ソフトウェア又はそれらの組合せを含むことができる。圧縮された点群(204)(又は圧縮された点群のビットストリーム(204))は、点群(202)のストリームと比較して低いデータ量を強調するために細線として表されており、将来の使用のためにストリーミングサーバ(205)に記憶されることができる。
図2のクライアントサブシステム(206)及び(208)のような1つ以上のストリーミングクライアントサブシステムは、ストリーミングサーバ(205)にアクセスして、圧縮された点群(204)のコピー(207)及び(209)を取り出すことができる。クライアントサブシステム(206)は、例えば電子デバイス(230)内にデコーダ(210)を含むことができる。デコーダ(210)は、圧縮された点群の入力コピー(incoming copy)(207)を復号し、レンダリングデバイス(212)でレンダリングすることができる再構成された点群(211)の出力ストリーム(outgoing stream)を作成する。
【0038】
なお、電子デバイス(220)及び(230)は、他の構成要素(図示せず)を含むことができることに留意されたい。例えば電子デバイス(220)はデコーダ(図示せず)を含むことができ、同様に、電子デバイス(230)はエンコーダ(図示せず)を含むこともできる。
【0039】
一部のストリーミングシステムでは、圧縮された点群(204)、(207)及び(209)(例えば圧縮された点群のビットストリーム)を特定の規格に従って圧縮することができる。いくつかの例では、点群の圧縮にビデオコーディング規格が使用される。これらの規格の例は、High Efficiency Video Coding(HEVC)、Versatile Video Coding(VVC)等を含む。
【0040】
図3は、いくつかの実施形態による、点群フレームを符号化するためのV-PCCエンコーダ(300)のブロック図を示している。いくつかの実施形態では、V-PCCエンコーダ(300)を通信システム(100)及びストリーミングシステム(200)で使用することができる。例えばエンコーダ(203)は、V-PCCエンコーダ(300)と同様の方法で構成されて動作することができる。
【0041】
V-PCCエンコーダ(300)は、点群フレームを非圧縮入力として受け取り、圧縮された点群フレームに対応するビットストリームを生成する。いくつかの実施形態では、V-PCCエンコーダ(300)は、点群ソース(201)等のような点群ソースから点群フレームを受け取ってよい。
【0042】
図3の例では、V-PCCエンコーダ(300)は、パッチ生成モジュール(306)、パッチパッキングモジュール(308)、ジオメトリ画像生成モジュール(310)、テクスチャ画像生成モジュール(312)、パッチ情報モジュール(304)、占有マップモジュール(314)、平滑化モジュール(336)、画像パディングモジュール(316)及び(318)、グループ拡張モジュール(320)、ビデオ圧縮モジュール(322)、(323)及び(332)、補助パッチ情報圧縮モジュール(338)、エントロピー圧縮モジュール(334)並びにマルチプレクサ(324)を含む。
【0043】
本開示の側面によると、V-PCCエンコーダ(300)は、圧縮された点群を復元された点群に変換するために使用されるいくつかのメタデータ(例えば占有マップ及びパッチ情報)とともに、3D点群フレームを画像ベースの表現に変換する。いくつかの例では、V-PCCエンコーダ(300)は、3D点群フレームをジオメトリ画像、テクスチャ画像及び占有マップに変換し、次いで、ビデオコーディング技術を使用して、ジオメトリ画像、テクスチャ画像及び占有マップをビットストリームに符号化することができる。一般に、ジオメトリ画像は、ピクセルに投影された点に関連付けられるジオメトリ値で満たされる(fill)ピクセルを有する2D画像であり、ジオメトリ値で満たされるピクセルを、ジオメトリサンプルと呼ぶことができる。テクスチャ画像は、ピクセルに投影されたポイントに関連付けられるテクスチャ値で満たされるピクセルを有する2D画像であり、テクスチャ値で満たされるピクセルをテクスチャサンプルと呼ぶことができる。占有マップは、パッチによって占有されているか又は占有されていないことを示す値で満たされるピクセルを有する2D画像である。
【0044】
パッチ生成モジュール(306)は、点群をパッチのセット(例えばパッチは、点群によって記述される表面の連続したサブセットとして定義される)にセグメント化(segment)し、パッチは、オーバーラップしていてもしてなくてもよく、各パッチが2D空間内の平面に対する深度フィールドによって記述され得る。いくつかの実施形態では、パッチ生成モジュール(306)は、再構成誤差を最小限に抑えながら、点群を、滑らかな境界を有する最小の数のパッチに分解することを目的としている。
【0045】
いくつかの例では、パッチ情報モジュール(304)は、パッチのサイズと形状を示すパッチ情報を収集することができる。いくつかの例では、パッチ情報を画像フレームにパックし、補助パッチ情報圧縮モジュール(338)によって符号化して、圧縮された補助パッチ情報を生成することができる。
【0046】
いくつかの例では、パッチパッキングモジュール(308)は、未使用空間を最小化して、格子のすべてのM×M(例えば16×16)ブロックが一意のパッチに関連付けられることを保証しながら、抽出されたパッチを2次元(2D)格子にマップするように構成される。効率的なパッチパッキングは、未使用空間を最小化すること又は時間的一貫性を確保することのいずれかによって、圧縮効率に直接影響を与えることができる。
【0047】
ジオメトリ画像生成モジュール(310)は、所与のパッチ位置で点群のジオメトリに関連付けられる2Dジオメトリ画像を生成することができる。テクスチャ画像生成モジュール(312)は、所与のパッチ位置で点群のテクスチャに関連付けられる2Dテクスチャ画像を生成することができる。ジオメトリ画像生成モジュール(310)及びテクスチャ画像生成モジュール(312)は、パッキングプロセス中に計算された3Dから2Dへのマッピングを用いて、点群のジオメトリとテクスチャを画像として記憶する。複数の点が同じサンプルに投影されるケースをより適切に処理するために、各パッチは、レイヤと呼ばれる2つの画像に投影される。一例では、ジオメトリ画像はYUV420-8ビットフォーマットのWxHの単色フレームによって表される。テクスチャ画像を生成するために、テクスチャ生成手順は、再サンプリングされた点に関連付けられる色を計算するために、再構成/平滑化されたジオメトリを利用する。
【0048】
占有マップモジュール(314)は、各ユニットでパディング情報を記述する占有マップを生成することができる。例えば占有画像は、格子のセルごとに、そのセルが空の空間に属しているか点群に属しているかを示すバイナリマップを含む。一例では、占有マップは、ピクセルごとにそのピクセルがパディングされているか否かを記述するバイナリ情報を使用することができる。別の例では、占有マップは、ピクセルのブロックごとにピクセルのブロックがパディングされているか否かを記述するバイナリ情報を使用する。
【0049】
占有マップモジュール(314)によって生成された占有マップは、可逆コーディング又は非可逆コーディングを使用して圧縮されることができる。可逆コーディングを使用するとき、エントロピー圧縮モジュール(334)を使用して占有マップを圧縮する。非可逆コーディングを使用するとき、ビデオ圧縮モジュール(332)を使用して占有マップを圧縮する。
【0050】
パッチパッキングモジュール(308)は、画像フレームにパックされた2Dパッチの間にいくつかの空の空間を残してよいことに留意されたい。画像パディングモジュール(316)及び(318)は、2Dビデオ及び画像コーデックに適している可能性がある画像フレームを生成するために、空の空間を満たすことができる(パディングと呼ばれる)。画像パディングは、冗長的情報で未使用の空間を満たすことができるバックグラウンド充填(background filling)とも呼ばれる。いくつかの例では、良好なバックグラウンド充填は、ビットレートを最小限に増加させるが、パッチ境界付近に大幅なコーディングの歪みを導入しない。
【0051】
ビデオ圧縮モジュール(322)、(323)及び(332)は、HEVC、VVC等の適切なビデオコーディング規格に基づいて、パディングされたジオメトリ画像、パディングされたテクスチャ画像及び占有マップのような2D画像を符号化することができる。一例では、ビデオ圧縮モジュール(322)、(323)及び(332)は別個に動作する個々の構成要素である。別の例では、ビデオ圧縮モジュール(322)、(323)及び(332)を単一の構成要素として実装することができることに留意されたい。
【0052】
いくつかの例では、平滑化モジュール(336)は、再構成されたジオメトリ画像の平滑化された画像を生成するように構成される。平滑化された画像を、テクスチャ画像生成(312)に提供することができる。次いで、テクスチャ画像生成(312)は、再構成されたジオメトリ画像に基づいてテクスチャ画像の生成を調整してよい。例えばパッチ形状(例えばジオメトリ)が符号化及び復号中にわずかに歪むとき、その歪みは、テクスチャ画像を生成してパッチ形状の歪みを補正するときに考慮され得る。
【0053】
いくつかの実施形態では、グループ拡張(320)は、再構成された点群の視覚的品質だけでなく、コーディングゲインを向上させるために、冗長な低頻度コンテンツでオブジェクト境界の周囲のピクセルをパディングするように構成される。
【0054】
マルチプレクサ(324)は、圧縮されたジオメトリ画像、圧縮されたテクスチャ画像、圧縮された占有マップ、圧縮された補助パッチ情報を、圧縮されたビットストリームに多重化することができる。
【0055】
図4は、いくつかの例において、点群フレームに対応する圧縮されたビットストリームを復号するためのV-PCCデコーダ(400)のブロック図を示している。いくつかの例では、V-PCCデコーダ(400)を、通信システム(100)及びストリーミングシステム(200)において使用することができる。例えばデコーダ(210)は、V-PCCデコーダ(400)と同様の方法で動作するように構成されることができる。V-PCCデコーダ(400)は、圧縮されたビットストリームを受け取り、圧縮されたビットストリームに基づいて再構成された点群を生成する。
【0056】
図4の例では、V-PCCデコーダ(400)は、デマルチプレクサ(432)、ビデオ復元モジュール(434)及び(436)、占有マップ復元モジュール(438)、補助パッチ情報復元モジュール(442)、ジオメトリ再構成モジュール(444)、平滑化モジュール(446)、テクスチャ再構成モジュール(448)並びに色平滑化モジュール(452)を含む。
【0057】
デマルチプレクサ(432)は、圧縮されたビットストリームを受信し、圧縮されたテクスチャ画像、圧縮されたジオメトリ画像、圧縮された占有マップ及び圧縮された補助パッチ情報に分離させる(separate)ことができる。
【0058】
ビデオ復元モジュール(434)及び(436)は、適切な規格(例えばHEVC、VVC等)に従って、圧縮された画像を復号し、復元された画像を出力することができる。例えばビデオ復元モジュール(434)は、圧縮されたテクスチャ画像を復号し、復元されたテクスチャ画像を出力し、ビデオ復元モジュール(436)は、圧縮されたジオメトリ画像を復号し、復元されたジオメトリ画像を出力する。
【0059】
占有マップ復元モジュール(438)は、適切な規格(例えばHEVC、VVC等)に従って、圧縮された占有マップを復号し、復元された占有マップを出力することができる。
【0060】
補助パッチ情報復元モジュール(442)は、適切な規格(例えばHEVC、VVC等)に従って、圧縮された補助パッチ情報を復号し、復元された補助パッチ情報を出力することができる。
【0061】
ジオメトリ再構成モジュール(444)は、復元されたジオメトリ画像を受け取り、復元された占有マップと復元された補助パッチ情報に基づいて、再構成された点群ジオメトリを生成することができる。
【0062】
平滑化モジュール(446)は、パッチのエッジにおける不一致(incongruences)を平滑化することができる。平滑化手順は、圧縮アーチファクトに起因してパッチ境界で発生する可能性がある潜在的な不連続性を緩和することを目的とする。いくつかの実施形態では、圧縮/復元によって生じる可能性がある歪みを緩和するために、パッチ境界に位置するピクセルに平滑化フィルタが適用され得る。
【0063】
テクスチャ再構成モジュール(448)は、復元されたテクスチャ画像と平滑化ジオメトリに基づいて、点群内の点のテクスチャ情報を決定することができる。
【0064】
色平滑化モジュール(452)は、カラーリングの不一致を平滑化することができる。3D空間内の隣接しないパッチは、2Dビデオでは互いに隣り合ってパックされることが多い。いくつかの例では、隣接しないパッチのピクセル値が、ブロックベースのビデオコーデックによって混同される可能性がある。色平滑化の目的は、パッチ境界に現れる、目に見えるアーチファクトを減らすことである。
【0065】
図5は、いくつかの例におけるビデオデコーダ(510)のブロック図を示している。ビデオデコーダ(510)を、V-PCCデコーダ(400)において使用することができる。例えばビデオ復元モジュール(434)及び(436)、占有マップ復元モジュール(438)を、ビデオデコーダ(510)と同様に構成することができる。
【0066】
ビデオデコーダ(510)は、コーディングされたビデオシーケンスのような圧縮画像からシンボル(521)を再構成するためにパーサ(520)を含み得る。これらのシンボルのカテゴリは、ビデオデコーダ(510)の動作を管理するために使用される情報を含む。パーサ(520)は、受信される、コーディングされたビデオシーケンスを構文解析/エントロピー復号し得る。コーディングされたビデオシーケンスのコーディングは、ビデオコーディング技術又は規格に従うことができ、可変長コーディング、ハフマンコーディング、文脈依存(context sensitivity)を伴うか伴わない算術コーディング等を含む、様々な原理に従うことができる。パーサ(520)は、コーディングされたビデオシーケンスから、ビデオデコーダ内のピクセルのサブグループのうちの少なくとも1つのサブグループについてのサブグループパラメータのセットを、グループに対応する少なくとも1つのパラメータに基づいて抽出することができる。サブグループは、ピクチャのグループ(GOP:Groups of Pictures)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU:Coding Units)、ブロック、変換ユニット(TU:Transform Units)、予測ユニット(PU:Prediction Units)等を含むことができる。パーサ(520)はまた、変換係数、量子化パラメータ値、動きベクトル等のようなコーディングされたビデオシーケンス情報から抽出してもよい。
【0067】
パーサ(520)は、シンボル(521)を生成するように、バッファメモリから受け取ったビデオシーケンスに対してエントロピー復号/構文解析動作を実行し得る。
【0068】
シンボル(521)の再構成は、コーディングされたビデオピクチャ又はその部分のタイプ(例えばインター及びイントラピクチャ、インター及びイントラブロック)及び他のファクタに応じて、複数の異なるユニットに関与することができる。どのユニットがどのように関与するかは、コーディングされたビデオシーケンスからパーサ(520)によって構文解析されたサブグループ制御情報によって制御されることができる。パーサ(520)と以下の複数のユニットとの間のそのようなサブグループ制御情報のフローは、明確性のために図示されていない。
【0069】
既に述べた機能ブロックの他に、ビデオデコーダ(510)は、以下で説明するように、複数の機能ユニットに概念的に細分されることができる。商業的制約の下で動作する実用的な実装では、これらのユニットの多くは互いに密接に対話し、少なくとも部分的に相互へ統合されることができる。しかしながら、開示される主題を説明する目的のために、以下では、機能ユニットへの概念的な細分化が適切である。
【0070】
第1ユニットは、スケーラ/逆変換ユニット(551)である。スケーラ/逆変換ユニット(551)は、パーサ(520)からのシンボル(521)として、どの変換を使用すべきか、ブロックサイズ、量子化係数、量子化スケーリング行列等を含む制御情報だけでなく、量子化された変換係数も受け取る。スケーラ/逆変換ユニット(551)は、アグリゲータ(555)に入力することができるサンプル値を含むブロックを出力することができる。
【0071】
場合によっては、スケーラ/逆変換(551)の出力サンプルは、イントラコーディングされたブロック、すなわち、以前に再構成されたピクチャからの予測情報を使用していないが、現在のピクチャの以前に再構成された部分からの予測情報を使用することができるブロックに関連する可能性がある。このような予測情報は、イントラピクチャ予測ユニット(552)によって提供されることができる。場合によっては、イントラピクチャ予測ユニット(552)は、現在のピクチャバッファ(558)からフェッチされる、周囲の既に再構成された情報を使用して、再構成中のブロックの同じサイズ及び形状のブロックを生成する。現在のピクチャバッファ(558)は、例えば部分的に再構成された現在のピクチャ及び/又は完全に再構成された現在のピクチャをバッファする。アグリゲータ(555)は、場合によっては、サンプルごとに、イントラ予測ユニット(552)が生成した予測情報を、スケーラ/逆変換ユニット(551)によって提供される出力サンプル情報に追加し得る。
【0072】
他の場合には、スケーラ/逆変換ユニット(551)の出力サンプルは、インターコーディングされて潜在的に動き補償されるブロックに関連する可能性がある。このような場合、動き補償予測ユニット(553)は、予測に使用されるサンプルをフェッチするために参照ピクチャメモリ(557)にアクセスすることができる。ブロックに関連するシンボル(521)に従って、フェッチされたサンプルを動き補償した後、これらのサンプルは、アグリゲータ(555)によって、出力サンプル情報を生成するために、スケーラ/逆変換ユニット(551)の出力(この場合、残差サンプル又は残差信号と呼ばれる)に追加されることができる。動き補償予測ユニット(553)が予測サンプルをフェッチする参照ピクチャメモリ(557)内のアドレスは、例えばX、Yと参照ピクチャ成分を有することができるシンボル(521)の形態で、動き補償予測ユニット(553)に利用可能な動きベクトルによって、制御されることができる。動き補償はまた、サブサンプルの正確な動きベクトルが使用されているときに参照ピクチャメモリ(557)からフェッチされるサンプル値の補間、動きベクトル予測メカニズム等も含むことができる。
【0073】
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)内の様々なループフィルタリング技術の対象となることができる。ビデオ圧縮技術は、コーディングされたビデオシーケンス(コーディングされたビデオビットストリームとも呼ばれる)に含まれるパラメータによって制御され、かつパーサ(520)からシンボル(521)としてループフィルタユニット(556)に利用可能にされるが、コーディングされたピクチャ又はコーディングされたビデオシーケンスの(復号順序で)以前の部分の復号中に取得されたメタ情報に応答することもできるとともに、以前に再構成されてループフィルタリングされたサンプル値に応答することができる、ループ内フィルタ技術を含むことができる。
【0074】
ループフィルタユニット(556)の出力は、レンダデバイスに出力されることができ、かつ将来のインターピクチャ予測で使用するために参照ピクチャメモリ(557)内に記憶されることができる、サンプルストリームとすることができる。
【0075】
ある特定のコーディングされたピクチャは、いったん完全に再構成されると、将来の予測のための参照ピクチャとして使用されることができる。例えば現在のピクチャに対応するコーディングされたピクチャが完全に再構成され、コーディングされたピクチャが(例えばパーサ(520)によって)参照ピクチャとして識別されていると、現在のピクチャバッファ(558)は参照ピクチャメモリ(557)の一部となることができ、フレッシュな現在のピクチャバッファは、後続のコーディングされたピクチャの再構成を開始する前に再割り当てされることができる。
【0076】
ビデオデコーダ(510)は、ITU-T Rec. H.265のような規格の所定のビデオ圧縮技術に従って復号動作を実行し得る。コーディングされたビデオシーケンスは、該コーディングされたビデオシーケンスが、ビデオ圧縮技術又は規格の構文と、ビデオ圧縮技術又は規格で文書化されるプロファイルとの両方を守るという意味において、使用されているビデオ圧縮技術又は規格によって指定された構文に準拠し得る。具体的には、プロファイルは、そのプロファイルの下での使用に使用可能な唯一のツールとして、特定のツールを選択することができる。また、コーディングされたビデオシーケンスの複雑さが、ビデオ圧縮技術又は規格のレベルによって定義される範囲内にあることが、準拠には必要であり得る。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構成サンプルレート(例えば毎秒メガサンプルで測定される)、最大参照ピクセルサイズ等を制限する。レベルによって設定される限界(limit)は、場合によっては、コーディングされたビデオシーケンスでシグナリングされる仮想リファレンスデコーダ(HRD:Hypothetical Reference Decoder)のバッファ管理のためのHRD仕様及びメタデータを通して更に制限される可能性がある。
【0077】
図6は、本開示の一実施形態によるビデオエンコーダ(603)のブロック図を示している。ビデオエンコーダ(603)を、点群を圧縮するV-PCCエンコーダ(300)において使用することができる。一例では、ビデオ圧縮モジュール(322)及び(323)と、ビデオ圧縮モジュール(332)は、エンコーダ(603)と同様に構成される。
【0078】
ビデオエンコーダ(603)は、パディングされたジオメトリ画像、パディングされたテクスチャ画像等のような画像を受け取って、圧縮された画像を生成することができる。
【0079】
一実施形態によると、ビデオエンコーダ(603)は、リアルタイムで又はアプリケーションによって要求される任意の他の時間制約の下で、ソースビデオシーケンスのピクチャ(画像)をコーディング及び圧縮して、コーディングされたビデオシーケンス(圧縮された画像)にすることができる。適切なコーディング速度を実施することは、コントローラ(650)の1つの機能である。いくつかの実施形態において、コントローラ(650)は、以下で説明されるように、他の機能ユニットを制御し、該他の機能ユニットに機能的に結合される。この結合は、明確性のために図示されていない。コントローラ(650)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化器、レート歪み最適化技術のラムダ値、...)、ピクチャサイズ、ピクチャのグループ(GOP)のレイアウト、最大動きベクトル探索範囲等を含むことができる。コントローラ(650)は、特定のシステム設計のために最適化された、ビデオエンコーダ(603)に関係する他の適切な機能を有するように構成されることができる。
【0080】
いくつかの実施形態において、ビデオエンコーダ(603)は、コーディングループで動作するように構成される。過剰に簡略化した説明として、一例では、コーディングループは、ソースコーダ(630)(例えばコーディングされるべき入力ピクチャ及び参照ピクチャに基づいて、シンボルストリーム等のシンボルを作成することを担当する)と、ビデオエンコーダ(603)に組み込まれた(ローカル)デコーダ(633)とを含むことができる。(シンボルとコーディングされたビデオビットストリームとの間の任意の圧縮は、開示される主題において考慮されるビデオ圧縮技術で可逆であるので)デコーダ(633)は、(リモート)デコーダが作成するのと同様の方法で、シンボルを再構成してサンプルデータを作成する。再構成されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(634)に入力される。シンボルストリームの復号は、デコーダ位置(ローカル又はリモート)とは独立のビット正確な結果(bit-exact results)をもたらすので、参照ピクチャメモリ(634)内のコンテンツも、ローカルエンコーダとリモートエンコーダとの間でビット正確である。言い換えると、エンコーダの予測部分は、デコーダが復号中に予測を使用するときに「見る」のとまったく同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャのシンクロニシティ(synchronicity)のこの基本原理(及び例えばチャネルエラーのためにシンクロニシティを維持することができない場合の結果として生じるドリフト)は、いくつかの関連する技術でも同様に使用される。
【0081】
「ローカル」デコーダ(633)の動作は、ビデオデコーダ(510)のような「リモート」デコーダと同じものとすることができ、これは、既に
図5に関連して上述されている。しかしながら、
図5も簡単に参照すると、シンボルが利用可能であり、エントロピーコーダ(645)及びパーサ(520)によるコーディングされたビデオシーケンスへのシンボルの符号化/復号は可逆であり得るので、パーサ(520)を含むビデオデコーダ(510)のエントロピー復号部分は、ローカルデコーダ(633)では完全には実装されないことがある。
【0082】
いくつかの例において、動作中に、ソースコーダ(630)は、動き補償予測コーディングを実行してよく、動き補償予測コーディングは、「参照ピクチャ」として指定されたビデオシーケンスからの1つ以上の以前にコーディングされたピクチャに関連して予測的に入力ピクチャをコーディングする。このようにして、コーディングエンジン(632)は、入力ピクチャのピクセルブロックと、入力ピクチャに対する予測参照として選択され得る参照ピクチャのピクセルブロックとの間の差をコーディングする。
【0083】
ローカルビデオデコーダ(633)は、ソースコーダ(630)によって作成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャのコーディングされたビデオデータを復号し得る。コーディングエンジン(632)の動作は、有利には、非可逆プロセスであり得る。コーディングされたビデオデータがビデオデコーダ(
図6には図示せず)で復号され得るとき、再構成ビデオシーケンスは、典型的に、いくつかの誤差を伴うソースビデオシーケンスのレプリカであり得る。ローカルビデオデコーダ(633)は、参照ピクチャに対してビデオデコーダによって実行され得る復号処理を複製し、再構成参照ピクチャを参照ピクチャキャッシュ(634)に記憶させ得る。このようにして、ビデオエンコーダ(603)は、(伝送誤差なしに)遠端ビデオデコーダによって取得される再構成参照ピクチャとして、共通のコンテンツを有する再構成参照ピクチャのコピーを、ローカルに記憶し得る。
【0084】
予測器(635)は、コーディングエンジン(632)について予測探索を実行し得る。すなわち、コーディングされるべき新しいピクチャについて、予測器(635)は、参照ピクチャメモリ(634)から、サンプルデータ(候補参照ピクセルブロックとして)又は参照ピクチャ動きベクトル、ブロック形状等のような特定のメタデータを探索してよく、これらのデータは、新たなピクチャのための適切な予測参照として機能し得る。予測器(635)は、適切な予測参照を見つけるために、サンプルブロックとピクセルブロックごと(sample block-by-pixel block basis)に動作し得る。場合によっては、予測器(635)によって取得される検索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(634)に記憶された複数の参照ピクチャから引き出された予測参照を有してよい。
【0085】
コントローラ(650)は、例えばビデオデータを符号化するために使用されるパラメータ及びサブグループパラメータの設定を含む、ソースコーダ(630)のコーディング動作を管理してもよい。
【0086】
すべての前述の機能ユニットの出力は、エントロピーコーダ(645)におけるエントロピーコーディングの対象となり得る。エントロピーコーダ(645)は、ハフマンコーディング、可変長コーディング、算術コーディング等のような技術に従ってシンボルを可逆圧縮することによって、様々な機能ユニットによって生成されるシンボルを、コーディングされたビデオシーケンスに変換する。
【0087】
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理し得る。コーディングの間、コントローラ(650)は、各コーディングされたピクチャに、特定のコーディングピクチャタイプ(coded picture type)を割り当ててよく、該コーディングピクチャタイプは、それぞれのピクチャに適用され得るコーディングに影響を与え得る。例えばピクチャは、しばしば、次のピクチャタイプのうちの1つとして割り当てられ得る:
【0088】
イントラピクチャ(Iピクチャ)は、予測のソースとしてシーケンス内のいずれの他のピクチャも使用せずにコーディング及び復号され得るものであり得る。いくつかのビデオコーデックは、例えば独立デコーダリフレッシュ(「IDR:Independent Decoder Refresh」)ピクチャを含む、異なるタイプのイントラピクチャを許容する。当業者は、Iピクチャのこれらの変形並びにそれらのそれぞれの用途及び特徴を知っている。
【0089】
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために、最大1つの動きベクトルと参照インデックスを用いて、イントラ予測又はインター予測を使用して、コーディング及び復号され得るものであり得る。
【0090】
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために、最大2つの動きベクトルと参照インデックスを用いて、イントラ予測又はインター予測を使用して、コーディング及び復号され得るものであり得る。同様に、複数予測ピクチャ(multiple-predictive pictures)は、単一のブロックの再構成のために、2つより多くの参照ピクチャ及び関連するメタデータを使用することができる。
【0091】
ソースピクチャは、通常、空間的に複数のサンプルブロック(例えば各々4×4、8×8、4×8又は16×16サンプルのブロック)に細分され、ブロックごとにコーディングされ得る。ブロックは、ブロックのそれぞれのピクチャに適用されるコーディング割り当てによって決定されるように、他の(既にコーディングされた)ブロックに関連して予測的にコーディングされ得る。例えばIピクチャのブロックは、非予測的にコーディングされてもよく、あるいはそれらは、同じピクチャの既にコーディングされたブロックに関連して予測的にコーディングされてもよい(空間予測又はイントラ予測)。Pピクチャのピクセルブロックは、以前にコーディングされた1つの参照ピクチャに関連して、空間予測を介して又は時間予測を介して予測的にコーディングされ得る。Bピクチャのブロックは、1つ又は2つの以前にコーディングされた参照ピクチャに関連して、空間予測を介して又は時間予測を介して予測的にコーディングされ得る。
【0092】
ビデオエンコーダ(603)は、ITU-T Rec. H.265のような所定のビデオコーディング技術又は規格に従ってコーディング動作を実行し得る。その動作において、ビデオエンコーダ(603)は、入力ビデオシーケンスにおける時間的及び空間的冗長性を利用する予測コーディング動作を含む、様々な圧縮動作を実行し得る。コーディングされたビデオデータは、したがって、使用されているビデオコーディング技術又は規格によって指定された構文に従うことができる。
【0093】
ビデオは、時間シーケンスにおける複数のソースピクチャ(画像)の形式であり得る。イントラピクチャ予測(しばしば、イントラ予測と略される)は、所与のピクチャにおける空間的相関を使用し、インターピクチャ予測は、ピクチャ間の(時間的又は他の)相関を使用する。一例では、符号化/復号中の特定のピクチャは、現在のピクチャと呼ばれ、ブロックに分割される。現在のピクチャ内のブロックが、ビデオ内の以前にコーディングされて依然としてバッファされている参照ピクチャ内の参照ブロックに類似するとき、現在のピクチャ内のブロックは、動きベクトルと呼ばれるベクトルによってコーディングされることができる。動きベクトルは、参照ピクチャ内の参照ブロックを指し示し、複数の参照ピクチャが使用されているケースでは、参照ピクチャを識別する第3次元(third dimension)を有することができる。
【0094】
いくつかの実施形態では、インターピクチャ予測において双予測技術を使用することができる。双予測技術によると、第1参照ピクチャと第2参照ピクチャのように、両方とも、復号順序でビデオ内の現在のピクチャに先行する(ただし、表示順序では、それぞれ、過去及び将来であり得る)2つの参照ピクチャが使用される。現在のピクチャ内のブロックを、第1参照ピクチャ内の第1参照ブロックを指し示す第1動きベクトルと、第2参照ピクチャ内の第2参照ブロックを指し示す第2動きベクトルとによってコーディングすることができる。ブロックは、第1参照ブロックと第2参照ブロックの組合せによって、予測されることができる。
【0095】
さらに、コーディング効率を改善するために、インターピクチャ予測においてマージモード技術を使用することができる。
【0096】
本開示のいくつかの実施形態によると、インターピクチャ予測及びイントラピクチャ予測のような予測は、ブロック単位(unit)で実行される。例えばHEVC規格によると、ビデオピクチャのシーケンス内のピクチャは、圧縮のためにコーディングツリーユニット(CTU)に分割され、ピクチャ内のCTUは、64×64ピクセル、32×32ピクセル又は16×16ピクセルのように、同じサイズを有する。一般に、CTUは、3つのコーディングツリーブロック(CTB)を含み、該3つのCTBは、1つのルマ(luma)CTBと2つのクロマ(chroma)CTBである。各CTUは、1つ又は複数のコーディングユニット(CUs)に再帰的に四分木分裂(quadtree split)することができる。例えば64×64ピクセルのCTUを、64×64ピクセルの1つのCUに又は32×32ピクセルの4つのCUに又は16×16ピクセルの16個のCUに分裂することができる。一例では、各CUを分析して、インター予測タイプ又はイントラ予測タイプのような、CUの予測タイプを決定する。CUは、時間的及び/又は空間的予測可能性に依存して、1つ以上の予測ユニット(PU)に分裂される。一般に、各PUはルマ予測ブロック(PB)と2つのクロマPBsを含む。一実施形態では、コーディング(符号化/復号)における予測動作は、予測ブロックのユニットにおいて実行される。予測ブロックの例としてルマ予測ブロックを使用すると、予測ブロックは、8×8ピクセル、16×16ピクセル、8×16ピクセル、16×8ピクセル等のような、ピクセルについての値(例えばルマ値)の行列を含んでよい。
【0097】
図7は、いくつかの例における、G-PCCエンコーダ(700)のブロック図を示す。G-PCCエンコーダ(700)は、点群データを受け取り、点群データを圧縮して、圧縮された点群データを担持するビットストリームを生成するように構成されることができる。一実施形態において、G-PCCエンコーダ(700)は、位置量子化モジュール(710)、重複点除去モジュール(712)、八分木符号化モジュール(730)、属性転送モジュール(720)、詳細レベル(LOD、level of detail)生成モジュール(740)、属性予測モジュール(750)、残差量子化モジュール(760)、算術コーディングモジュール(770)、逆残差量子化モジュール(780)、加算モジュール(781)及び再構成された属性値を記憶するメモリ(790)を含むことができる。
【0098】
図示されるように、入力点群(701)をG-PCCエンコーダ(700)において受信することができる。点群(701)の位置(例えば3D座標)は量子化モジュール(710)に提供される。量子化モジュール(710)は、座標を量子化して、量子化された位置を生成するように構成される。重複点除去モジュール(712)は、量子化された位置を受け取り、フィルタプロセスを実行して重複点を識別して除去するように構成される。八分木符号化モジュール(730)は、重複点除去モジュール(712)から、フィルタリングされた位置を受け取り、八分木ベースの符号化プロセスを実行して、ボクセルの3D格子を記述する占有コードのシーケンスを生成するように構成される。占有コードは、算術コーディングモジュール(770)に提供される。
【0099】
属性転送モジュール(720)は、入力点群の属性を受け取り、複数の属性値がそれぞれのボクセルに関連付けられるときに各ボクセルの属性値を決定するために、属性転送プロセスを実行するように構成される。属性転送プロセスを、八分木符号化モジュール(730)から出力される、再順序付けされた点に対して実行することができる。属性は、転送操作後に、属性予測モジュール(750)に提供される。LOD生成モジュール(740)は、八分木符号化モジュール(730)から出力される、再順序付けされた点に作用して、これらの点を、異なるLODに再編成するように構成される。LOD情報は、属性予測モジュール(750)に供給される。
【0100】
属性予測モジュール(750)は、LOD生成モジュール(740)からのLOD情報によって示されるLODベースの順序に従って点を処理する。属性予測モジュール(750)は、メモリ(790)に記憶された現在の点の隣接点のセットの再構成された属性に基づいて、現在の点の属性予測を生成する。その後、属性転送モジュール(720)から受け取った元の属性値と、ローカルに生成された属性予測とに基づいて、予測残差を取得することができる。候補インデックスがそれぞれの属性予測プロセスで使用されるとき、選択された予測候補に対応するインデックスが、算術コーディングモジュール(770)に提供されることがある。
【0101】
残差量子化モジュール(760)は、属性予測モジュール(750)から予測残差を受け取り、量子化を実行して量子化残差を生成するように構成される。量子化残差は、算術コーディングモジュール(770)に提供される。
【0102】
逆残差量子化モジュール(780)は、残差量子化モジュール(760)から量子化された残差を受け取り、残差量子化モジュール(760)で実行される量子化操作の逆を実行することによって、再構成予測残差を生成するように構成される。加算モジュール(781)は、逆残差量子化モジュール(780)から再構成予測残差を受け取り、属性予測モジュール(750)からそれぞれの属性予測を受け取るように構成される。再構成予測残差と属性予測を組み合わせることによって、再構成された属性値が生成され、メモリ(790)に記憶される。
【0103】
算術コーディングモジュール(770)は、占有コード、候補インデックス(使用される場合)、量子化残差(生成される場合)及び他の情報を受け取り、エントロピー符号化を実行して、受け取った値又は情報を更に圧縮するように構成される。その結果、圧縮された情報を担持する圧縮ビットストリーム(702)を生成することができる。ビットストリーム(702)は、圧縮されたビットストリームを復号するデコーダに送信されるか又は他の方法で提供されてよく、あるいはストレージデバイスに記憶されてもよい。
【0104】
図8は、一実施形態によるG-PCCデコーダ(800)のブロック図を示している。G-PCCデコーダ(800)は、圧縮されたビットストリームを受け取り、点群データ復元を実行してビットストリームを復元し、復号された点群データを生成するように構成されることができる。一実施形態では、G-PCCデコーダ(800)は、算術復号モジュール(810)、逆残差量子化モジュール(820)、八分木復号モジュール(830)、LOD生成モジュール(840)、属性予測モジュール(850)及び再構成された属性値を記憶するメモリ(860)を含むことができる。
【0105】
図示されるように、圧縮されたビットストリーム(801)を算術復号モジュール(810)において受信することができる。算術復号モジュール(810)は、圧縮されたビットストリーム(801)を復号して、量子化された残差(生成された場合)と点群の占有コードを取得するように構成される。八分木復号モジュール(830)は、占有コードに従って点群内の点の再構成された位置を決定するように構成される。LOD生成モジュール(840)は、再構成された位置に基づいて点を異なるLODに再編成し、LODベースの順序を決定するように構成される。逆残差量子化モジュール(820)は、算術復号モジュール(810)から受け取った、量子化された残差に基づいて、再構成された残差を生成するように構成される。
【0106】
属性予測モジュール(850)は、LODベースの順序に従って点の属性予測を決定する属性予測プロセスを実行するように構成される。例えば現在の点の属性予測は、メモリ(860)に記憶されている現在の点の隣接点の再構成された属性値に基づいて決定されることができる。いくつかの例では、属性予測をそれぞれの再構成された残差と組み合わせて、現在の点の再構成された属性を生成することができる。
【0107】
属性予測モジュール(850)から生成された再構成された属性のシーケンスは、八分木復号モジュール(830)から生成された再構成された位置とともに、一例では、G-PCCデコーダ(800)から出力される復号された点群(802)に対応する。加えて、再構成された属性もメモリ(860)に記憶され、その後、後続の点の属性予測を導出するために使用することができる。
【0108】
様々な実施形態では、エンコーダ(300)、デコーダ(400)、エンコーダ(700)及び/又はデコーダ(800)を、ハードウェア、ソフトウェア又はそれらの組合せで実装することができる。例えばエンコーダ(300)、デコーダ(400)、エンコーダ(700)及び/又はデコーダ(800)を、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)等のような、ソフトウェアとともに又はソフトウェアなしに動作する1つ以上の集積回路(IC)のような処理回路で実装することができる。別の例では、エンコーダ(300)、デコーダ(400)、エンコーダ(700)及び/又はデコーダ(800)を、不揮発性(又は非一時的)コンピュータ読取可能記憶媒体に記憶される命令を含むソフトウェア又はファームウェアとして実装することができる。命令は、1つ以上のプロセッサのような処理回路によって実行されると、処理回路にエンコーダ(300)、デコーダ(400)、エンコーダ(700)及び/又はデコーダ(800)の機能を実行させる。
【0109】
本明細書に開示される属性予測技術を実装するように構成される属性予測モジュール(750)及び(850)は、
図7及び
図8に示されているものと類似又は異なる構造を有することができる他のデコーダ又はエンコーダに含まれることができることに留意されたい。加えて、エンコーダ(700)及びデコーダ(800)を、様々な例において、同じデバイス又は別個のデバイスに含めることができる。
【0110】
本開示のいくつかの側面によると、メッシュ圧縮は、PCCコーディングツールとは異なるコーディングツールを使用することもでき、あるいは上記のPCC(例えばG-PCC、V-PCC)エンコーダ、上記のPCC(例えばG-PCC、V-PCC)デコーダ等のようなPCCコーディングツールを使用することもできる。
【0111】
オブジェクトのメッシュ(メッシュモデル又は3Dメッシュとも呼ばれる)は、オブジェクトの表面を記述するポリゴンを含むことができる。各ポリゴンは、3D空間内のポリゴンの頂点と、頂点がポリゴンにどのように接続されているかの情報によって定義され得る。頂点がどのように接続されているかの情報は、接続情報と呼ばれる。いくつかの例では、メッシュは、頂点に関連付けられる色、法線等の属性も含むことができる。2D属性マップでメッシュをパラメータ化するマッピング情報を利用することによって、属性をメッシュの表面に関連付けることができる。マッピング情報は通常、メッシュの頂点に関連付けられる、UV座標又はテクスチャ座標と呼ばれる一連のパラメトリック座標(parametric coordinates)によって記述される。2D属性マップ(いくつかの例では、テクスチャマップと呼ばれる)は、テクスチャ、法線、変位(displacements)等のような高解像度の属性情報を記憶するために使用される。このような情報はテクスチャマッピングやシェーディングのような様々な目的のために使用することができる。
【0112】
いくつかの実施形態では、メッシュは、ジオメトリ情報、接続情報、マッピング情報、頂点属性及び属性マップと呼ばれる構成要素を含むことができる。いくつかの例では、ジオメトリ情報は、メッシュの頂点に関連付けられる3D位置のセットによって記述される。一例では、(x,y,z)座標を使用して、頂点の3D位置を記述することができる。いくつかの例では、接続情報は、頂点をどのように接続して3D表面を作成するかを記述する頂点インデックスのセットを含む。いくつかの例では、マッピング情報は、メッシュ表面をどのように平面の2D領域にマッピングするかを記述されている。一例では、マッピング情報は、接続情報とともに、メッシュ頂点に関連付けられるUVパラメトリック/テクスチャ座標(u,v)のセットによって記述される。いくつかの例では、頂点属性は、メッシュ頂点に関連付けられるスカラー又はベクトル属性値を含む。いくつかの例では、属性マップは、メッシュ表面に関連付けられる属性を含み、2D画像/ビデオとして記憶される。一例では、ビデオ(例えば2D画像/ビデオ)とメッシュ表面との間のマッピングは、マッピング情報によって定義される。
【0113】
本開示の側面によると、UVマッピング又はメッシュパラメータ化と呼ばれるいくつかの技術を使用して、3Dドメイン内のメッシュの表面を2Dドメインにマッピングする。いくつかの例では、メッシュは3Dドメイン内のパッチに分割(partition)される。その後、パッチはそれぞれ2D形状にパラメータ化される。いくつかの例ではアトラスとも呼ばれるマップに2D形状をパックする(例えば方向付け及び配置する)ことができる。いくつかの例では、2D画像又はビデオ処理技術を使用して、マップを更に処理することができる。
【0114】
一例では、UVマッピング技術は、3Dメッシュのパッチに対応する2DのUVアトラス(UVマップとも呼ばれる)と1つ以上のテクスチャアトラス(テクスチャマップとも呼ばれる)を生成する。UVアトラスは、2Dドメイン(例えば矩形)内の2Dの点への3Dメッシュの3D頂点の割り当てを含む。UVアトラスは、3D表面の座標から2Dドメインの座標へのマッピングである。一例として、UVアトラス内の2D座標(u,v)にある点は、3Dドメイン内の頂点の座標(x,y,z)によって形成される値を有する。一例では、テクスチャアトラスは、3Dメッシュの色情報を含む。例えばテクスチャアトラス内の2D座標(u,v)にある点(UVアトラス内で3D値(x,y,z)を有する)は、3Dドメインの(x,y,z)にある点の色属性を指定する色を有する。
【0115】
開示の側面によると、動的メッシュは、構成要素(ジオメトリ情報、接続情報、マッピング情報、頂点属性及び属性マップ)のうちの少なくとも1つが時間によって変化するメッシュである。動的メッシュを、一連のメッシュ(メッシュフレームとも呼ばれる)によって記述することができる。動的メッシュは、該動的メッシュが時間の経過とともに変化する大量の情報を含む可能性があるので、大量のデータを必要とする可能性がある。メッシュの圧縮技術は、メッシュ表現におけるメディアコンテンツの効率的な記憶と伝送を可能にすることができる。
【0116】
いくつかの例では、動的メッシュは、一定の接続情報、時間変化するジオメトリ及び時間変化する頂点属性を有することができる。いくつかの例では、動的メッシュは、時間変化する接続情報を有することができる。一例では、デジタルコンテンツ作成ツールは通常、時間変化する属性マップと時間変化する接続情報で動的メッシュを生成する。いくつかの例では、ボリューム取得技術を使用して動的メッシュを生成する。ボリューム取得技術は、特にリアルタイムの制約の下で、時間変化する接続情報で動的メッシュを生成することができる。
【0117】
本開示のいくつかの側面によると、メッシュ圧縮は、1つ以上の2Dマップ(いくつかの例では属性マップと呼ばれる)を使用してメッシュを表現し、その後、画像又はビデオコーデックを使用して2Dマップを符号化することによって実行することができる。いくつかの例では、UVアトラスサンプリング技術のような再メッシュ技術がメッシュ圧縮で使用される。UVアトラスサンプリング技術は、UVアトラスでサンプリングされた構造格子点(regular grid points)を介して3Dメッシュモデルを再メッシュする。UVアトラスの元の頂点は、構造格子点によって置き換えられる。接続情報は、構造格子点から推測でき、別個に符号化する必要はない。
【0118】
いくつかの例では、UVアトラスサンプリング技術を使用して、メッシュは、ジオメトリマップ(UVアトラスとも呼ばれる)、色マップ(色アトラスとも呼ばれる)、テクスチャマップ(テクスチャアトラスとも呼ばれる)、占有マップ等のような複数のマップによって表される。いくつかの例では、複数のマップが属性マップと呼ばれ、属性マップ内のサンプルの値が属性値と呼ばれる。複数のマップを符号化するために、画像及び/又はビデオコーデックを使用して圧縮目的を実現することができる。本開示の側面によると、複数のマップの1つ以上のマップにおけるサンプルのダイナミックレンジは、いくつかの既存のコーデックの容量を超える可能性がある。例えば一部のビデオコーデックは8ビットのコーディングしかサポートすることはできないが、ジオメトリマップのビット深度は10ビット、12ビット、更には16ビットとすることができる。
【0119】
本開示のいくつかの側面は、より低いビット深度(例えば汎用ビデオコーデック)をサポートする画像及び/又はビデオコーデックが、メッシュを表すために使用される属性マップのような、より高いビット深度の2Dマップを符号化/復号することを可能にする技術を提供する。したがって、属性マップを、汎用ビデオコーデックによって符号化又は復号することができ、よって、より多くのデバイスが、3Dメッシュ処理を含む用途に参加することができる。本技術を個々に又は任意の形式の組合せで適用することができることに留意されたい。また、本技術を、1つのメッシュフレームのみを含む静的メッシュに適用することができ、時間の経過とともに変化する複数のメッシュフレームを含む動的メッシュにも適用することができる。ビデオエンコーダ及びデコーダは、いくつかの例では、メッシュのためのコーディング技術を例示するために説明されているが、例示されるコーディング技術を、いくつかの例では、メッシュの圧縮/復元のための画像エンコーダ及びデコーダに適用することができる。
【0120】
図9は、本開示のいくつかの実施例によるメッシュ圧縮のフレームワーク(900)の図を示している。フレームワーク(900)は、メッシュエンコーダ(910)及びメッシュデコーダ(950)を含む。メッシュエンコーダ(910)は、入力メッシュ(905)(動的メッシュ処理の場合はメッシュフレーム)をビットストリーム(945)に符号化し、メッシュデコーダ(950)は、ビットストリーム(945)を復号して再構成メッシュ(995)(動的メッシュ処理の場合は再構成メッシュフレーム)を生成する。
【0121】
メッシュエンコーダ(910)は、コンピュータ、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲームデバイス、ARデバイス、VRデバイス等のような任意の適切なデバイスとすることができる。メッシュデコーダ(950)は、コンピュータ、クライアントコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ゲームデバイス、ARデバイス、VRデバイス等のような任意の適切なデバイスとすることができる。ビットストリーム(945)は、任意の適切な通信ネットワーク(図示せず)を介してメッシュエンコーダ(910)からメッシュデコーダ(950)に送信されることができる。
【0122】
図9の例では、メッシュエンコーダ(910)は、一緒に結合される、セグメンテーションモジュール(920)、ビデオエンコーダ(930)及び補助データエンコーダ(940)を含む。ビデオエンコーダ(930)は、一例では8ビット深度のような第1ビット深度の画像又はビデオデータを処理するように構成される。セグメンテーションモジュール(920)は、入力メッシュ(905)を受け取り、入力メッシュ(905)を表すマップ内の属性値が、ビデオエンコーダ(930)によってサポートされている第1ビット深度よりも高い第2ビット深度(例えば10ビット深度、12ビット深度、16ビット深度等)を有することを検出する。セグメンテーションモジュール(920)は、第2ビット深度の属性値から第1ビット深度のセグメント属性値を決定する。
【0123】
ビデオエンコーダ(930)は、画像符号化及び/又はビデオ符号化技術を使用して、セグメント属性値をビットストリーム(945)に符号化することができる。
【0124】
セグメンテーションモジュール(920)はまた、第2ビット深度の属性値から第1ビット深度のセグメント属性値を生成するために使用される補助情報を示す補助データ(927)を生成する。補助データエンコーダ(940)は、補助データ(927)を受け取り、補助データ(927)をビットストリーム(945)に符号化する。
【0125】
セグメンテーションモジュール(920)及び補助データエンコーダ(940)の動作は、本開示で更に説明される。
【0126】
図9の例では、ビットストリーム(945)はメッシュデコーダ(950)に提供される。メッシュデコーダ(950)は、
図9に図示されるように一緒に結合されるビデオデコーダ(960)、補助データデコーダ(970)、回復モジュール(980)及びメッシュ再構成モジュール(990)を含む。一例では、ビデオデコーダ(960)はビデオエンコーダ(930)に対応し、ビデオエンコーダ(930)によって符号化されるビットストリーム(945)の一部を復号し、復号された情報(965)を生成することができる。
【0127】
図9の例では、補助データデコーダ(970)は補助データエンコーダ(940)に対応し、補助データエンコーダ(940)によって符号化されるビットストリーム(945)の一部を復号し、復号された補助データ(975)を生成することができる。
【0128】
図9の例では、復号された情報(965)と復号された補助データ(975)が回復モジュール(980)に提供される。回復モジュール(980)は、第2ビット深度(より高いビット深度)で回復された属性値(985)を形成することができる。メッシュ再構成モジュール(990)は、回復された属性値(985)に基づいて再構成されたメッシュ(995)を生成する。補助データデコーダ(970)及び回復モジュール(980)の動作は、本開示で更に説明される。
【0129】
セグメンテーションモジュール(920)、ビデオエンコーダ(930)及び補助データエンコーダ(940)のようなメッシュエンコーダ(910)内の構成要素を、それぞれ、様々な技術によって実装することができることに留意されたい。一例では、構成要素は集積回路によって実装される。別の例では、構成要素は、1つ以上のプロセッサによって実行することができるソフトウェアを使用して実装される。
【0130】
ビデオデコーダ(960)、補助データデコーダ(970)、回復モジュール(980)及びメッシュ再構成モジュール(990)のようなメッシュデコーダ(950)内の構成要素を、それぞれ、様々な技術で実装することができることに留意されたい。一例では、構成要素は集積回路によって実装される。別の例では、構成要素は、1つ以上のプロセッサによって実行することができるソフトウェアを使用して実装される。
【0131】
本開示の側面によると、セグメンテーションモジュール(920)は、入力メッシュ(905)の空間分割(spatial partition)を実行することができる。いくつかの例では、セグメンテーションモジュール(920)は、入力メッシュ(905)をセグメントに空間的に分割することができ、各セグメントの属性値(例えば3Dのxyz座標又は2DのUV座標)のダイナミックレンジは、ビデオエンコーダ(930)のビット深度要件のような画像/ビデオコーデックの要件を満たす。セグメントは、任意の適切な形状とすることができる。一例では、セグメントはパッチとすることができる。別の例では、2Dのセグメントはスライス、タイル、CTU等の形式とすることができる。
【0132】
いくつかの例では、入力メッシュ(905)を、(例えばセグメンテーションモジュール(920)によって)いくつかのパッチに分割することができ、ここで、各パッチは、接続される(エッジを共有する)三角形を有するメッシュ全体のサブセットを含む。各セグメント内の属性値のダイナミックレンジは、画像/ビデオコーデックのビット深度要件を満たす。
【0133】
いくつかの例では、属性値フィールドを、属性値サブフィールドに分けることが、各属性値サブフィールドは画像/ビデオコーデックのビット深度要件を満たす。属性値サブフィールドは、入力メッシュ(905)の分割を支援するために使用され得る。
【0134】
図10は、いくつかの例における属性値フィールド(1000)を説明するための図を示している。
図10の例では、属性値フィールド(1000)は、垂直方向の第1次元、水平方向の第2次元のような二次元属性値フィールドである。例えば第1次元は光の強度についてであり、第2次元は通常の値等についてである。
図10では、技術は2D属性値フィールド(1000)に関して図示されているが、本技術を、1D属性値フィールド、3D属性値フィールド(例えば3D(x,y,z)値フィールド)のような他の適切な属性値フィールドにも適用することができる。
【0135】
図10では、第1次元の属性値は16ビット(16ビット深度とも呼ばれる)で表され、第2次元の属性値は12ビット(12ビット深度とも呼ばれる)で表されている。2D属性値フィールド(1000)は、4096のサブフィールドB(0,0)-B(255,15)に分けられる。各サブフィールドは、(2
8,2
8)の2Dダイナミックレンジを有する。例えばセグメントB(0,0)では、第1次元のダイナミックレンジは0から(2
8-1)であり、第2次元のダイナミックレンジは0から(2
8-1)であり;セグメントB(0,1)では、第1次元のダイナミックレンジは0から(2
8-1)であり、第2次元のダイナミックレンジは2
8から(2
9-1)(2
8に等しい)であり;セグメントB(1,0)では、第1次元のダイナミックレンジは2
8から(2
9-1)(2
8に等しい)であり、第2次元のダイナミックレンジは0から(2
8-1)であり;セグメントB(0,15)では、第1次元のダイナミックレンジは0から(2
8-1)であり、第2次元のダイナミックレンジは(2
12-2
8)から(2
12-1)(2
8に等しい)であり、以下同様である。
【0136】
なお、
図10では、2D属性値フィールド(1000)の規則的な分割を図示しているが、いくつかの例では不規則な分割も使用することができることに留意されたい。
【0137】
本開示の側面によると、セグメンテーションモジュール(920)は、各セグメントの属性値が属性値フィールドのサブフィールド内にあるように、セグメントへの入力メッシュ(905)の空間分割を実行することができる。
【0138】
セグメンテーションモジュール(920)は、次いで、各セグメントを処理して、ビデオエンコーダ(930)でサポートされている第1ビット深度を使用して表すことができるセグメント属性値の属性値を変換する。
【0139】
例えばセグメントiでは、Ak(k=1,...,Ni)は、k番目のサンプル(又は頂点)の属性値を示し、Niは、セグメントi内のサンプルの合計数である。属性Akは、色成分、法線だけでなく、3Dのxyz座標及び2DのUVアトラス座標も表すことができることに留意されたい。
【0140】
いくつかの例では、セグメンテーションモジュール(920)は、セグメントiの属性値についてのアンカー値(いくつかの例ではアンカー変数とも呼ばれる)を決定し、次いで、アンカー値とサンプルの属性値に基づいて、セグメントi内のサンプルについてのセグメント属性値(いくつかの例では残差属性値とも呼ばれる)を決定する。なお、アンカー値は、属性値フィールドの次元に応じて、単一の値又はベクトル値とすることができる。
【0141】
一例では、セグメントiのアンカー値は、A
k、ただしk=1,...,N
iの最小値である。例えばアンカー値(Anchorで示される)は、式(1)に従って計算される:
【数1】
【0142】
セグメンテーションモジュール(920)は、例えば式(2)に従って、セグメントi内のサンプルにおける元の属性値からアンカー値(Anchor)を減算して、残差属性値(セグメント属性値とも呼ばれる)を決定する:
Rk=Ak-MinA ただしk=1,...,Ni 式(2)
ここで、Rkは残差属性値を示す。Akが2以上の次元のベクトルであるとき、MinAは、複数次元を含むベクトルとすることができ、そのベクトルMinAの特定の次元の値は、その特定の次元におけるすべての属性ベクトルAk、ただしk=1,...,Ni の最小値であることに留意されたい。
【0143】
別の例では、セグメントiのアンカー値は、A
k、ただしk=1,...,N
i の最大値である。例えばアンカー値(anchorによって示される)は、式(3)に従って計算される:
【数2】
【0144】
セグメンテーションモジュール(920)は、例えば式(4)に従って、アンカー値(anchor)からセグメントi内のサンプルにおける元の属性値を減算して、残差属性値(セグメント属性値とも呼ばれる)を決定する:
Rk=MaxA-Ak ただしk=1,...,Ni 式(4)
ここで、Rkは残差属性値を示す。Akが2以上の次元のベクトルであるとき、MaxAは、複数次元を含むベクトルとすることができ、そのベクトルMaxAの特定の次元の値は、その特定の次元におけるすべての属性ベクトルAk、ただしk=1,...,Ni の最大値であることに留意されたい。
【0145】
セグメントiのダイナミックレンジが第1ビット深度によって表現可能であるとき、残差属性値を第1ビット深度によって表現することができることに留意されたい。次いで、残差属性値Rk、ただしk=1,...,Ni を、ビデオエンコーダ(930)のような、第1ビット深度をサポートする適切なコーデックによって圧縮することができる。一例として、様々なセグメントの残差属性値は、残差属性マップを形成することができる。残差属性マップ内の値を、第1ビット深度のビットによって表し、汎用画像/ビデオコーデック(例えば8ビットビデオコーデック、8ビット画像コーデック等)によって圧縮することができる。残差属性マップを、可逆モード又は非可逆モードで圧縮することができる。
【0146】
いくつかの例では、補助データエンコーダ(940)は、セグメントに関連付けられるアンカー値(例えばMinA及び/又はMaxA)をビットストリーム(945)に符号化することができる。一例では、アンカー値を、ビットストリーム(945)内のオーバーヘッド又はサイド情報としてシグナリングすることができる。
【0147】
異なるセグメントのアンカー値を、独立に又は依存的にコーディングすることができることに留意されたい。一実施形態では、補助データエンコーダ(940)は、セグメントのアンカー値を独立に符号化することができる。別の実施形態では、補助データエンコーダ(940)は、予測コーディング技術を使用してセグメントのアンカー値を符号化することができる。例えば補助データエンコーダ(940)は、セグメントのアンカー値を、以前にコーディングされたアンカー値に対する当該アンカー値の差をビットストリーム(945)に符号化することによって符号化することができる。異なる予測コーディング技術を適用して、アンカー値を表すために必要なビット数を更に減らすことができる。いくつかの例では、補助データエンコーダ(940)は、各セグメントのアンカー値をコーディングするためにどの予測コーディング技術が使用されるかを示すフラグをシグナリングすることもできる。
【0148】
いくつかの例では、補助データデコーダ(970)は、ビットストリーム(945)からセグメントに関連付けられるアンカー値を復号することができる。異なるセグメントのアンカー値を、独立に又は依存的に復号することができることに留意されたい。一実施形態では、各セグメントのアンカー値を独立にコーディングすることができる。補助データデコーダ(970)は、ビットストリーム(945)から独立にセグメントに関連付けられたアンカー値を復号することができる。別の実施形態では、各セグメントのアンカー変数値を依存的にコーディングすることができる。補助データデコーダ(970)は、以前に復号されたセグメントの1つ以上のアンカー値に基づいて、セグメントのアンカー値を決定することができる。いくつかの例では、異なる予測技術を適用して、アンカー値を表すために必要なビット数を減らすことができる。一例では、補助データデコーダ(970)は、現在のセグメントのアンカー値にどの予測技術が使用されるかを示すフラグを復号し、次いで、予測技術を適用して、以前に復号されたセグメントの1つ以上のアンカー値に基づいて現在のセグメントのアンカー値を決定する。
【0149】
ビデオデコーダ(960)は、セグメントの残差属性値を取得するために残差属性マップを復号し、復号された残差属性値を回復モジュール(980)に提供することができる。回復モジュール(980)は、セグメントのアンカー値とセグメントの復号された残差属性値とに基づいて、第2ビット深度で属性値を回復することができる。
【0150】
一例では、セグメントiの属性値を回復するために、回復モジュール(980)は、例えば式(5)に従って、セグメントiに関連付けられるアンカー値MinA(例えば補助データデコーダ(970)によって決定される)と、復号された残差属性値(R'kによって示される)とに基づいて、セグメントiの回復された属性値(A'kによって示される)を計算することができる:
A'k=R'k+MinA ただし、k=1,...,Ni 式(5)
【0151】
別の例では、セグメントiの属性値を回復するために、回復モジュール(980)は、例えば式(6)に従って、セグメントiに関連付けられるアンカー値MaxA(例えば補助データデコーダ(970)によって決定される)と復号された残差属性値(R'kによって示される)とに基づいて、回復された属性値(A'kによって示される)を計算することができる:
A'k=MaxA-R'k ただし、k=1,...,Ni 式(6)
【0152】
本開示の側面によると、セグメンテーションモジュール(920)は、入力メッシュ(905)内の属性値のビット深度がビデオエンコーダ(930)のビット深度要件を超えるときに、ビット深度ごとのセグメンテーション(bitdepth-wise segmentation)を適用して、セグメント属性値(925)を生成することができる。例えばセグメンテーションモジュール(920)は、第2ビット深度(ビット深度平面とも呼ばれる)のビットを、各々がビデオエンコーダ(930)のビット深度要件を満たす複数のサブセット(サブビット深度平面とも呼ばれる)にセグメント化することができる。したがって、各属性値について、属性値のビットは、複数のサブセットに従って複数のセグメント属性値を形成することができる。
【0153】
図11は、いくつかの例における属性値平面(1100)を示している。例えば属性値平面(1100)は属性マップに対応し、属性マップ内の各サンプルは16ビットで表される属性値を有する。
【0154】
一例では、ビデオコーデック(例えばビデオエンコーダ(930)、ビデオデコーダ(960))は8ビットのピクセル表現を必要とし、各属性値(例えばAk)は16ビットで表される。セグメンテーションモジュール(920)は、各属性値を第1セグメント属性値(下位8ビットで示される)と第2セグメント値(上位8ビットで示される)に分割することができる。次いで、属性マップ内のすべてのサンプルの下位8ビットが第1セグメント属性マップを形成してよく、属性マップ内のすべてのサンプルの上位8ビットが第2セグメント属性マップを形成してよい。一例では、第1セグメント属性マップと第2セグメント属性マップを、8ビットビデオコーデック(例えばビデオエンコーダ(930))によって別個に符号化することができる。
【0155】
本開示の側面によると、異なるセグメント属性マップをコーディングするために異なる構成を使用して、全体的な圧縮比を改善することができる。例えばより低い量子化パラメータ(QP)を第2セグメント属性マップのコーディングに適用することができ、より高いQPを第1セグメント属性マップのコーディングに適用することができる。
【0156】
別の例では、第1セグメント属性マップと第2セグメント属性マップを、8ビットピクセル表現でより大きなマップにアセンブルすることができ、次いで、アセンブルされたより大きなマップを、8ビットのビデオコーデック(例えばビデオエンコーダ(930))によって符号化することができる。
【0157】
デコーダ側では、いくつかの例において、第1セグメント属性マップと第2セグメント属性マップのような複数のセグメント属性マップを、ビデオデコーダ(960)によってビットストリーム(945)からそれぞれ復号することができ、回復モジュール(980)は、第1セグメント属性マップと第2セグメント属性マップのような複数のセグメント属性マップに基づいて、回復された属性マップを形成することができる。いくつかの例では、回復された属性マップのサンプルについて、回復モジュール(980)は、(例えば回復された属性マップ内のサンプルの対応するサンプル位置における)第1セグメント属性マップからの第1セグメント属性値のビットを、(例えば回復された属性マップ内のサンプルの対応するサンプル位置における)第2セグメント属性マップからの第2セグメント属性値のビットと連結して、回復された属性マップのサンプルの回復された属性値を形成することができる。例えば第1セグメント属性マップの第1セグメント属性値の8ビットは、回復された属性値の下位8ビットになってよく、第2セグメント属性マップの第2セグメント属性値の8ビットは、回復された属性値の上位8ビットになってよい。
【0158】
図12は、本開示の実施形態によるプロセス(1200)を概説するフローチャートを示している。プロセス(1200)を、メッシュの符号化プロセス中に使用することができる。様々な実施形態において、プロセス(1200)は処理回路によって実行される。いくつかの実施形態では、プロセス(1200)はソフトウェア命令で実装され、したがって、処理回路がソフトウェア命令を実行するとき、処理回路はプロセス(1200)を実行する。処理は、(S1201)で始まり、(S1210)に進む。
【0159】
(S1210)において、メッシュをコーディングするために第1ビット深度の使用を決定する。メッシュは、第1ビット深度よりも高い第2ビット深度を有する属性値を含む。いくつかの例では、メッシュをコーディングするために汎用画像/ビデオコーデックが決定される。汎用画像/ビデオコーデックは、8ビットコーディングをサポートするが、メッシュは、10ビット、12ビット、16ビット等のようなより高いビット深度を有するジオメトリマップ等のような属性値を含む。
【0160】
(S1220)において、第1ビット深度を有するセグメント属性値を、第2ビット深度を有するメッシュの属性値から決定する。
【0161】
(S1230)において、セグメント属性値は、第1ビット深度をサポートするエンコーダを使用して、メッシュを担持(carry)するためにビットストリームに符号化される。例えばセグメント属性値を有するサンプルのマップが、汎用画像/ビデオエンコーダによって符号化される。
【0162】
いくつかの実施形態では、メッシュは複数の空間セグメントに分割される。メッシュの第1空間セグメントにおける第1属性値のダイナミックレンジは、第1ビット深度によって表現可能である。いくつかの例では、メッシュの1つ以上のマップ(例えばジオメトリマップ、テクスチャマップ、属性マップ)を、スライス、タイル、UVパッチ、CTU等のような形式でセグメントに分割することができる。各セグメントは、メッシュのサブセットに対応する。各セグメント内の値のダイナミックレンジは、第1ビット深度による表現である。例えば第1ビット深度が8ビットであるとき、ダイナミックレンジは255以下である。
【0163】
一部の例では、第1空間セグメントについて、第1アンカー値が、第1空間セグメント内の第1属性値に基づいて決定され、次いで、第1セグメント属性値が、第1アンカー値に基づいて、第1属性値に対してそれぞれ決定される。第1セグメント属性値は第1ビット深度のものである。
【0164】
一例では、第1アンカー値は第1属性値のうちの最大値となるように決定され、第1セグメント属性値は、第1アンカー値から第1属性値をそれぞれ減算することによって決定される。
【0165】
別の例では、第1アンカー値は第1属性値のうちの最小値となるように決定され、第1セグメント属性値は、第1属性値から第1アンカー値をそれぞれ減算することによって決定される。
【0166】
いくつかの例では、空間セグメントのアンカー値は独立に符号化される。例えば第1空間セグメントの第1アンカー値と第2空間セグメントの第2アンカー値は、独立にビットストリームに符号化される。
【0167】
いくつかの例では、空間セグメントのアンカー値は、予測コーディングを使用して符号化されることができる。例えば第2空間セグメントの第2アンカー値は、少なくとも部分的に第1アンカー値に基づいて符号化される。一例では、第2アンカー値と第1アンカー値の差がビットストリームに符号化される。別の例では、フラグを符号化して、第2空間セグメントの第2アンカー値を符号化するためにどの予測方法を使用するかを示すことができる。
【0168】
いくつかの実施形態では、第2ビット深度のビットは、少なくとも第1サブセットと第2サブセットにセグメント化される。例えば16ビットを、上位8ビットと下位8ビットにセグメント化することができる。いくつかの例では、属性値の第1セグメント属性値は、第2ビット深度のビット内の第1サブセットに基づいて形成され、属性値の第2セグメント属性値は、第2ビット深度のビット内の第2サブセットに基づく。一例では、属性値のマップを第1セグメントマップと第2セグメントマップにセグメント化することができる。第1セグメントマップは第1セグメント属性値によって形成され、サンプルにおける各第1セグメント属性値は、マップサンプル内のサンプルの属性値の上位8ビットを含む。第2セグメントマップは、第2セグメント値によって形成され、サンプルにおける各第2セグメント属性値は、マップ内のサンプルの属性値の下位8ビットを含む。
【0169】
一例では、第1セグメントマップと第2セグメントマップは、例えば汎用画像/ビデオエンコーダを使用して符号化される。
【0170】
いくつかの例では、第1セグメント属性値は第1復号構成に従い、第2セグメント属性値は、第1復号構成とは異なる第2復号構成に従って符号化される。一例では、第1セグメントマップは第1量子化パラメータに従って符号化され、第2セグメントマップは第1量子化パラメータとは異なる第2量子化パラメータに従って符号化される。
【0171】
その後、プロセスは(S1299)に進み、終了する。
【0172】
プロセス(1200)は、適切に適応させることができる。プロセス(1200)内のステップを修正及び/又は省略することができる。追加のステップを追加することができる。任意の適切な実装順序を使用することができる。
【0173】
図13は、本開示の一実施形態によるプロセス(1300)を概説するフローチャートを示している。プロセス(1300)を、メッシュの復号プロセス中に使用することができる。様々な実施形態では、プロセス(1300)は処理回路によって実行される。いくつかの実施形態では、プロセス(1300)はソフトウェア命令で実装され、したがって、処理回路がソフトウェア命令を実行するとき、処理回路はプロセス(1300)を実行する。プロセスは(S1301)で始まり、(S1310)に進む。
【0174】
(S1310)において、第1ビット深度をサポートするデコーダを使用することによって、第1ビット深度を有する複数のセグメント属性値が、メッシュを担持するビットストリームから復号される。複数のセグメント属性値は、メッシュの属性値に関連付けられる。メッシュの属性値は、第1ビット深度よりも高い第2ビット深度を有する。
【0175】
(S1320)において、第2ビット深度を有するメッシュの属性値が、第1ビット深度を有する複数のセグメント属性値に従って決定される。
【0176】
いくつかの実施形態では、複数のセグメント属性値は、メッシュの第1空間セグメントに関連付けられ、メッシュの第1空間セグメントにおける第1属性値のダイナミックレンジは、第1ビット深度によって表現可能である。いくつかの例では、第1空間セグメントに関連付けられる第1アンカー値がビットストリームから復号され、第1空間セグメントにおける第1属性値は、第1アンカー値を複数のセグメント属性値と組み合わせることによって決定される。一例では、第1アンカー値は、複数のセグメント属性値内のセグメント属性値に追加され、第1属性値内の属性値を決定する。別の例では、複数のセグメント属性値内のセグメント属性値を第1アンカー値から減算して、第1属性値内の属性値を決定する。
【0177】
いくつかの例では、第1空間セグメントに関連付けられる第1アンカー値は、他のアンカー値とは独立にビットストリームから復号される。
【0178】
いくつかの例では、第1空間セグメントに関連付けられる第1アンカー値は、少なくとも部分的に、別の空間セグメントに関連付けられる別のアンカー値に基づいて決定される。
【0179】
いくつかの実施形態では、複数のセグメント属性値は、第2ビット深度の属性値に対するビットの第1サブセットに対応する第1セグメント属性値と、第2ビット深度の属性値に対するビットの第2サブセットに対応する第2セグメント属性値とを少なくとも含む。一例では、ビットの第1サブセットは、属性値を決定するためにビットの第2サブセットと連結される。
【0180】
いくつかの例では、第1セグメント属性値を含む第1の複数のセグメント属性値は、第1復号構成に従って復号され、第2セグメント属性値を含む第2の複数のセグメント属性値は、第1復号構成とは異なる第2復号構成に従って復号される。
【0181】
その後、処理は(S1399)に進み、終了する。
【0182】
プロセス(1300)を、適切に適応させることができる。プロセス(1300)のステップを修正及び/又は省略することができる。追加のステップを追加することができる。任意の適切な実装順序を使用することができる。
【0183】
本開示で開示された技術は、任意の順序で別個に又は組み合わせて使用されてよい。さらに、本技術(例えば方法、実施形態)、エンコーダ及びデコーダの各々は、処理回路(例えば1つ以上のプロセッサ又は1つ以上の集積回路)によって実装されてよい。いくつかの例では、1つ以上のプロセッサは、非一時的なコンピュータ読取可能媒体に記憶されているプログラムを実行する。
【0184】
上述の技術を、コンピュータ読取可能命令を使用してコンピュータソフトウェアとして実装し、1つ以上のコンピュータ読取可能媒体に物理的に記憶することができる。例えば
図14は、開示される主題の特定の実施形態を実装するのに適したコンピュータシステム(1400)を示す。
【0185】
コンピュータソフトウェアは、アセンブリ、コンパイル、リンキング又は類似のメカニズムの対象となり得る任意の適切な機械コード又はコンピュータ言語を使用してコーディングされ、1つ以上のコンピュータ中央処理ユニット(CPU)、グラフィクス処理ユニット(GPU)等によって直接的に又は解釈やマイクロコード実行等を通して実行され得る命令を含む、コードを作成することができる。
【0186】
命令は、例えばパーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲームデバイス、モノのインターネットデバイス等を含む様々なタイプのコンピュータ又はその構成要素において実行されることができる。
【0187】
コンピュータシステム(1400)について
図14に示される構成要素は、本質的に例示的なものであり、本開示の実施形態を実装するコンピュータソフトウェアの使用範囲又は機能性に関して、いかなる制限も示唆するように意図されていない。また、構成要素の構成は、コンピュータシステム(1400)の例示的実施形態に示される構成要素の任意の1つ又は組合せに関するいかなる依存性又は要件も有するものとして解釈されてはならない。
【0188】
コンピュータシステム(1400)は、特定のヒューマンインタフェース入力デバイスを含み得る。そのようなヒューマンインタフェース入力デバイスは、例えば触覚入力(キーストローク、スワイプ、データグローブの動き等)、オーディオ入力(声、拍手等)、視覚入力(ジェスチャ等)、嗅覚入力(図示せず)を通して、1人以上の人間のユーザによる入力に応答し得る。また、ヒューマンインタフェース入力デバイスは、オーディオ(音声、音楽、環境音等)、画像(スキャンされた画像、静止画像カメラから得られる写真画像等)、ビデオ(2次元ビデオ、立体映像を含む3次元ビデオ等)のような、人間による意識的入力に必ずしも直接関係しているとは限らない、特定の媒体をキャプチャするためにも使用されることができる。
【0189】
ヒューマンインタフェース入力デバイスは、キーボード(1401)、マウス(1402)、トラックパッド(1403)、タッチ画面(1410)、データグローブ(図示せず)、ジョイスティック(1405)、マイクロホン(1406)、スキャナ(1407)及びカメラ(1408)(各々の1つのみが図示される)のうちの1つ以上を含んでもよい。
【0190】
コンピュータシステム(1400)はまた、特定のヒューマンインタフェース出力デバイスも含み得る。そのようなヒューマンインタフェース出力デバイスは、例えば触覚出力、音響、光及び嗅覚/味覚を通して、1人以上の人間のユーザの感覚を刺激し得る。そのようなヒューマンインタフェース出力デバイスは、触覚出力デバイス(例えばタッチ画面(1410)、データグローブ(図示せず)又はジョイスティック(1405)による触覚フィードバックであるが、入力デバイスとして機能しない触覚フィードバックデバイスが存在する可能性もある)、オーディオ出力デバイス(スピーカー(1409)、ヘッドフォン(図示せず)等)、視覚出力デバイス(各々タッチ画面入力機能の有無にかかわらず、各々触覚フィードバック機能の有無にもかかわらないが、その一部は、立体画像出力や仮想現実グラス(図示せず)、ホログラフィックディスプレイ及びスモークタンク(図示せず)のような手段を通して、2次元視覚出力又は3次元超の出力を出力することができる、CRT画面、LCD画面、プラズマ画面、OLED画面を含む画面(1410)等)及びプリンタ(図示せず)を含んでよい。
【0191】
コンピュータシステム(1400)はまた、CD/DVDを有するCD/DVD ROM/RW(1420)を含む光媒体又は類似の媒体(1421)、サムドライブ(1422)、取り外し可能ハードドライブ又はソリッドステートドライブ(1423)、テープ及びフロッピーディスク(図示せず)のようなレガシー磁気媒体、セキュリティドングル(図示せず)のような特別なROM/ASIC/PLDベースのデバイスのような、ヒューマンアクセス可能なストレージデバイス及びそれらの関連する媒体も含むことができる。
【0192】
当業者はまた、現在開示されている主題に関連して使用されるとき、「コンピュータ読取可能媒体」という用語が、伝送媒体、搬送波又は他の一時的信号を包含しないことを理解すべきである。
【0193】
コンピュータシステム(1400)はまた、1つ以上の通信ネットワーク(1455)へのインタフェース(1454)も含むことができる。ネットワークは、例えば無線、有線、光とすることができる。ネットワークは更に、ローカル、ワイドエリア、メトロポリタン、車両及び産業用、リアルタイム、遅延耐性等とすることができる。ネットワークの例は、イーサネット(登録商標)、無線LAN等のローカルエリアネットワーク、GSM(登録商標)、3G、4G、5G、LTE等を含むセルラネットワーク、ケーブルTV、衛星TV及び地上放送TVを含むTV有線又は無線ワイドエリアデジタルネットワーク、CANBus等を含む車両及び産業用ネットワークを含む。特定のネットワークは、一般に、特定の汎用データポート又は周辺バス(1449)に取り付けられ外部ネットワークインタフェースアダプタ(例えばコンピュータシステム(1400)のUSBポート等)を必要とし、他のものは、一般に、後述するシステムバスへの取り付けによって(例えばPCコンピュータシステムへのイーサネット(登録商標)インタフェース又はスマートフォンコンピュータシステムへのセルラーネットワークインタフェース)、コンピュータシステム(1400)のコアに統合される。これらのネットワークのいずれかを使用して、コンピュータシステム(1400)は、他のエンティティと通信することができる。このような通信は、例えばローカル又はワイドエリアデジタルネットワークを使用して、他のコンピュータシステムに対する、単方向の受信専用(例えば放送TV)、単方向の送信専用(例えば特定のCANbusから特定のCANbusデバイスへ)又は双方向であり得る。上述のように、特定のプロトコル及びプロトコルスタックを、これらのネットワーク及びネットワークインタフェースの各々において使用することができる。
【0194】
前述のヒューマンインタフェースデバイス、ヒューマンアクセス可能なストレージデバイス及びネットワークインタフェースを、コンピュータシステム(1400)のコア(1440)に取り付けることができる。
【0195】
コア(1440)は、1つ以上の中央処理ユニット(CPU)(1441)、グラフィクス処理ユニット(GPU)(1442)、フィールドプログラマブルゲートアレイ(FPGA)(1443)の形態の専用のプログラマブル処理ユニット、特定のタスク用のハードウェアアクセラレータ(1444)、グラフィクスアダプタ(1450)等を含むことができる。これらのデバイスは、読取専用メモリ(ROM)(1445)、ランダムアクセスメモリ(RAM)(1446)、内部非ユーザアクセス可能ハードドライブ、SSD等の内部大容量ストレージ(1447)とともに、システムバス(1448)を通して接続され得る。いくつかのコンピュータシステムでは、システムバス(1448)は、追加のCPU、GPU等による拡張を可能にするために、1つ以上の物理的プラグの形態でアクセス可能である。周辺デバイスを、コアのシステムバス(1448)に直接又は周辺バス(1449)を介して取り付けることができる。一例では、画面(1410)をグラフィクスアダプタ(1450)に接続することができる。周辺バスのアーキテクチャは、PCI、USB等を含む。
【0196】
CPU(1441)、GPU(1442)、FPGA(1443)及びアクセラレータ(1444)は、組み合わされて上述のコンピュータコードを構成することができる、特定の命令を実行することができる。そのコンピュータコードを、ROM(1445)又はRAM(1446)に記憶することができる。また、一時的なデータをRAM(1446)に記憶することができ、一方、永久的なデータを、例えば内部大容量ストレージ(1447)に記憶することができる。1つ以上のCPU(1441)、GPU(1442)、大容量ストレージ(1447)、ROM(1445)、RAM(1446)等と密接に関連付けることができるキャッシュメモリの使用を通して、メモリデバイスのいずれかに対する高速記憶及び取り出しを可能にすることができる。
【0197】
コンピュータ読取可能媒体は、様々なコンピュータ実装される動作を実行するためのコンピュータコードをその上に有することができる。媒体及びコンピュータコードは、本開示の目的のために特別に設計及び構築されたものとすることができ、あるいはそれらは、コンピュータソフトウェア技術の当業者に周知かつ利用可能な種類のものとすることができる。
【0198】
限定ではなく例として、アーキテクチャ(1400)及び特にコア(1440)を有するコンピュータシステムは、プロセッサ(CPU、GPU、FPGA、アクセラレータ等を含む)が1つ以上の有形のコンピュータ読取可能媒体に具現化されたソフトウェアを実行する結果としての機能性を提供することができる。このようなコンピュータ読取可能媒体は、上記で紹介したようなユーザアクセス可能な大容量ストレージ、並びにコア内部大容量ストレージ(1447)又はROM(1445)のような非一時的な性質のコア(1440)の特定のストレージに関連付けられる媒体とすることができる。本開示の様々な実施形態を実装するソフトウェアを、そのようなデバイスに記憶して、コア(1440)によって実行することができる。コンピュータ読取可能媒体は、特定のニーズに従って、1つ以上のメモリデバイス又はチップを含むことができる。ソフトウェアは、コア(1440)及び特にその中のプロセッサ(CPU、GPU、FPGA等を含む)に、RAM(1446)に記憶されるデータ構造を定義することと、ソフトウェアによって定義されるプロセスに従ってそのようなデータ構造を修正することとを含む、本明細書で説明される特定のプロセス又は特定のプロセスの特定の部分を実行させることができる。追加又は代替として、コンピュータシステムは、論理ハードワイヤ又は他の方法で回路(例えばアクセラレータ(1444))内に具現化された結果として機能性を提供することができ、この回路は、ソフトウェアの代わりに又はソフトウェアとともに動作して、本明細書で説明される特定のプロセス又は特定のプロセスの特定の部分を実行することができる。ソフトウェアへの言及はロジックを含み、また、必要に応じて、その逆も可能である。コンピュータ読取可能媒体への参照は、実行のためのソフトウェアを記憶する回路(集積回路(IC)等)、実行のためのロジックを具体化する回路又は適切な場合にはその両方を包含することができる。本開示は、ハードウェアとソフトウェアの任意の適切な組合せを包含する。
【0199】
本開示は、いくつかの例示的な実施形態について説明しているが、本開示の範囲内にある変更、置換及び様々な代替均等物が存在する。したがって、当業者は、本明細書に明示的に示されていないか又は説明されていないが、本開示の原理を具体化しており、よって、本開示の精神及び範囲内にある、様々システム及び方法を考案することができることが理解されよう。