(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-19
(45)【発行日】2024-08-27
(54)【発明の名称】パノラマ画像におけるグラウンド上のマーカを認識することによってカメラ間のポーズグラフおよび変換マトリクスを推定する方法
(51)【国際特許分類】
G06T 7/70 20170101AFI20240820BHJP
【FI】
G06T7/70 Z
(21)【出願番号】P 2022565774
(86)(22)【出願日】2021-10-13
(86)【国際出願番号】 US2021054738
(87)【国際公開番号】W WO2022235290
(87)【国際公開日】2022-11-10
【審査請求日】2022-10-27
(32)【優先日】2021-05-07
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-10-08
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ジャン,シァン
(72)【発明者】
【氏名】ジャン,ビン
(72)【発明者】
【氏名】ヘ,ルー
(72)【発明者】
【氏名】ジュ,ハイチャオ
(72)【発明者】
【氏名】リウ,シャン
(72)【発明者】
【氏名】リウ,ケリン
(72)【発明者】
【氏名】フェン,ウェイウェイ
【審査官】▲広▼島 明芳
(56)【参考文献】
【文献】特開2020-161141(JP,A)
【文献】特表2014-515530(JP,A)
【文献】国際公開第2018/235923(WO,A1)
【文献】特開2013-092871(JP,A)
【文献】国際公開第2019/087870(WO,A1)
【文献】特開2013-156722(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00 ー 7/90
G06V 10/00 - 20/90
(57)【特許請求の範囲】
【請求項1】
カメラのポーズグラフを構築する方法であって、
第1カメラおよび第2カメラを含む複数のカメラと、前記複数のカメラのそれぞれに対応してグラウンド上にマーカが設けられ、プロセッサによって実行可能であり、
前記第1カメラの1つ以上のビューに対応する画像データを受信するステップと、
前記第2カメラに対応している、前記受信された画像データ内の1つ以上のマーカを識別するステップと、
前記識別された1つ以上のマーカに基づいて、前記第1カメラの1つ以上のビューに対応しているポーズグラフを構築するステップであり、
前記ポーズグラフは、少なくともエッジを含む、
ステップと、
を含み、
前記カメラのフロア平面からの高さは、既知であり、かつ、
前記カメラの視線は、前記フロア平面に並行であり、
前記方法は、さらに、
前記第1カメラに対応している前記1つ以上のビューの中の前記第2カメラに対応している前記1つ以上のマーカの中から、1つのマーカに関連する変換を決定することに基づいて、前記1つ以上のビューの中から、前記第1カメラと前記第2カメラとの間の変換マトリクスを推定するステップ、
を含む、方法。
【請求項2】
前記方法は、さらに、
前記第1カメラの位置と前記第2カメラの位置との間の可視性を決定するステップであり、
前記第1カメラに対応している前記1つ以上のビューの中に存在する前記第2カメラに対応している前記1つ以上のマーカのうち1つのマーカに応答して、前記第2カメラは、前記第1カメラから可視であると決定される、
ステップ、
を含む、請求項1に記載の方法。
【請求項3】
前記ポーズグラフのノードは、前記1つ以上のビューそれぞれに対応している、
請求項1に記載の方法。
【請求項4】
前記ポーズグラフの前記エッジは、前記識別された1つ以上のマーカに基づいて構成されている、
請求項1に記載の方法。
【請求項5】
前記エッジは、前記第1カメラに対応している前記1つ以上のビューの中に存在する、前記第2カメラに対応している前記1つ以上のマーカの中から、1つのマーカに基づいて、前記1つ以上のビューの中から、前記第1カメラと前記第2カメラとの間に構築されている、
請求項1に記載の方法。
【請求項6】
前記変換マトリクスは、前記第1カメラと前記第2カメラとの間のカメラ移動に関連付けられる、
請求項
1に記載の方法。
【請求項7】
カメラのポーズグラフを構築するためのコンピュータシステムであって、前記コンピュータシステムは、
コンピュータプログラムコードを保管するように構成された1つ以上のコンピュータ読取可能非一時的記憶媒体と、
前記コンピュータプログラムコードにアクセスし、かつ、前記コンピュータプログラムコードによって指示されるように動作する、ように構成された1つ以上のコンピュータプロセッサと、
を含み、
第1カメラおよび第2カメラを含む複数のカメラと、前記複数のカメラのそれぞれに対応してグラウンド上にマーカが設けられ、前記コンピュータプログラムコードは、
前記1つ以上のコンピュータプロセッサに、
前記第1カメラの1つ以上のビューに対応する画像データを受信させる、ように構成された受信コードと、
前記1つ以上のコンピュータプロセッサに、
前記第2カメラに対応している、前記受信された画像データ内の1つ以上のマーカを識別させる、ように構成された識別コードと、
前記1つ以上のコンピュータプロセッサに、前記識別された1つ以上のマーカに基づいて、前記第1カメラの1つ以上のビューに対応しているポーズグラフを構築させる、ように構成された構築コードと、を含み、
前記ポーズグラフは、少なくともエッジを含み、
前記カメラのフロア平面からの高さは、既知であり、かつ、
前記カメラの視線は、前記フロア平面に並行であ
り、
前記コンピュータプログラムコードは、さらに、
前記第1カメラに対応している前記1つ以上のビューの中の前記第2カメラに対応している前記1つ以上のマーカの中から、1つのマーカに関連する変換を決定することに基づいて、前記1つ以上のビューの中から、前記第1カメラと前記第2カメラとの間の変換マトリクスを推定させる、ように構成された推定決定コードを含む、
コンピュータシステム。
【請求項8】
前記コンピュータプログラムコードは、さらに、
前記1つ以上のコンピュータプロセッサに、前記第1カメラの位置と前記第2カメラの位置との間の可視性を決定させる、ように構成された決定コードを含み、
前記第1カメラに対応している前記1つ以上のビューの中に存在する前記第2カメラに対応している前記1つ以上のマーカのうち1つのマーカに応答して、前記第2カメラは、前記第1カメラから可視であると決定される、
請求項
7に記載のコンピュータシステム。
【請求項9】
前記ポーズグラフのノードは、前記1つ以上のビューそれぞれに対応している、
請求項
7に記載のコンピュータシステム。
【請求項10】
前記ポーズグラフの前記エッジは、前記識別された1つ以上のマーカに基づいて構成されている、
請求項
7に記載のコンピュータシステム。
【請求項11】
前記エッジは、前記第1カメラに対応している前記1つ以上のビューの中に存在する、前記第2カメラに対応している前記1つ以上のマーカの中から、1つのマーカに基づいて、前記1つ以上のビューの中から、前記第1カメラと前記第2カメラとの間に構築されている、
請求項
7に記載のコンピュータシステム。
【請求項12】
前記変換マトリクスは、前記第1カメラと前記第2カメラとの間のカメラ移動に関連付けられる、
請求項
7に記載のコンピュータシステム。
【請求項13】
カメラのポーズグラフを構築するためのコンピュータプログラムであって、
前記コンピュータプログラムは、コンピュータで実行可能な複数の命令を含み、該命令が、コンピュータによって実行されると、1つ以上のコンピュータプロセッサに、
請求項1乃至6いずれか一項に記載の方法を実施させるように構成されている、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般的に、データ処理の分野に関する。そして、より特定的には、画像処理に関する。
【0002】
関連出願の相互参照
本出願は、米国特許商標庁における米国仮特許出願第63/185,945号(2021年5月7日出願)、および、米国特許出願第17/497,025号(2021年10月8日出願)について優先権を主張するものであり、その全体が参照により本明細書に組み込まれている。
【背景技術】
【0003】
インドア建物(indoor building)の3次元再構成(3D reconstruction)は、不動産、建築構築、建築物復元、エンターテイメント、等を含む様々な産業において活発な研究テーマであり、かつ、使用されてきている。3次元再構成は、単一のRGB画像、または、異なる視点からの画像のグループを入力としてとることによって、コンピュータ・ビジョンおよび機械学習の技術を利用し、シーン内の建物の3次元幾何学的表示を生成する。深度センサの進歩は、シーンから直接的に深度情報を測定することに係るより便利で、かつ、より正確な方法を可能にしてきている。いくつかの広く使用されている深度カメラは、ライダー(Lidar)、構造化光(structured light)、等を含んでいる。
【0004】
3次元図形表現は、たいてい、いわゆるポイントクラウド(point cloud)の形式であり、空間内に3次元点のセットを含み、それぞれが、3次元位置情報、および、色や反射率といった、追加的な属性を含んでいる。別の一般的な3次元フォーマットは、テクスチャメッシュ(textured mesh)である。個々の3次元ポイントの他に、それは、ファセットの集合(例えば、三角形)を形成している、隣接するポイント間の接続性情報を含んでおり、そして、テクスチャ情報も、また、各ファセットにアタッチすることができます。大きなシーンをキャプチャするために、異なる視点から複数の画像は取得される。この場合に、ポーズグラフ(pose graph)は重要である。ポーズグラフは、異なる視点間の接続性および可視性を定義している。
【発明の概要】
【0005】
実施形態は、カメラのポーズグラフを構築するための方法、システム、およびコンピュータ読取可能媒体に関する。一態様によれば、ポーズグラフの構成方法が提供される。この方法は、第1カメラの1つ以上のビューに対応する画像データを受信することを含んでもよい。第2カメラに対応する受信画像データ内に、1つ以上のマーカが識別される。第1カメラの1つ以上のビューに対応するポーズグラフは、識別された1つ以上のマーカに基づいて構築され、前記ポーズグラフは、少なくともエッジを含む。
【0006】
別の態様によれば、ポーズグラフ構築用のコンピュータシステムが提供される。コンピュータシステムは、1つ以上のプロセッサ、1つ以上のコンピュータ読取可能メモリ、1つ以上のコンピュータ読取可能有形ストレージ装置、および少なくとも1つ以上のメモリのうちの少なくとも1つを介して1つ以上のプロセッサのうちの少なくとも1つによって実行するために、1つ以上のストレージ装置のうちの少なくとも1つに保管されたプログラム命令を含み、それによってコンピュータシステムは方法を実行することができる。この方法は、第1カメラの1つ以上のビューに対応する画像データを受信することを含んでもよい。第2カメラに対応する受信画像データ内に、1つ以上のマーカが識別される。第1カメラの1つ以上のビューに対応するポーズグラフは、識別された1つ以上のマーカに基づいて構築され、前記ポーズグラフは、少なくともエッジを含む。
【0007】
さらに別の態様によれば、ポーズグラフ構築用のコンピュータ読取可能媒体が提供される。コンピュータ読取り可能媒体は、1つ以上のコンピュータ読取り可能ストレージ装置と、1つ以上の有形ストレージ装置のうちの少なくとも1つに保管されたプログラム命令と、プロセッサによって実行可能なプログラム命令とを含んでもよい。プログラム命令は、従って、第1カメラの1つ以上のビューに対応する画像データを受信することを含むことができる方法を実行するためのプロセッサによって実行可能である。第2カメラに対応する受信画像データ内に、1つ以上のマーカが識別される。第1カメラの1つ以上のビューに対応するポーズグラフは、識別された1つ以上のマーカに基づいて構築され、前記ポーズグラフは、少なくともエッジを含む。
【図面の簡単な説明】
【0008】
これら及び他の目的、特徴、および利点は、添付の図面に関連して読まれる、例示的な実施形態に係る以下の詳細な説明から明らかになるだろう。図面における種々の特徴は正確なスケールではない。図示は、詳細な説明と併せて、当業者の理解の促進における明確化のためのものだからである。
【
図1】
図1は、少なくとも1つの実施形態に従った、ネットワーク化されたコンピュータ環境を図示している。
【
図2】
図2は、少なくとも1つの実施形態に従った、ポーズグラフ再構成のためのマーカのセットである。
【
図3】
図3は、少なくとも1つの実施形態に従った、ポーズグラフ再構成のためのプログラムによって実行されるステップを説明する動作フローチャートである。
【
図4】
図4は、少なくとも1つの実施形態に従った、
図1に示されるコンピュータおよびサーバに係る内部および外部コンポーネントのブロック図である。
【
図5】
図5は、少なくとも1つの実施形態に従った、
図1に示されるコンピュータシステムを含む例示的なクラウドコンピューティング環境のブロック図である。
【
図6】
図6は、少なくとも1つの実施形態による、
図5の例示的なクラウドコンピューティング環境に係る機能層のブロック図である。
【発明を実施するための形態】
【0009】
請求される構造および方法に係る詳細な実施形態が、ここにおいて開示されているが、開示された実施形態は、単に、種々の形態で実施され得る請求される構造および方法を例示するに過ぎないことが理解され得る。これらの構造体および方法は、しかしながら、多くの異なる形態で具体化され得るものであり、そして、ここにおいて記載される例示的な実施形態に限定されるものとして解釈されるべきではない。むしろ、これらの例示的な実施形態は、本開示が、徹底的かつ完全であり、そして、当業者に対して範囲を十分に伝えるように提供されている。説明において、周知の特徴および技術の詳細は、提示される実施形態を不必要に不明瞭にすることを避けるために省略されることがある。
【0010】
実施形態は、一般的に、データ処理の分野に関し、そして、より特定的には、画像処理に関する。以下に説明される例示的な実施形態は、とりわけ、ポーズグラフ再構成(pose graph reconstruction)のためのシステム、方法、およびコンピュータプログラムを提供する。従って、いくつかの実施形態は、パノラマ画像におけるグラウンド上のマーカを認識することにより、カメラ間のポーズグラフおよび変換マトリクスを推定することに基づいて、仮想ツーリング、デジタル博物館、および仮想住宅販売(home sale)といった、VR/ARアプリケーションのためのインドア建物の3次元再構成を可能にすることによって、コンピューティングの分野を改善する能力を有している。
【0011】
上述のように、3次元図形表現は、たいてい、いわゆるポイントクラウドの形式であり、空間内に3次元点のセットを含み、それぞれが、3次元位置情報、および、色や反射率といった、追加的な属性を含んでいる。別の一般的な3次元フォーマットは、テクスチャメッシュである。個々の3次元ポイントの他に、それは、ファセットの集合(例えば、三角形)を形成している、隣接するポイント間の接続性情報を含んでおり、そして、テクスチャ情報も、また、各ファセットにアタッチすることができます。大きなシーンをキャプチャするために、異なる視点から複数の画像は取得される。この場合に、ポーズグラフは重要である。ポーズグラフは、異なる視点間の接続性および可視性を定義している。
【0012】
この問題に取り組むための既存の方法は、対応を見つけ、画像ペアから類似性を推定し、そして、変換マトリクスを推定するためにマルチビュー幾何学的技術を適用するように努めることであった。しかしながら、そうしたアルゴリズムは、多くのシナリオにおいて失敗することがある。例えば、シーンが、特徴無しである、または、多くの反復パターンを有する場合に、画像における正しい画像対応を見つけることは非常に困難であろう。従って、マルチビューパノラマ画像からポーズグラフおよび変換マトリクスを推定することは有利である。
【0013】
様々な実施形態に従った、方法、装置(システム)、およびコンピュータ読取可能媒体に係るフローチャート及び/又はブロック図を参照して、ここにおいて態様が説明される。フローチャート及び/又はブロック図の各ブロック、および、フローチャート及び/又はブロック図におけるブロックの組み合わせは、コンピュータで読取可能プログラム命令によって実施され得ることが理解されるだろう。
【0014】
以下に説明される例示的な実施形態は、複数の視点(view point)からキャプチャされた画像からポーズグラフおよび変換マトリクスを推定するシステム、方法、及びコンピュータプログラムを提供する。これから、
図1を参照すると、ネットワーク化されたコンピュータ環境の機能ブロック図が、パノラマ画像におけるグラウンド上のマーカを認識することにより、カメラ間のポーズグラフおよび変換マトリクスを推定することに基づいて、VR/ARアプリケーション用のインドア建物の3次元再構成のためのポーズグラフ再構成システム100(以降、「システム」)を説明している。
図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に関して後述するように、サービスとしてのソフトウェア(SaaS)、サービスとしてのプラットフォーム(PaaS)、または、サービスとしてのインフラストラクチャ(IaaS)といった、クラウドコンピューティングサービスモデルにおいても動作し得る。サーバコンピュータ114は、また、プライベートクラウド、コミュニティクラウド、パブリッククラウド、または、ハイブリッドクラウドといった、クラウドコンピューティング展開モデルにおいても配置され得る。
【0017】
サーバコンピュータ114、パノラマ画像におけるグラウンド上のマーカを認識することによってカメラ間のポーズグラフおよび変換マトリクスを推定することに基づいて、VR/ARアプリケーションのためのインドア建物の3次元再構成に使用され得るもの、は、データベース112と相互作用し得るポーズグラフ再構成プログラム116(以降、「プログラム」)を実行することが可能とされる。ポーズグラフ再構成プログラム方法が、
図3に関して、以下に、より詳細に説明される。一つの実施形態において、コンピュータ102は、ユーザインターフェイスを含む入力デバイスとして動作することができ、一方で、プログラム116は、主としてサーバコンピュータ114上で動作することができる。代替的な実施形態において、プログラム116は、主として1つ以上のコンピュータ102上で動作することができ、一方で、サーバコンピュータ114は、プログラム116によって使用されるデータの処理および保管のために使用され得る。プログラム116は、独立したプログラムであってよく、または、より大きいポーズグラフ再構成プログラムへと統合されてよいことが、留意されるべきである。
【0018】
プログラム116のための処理は、しかしながら、ある場合には、コンピュータ102とサーバコンピュータ114との間で任意の比率で共有され得ることが、留意されるべきである。別の実施形態において、プログラム116は、2つ以上の(more than one)コンピュータ、サーバコンピュータ、または、コンピュータおよびサーバコンピュータのいくつかの組み合わせ、例えば、ネットワーク110を横切り単一のサーバコンピュータ114と通信している複数のコンピュータ102において動作することができる。別の実施形態において、例えば、プログラム116は、ネットワーク110を横切り複数のクライアントコンピュータと通信している複数のサーバコンピュータ114において動作することができる。代替的に、プログラムは、ネットワークを横切りサーバおよび複数のクライアントコンピュータと通信しているネットワークサーバにおいて動作することができる。
【0019】
ネットワーク110は、有線接続、無線接続、光ファイバ接続、または、それらの組み合わせを含んでよい。一般的に、ネットワーク110は、接続と、コンピュータ102とサーバコンピュータ114との間の通信をサポートするプロトコルとの任意の組み合わせであり得る。ネットワーク110は、例えば、ローカルエリアネットワーク(LAN)、インターネットのようなワイドエリアネットワーク(WLAN)、公衆交換電話ネットワーク(PSTN)のような電気通信ネットワーク、無線ネットワーク、公衆交換ネットワーク、衛星ネットワーク、セルラネットワーク(例えば、第5世代(5G)ネットワーク、ロングタームレボリューション(LTE)ネットワーク、第3世代(3G)ネットワーク、符号分割多元接続(CDMA)ネットワーク、等)、公衆陸上移動ネットワーク(PLMN)、メトロポリタンエリアネットワーク(MAN)、専用ネットワーク、アドホックネットワーク、イントラネット、光ファイバベースネットワーク、等、及び/又は、これら又は他のタイプのネットワークの組合せ、といった、種々のタイプのネットワークを含み得る。
【0020】
図1に示されるデバイスおよびネットワークの数および配置は、一つの例として提供されている。実際には、
図1に示されたものよりも、追加の装置及び/又はネットワーク、より少ない装置及び/又はネットワーク、異なる装置及び/又はネットワーク、または、異なる配置の装置及び/又はネットワークが存在し得る。さらに、
図1に示される2つ以上の(two or more)デバイスは、単一のデバイス内に実装されてよく、または、
図1に示される単一のデバイスは、複数の、分散デバイスとして実装されてよい。さらに、または代替的に、システム100のデバイスのセット(例えば、1つ以上のデバイス)は、システム100のデバイスの別のセットによって実行されるものとして説明される1つ以上の機能を実行してもよい。
【0021】
これから、
図2を参照すると、マーカ200のセットが示されている。一つ以上の実施形態において、ポーズグラフ再構成システム100(
図1)は、画像内のこれらのマーカを容易に見つけることができ、そして、一意のIDによってそれらを識別することができる。各マーカは、IDと関連付けることができ、これによってコンピュータは、ID番号を自動的に認識し、そして、ポーズグラフの対応する視点にそれを添付することができる。
【0022】
例えば、視点「03」において、ポーズグラフ再構成システム100(
図1)は、フロア上のマーカ200によって、2つの可視隣接視点「02」および「04」を自動的に検出することができる。次いで、ポーズグラフ再構成システム100は、3つの視点を有するポーズグラフを構成することができ、そして、「03」は、それぞれの「02」および「04」と接続された2つのエッジを有している。シーンの全てのイメージを検出することによって、ポーズグラフ再構成システム100は、ポーズグラフを構成することができる。異なる視点IDを有するマーカをコンピュータが区別できない場合に、この情報は、ユーザ入力によって収集(または補正)され得ることが理解されるだろう。そうした場合に、ユーザは、どのマーカがどの視点に対応するかをコンピュータに知らせる必要があり得る。
【0023】
接続されたビュー間の変換マトリクスは、3×3回転マトリクスR、および、接続されたビューの全てのペアと関連付けられ得る3×1変換ベクトルTを含む、4×4変換マトリクスTであってよい。例えば、変換マトリクスTi,j(Ri,jおよびti,jから構成される)は、カメラが視点iから視点jへどのように移動するかを記述する。3次元世界の座標において視点iにおけるカメラの位置を、次の表す。
Pi∈R3×1、then Pj=Ri,j・Pi+ti,j
【0024】
視点iおよび視点jについては、それらがキャプチャされた画像から相互に見ることができる場合、かつ、各視点のカメラの高さが既知である場合に、視点iから視点jへの変換マトリクス、すなわち、Mi,j(Ri,j and ti,j)は、次のように計算することができる。
【0025】
視点iおよび視点jのカメラ高さが、それぞれに、CiおよびCjであると仮定する。一般性を損なうことなく、異なる視点からのパノラマ画像は、W×Hの同じ解像度であると仮定する。ここで、W=2Hである。視点jのマーカが視点iのパノラマ画像における位置(uj,vj)で検出され、そして、視点iのマーカが視点jのパノラマ画像における位置(ui,vi)で検出されると仮定する。
【0026】
一般性を損なうことなく、カメラの中心は、デカルト座標における世界座標の原点であると仮定されている。すなわち、カメラの座標は(0,0,0)である。カメラが正のx軸に向かっており、負のz軸はフロア平面に向かい、そして、フロア/天井平面がx-y平面に平行であると仮定する。グラウンド面の水平方向の消失線(vanishing line)は、パノラマ画像の中間高さに存在している。
【0027】
従って、視点jの相対位置は、視点iの3次元座標系において、以下のように計算することができる。
xji=Ci・tan(νj・π/H)・sin(uj・2π/W) (1)
yji=Ci・tan(νj・π/H)・cos(uj・2π/W) (2)
zji=Cj-Ci (3)
【0028】
jからiまでの距離は、以下のとおりである。
【数1】
【0029】
同様に、視点iの相対位置は、視点jの3次元座標系において、以下のように計算することができる。
xij=Cj・tan(νi・π/H)・sin(ui・2π/W) (5)
yij=Cj・tan(νi・π/H)・cos(ui・2π/W) (6)
zij=Ci-Cj (7)
【0030】
iからjまでの距離は、以下のとおりである。
【数2】
【0031】
仮に、
【数3】
が、閾値より大きい場合は、何か間違ったことを示している。コンピュータは、この間違った画像ペアを破棄し、または、エラーメッセージをプロンプトすることができる。
【0032】
システム誤差を低減するために、一つの実施形態において、2つの視点間の距離は、dijとdjiの平均によって推定される。
すなわち、davg=(dij+dji)/2 (9)
【0033】
視点iから視点jに座標系を転換するために、座標系が、変換ベクトルt’
i,jによって変換され得る。一つの実施形態において、変換は、以下のように計算される。
t’
i,j=(-x
ji,-y
ji,-z
ji)
他の実施形態において、変換は、d
avgの調整なく、以下のように計算される。
t’
i,j=(-x
ij,-y
ij,-z
ij)
座標系は、所定のヨー角だけ回転させることができ、以下のように計算できる。
θ
yaw=arctan2(-y
ji,-x
ji)
-arctan2(y
ij,x
ij) (10)
ここで、arctan2は、以下のように定義される関数である。
【数4】
(11)
【0034】
対応する回転行列は、以下のとおりである。
【数5】
(12)
【0035】
従って、視点から視点への全体的な変換方程式は、以下のように表すことができる。
Pj=R’i,j・(Pi+t’i,j)
=R’i,j・Pi+R’i,j・t’i,j
=R’i,j・Pi+ti,j (13)
ここで、Ri,j=R’i,jおよびti,j=R’i,j・t’i,j
【0036】
グラウンドにおけるの各カメラ位置の下のマーカを認識することにより、カメラのポーズグラフを構築することができる。例えば、カメラBのマーカがカメラAによってキャプチャされた画像内で見える場合、ポーズグラフにおいてAとBとの間にエッジが構成され得る(ポーズグラフが方向付けされていないと仮定する)。カメラAのマーカがカメラBによってキャプチャされた画像内で見える場合、ポーズグラフにおいてAとBとの間にエッジが構成され得る(ポーズグラフが方向付けられていないと仮定する)。カメラAによってキャプチャされた画像内にカメラBのマーカが見え、かつ、同時に、カメラBによってキャプチャされた画像内にカメラAのマーカが見える場合、ポーズグラフにおいてAとBの間にエッジが構成され得る(ポーズグラフが方向付けされていないと仮定する)。本方法は、グラウンドにおける各カメラ位置の下のマーカを認識することにより、カメラ位置間の視認性(visibility)を推定することができる。カメラAによってキャプチャされた画像内にカメラBのマーカが見える場合、カメラBがカメラAを見ることができると推定され、または、カメラAおよびカメラBは互いに見えると推定される。カメラBによってキャプチャされた画像内にカメラAのマーカが見える場合、カメラAがカメラBを見ることができると推定され、または、カメラAおよびカメラBが互いに見えると推定される。カメラAによってキャプチャされた画像内にカメラBのマーカが見え、かつ、同時に、カメラBよってキャプチャされた画像内にカメラAのマーカが見える場合、カメラAおよびカメラBが互いに見えると推定され得る。本方法は、グラウンドにおける各カメラ位置の下のマーカを認識することにより、カメラ間の変換マトリクスを推定することができる。カメラの高さ(フロアまでの垂直距離)は、ユーザから入力され、アルゴリズムによって推定され、または、デフォルト値によって設定され得る。カメラAによってキャプチャされた画像内にカメラBのマーカが見え、同時に、Bカメラによってキャプチャされた画像内にカメラAのマーカが見える場合、AとBとの間の変換マトリクスを推定することができる。
【0037】
これから
図3を参照すると、パノラマ画像におけるグラウンド上のマーカを認識することによってカメラ間のポーズグラフおよび変換マトリクスを推定することに基づいて、VR/ARアプリケーション用のインドア建物の3次元再構成のためのプログラムによって実行される方法300のステップを説明する動作フローチャートが示されている。
【0038】
302において、方法300は、1つ以上のビューに対応する画像データを受信することを含み得る。
【0039】
304において、方法300は、受信された画像データ内の1つ以上のマーカを識別することを含み得る。
【0040】
306において、方法300は、識別されたマーカに基づいて、1つ以上のビューに対応するグラフを構築することを含み得る。
【0041】
図3は、1つの実施に係る例示を提供するだけであり、そして、異なる実施形態がどのように実施され得るかに関していかなる限定も意味しないことが理解されるだろう。示された環境に対する多くの修正が、設計および実施要件に基づいて行われ得る。
【0042】
図4は、一つの例示的な実施形態に従った、
図1に示されたコンピュータの内部および外部コンポーネントのブロック
図400である。
図4は、1つの実施に係る例示を提供するだけであり、そして、異なる実施形態が実装され得る環境に関するいかなる制限も意味しないことが理解されるべきである。示された環境に対する多くの修正が、設計および実施要件に基づいて行われ得る。
【0043】
コンピュータ102(
図1)およびサーバコンピュータ114(
図1)は、
図5に示される内部コンポーネント800A、B、および、外部コンポーネント900A、Bに係るそれぞれのセットを含み得る。内部コンポーネント800のセットそれぞれは、1つ以上のプロセッサ820、1つ以上のコンピュータ読取可能RAM 822、および、1つ以上のバス826上における1つ以上のコンピュータ読取可能ROM 824、1つ以上のオペレーティングシステム828、並びに、1つ以上のコンピュータ読取可能有形ストレージ装置830を含む。
【0044】
プロセッサ820は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアの組み合わせにおいて実装される。プロセッサ820は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、加速処理装置(APU)、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、または、別のタイプの処理コンポーネントである。いくつかの実施態様において、プロセッサ820は、機能を実行するようにプログラムされ得る1つ以上のプロセッサを含む。バス826は、内部コンポーネント800A、B間の通信を可能にするコンポーネントを含む。
【0045】
1つ以上のオペレーティングシステム828、ソフトウェアプログラム108(
図1)、およびサーバコンピュータ114(
図1)におけるポーズグラフ再構成プログラム116(
図1)は、それぞれのRAM 822の1つ以上を介して、それぞれのプロセッサ820の1つ以上による実行のために、それぞれのコンピュータ読取可能有形ストレージ装置830の1つ以上に保管される。
図4に示す実施形態において、コンピュータ読取可能有形ストレージ装置830それぞれは、内部ハードドライブの磁気ディスクストレージ装置である。代替的に、コンピュータ読取可能有形ストレージ装置830それぞれは、半導体ストレージ装置であり、ROM 824、EPROM、フラッシュメモリ、光ディスク、光磁気ディスク、ソリッドステートディスク、コンパクトディスク(CD)、デジタル汎用ディスク(DVD)、フロッピー(登録商標)ディスク、カートリッジ、磁気テープ、及び/又は、コンピュータプログラムおよびデジタル情報を補完することができる別のタイプの非一時的コンピュータ読取可能有形ストレージ装置、といったものである。
【0046】
内部コンポーネント800A、Bの各セットは、また、CD-ROM、DVD、メモリスティック、磁気テープ、磁気ディスク、光ディスク、または、半導体ストレージ装置といった1つ以上のポータブルコンピュータ読取可能有形ストレージ装置936から読み書きする(read from and write to)ためのR/Wドライブまたはインターフェイス832も含む。ソフトウェアプログラム108(
図1)およびポーズグラフ再構成プログラム116(
図1)といった、ソフトウェアプログラムは、それぞれのポータブルコンピュータ読取可能有形ストレージ装置936のうちの1つ以上に保管され、それぞれのR/Wドライブまたはインターフェイス832を介して読み込まれ、そして、それぞれのハードドライブ830へとロードされ得る。
【0047】
内部コンポーネント800A、Bの各セットは、また、ネットワークアダプタまたはインターフェイス836も含む。TCP/IPアダプタカード、無線Wi-Fiインターフェイスカード、または、3G、4G、または5G無線インターフェイスカード、もしくは、他の有線または無線通信リンク、といったものである。サーバコンピュータ114(
図1)上のソフトウェアプログラム108(
図1)およびポーズグラフ再構成プログラム116(
図1)は、ネットワーク(例えば、インターネット、ローカルエリアネットワーク、または、他のワイドエリアネットワーク)及びそれぞれのネットワークアダプタまたはインターフェイス836を介して、外部コンピュータからコンピュータ102(
図1)およびサーバコンピュータ114へダウンロードすることができる。ネットワークアダプタまたはインターフェイス836から、サーバコンピュータ114上のソフトウェアプログラム108およびポーズグラフ再構成プログラム116が、それぞれのハードドライブ830へとロードされる。ネットワークは、銅線、光ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、及び/又は、エッジサーバを含み得る。
【0048】
外部コンポーネント900A、Bのセットそれぞれは、コンピュータ表示モニタ920、キーボード930、および、コンピュータマウス934を含み得る。外部コンポーネント900A、Bは、また、タッチスクリーン、仮想キーボード、タッチパッド、ポインティングデバイス、および、他のヒューマンインターフェイスデバイスも含み得る。内部コンポーネント800A、Bのセットそれぞれは、また、コンピュータ表示モニタ920、キーボード930、および、コンピュータマウス934に対してインターフェイスするためのデバイスドライバ840も含む。デバイスドライバ840、R/Wドライブまたはインターフェイス832、および、ネットワークアダプタまたはインターフェイス836は、ハードウェアおよびソフトウェア(ストレージ装置830及び/又はROM 824に保管されている)を含む。
【0049】
本開示は、クラウドコンピューティングに関する詳細な説明を含むが、ここにおいて記載される教示の実装は、クラウドコンピューティング環境に限定されるものではないことが、予め理解される。むしろ、いくつかの実施形態は、現在知られており、または、後に開発される、任意の他のタイプのコンピューティング環境を用いて実施可能である。
【0050】
クラウドコンピューティングは、構成可能なコンピューティングリソース(ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)に係る共有プールへの便利で、オンデマンドなネットワークアクセスを可能にするためのサービス提供のモデルであり、最小限の管理努力、または、サービスのプロバイダとの対応で、迅速に供給され、かつ、リリースされ得る。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および、少なくとも4つの実装モデルを含み得る。
【0051】
特徴は、以下のとおりである。
オンデマンドセルフサービス:クラウド利用者は、必要に応じて自動的に、サービスプロバイダとの人的な対応を必要としないで、サーバ時間およびネットワークストレージといった、コンピューティング機能を一方的に提供することができる。
広域ネットワークアクセス:機能は、ネットワークにわたり利用可能であり、そして、異種のシン(thin)クライアントまたはシック(thick)クライアントプラットフォーム(例えば、移動電話、ラップトップ、およびPDA)による使用を促進する、標準メカニズムを通じてアクセスされる。
リソースプーリング:プロバイダのコンピューティングリソースは、マルチテナントモデルを使用して複数の利用者にサービス提供するためにプールされ、物理リソースおよび仮想リソースが、デマンドに応じて動的に割り当てられ、そして、再割り当てされる。利用者は、一般的に、提供されたリソースの正確な位置に関する制御や知識を持たないが、より高いレベルの抽象化で位置を特定することができる(例えば、国、州、またはデータセンタ)という点で、位置の独立性の意識が存在する。
迅速な順応性:機能は、場合によっては自動的に、急速にスケールアウトし、そして、急速にスケールインするために、迅速に、かつ、順応的に提供され得る。利用者にとって、提供(provisioning)に利用可能な能力は、しばしば、無制限であるように見え、そして、いかなる時もどんな量でも購入され得る。
測定されるサービス:クラウドシステムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、および、アクティブなユーザーアカウント)に適した抽象化に係るあるレベルでの測定(metering)機能を利用することにより、自動的にリソースの使用を制御し、そして、最適化する。リソースの使用は、モニタされ、制御され、かつ、報告することができ、利用されるサービスのプロバイダおよび利用者の両方のための透明性を提供している。
【0052】
サービスモデルは、以下のとおりである。
サービスとしてのソフトウェア(SaaS):利用者に提供される機能は、クラウドインフラ上で動作するプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ(Web)ブラウザ(例えば、ウェブベースのeメール)といった、シンクライアントインターフェイスを通じて、様々なクライアントデバイスからアクセス可能である。利用者は、基盤にある(underlaying)インフラストラクチャを、管理または制御しない。インフラストラクチャは、ネットワーク、サーバ、オペレーティングシステム、ストレージ、または、個々のアプリケーション機能さえも含むが、ユーザ固有のアプリケーション構成設定は可能な例外である。
サービスとしてのプラットフォーム(PaaS):利用者に提供される機能は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションを、クラウドインフラストラクチャ上に展開することである。利用者は、ネットワーク、サーバ、オペレーティングシステム、またはストレージを含む、基盤にあるクラウドインフラストラクチャを管理または制御しないが、展開されたアプリケーション、および、環境構成をホストしている可能なアプリケーションに対して制御を有している。
サービスとしてのインフラストラクチャ(IaaS):利用者に提供される機能は、処理、ストレージ、ネットワーク、および、他の基本的なコンピューティングリソースを提供することであり、利用者は、オペレーティングシステムおよびアプリケーションを含み得る、任意のソフトウェアを展開し、そして、実行することができる。利用者は、基盤にあるクラウドインフラストラクチャを管理または制御しないが、オペレーティングシステム、ストレージ、展開されたアプリケーションに対して制御を有し、かつ、選択されたネットワークコンポーネント(例えば、ホストファイアウォール)の可能な制限された制御を有する。
【0053】
展開モデルは、以下のとおりである。
プライベートクラウド:クラウドインフラストラクチャは一つの組織専用に運用される。組織または第三者によって管理され、そして、オンプレミス(on-premises)またはオフプレミス(off-premises)に存在し得る。
コミュニティクラウド:クラウドインフラストラクチャは、いくつかの組織によって共有され、そして、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、および、コンプライアンスの考慮事項)を有する特定のコミュニティをサポートする。組織または第三者によって管理され、そして、オンプレミスまたはオフプレミスに存在し得る。
パブリッククラウド:クラウドインフラストラクチャは、一般市民または大規模な業界グループに対して利用可能にされており、そして、クラウドサービスを販売する組織によって所有されている。
ハイブリッドクラウド:クラウドインフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)から構成されており、ユニークなエンティティのままであるが、データおよびアプリケーションのポータビリティ(portability)を可能にする標準化された、または、独自の技術(例えば、クラウド間の負荷分散のためのクラウドバースト)によって結合されている。
【0054】
クラウドコンピューティング環境は、サービス指向のものであり、ステートレス、低結合、モジュール性、および、意味論的相互運用性にフォーカスしている。クラウドコンピューティングの核心は、相互接続されたノードのネットワークを有するインフラストラクチャである。
【0055】
図5を参照すると、例示的なクラウドコンピューティング環境500が示されている。図示されるように、クラウドコンピューティング環境500は、1つ以上のクラウドコンピューティングノード10を含み、クラウド利用者によって使用されるローカルコンピューティングデバイス、例えば、パーソナルデジタルアシスタント(PDA)または携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、及び/又は、自動車コンピュータシステム54Nといったもの、を用いて通信することができる。クラウドコンピューティングノード10は、互いに通信することができる。それらは、物理的または仮想的に、上述のような、プライベート、コミュニティ、パブリック、またはハイブリッドクラウド、もしくは、それらの組み合わせといった、1つ以上のネットワークにグループ化(図示なし)され得る。これにより、クラウドコンピューティング環境500は、クラウド利用者がローカルコンピューティングデバイス上のリソースを維持する必要のない、サービスとしての、インフラストラクチャ、プラットフォーム、及び/又は、ソフトウェアを提供することができる。
図5に示されるコンピュータ装置54A-54Nのタイプは、単に例示的なものとして意図されていること、および、クラウドコンピューティングノード10およびクラウドコンピューティング環境500は、任意のタイプのネットワーク及び/又はネットワークアドレス指定可能接続にわたり(例えば、ウェブブラウザを使用して)任意のタイプのコンピュータ装置と通信することができることが理解される。
【0056】
図6を参照すると、クラウドコンピューティング環境500(
図5)によって提供される機能抽象化層のセット600が示されている。
図6に示されるコンポーネント、層、および機能は、単に例示的なものとして意図されており、そして、実施形態はこれに限定されるものではないことが、予め理解されるべきである。図示されるように、以下に、層および対応する機能が提供される。
【0057】
ハードウェアおよびソフトウェア層60は、ハードウェアおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例は、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、ストレージデバイス65、および、ネットワークおよびネットワークコンポーネント66を含む。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68を含む。
【0058】
仮想化層70は、抽象化層を提供し、そこから、以下の仮想エンティティの実施例が提供され得る。仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む、仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74、並びに、仮想クライアント75である。
【0059】
一つの例において、管理層80は、以下で説明される機能を提供することができる。リソースプロビジョニング81は、クラウドコンピューティング環境内のタスクを実行するために利用されるコンピューティングリソースおよびその他のリソースの動的な調達(procurement)を提供する。計測と価格(Metering and Pricing)82は、クラウドコンピューティング環境内でリソースが利用される際のコスト追跡、および、これらのリソースの消費に対する課金または請求を提供する。一つの例において、これらのリソースは、アプリケーションソフトウェアライセンスを含み得る。セキュリティは、クラウド利用者およびタスクのための身元確認(identity verification)、並びに、データおよび他のリソースに対する保護を提供する。ユーザポータル83は、利用者およびシステム管理者のためにクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、要求されるサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当ておよび管理を提供する。サービスレベルアグリーメント(SLA)企画と履行(fulfilment)85は、SLAに従って将来の要件が予測されるクラウドコンピューティングリソースの事前準備、および調達を提供する。
【0060】
ワークロード層90は、クラウドコンピューティング環境が利用され得る機能性の例を提供する。この層から提供されるワークロードおよび機能性の例は、マッピングとナビゲーション91、ソフトウェア開発とライフサイクル管理92、仮想教室教育配信93、データ分析処理94、トランザクション処理95、および、ポーズグラフ再構成96を含む。ポーズグラフ再構成96は、VR/ARアプリケーションのためのインドア建物の3次元再構成のために、パノラマ画像におけるグラウンド上のマーカを認識することによってカメラ間のポーズグラフおよび変換マトリクスを推定することができる。
【0061】
いくつかの実施形態は、任意の可能な技術的詳細レベルの集積化において、システム、方法、及び/又は、コンピュータ読取可能媒体に関し得る。コンピュータ読取可能媒体は、プロセッサに動作を実行させるためのコンピュータ読取可能プログラム命令を有しているコンピュータ読取可能非一時的記憶媒体を含み得る。
【0062】
コンピュータ読取可能記憶媒体は、命令実行装置による使用のための命令を保持し、かつ、保管することができる有形の装置であり得る。コンピュータ読取可能記憶媒体は、例えば、これらに限定されるわけではないが、電子ストレージ装置、磁気ストレージ装置、光ストレージ装置、電磁ストレージ装置、半導体ストレージ装置、または、これらの任意の適切な組み合わせであり得る。コンピュータ読取可能記憶媒体のより具体的な例に係る非網羅的リストは、以下を含む。ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読取り専用メモリ(CD-ROM)、デジタル汎用ディスク(DVD)、メモリスティック、フロッピー(登録商標)ディスク、記録された命令を有するパンチカード又は溝内の隆起構造といった機械的に符号化されたデバイス、および、これらの任意の適切な組み合わせ、である。ここにおいて使用されるように、コンピュータ読取可能記憶媒体は、電波または他の自由に伝搬する電磁波、導波管または他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)、または、ワイヤを通って伝送される電気信号といった、それ自体が一時的な信号であると解釈されるべきではない。
【0063】
ここにおいて説明されるコンピュータ読取可能プログラム命令は、コンピュータ読取可能記憶媒体から、それぞれの計算/処理装置へ、または、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、及び/又は、無線ネットワークを介して、外部コンピュータまたは外部ストレージ装置へ、ダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを含み得る。各計算/処理装置内のネットワークアダプタカードまたはネットワークインターフェイスは、ネットワークからコンピュータ読取可能プログラム命令を受け取り、そして、各計算/処理装置内のコンピュータ読取可能記憶媒体内に保管するために、コンピュータ読取可能プログラム命令を転送する。
【0064】
動作を実行するためのコンピュータ読取可能プログラムコード/命令は、アセンブラ命令、命令セットアーキテクチャ命令(ISA)、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、または、Smalltalk(登録商標)、C++、等といったオブジェクト指向プログラミング言語、および、「C」プログラミング言語または類似のプログラミング言語といった、手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書かれたソースコードまたはオブジェクトコードのいずれかであり得る。コンピュータ読取可能プログラム命令は、ユーザのコンピュータ上で完全に、スタンドアロンのソフトウェアパッケージとして、ユーザのコンピュータ上で部分的に、ユーザのコンピュータ上で部分的かつリモートコンピュータ上で部分的に、もしくは、リモートコンピュータまたはサーバ上で完全に、実行することができる。後者のシナリオにおいて、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む、任意のタイプのネットワークを介してユーザのコンピュータに接続されてよく、または、接続は、外部コンピュータに対して(例えば、インターネットサービスプロバイダを使用してインターネットを通じて)行われてよい。いくつかの実施形態において、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、または、プログラマブル論理アレイ(PLA)を含む電子回路は、態様または動作を実行するために、電子回路をパーソナライズするコンピュータ読取可能プログラム命令の状態情報を利用して、コンピュータ読取可能プログラム命令を実行することができる。
【0065】
これらのコンピュータ読取可能プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供され、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャート及び/又はブロック図のブロックにおいて指定される機能/行為を実行するための手段を生成するように、機械にさせる。これらのコンピュータ読取可能プログラム命令は、また、コンピュータ、プログラマブルデータ処理装置、及び/又は、他の装置を特定の方法で機能するように指示できるコンピュータ読取可能記憶媒体に保管されてもよく、その結果、そこに保管された命令を有するコンピュータ読取可能記憶媒体は、フローチャート及び/又はブロック図のブロックにおいて指定された機能/行為の態様を実行する命令を含む製造物品を含んでいる。
【0066】
コンピュータ読取可能プログラム命令は、また、コンピュータ、他のプログラマブルデータ処理装置、または、他の装置にロードされてよく、コンピュータ、他のプログラマブル装置、または、他の装置において実行される一連の動作ステップに、コンピュータ実施プロセスを生成させることができ、その結果、コンピュータ、他のプログラマブル装置、または、他の装置で実行される命令が、フローチャート及び/又はブロック図のブロックにおいて指定された機能/行為を実施する。
【0067】
図におけるフローチャートおよびブロック図は、様々な実施形態によるシステム、方法、およびコンピュータ読取可能媒体の可能な実施形態のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装するための1つ以上の実行可能な命令を含む、モジュール、セグメント、または命令の一部を表すことができる。本方法、コンピュータシステム、およびコンピュータ読取可能媒体は、図面に示されたものよりも、追加のブロック、より少ないブロック、異なるブロック、または、異なって配置されたブロックを含んでよい。いくつかの代替的な実装において、ブロックに記載された機能は、図に示された順序から外れて発生してよい。例えば、連続して示される2つのブロックは、実際には、同時、または、実質的に同時に実行されてよく、または、関連する機能に応じて、ブロックは、逆の順序で実行されてよい。ブロック図及び/又はフローチャート図の各ブロック、および、ブロック図及び/又はフロー図のブロックの組み合わせは、また、指定された機能又は動作を実行するか、または、特定目的のハードウェア及びコンピュータ命令の組み合わせを実行する特定目的のハードウェアベースのシステムによって実施され得ることにも留意されたい。
【0068】
ここにおいて説明された、システム及び/又は方法は、ハードウェア、ファームウェア、または、ハードウェアとソフトウェアの組み合わせの異なる形態で実施され得ることが明らかだろう。これらのシステム及び/又は方法を実施するために使用される実際の特殊化された制御ハードウェアまたはソフトウェアコードは、実施を制限するものではない。従って、システム及び/又は方法の動作および挙動は、ここにおいて、特定のソフトウェアコードを参照することなく説明されている。ソフトウェアおよびハードウェアは、ここにおける説明に基づいてシステム及び/又は方法を実施するように設計され得ることが理解される。
【0069】
ここにおいて使用されるいかなる要素、行為、または命令も、明示的に記述されない限り、重要または必須であると解釈されるべきではない。また、ここにおいて使用される場合、冠詞「1つ(“a”および“an”)」は、1つ以上の項目を含むように意図されており、そして、「1つ以上(“one or more”)」と互換的に使用され得る。さらに、ここにおいて使用されるように、用語「セット(“set”)」は、1つ以上の項目(例えば、関連項目、非関連項目、関連項目と非関連項目の組み合わせ、等)を含むように意図されており、そして、「1つ以上」と互換的に使用することができる。1つの項目のみが意図される場合、用語「1つ(“one”)」または類似の言語が使用される。また、ここにおいて使用される用語「有する(“has”、“have”、“having”)」、等は、オープンエンドの用語であることが意図されている。さらに、語句「に基づいて(“based on”)」は、明示的に別段の記載がない限り、「少なくとも部分的に基づいて(“based, at least in part, on”)く」を意味するように意図されている。
【0070】
種々の態様および実施形態の記載が、説明のために提示されてきたが、開示された実施形態について網羅的であり又は制限的であるように意図されたものではない。機能の組み合わせが請求項に記載され、かつ/あるいは、明細書に開示されているとしても、これらの組み合わせは、可能な実施の開示を制限するように意図されたものではない。実際、これらの機能の多くは、請求項に具体的に記載されていない、及び/又は、明細書に開示されていない方法で組み合わされてよい。以下に列挙される各従属クレームは、1つの請求項のみに直接的に依存し得るが、可能な実装の開示は、各従属クレームを、請求項セットにおける他の全てのクレームと組み合わせて含む。多くの修正および変形が、説明された実施形態の範囲から逸脱することなく、当業者にとっては明らかだろう。ここにおいて使用される用語は、実施形態の原理、市場で見出される技術に対する実際的な適用または技術的な改善を最もよく説明するために、または、当業者以外の者がここにおいて開示される実施形態を理解することができるように選択されたものである。