(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-01
(45)【発行日】2023-12-11
(54)【発明の名称】ポイントクラウドコーディングのためのハッシュベースの属性予測
(51)【国際特許分類】
H04N 19/597 20140101AFI20231204BHJP
H04N 19/46 20140101ALI20231204BHJP
【FI】
H04N19/597
H04N19/46
(21)【出願番号】P 2022529697
(86)(22)【出願日】2021-06-02
(86)【国際出願番号】 US2021035467
(87)【国際公開番号】W WO2022039815
(87)【国際公開日】2022-02-24
【審査請求日】2022-05-20
(32)【優先日】2020-08-17
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-05-11
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ジャン,シアン
(72)【発明者】
【氏名】ガオ,ウエン
(72)【発明者】
【氏名】リィウ,シャン
【審査官】田部井 和彦
(56)【参考文献】
【文献】米国特許出願公開第2019/0197739(US,A1)
【文献】米国特許出願公開第2021/0104090(US,A1)
【文献】米国特許出願公開第2019/0385355(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/597
H04N 19/46
(57)【特許請求の範囲】
【請求項1】
プロセッサによって実行可能なポイントクラウドコーディングの方法であって:
ポイントクラウドに対応するデータを受信することと;
受信された前記データに関連付けられ属性値に対応するハッシュ要素を再構成することと;
再構成された前記ハッシュ要素に基づいて前記ポイントクラウドに対応する前記データをデコーディングすることと;
前記属性値に関連付けられる非境界領域に対応する前記ハッシュ要素の1つ又は複数を削除することに基づいて、ハッシュテーブルのサイズを減らすことと;を含む、
方法。
【請求項2】
前記ハッシュテーブルの最大サイズは、前記ポイントクラウドに対応する前記データに対して定義される、
請求項
1に記載の方法。
【請求項3】
前記最大サイズは、シーケンスパラメータセット、ジオメトリパラメータセット、又はスライスヘッダにおいてシグナリングされる、
請求項
2に記載の方法。
【請求項4】
前記ハッシュテーブルが前記最大サイズに達することに基づいて前記ハッシュテーブルから部分的な要素を除去することによって、前記ハッシュテーブルは減らされる、
請求項
2又は
3に記載の方法。
【請求項5】
前記ハッシュテーブルは、前記ハッシュ要素に関連付けられるモートン順序に基づいて減らされる、
請求項
1乃至
4のいずれか1項に記載の方法。
【請求項6】
1つ又は複数の隣接ノードに関連付けられる境界サイズが、シーケンスパラメータセット、ジオメトリパラメータセット、又はスライスヘッダにおいてシグナリングされる、
請求項1に記載の方法。
【請求項7】
ポイントクラウドコーディングのためのコンピュータシステムであって、前記コンピュータシステムは:
コンピュータプログラムコードを記憶するように構成された1つ又は複数のコンピュータ可読非一時的記憶媒体と;
前記コンピュータプログラムコードにアクセスし、前記コンピュータプログラムコードによって請求項1乃至
6のいずれか1項に記載の方法を実行するように構成された1つ又は複数のコンピュータプロセッサと;
を有する、
コンピュータシステム。
【請求項8】
ポイントクラウドコーディングのためのコンピュータプログラムをその上に記憶した非一時的コンピュータ可読媒体であって、前記コンピュータプログラムは、1つ又は複数のコンピュータプロセッサに、請求項1乃至
6のいずれか1項に記載の方法を実行させる、
非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本出願は、2020年8月17日に出願された米国仮出願第63/066,583号に基づく優先権を主張する、2021年5月11日に出願された米国特許出願第17/317,053号に対する優先権の利益を主張し、その全体が参照により本明細書に組み込まれる。
【0002】
本開示は、概して、データ処理の分野に関し、より具体的には、ポイントクラウドコーディング(point cloud coding)に関する。
【背景技術】
【0003】
近年、ポイントクラウドが広く使用されている。例えば、物体の検出及び位置特定のための自動運転車両で使用される;また、地図作成のための地理情報システム(GIS)で使用され、文化遺産のオブジェクト及びコレクションなどを可視化してアーカイブするために文化遺産で使用される。ポイントクラウドは、高次元ポイントの、典型的には三次元(3D)のセットを含み、各々は、3D位置情報及び色、反射率などの追加属性を含む。それらは、複数のカメラ及び奥行き(depth)センサ、又は様々な設定のライダーを使ってキャプチャすることができ、オリジナルのシーンをリアルに表現するために数千から数十億のポイントで構成され得る。圧縮技術が、より高速な転送やストレージの削減を行うためにポイントクラウドを表すのに必要なデータ量を減らすために必要とされる。
【発明の概要】
【0004】
実施形態は、ポイントクラウドコーディングのための方法、システム、及びコンピュータ可読媒体に関する。一態様によれば、ポイントクラウドコーディングのための方法が提供される。この方法は、ポイントクラウドに対応するデータを受信することを含み得る。受信したデータに関連付けられる属性値に対応するハッシュ要素が再構成される。ポイントクラウドに対応するデータは、再構成されたハッシュ要素に基づいてデコーディングされる。
【0005】
別の態様によれば、ポイントクラウドコーディングのためのコンピュータシステムが提供される。コンピュータシステムは、1つ又は複数のプロセッサ、1つ又は複数のコンピュータ可読メモリ、1つ又は複数のコンピュータ可読有形記憶装置、及び少なくとも1つ又は複数のメモリのうちの少なくとも1つを介して1つ又は複数のプロセッサのうちの少なくとも1つによる実行のために、1つ又は複数の記憶装置のうちの少なくとも1つに記憶されたプログラム命令を含み、それによってコンピュータシステムは方法を実行することができる。この方法は、ポイントクラウドに対応するデータを受信することを含み得る。受信したデータに関連付けられる属性値に対応するハッシュ要素が再構成される。ポイントクラウドに対応するデータは、再構成されたハッシュ要素に基づいてデコーディングされる。
【0006】
さらに別の態様によれば、ポイントクラウドコーディングのためのコンピュータ可読媒体が提供される。コンピュータ可読媒体は、1つ又は複数のコンピュータ可読記憶装置と、1つ又は複数の有形記憶装置のうちの少なくとも1つに記憶されたプログラム命令とを含み得、プログラム命令は、プロセッサによって実行可能である。プログラム命令は、従って、ポイントクラウドに対応するデータを受信することを含み得る方法を実行するためにプロセッサによって実行可能である。受信したデータに関連付けられる属性値に対応するハッシュ要素が再構成される。ポイントクラウドに対応するデータは、再構成されたハッシュ要素に基づいてデコーディングされる。
【図面の簡単な説明】
【0007】
これら及び他の目的、特徴及び利点は、添付の図面に関連して読まれることになる例示的な実施形態の以下の詳細な説明から明らかになるであろう。図面の種々の特徴は、詳細な説明に関連して当業者の理解を容易にすることを明確にするためのものであるため、正確なスケールではない。
【0008】
【
図1】少なくとも1つの実施例によるネットワーク化されたコンピュータ環境を示す。
【
図2A】少なくとも1つの実施形態による、ポイントクラウド更新システムのブロック図である。
【
図2B】少なくとも1つの実施形態による、ポイントクラウド更新システムのブロック図である。
【
図2C】少なくとも1つの実施形態による、領域適応階層変換(RAHT)の図である。
【
図2D】少なくとも1つの実施形態による、境界要素を維持しながら縮小するハッシュの図である。
【
図2E】少なくとも1つの実施形態による、予測残差のための構文要素の表である。
【
図3】少なくとも1つの実施形態による、ポイントクラウドコーディングのためのプログラムによって実行されるステップを示す、動作フローチャートである。
【
図4】少なくとも1つの実施形態による、
図1に示されたコンピュータ及びサーバの内部及び外部コンポーネントのブロック図である。
【
図5】少なくとも1つの実施形態による、
図1に示されるコンピュータシステムを含む例示的なクラウドコンピューティング環境のブロック図である。
【
図6】少なくとも1つの実施形態による、
図5の例示的なクラウドコンピューティング環境の機能層のブロック図である。
【発明を実施するための形態】
【0009】
請求項に係る構造及び方法の詳細な実施形態が、本明細書に開示されている;しかし、開示された実施形態は、単に、種々の形態で実施され得る請求項に係る構造及び方法を例示するに過ぎないことを理解することができる。しかし、これらの構造及び方法は、多くの異なる形態で具体化することができ、本明細書に記載の例示的な実施形態に限定されるものと解釈されるべきではない。むしろ、これらの例示的な実施形態は、本開示が詳細かつ完全であり、当業者に範囲を完全に伝えるように提供される。説明では、よく知られた特徴及び技術の詳細は、提示された実施形態を不必要に不明瞭にすることを避けるために省略することができる。
【0010】
実施形態は、概して、データ処理の分野に関し、より詳細には、ポイントクラウドコーディングに関する。以下に説明する例示的な実施形態は、とりわけ、ポイントクラウド属性データをコーディングするためのハッシュベースの方法を使用するためのシステム、方法、及びコンピュータプログラムを提供する。従って、いくつかの実施形態は、ポイントクラウドデータの最近傍を見つける必要がないことによって、ポイントクラウドコーディングの効率を向上させることを可能にすることによって、コンピューティングの分野を改善する能力を有する。
【0011】
前述したように、近年、ポイントクラウドは広く利用されている。例えば、物体検出及び位置特定のための自動運転車両で使用される;また、地図作成のための地理情報システム(GIS)で使用され、文化遺産のオブジェクト及びコレクションなどを可視化してアーカイブするために文化遺産で使用される。ポイントクラウドは、高次元ポイントの、典型的には三次元(3D)のセットを含み、各々は、3D位置情報及び色、反射率などの追加属性を含む。それらは、複数のカメラ及び奥行きセンサ、又は様々な設定のライダーを使ってキャプチャすることができ、オリジナルのシーンをリアルに表現するために数千から数十億のポイントで構成され得る。圧縮技術が、より高速な転送やストレージの削減を行うためにポイントクラウドを表すのに必要なデータ量を減らすために必要とされる。予測ベースの属性コーディングでは、現在のポイントの属性は、現在のポイントに近い既にコーディングされたポイントから予測される。
【0012】
TMC13モデルでは、ジオメトリ情報、及び、色又は反射率などの関連する属性が、別々に圧縮される。ジオメトリ情報は、ポイントクラウドの3D座標であり、占有情報を持つ八分木パーティション(octree-partition)によってコーディングされる。属性が、次いで、予測、リフティング及び領域適応階層変換技法を用いて、再構成されたジオメトリに基づいて圧縮される。しかし、各ポイントの3Dスペース内の最も近いポイントを見つけることは、費用がかかる場合がある。加えて、複数のチャネル属性、例えば、RGB色のロスレス及びニアロスレスコーディングのために、複数のチャネルは、色空間変換なしで直接処理され、独立してコーディングされる。しかし、特にRGBドメインにおいて、異なるカラーチャネル間には通常強い相関がある。このような相関を利用しないことは、コーディング効率の点で性能損失を招く可能性がある。従って、ハッシュベースの予測スキーム及びコンポーネント間相関(inter-component correlations)を使用することは有利であり得る。
【0013】
様々な実施形態による方法、装置(システム)、及びコンピュータ可読媒体のフロー図及び/又はブロック図を参照して、態様が本明細書に記載される。フローチャート図及び/又はブロック図の各ブロック、及びフローチャート図及び/又はブロック図のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
【0014】
次に、
図1を参照すると、ポイントクラウドデータをコーディングするためのポイントクラウドコーディングシステム100(以下、「システム」という)を示す、ネットワークコンピュータ環境の機能ブロック図である。
図1は、1つの実装の例示にすぎず、異なる実施形態が実装され得る環境に関するいかなる限定も意味しないことを理解されたい。図示された環境に対する多くの修正が、設計及び実装要件に基づいて行われ得る。
【0015】
システム100は、コンピュータ102及びサーバコンピュータ114を含むことができる。コンピュータ102は、通信ネットワーク110(以下、「ネットワーク」という)を介してサーバコンピュータ114と通信し得る。コンピュータ102は、プロセッサ104と、データ記憶装置106に記憶され、ユーザとインターフェースし、サーバコンピュータ114と通信することを可能にするソフトウェアプログラム108とを含み得る。
図4を参照して後述するように、コンピュータ102は、それぞれ内部コンポーネント800A及び外部コンポーネント900Aを含み得、サーバコンピュータ114は、それぞれ内部コンポーネント800B及び外部コンポーネント900Bを含み得る。コンピュータ102は、例えば、モバイルデバイス、電話、パーソナルデジタルアシスタント、ネットブック、ラップトップコンピュータ、タブレットコンピュータ、デスクトップコンピュータ、又はプログラムを実行し、ネットワークにアクセスし、データベースにアクセスすることができる任意の種類のコンピューティングデバイスであり得る。
【0016】
サーバコンピュータ114はまた、
図5及び
図6に関して後述するように、サービスとしてのソフトウェア(Software as a Service)(Saas)、サービスとしてのプラットフォーム(Platform as a Service)(PaaS)、又はサービスとしてのインフラストラクチャ(Infrastructure as a Service)(IaaS)のようなクラウドコンピューティングサービスモデルにおいて動作し得る。サーバコンピュータ114はまた、プライベートクラウド、コミュニティクラウド、パブリッククラウド、又はハイブリッドクラウドのようなクラウドコンピューティング展開モデルに配置され得る。
【0017】
ポイントクラウドコーディングに使用され得るサーバコンピュータ114は、データベース112と対話し得るポイントクラウドコーディングプログラム116(以下、「プログラム」という)を実行することができる。ポイントクラウドコーディングプログラム方法は、
図3に関して以下により詳細に説明される。一実施形態では、コンピュータ102は、ユーザインターフェースを含む入力デバイスとして動作し得、一方、プログラム116は、主としてサーバコンピュータ114上で動作し得る。代替実施形態では、プログラム116は、主として1つ又は複数のコンピュータ102上で動作し得、一方、サーバコンピュータ114は、プログラム116によって使用されるデータの処理及び記憶のために使用され得る。プログラム116は、スタンドアロンプログラムであってもよいし、より大きなポイントクラウドコーディングプログラムに統合されてもよいことが留意されるべきである。
【0018】
しかしながら、プログラム116のための処理は、ある場合には、コンピュータ102とサーバコンピュータ114との間で任意の比率で共有され得ることが留意されるべきである。別の実施形態では、プログラム116は、1より多いコンピュータ、サーバコンピュータ、又はコンピュータとサーバコンピュータのいくつかの組み合わせ、例えば、ネットワーク110を介して単一のサーバコンピュータ114と通信する複数のコンピュータ102で動作し得る。別の実施形態では、例えば、プログラム116は、ネットワーク110を介して複数のクライアントコンピュータと通信する複数のサーバコンピュータ114で動作し得る。代替的には、プログラムは、ネットワークを介してサーバ及び複数のクライアントコンピュータと通信するネットワークサーバで動作し得る。
【0019】
ネットワーク110は、有線接続、無線接続、光ファイバ接続、又はそれらの組み合わせを含み得る。概して、ネットワーク110は、コンピュータ102とサーバコンピュータ114との間の通信をサポートする接続とプロトコルの任意の組み合わせとすることができる。ネットワーク110は、例えば、ローカルエリアネットワーク(LAN)、インターネットのようなワイドエリアネットワーク(WAN)、公衆交換電話ネットワーク(PSTN)のような電気通信ネットワーク、無線ネットワーク、公衆交換ネットワーク、衛星ネットワーク、セルラーネットワーク(例えば、第5世代(5G)ネットワーク、ロングタームエボリューション(LTE)ネットワーク、第3世代(3G)ネットワーク、符号分割多元接続(CDMA)ネットワーク等)、公衆陸上移動ネットワーク(PLMN)、メトロポリタンエリアネットワーク(MAN)、専用ネットワーク、アドホックネットワーク、イントラネット、光ファイバベースネットワーク等、及び/又はこれらの又は他のタイプのネットワークの組合せのような種々のタイプのネットワークを含み得る。
【0020】
図1に示すデバイス及びネットワークの数及び配置は、一例として提供される。実際には、
図1に示されたものよりも、追加のデバイス及び/又はネットワーク、より少ないデバイス及び/又はネットワーク、異なるデバイス及び/又はネットワーク、又は異なる配置のデバイス及び/又はネットワークがあり得る。さらに、
図1に示す2つ以上のデバイスは、単一のデバイス内に実装されてもよく、又は
図1に示す単一のデバイスは、複数の分散デバイスとして実装されてもよい。加えて、又は代替的に、システム100のデバイスのセット(例えば、1つ又は複数のデバイス)は、システム100のデバイスの別のセットによって実行されるものとして説明される1つ以上の機能を実行してもよい。
【0021】
次に、
図2A及び2Bを参照すると、ポイントクラウド更新システムのブロック
図200A及び200Bが示されている。ブロック
図200Aは、リフティングスキームにおける直接又は順変換を示し得る。ブロック
図200Bは、リフティングスキームにおける逆変換を示し得る。
【0022】
予測に基づく属性コーディングでは、(P
i)
i=1...Nをポイントクラウドポイントに関連付けられる位置のセットとし、(M
i)
i=1...Nを(P
i)
i=1...Nに関連付けられるモートンコード(Morton codes)とする。まず、ポイントは関連するモートンコードに従って昇順にソートされる。Iを、このプロセスに従って順序付けられたポイントインデックスの配列とする。エンコーダ/デコーダは、Iによって定義された順序に従ってポイントをそれぞれ圧縮/解凍する。各反復iにおいて、ポイントP
iが選択される。P
iからs(例えば、s=64)前のポイントまでの距離が分析され、P
iのk(例えばk=3)最近傍が予測に使用されるように選択される。より正確には、属性値
【数1】
がポイントiの最近傍の距離に基づいた線形補間プロセスを使用して予測される。
【数2】
を現在のポイントiのk最近傍のセットとし、
【数3】
をデコーディング/再構成された属性値とし、
【数4】
を現在のポイントまでの距離とする。予測される属性値
【数5】
は:
【数6】
によって与えられる。
【0023】
リフティングベースの属性コーディングは、予測ベースのコーディングに基づいて構築される。予測ベースのスキームと比較した主な相違点は、2つの付加ステップが導入されることである。第1は、更新オペレータ(update operator)の導入である。第2は適応量子化戦略(adaptive quantization strategy)の使用である。
【0024】
次に
図2Cを参照すると、領域適応階層変換(RAHT)の
図200Cが示されている。ブロック
図200Cは、順変換202A及び逆変換202Bを示し得る。RAHTコーディングについて、
【数7】
及び
【数8】
で、w
0は入力係数F
l+1,2nの重みの表記であるが、w
1はF
l+1,2n+1の場合と同じである。
【0025】
次に、
図2Dを参照すると、境界要素を維持しながら縮小するハッシュの
図200Dが示されている。ハッシュ縮小は、ハッシュ要素206A~206C、境界ハッシュ要素208A~208C、及び現在のノード210を含み得る。1つ又は複数の実施形態によれば、後のコーディングされたノードはこの情報をコンテキストとして使用する必要があるため、コーディングされたジオメトリ占有情報はキャッシュメモリに保存され得る。
【0026】
コーディングされた属性情報はハッシュテーブルに保存でき、後のコーディングされたノードはそれらを予測子として取り出すことができる。ハッシュテーブルは、再構成された属性値を記憶するために使用される。具体的には、ハッシュテーブルHが維持され、ここでキーはポイントの3D座標のモートンコード(Morton code)、すなわち、Mi=Morton(xi、yi、zi)であり、(xi、yi、zi)はi番目のポイントの3D座標である。キーとしてモートンコードMiを用いるとき、ハッシュテーブルH内の再構成された属性値に直接アクセスすることができる。H(Mi)がNULLの場合、位置(xi、yi、zi)が占有されておらず、それに関連付けられる属性値がない又は位置(xi、yi、zi)に関連付けられる属性がまだコーディングされていないことを示す。
【0027】
現在のポイントの属性値をエンコーディング/デコーディングするとき、隣接ポイントの前にコーディングされた属性がハッシュテーブルHから得られ、予測子として使用される。現在のノードの属性値をエンコーディング/デコーディングした後、現在のノードの再構成された属性がHに記憶される。
【0028】
現在のポイントが(xi、yi、zi)にジオメトリ位置を有するとすると、(xi-Δx、yi-Δy、zi-Δz)に隣接するものの属性値を見つけるのは簡単であり、ここでΔx、Δy及びΔzは小さな値の探索ステップサイズである。しかしながら、探索範囲が大きい場合、探索空間は探索ステップサイズに対して3乗で増加するので、空間を探索するのは時間がかかる。
【0029】
探索を加速するために、複数のハッシュテーブルを持つ階層構造を構築することができる。各ハッシュテーブルは、特定の八分木パーティションレベル(octree partition level)の属性値を含む。八分木パーティション深さdに対して、ハッシュテーブルH
dが維持され、ここで、キーは深さdの八分木ノードのモートンコード、すなわち、
【数9】
、ここで
【数10】
は深さdの八分木ノードの3D座標である。キーとしてモートンコード
【数11】
を使用すると、ハッシュテーブルH
dの属性値にアクセスできる。H
dに記憶される属性値は、対応する八分木ノード内のすべてのポイントの平均属性、又は対応する八分木ノード内のすべてのポイントの中央値属性値、又は対応する八分木ノード内のすべてのポイントの加重平均属性値とすることができる。複数のハッシュテーブルは、リーフノードレベルから、あるレベルより上に維持され得る。
【0030】
探索するとき、十分な予測候補が見つかるまで、ボトムアップ又はトップダウン探索が適用され得る。
【0031】
ハッシュ実装を最適化/加速するために、ハッシュテーブルをできるだけ小さく保つことは、情報を記憶するコストをより少なくし、探索速度をより速くすることを可能にし得る。一実施形態では、最大ハッシュテーブルサイズが定義される。最大サイズは、すべてのケースに対して固定することができる、又はケースバイケースで異なるように設定することができ、シーケンスパラメータセット、ジオメトリパラメータセット又はスライスヘッダなどのような高レベル構文の一部としてビットストリームで送ることができることに留意されたい。ハッシュテーブルが最大容量に達すると、ハッシュテーブル内の部分的な要素を削除することによって、ハッシュテーブル自体が縮小する。どの要素を削除されることになるかに関するルールは、状況によって異なり得る。一実施形態では、ハッシュテーブルは、ブロック境界にない要素を除去する。ブロック境界は、現在のノードの位置座標に従って定義することができる。通常、ブロックサイズは2のべき乗として定義される。例えば、ブロックサイズは、3D空間において(2M、2M、2M)とすることができる。次に、少なくとも1つの位置座標が2iM-1(i=1、2、3、...)に等しいポイントは境界である。したがって、境界にあるすべてのハッシュ要素は保持され、残りのすべての要素はテーブルから削除できる。境界に属さない要素は削除することができる。境界のサイズMは、すべてのケースに対して固定することができる又はケースごとに異なるように設定することができ、シーケンスパラメータセット、ジオメトリパラメータセット又はスライスヘッダなどのような高レベル構文の一部としてビットストリームで送ることができることに留意されたい。
【0032】
ノードベースのコーディング方法が提案された。そこでは、全ポイントクラウドは、幅優先八分木パーティション化を介して、いくつかのサブノードにパーティション化でき、各サブノードは、別々に又は並列にコーディングできる。このスキームでは、各サブノードは別々のハッシュテーブルを維持することができ、異なるサブノードからの各ハッシュテーブルは互いに独立である。この場合、各サブノードが元のポイントクラウドの一部であるため、ハッシュテーブルの最大サイズも縮小する。しかし、コンテキスト情報がノード境界を越えて共有されないため、これはコーディング効率の観点からある程度の性能損失を引き起こす可能性がある。損失を補償するために、別の実施形態では、ノード境界における要素が維持され、異なるサブノードに対して使用することができる。
【0033】
異なるコンポーネント間の相関を利用するために、予測ベースの属性コーディング、リフティングに基づく属性コーディング、及びRAHTに基づく属性コーディングのような、異なる属性コーディング方法に予測スキームを適用することができる。クロスコンポーネント予測(cross component prediction)が、元の信号、予測残差、又は変換係数(RAHTのような変換技法が適用される場合)に適用することができる。以下の実施形態では、予測に基づく属性コーディングが例として使用され、クロスコンポーネント予測スキームは、異なるチャネル(又はコンポーネント)の予測残差に適用される。
【0034】
線形モデル、2次モデル、及び他の多項式モデルのようなコンポーネント間の信号を予測するための異なるモデルを構築することができる。以下の実施形態では、線形モデルが例として使用される。
【0035】
クロスコンポーネント予測は、RGBカラー属性のみに限定されるものではなく、コーディングされることになる属性のタイプが複数あり、それらの間に相関がある限り、他の属性にも利用することができる。以下の実施形態では、RGBカラー属性を例として使用する。
【0036】
R、G及びBコンポーネントの予測残差がそれぞれr0、r1、r2であると仮定し、これらの信号は線形相関していると想定される。これらのコンポーネントは、任意の順序でコーディングすることができる。コーディング順序は、全てのケースに対して固定することができる、又は、ケースバイケースで異なって設定することができ、シーケンスパラメータセット、ジオメトリパラメータセット又はスライスヘッダなどのような、高レベル構文の一部としてビットストリーム内で指定できる。以下の実施形態では、コーディング順序は、最初にR、次にG及びBが続くものと仮定される。したがって、Gの予測残差をコーディングするとき、Rの再構成予測残差を予測として用いることができ;Bの予測残差をコーディングするとき、RとGの再構成予測残差を予測として用いることができる。
【0037】
より具体的には、Rコンポーネントの予測残差、すなわち、r0が最初にコーディングされ、量子化/逆量子化(quantization/dequantization)後のその再構成値がR0であると仮定する。次に、Gコンポーネントの予測残差、すなわち、r1は、以下のようにR0によって予測することができる:
p1=α0R0+β0
ここで、α0及びβ0は線形モデルパラメータであり、p1はGの予測残差である。したがって、予測残差、すなわちr1を直接コーディングする代わりに、r1とp1との間の2次の残差、すなわち、r1’=r1-p1をコーディングすることができる。次に、Gの二次残差、すなわち、r1’がコーディングされ、量子化/逆量子化後の再構成値はR1’であり、Gコンポーネントの再構成予測残差はR1=R1’+p1である。最後に、Bコンポーネントの予測残差、すなわち、r2は、R0及びR1の両方によって以下のように予測することができる、
p2=α1R0+β1R1+γ1
ここで、α1、β1及びγ1は線形モデルパラメータであり、p2はBの予測残差である。したがって、予測残差、すなわちr2を直接コーディングする代わりに、r2とp2との間の2次の残差、すなわち、r2’=r2-p2をコーディングすることができる。次に、Bの二次残差、すなわち、r2’がコーディングされ、その量子化/非量子化後の再構成値はR2’であり、Bコンポーネントの再構成予測残差はR2=R2’+p2である。
【0038】
線形モデルは、以下のように提案されるように多くの方法で簡略化することができる。しかし、単純化の方法は、任意の他の同様の形式にすることができることに留意されたい。一実施形態では、線形モデルは以下のように簡略化される、
p1=α0R0、p2=α1R0+β1R1
ここで、β0及びγ1はゼロとして固定される。別の実施形態では、線形モデルは、以下のように簡略化することができる、
p1=α0R0、p2=α1R0
ここで、β0及びγ1及びβ1はゼロとして固定される。別の実施形態では、線形モデルは、以下のように簡略化することができる、
p1=α0R0、p2=α1R0
ここで、β0及びγ1及びβ1はゼロとして固定される。別の実施形態では、線形モデルは、以下のように簡略化することができる、
p1=α0R0、p2=β1R1
ここで、β0及びγ1及びα1はゼロとして固定される。別の実施形態では、線形モデルは、以下のように簡略化することができる、
p1=α0R0、p2=α0R0
ここで、β0及びγ1及びβ1はゼロとして固定され、α1=α0である。別の実施形態では、線形モデルは、以下のように簡略化することができる、
p1=α0R0、p2=α0R1
ここで、β0及びγ1及びα1はゼロとして固定され、β1=α0である。
【0039】
上述の線形モデルでは、モデルパラメータは、エンコーダ及びデコーダの両方に対して、またすべての場合に対して固定することができる。一実施形態では、次のように予測を導き出すことができる:
p1=R0、p2=R0;
p1=R0、p2=R1;又は
p1=R0、p2=(R0+R1)/2
【0040】
しかし、モデルパラメータは、異なるポイントクラウドに対して異なる可能性があり、パラメータは、シーケンスパラメータセット、属性パラメータセット又はスライスヘッダなどのような、高レベル構文でシグナリングすることができる。
【0041】
他の実施形態では、モデルパラメータはまた、「低レベル構文」として信号を送ることができ、これは、各コーディングユニット(ノード)が異なるパラメータのセットを有し得ることを意味する。
【0042】
別の実施形態では、モデルパラメータを明示的にシグナリングすることを避けるために、再構成された予測残差からオンザフライでパラメータを適応的に学習することができる。エンコーダ及びデコーダは、平均二乗誤差を最小化することによって、コーディング中に同じトレーニング段階を進め得る。
【0043】
次に、
図2Eを参照すると、予測残差のための構文要素の表200Eが示されている。予測残差をより効率的にコーディングするために、異なる属性コンポーネントは、別々のコンテキストを使用し得る。1つの実施形態では、R、G及びBコンポーネントの両方は、異なるコンテキストモデルを使用する。prediction_resistance_is_zero[i]はi番目のコンポーネントの予測残差が0に等しいかどうかを指定する。prediction_resistance_is_one[i]はi番目のコンポーネントの予測残差が1に等しいかどうかを指定する。prediction_resistance_is_two[i]はi番目のコンポーネントの予測残差が2に等しいかどうかを指定する。prediction_resistance_minus_three[i]はi番目のコンポーネントの予測残差を、prediction_resistance_minus_three[i]+3として指定する。別の実施形態では、Rコンポーネントは別個のコンテキストモデルを使用し、Gコンポーネント及びBコンポーネントは同じコンテキストモデルを使用する。
【0044】
次に、
図3を参照すると、ポイントクラウドコーディングのためにプログラムによって実行される方法300のステップを示す動作フローチャートが示されている。
【0045】
302において、方法300は、ポイントクラウドに対応するデータを受信することを含み得る。
【0046】
304において、方法300は、受信データに関連付けられる属性値に対応するハッシュ要素を再構成することを含み得る。
【0047】
306において、方法300は、再構成されたハッシュ要素に基づいてポイントクラウドに対応するデータをデコーディングすることを含み得る。
【0048】
図3は、一実装形態の例示にすぎず、異なる実施形態がどのように実装され得るかに関する限定を意味しないことを理解されたい。図示された環境に対する多くの修正が、設計及び実装要件に基づいて行われ得る。
【0049】
図4は、例示的な実施形態による、
図1に示されたコンピュータの内部及び外部コンポーネントのブロック
図400である。
図4は、1つの実装の例示にすぎず、異なる実施形態が実装され得る環境に関するいかなる限定も意味しないことを理解されたい。図示された環境に対する多くの修正は、設計及び実装要件に基づいて行われ得る。
【0050】
コンピュータ102(
図1)及びサーバコンピュータ114(
図1)は、
図4に示す内部コンポーネント800A、B及び外部コンポーネント900A、Bのそれぞれのセットを含み得る。内部コンポーネント800のセットの各々は、1つ又は複数のバス826上の1つ又は複数のプロセッサ820、1つ又は複数のコンピュータ可読RAM822及び1つ又は複数のコンピュータ可読ROM824、1つ又は複数のオペレーティングシステム828、及び1つ又は複数のコンピュータ可読有形記憶装置830を含む。
【0051】
プロセッサ820は、ハードウェア、ファームウェア、又はハードウェアとソフトウェアの組み合わせで実装される。プロセッサ820は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、加速処理装置(APU)、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、又は別のタイプの処理コンポーネントである。いくつかの実施態様では、プロセッサ820は、機能を実行するようにプログラムされ得る1つ又は複数のプロセッサを含む。バス826は、内部コンポーネント800A、B間の通信を可能にするコンポーネントを含む。
【0052】
サーバコンピュータ114(
図1)上の1つ又は複数のオペレーティングシステム828、ソフトウェアプログラム108(
図1)及びポイントクラウドコーディングプログラム116(
図1)は、それぞれのRAM822(典型的にはキャッシュメモリを含む)の1つ又は複数を介してそれぞれのプロセッサ820のうちの1つ又は複数による実行のために、それぞれのコンピュータ可読有形記憶装置830のうちの1つ又は複数に記憶される。
図4に示す実施形態では、コンピュータ可読有形記憶装置830の各々は、内蔵ハードドライブの磁気ディスク記憶装置である。代替的には、コンピュータ可読有形記憶装置830の各々は、ROM824のような半導体記憶装置、EPROM、フラッシュメモリ、光ディスク、光磁気ディスク、ソリッドステートディスク、コンパクトディスク(CD)、デジタル汎用ディスク(DVD)、フロッピー(登録商標)ディスク、カートリッジ、磁気テープ、及び/又はコンピュータプログラム及びデジタル情報を記憶することができる他のタイプの非一時的コンピュータ可読有形記憶装置である。
【0053】
内部コンポーネント800A、Bの各セットはまた、CD-ROM、DVD、メモリスティック、磁気テープ、磁気ディスク、光ディスク、又は半導体記憶装置のような1つ又は複数のポータブルコンピュータ可読有形記憶装置936から及びそれに読み書きするためのR/Wドライブ又はインターフェース832を含む。ソフトウェアプログラム108(
図1)及びポイントクラウドコーディングプログラム116(
図1)などのソフトウェアプログラムは、それぞれのポータブルコンピュータ可読有形記憶装置936のうちの1つ以上に記憶され、それぞれのR/Wドライブ又はインターフェース832を介して読み込まれ、それぞれのハードドライブ830にロードされることができる。
【0054】
内部コンポーネント800A、Bの各セットはまた、TCP/IPアダプタカード;無線Wi-Fiインターフェースカード;又は、3G、4G、若しくは5G無線インターフェースカード、又は他の有線又は無線通信リンクなどのネットワークアダプタ又はインターフェース836を含む。サーバコンピュータ114(
図1)上のソフトウェアプログラム108(
図1)及びポイントクラウドコーディングプログラム116(
図1)は、ネットワーク(例えば、インターネット、ローカルエリアネットワーク又は他のワイドエリアネットワーク)及びそれぞれのネットワークアダプタ又はインターフェース836を介して、外部コンピュータからコンピュータ102(
図1)及びサーバコンピュータ114にダウンロードすることができる。ネットワークアダプタ又はインターフェース836から、サーバコンピュータ114上のソフトウェアプログラム108及びポイントクラウドコーディングプログラム116がそれぞれのハードドライブ830にロードされる。ネットワークは、銅線、光ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを含み得る。
【0055】
外部コンポーネント900A、Bのセットの各々は、コンピュータディスプレイモニタ920、キーボード930、及びコンピュータマウス934を含むことができる。外部コンポーネント900A、Bはまた、タッチスクリーン、仮想キーボード、タッチパッド、ポインティングデバイス、及び他のヒューマンインターフェースデバイスを含むことができる。内部コンポーネント800A、Bのセットの各々はまた、コンピュータディスプレイモニタ920、キーボード930、及びコンピュータマウス934にインターフェースするためのデバイスドライバ840を含む。デバイスドライバ840、R/Wドライブ又はインターフェース832、及びネットワークアダプタ又はインターフェース836は、ハードウェア及びソフトウェア(記憶装置830及び/又はROM824に記憶)を備える。
【0056】
本開示は、クラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載される教示の実装は、クラウドコンピューティング環境に限定されないことが、予め理解される。むしろ、いくつかの実施形態は、現在知られているか、又は後に開発される任意の他のタイプのコンピューティング環境と共に実装可能である。
【0057】
クラウドコンピューティングは、最小限の管理努力又はサービスのプロバイダとのやりとりで迅速にプロビジョにング及びリリースすることができる構成可能なコンピューティングリソースの共有プール(ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)への便利でオンデマンドなネットワークアクセスを可能にするためのサービス提供のモデルである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、及び少なくとも4つの展開モデルを含み得る。
【0058】
特徴は以下の通りである:
オンデマンドセルフサービス:クラウドコンシューマは、サービスのプロバイダとの人的なやりとりを必要とせずに、必要に応じて自動的に、サーバの時間やネットワークストレージなどのコンピューティング機能を一方的にプロビジョニングすることができる。
広域ネットワークアクセス:機能は、ネットワーク経由で利用可能であり、異種のシン又はシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準メカニズムを通じてアクセスされる。
リソースプーリング:プロバイダのコンピューティングリソースは、マルチテナントモデルを使用して複数のコンシューマにサービスを提供するためにプールされ、様々な物理リソースと仮想リソースが、需要に応じて動的に割り当てられ、再割り当てされる。コンシューマは、概して、提供されたリソースの正確な場所に関する制御や知識を持たないが、より高いレベルの抽象化(例えば、国、州、データセンタ)で場所を指定することができるという点で、場所の独立性の感覚がある。
迅速な弾力性(Rapid elasticity):機能は、場合によっては自動的に、迅速にスケールアウトするように迅速かつ弾力的にプロビジョニングされ、迅速にスケールインするために迅速にリリースされることができる。コンシューマにとって、プロビジョニングに利用可能な機能はしばしば無制限であるように見え、いつでもどんな量でも購入できる。
測定されるサービス(Measured service):クラウドシステムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザーアカウント)に適した抽象化のレベルで計測機能を利用することにより、自動的にリソースの使用を制御及び最適化する。リソースの使用は、利用サービスのプロバイダとコンシューマの両方に透明性を提供するために監視し、制御し、報告することができる。
【0059】
サービスモデルは次のとおりである:
サービスとしてのソフトウェア(SaaS):コンシューマに提供される機能は、クラウドインフラ上で動作するプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブブラウザ(例えば、ウェブベースの電子メール)のようなシンクライアントインターフェースを介してさまざまなクライアントデバイスからアクセス可能である。コンシューマはネットワーク、サーバ、オペレーティングシステム、ストレージ、又はさらには個々のアプリケーション機能さえ含む基盤にあるインフラストラクチャを管理又は制御しない。ただし、限定されたユーザに固有のアプリケーション構成設定はその例外となろう。
サービスとしてのプラットフォーム(PaaS):コンシューマに提供される機能は、クラウドインフラストラクチャ上に、プロバイダによってサポートされるプログラミング言語やツールを使用して、コンシューマが作成又は取得したアプリケーションを展開することである。コンシューマは、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む基盤となるクラウドインフラストラクチャを管理又は制御しないが、展開されたアプリケーションや、場合によってはアプリケーションホスティング環境の構成に対する制御を有する。
サービスとしてのインフラストラクチャ(laaS):コンシューマに提供される機能は、処理、ストレージ、ネットワーク、及びその他の基本的なコンピューティングリソースをプロビジョニングすることであり、コンシューマは、オペレーティングシステム及びアプリケーションを含むことができる任意のソフトウェアを展開し、実行することができる。コンシューマは、基盤となるクラウドインフラストラクチャを管理又は制御しないが、オペレーティングシステム、ストレージ、展開されたアプリケーション、及び場合によっては選択されたネットワークコンポーネント(例えば、ホストファイアウォール)の限定された制御に対する制御を有する。
【0060】
展開モデルは、以下の通りである:
プライベートクラウド:クラウドインフラストラクチャは組織のためだけに運用される。組織又は第三者によって管理され、オンプレミス(on-premises)又はオフプレミス(off-premises)に存在し得る。
コミュニティクラウド:クラウドインフラストラクチャは、いくつかの組織で共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、及びコンプライアンスの考慮事項)を持つ特定のコミュニティをサポートする。組織又は第三者によって管理され、オンプレミス又はオフプレミスに存在し得る。
パブリッククラウド:クラウドインフラストラクチャは、一般の人々又は大規模な業界団体が利用できるようにされ、クラウドサービスを販売する組織によって所有される。
ハイブリッドクラウド:クラウドインフラストラクチャは、ユニークなエンティティのままであるが、データとアプリケーションの移植性を可能にする標準化された、又は独自の技術(クラウド間の負荷分散のためのクラウドバーストなど)によって結合されている2つ以上のクラウド(プライベート、コミュニティ、パブリック)の構成である。
【0061】
クラウドコンピューティング環境は、ステートレス性、低結合性、モジュール性、及びセマンティック相互運用性に焦点を当てたサービス指向である。クラウドコンピューティングの核心は、相互接続されたノードのネットワークを有するインフラストラクチャである。
【0062】
図5を参照すると、例示的なクラウドコンピューティング環境500が示されている。図示のように、クラウドコンピューティング環境500は、1つ又は複数のクラウドコンピューティングノード10を含み、クラウドコンシューマによって使用される、例えば、携帯デジタルアシスタント(PDA)又は携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、及び/又は自動車コンピュータシステム54Nなどのローカルコンピューティングデバイスが、それらと通信し得る。クラウドコンピューティングノード10は、互いに通信し得る。それらは、物理的又は仮想的に、上述のようなプライベート、コミュニティ、パブリック、又はハイブリッドクラウド、又はそれらの組み合わせのような1つ又は複数のネットワークにグループ化(図示せず)され得る。これは、クラウドコンピューティング環境500が、クラウドコンシューマがローカルコンピューティングデバイス上のリソースを維持する必要のないサービスとして、インフラストラクチャ、プラットフォーム及び/又はソフトウェアを提供することを可能にする。
図5に示すコンピューティングデバイス54A~54Nのタイプは、例示的なものに過ぎず、クラウドコンピューティングノード10及びクラウドコンピューティング環境500は、任意のタイプのネットワーク及び/又はネットワークアドレス指定可能接続(例えば、ウェブブラウザを使用する)を介して任意のタイプのコンピュータ装置と通信することができることが理解される。
【0063】
図6を参照すると、クラウドコンピューティング環境500(
図5)によって提供される機能抽象化層のセット600が示されている。
図6に示すコンポーネント、層、及び機能は、例示的なものに過ぎず、実施形態はこれに限定されるものではないことを予め理解されたい。図示のように、以下の層及び対応する機能が提供される:
【0064】
ハードウェア及びソフトウェア層60は、ハードウェア及びソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例は:メインフレーム61;RISC(縮小命令セットコンピュータ)アーキテクチャベースのサーバ62;サーバ63;ブレードサーバ64;ストレージデバイス65;並びにネットワーク及びネットワークコンポーネント66;を含む。いくつかの実施形態では、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67及びデータベースソフトウェア68を含む。
【0065】
仮想化層70は、抽象化層を提供し、そこから、仮想エンティティの次の例が提供され得る:仮想サーバ71;仮想記憶装置72;仮想プライベートネットワークを含む仮想ネットワーク73;仮想アプリケーション及びオペレーティングシステム74;及び仮想クライアント75。
【0066】
一例では、管理層80は、以下に記載される機能を提供し得る。リソースプロビジョニング81は、クラウドコンピューティング環境内のタスクを実行するために利用されるコンピューティングリソース及びその他のリソースの動的調達を提供する。メータリング及び価格設定(Metering and Pricing)82は、クラウドコンピューティング環境内でリソースが利用されるときのコスト追跡、及びこれらのリソースの消費に対する請求又はインボイス送付(billing or invoicing)を提供する。一例では、これらのリソースは、アプリケーションソフトウェアライセンスを含み得る。セキュリティは、クラウドコンシューマとタスクのためのID確認(identity verification)、並びにデータ及びその他のリソースの保護を提供する。ユーザポータル83は、コンシューマ及びシステム管理者にクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、要求されるサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当て及び管理を提供する。サービスレベルアグリーメント(SLA)の計画及び履行85は、SLAに従って将来の要件が予測されるクラウドコンピューティングリソースの事前準備及び調達を提供する。
【0067】
ワークロード層90は、クラウドコンピューティング環境が利用され得る機能の例を提供する。この層から提供され得るワークロード及び機能の例は:マッピング及びナビゲーション91;ソフトウェア開発及びライフサイクル管理92;仮想教室教育配信93;データ分析処理94;トランザクション処理95;及びポイントクラウドコーディング96;を含む。ポイントクラウドコーディング96は、ハッシュベースの属性コーディングに基づいてポイントクラウドデータをデコーディングし得る。
【0068】
いくつかの実施形態は、任意の可能な技術的詳細レベルの統合におけるシステム、方法、及び/又はコンピュータ可読媒体に関連し得る。コンピュータ可読媒体は、プロセッサに動作を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読非一時的記憶媒体を含み得る。
【0069】
コンピュータ可読記憶媒体は、命令実行装置によって使用される命令を保持し、記憶することができる有形の装置であることができる。コンピュータ可読記憶媒体は、例えば、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、又はこれらの任意の適切な組み合わせであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは次のものを含む:ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROM又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、デジタル汎用ディスク(DVD)、メモリスティック、フロッピー(登録商標)ディスク、パンチカード又はそれらに記録された命令を有する溝内の隆起構造のような機械的にエンコードされたデバイス、及びこれらの任意の適切な組み合わせ。本明細書で使用されるとき、コンピュータ可読記憶媒体は、それ自体、例えば、電波又は他の自由に伝搬する電磁波、導波管又は他の伝送媒体を通って伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)、又はワイヤを通って伝送される電気信号のような、一時的な信号であると解釈されるべきではない。
【0070】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピュータ/処理装置に、あるいは、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク及び/又は無線ネットワークを介して、外部コンピュータ又は外部記憶装置にダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを含み得る。各コンピューティング/処理装置内のネットワークアダプタカード又はネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を、各コンピューティング/処理装置内のコンピュータ可読記憶媒体に記憶するために転送する。
【0071】
動作を実行するためのコンピュータ可読プログラムコード/命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又はSmalltalk、C++などのようなオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は類似のプログラミング言語のような手続型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書かれたソースコード又はオブジェクトコードのいずれかであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェアパッケージとして、部分的にユーザのコンピュータ上で、部分的にリモートコンピュータ上で、又は完全にリモートコンピュータ又はサーバ上で、実行され得る。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続され得る、又は、接続は、外部コンピュータ(例えば、インターネットサービスプロバイダを使用するインターネットを介して)に行われ得る。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、又はプログラマブル論理アレイ(PLA)を含む電子回路は、態様又は動作を実行するために、電子回路をパーソナライズするためにコンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行し得る。
【0072】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置のプロセッサに提供されて、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャート及び/又はブロック図のブロック又はブロック(複数)に指定された機能/行為を実行するための手段を生成するように、機械を作り得る。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラマブルデータ処理装置、及び/又は他の装置を特定の方法で機能させることができるコンピュータ可読記憶媒体に記憶されてもよく、その結果、その中に記憶された命令を有するコンピュータ可読記憶媒体は、フローチャート及び/又はブロック図のブロック又はブロック(複数)に特定された機能/行為の態様を実装する命令を含む製品を含む。
【0073】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、又は他の装置にロードされて、コンピュータ、他のプログラマブル装置、又は他の装置で実行される命令がフローチャート及び/又はブロック図のブロック又はブロック(複数)に指定された機能/行為を実装するように、コンピュータ、他のプログラマブル装置、又は他の装置に一連の動作ステップを実行させて、コンピュータ実装プロセスを生成させ得る。
【0074】
図中のフローチャート及びブロック図は、様々な実施形態によるシステム、方法、及びコンピュータ可読媒体の可能な実装形態のアーキテクチャ、機能、及び動作を示す。この点に関し、フローチャート又はブロック図の各ブロックは、特定の論理機能(複数可)を実装するための1つ以上の実行可能な命令を含む、モジュール、セグメント、又は命令の一部を表し得る。この方法、コンピュータシステム、及びコンピュータ可読媒体は、図面に示されたものよりも、追加のブロック、より少ないブロック、異なるブロック、又は異なる配置のブロックを含み得る。いくつかの代替的な実装では、ブロックに記載された機能は、図に記載された順序から外れて生じてもよい。例えば、連続して示される2つのブロックは、実際には、同時又は実質的に同時に実行されてもよく、又は、ブロックは、関連する機能に応じて、逆の順序で実行されてもよい。また、ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図のブロックの組み合わせは、指定された機能又は動作を実行する又は専用のハードウェア及びコンピュータ命令の組み合わせを実行する専用のハードウェアベースのシステムによって実装することができることに留意されたい。
【0075】
本明細書に記載したシステム及び/又は方法は、ハードウェア、ファームウェア、又はハードウェアとソフトウェアの組み合わせの異なる形態で実装され得ることは明らかであろう。これらのシステム及び/又は方法を実装するために使用される実際の専用制御ハードウェア又はソフトウェアコードは、実装を限定するものではない。したがって、システム及び/又は方法の動作及び挙動は、特定のソフトウェアコードを参照することなく本明細書に記載されており、ソフトウェア及びハードウェアは、本明細書の記載に基づいてシステム及び/又は方法を実装するように設計され得ることが理解される。
【0076】
本明細書中で使用されるいかなる要素、行為、又は命令も、明示的に記述されない限り、重要又は必須と解釈されるべきではない。また、本明細書で使用される場合、冠詞「1つの(「a」及び「an」)」は、1つ又は複数のアイテムを含むことを意図し、「1つ又は複数」と互換的に使用され得る。さらに、本明細書で使用される場合、用語「セット」は、1つ又は複数のアイテム(例えば、関連アイテム、非関連アイテム、関連アイテムと非関連アイテムの組み合わせなど)を含むことを意図し、「1つ又は複数」と互換的に使用され得る。1つのアイテムのみが意図される場合、用語「1つ」又は類似の言語が使用される。また、本明細書で使用される場合、用語「有する」、「有する」、「有している」などは、オープンエンドの用語であることが意図されている。さらに、語句「に基づく」は、明示的に別段の記載がない限り、「少なくとも部分的に基づく」を意味することが意図されている。
【0077】
種々の態様及び実施形態の説明は、説明のために提示されてきたが、開示された実施形態を網羅することを意図するものではなく、限定するものでもない。特徴の組み合わせが特許請求の範囲に記載される及び/又は明細書に開示されているとしても、これらの組み合わせは、可能な実装の開示を限定するものではない。実際、これらの特徴の多くは、請求項に具体的に記載されていない及び/又は明細書に開示されていない方法で組み合わせることができる。以下に列挙される各従属請求項は、1の請求項のみに直接従属し得るが、可能な実装の開示は、請求項のセット中の他の全てのクレームと組み合わせの各従属請求項を含む。多くの修正及び変形は、説明した実施形態の範囲から逸脱することなく、当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、市場で見出される技術に対する実際的な応用又は技術的な改良を最もよく説明するため、又は当業者が本明細書で開示される実施形態を理解することを可能にするために選択された。