様々な実施形態は概して、ランダムサンプルコンセンサス(RANSAC)アルゴリズムを実行すべく、順次及び並列処理のハイブリッドを採用するための複数の技術を対象とする。複数の提示モデルが導出されるデータセットの複数のサブセットの生成は、逐次的に実行され得る。しかしながら、複数の提示モデルの複数のセットは、並列して導出され及びテストされる。更に、どの提示モデルがデータセットに最も適合するかという決定、導出され及びテストされなければならない複数の提示モデルの数の計算、及びより多くの提示モデルを導出及びテストするか否かという決定は、逐次的に実行されるものの、あまり頻繁には実行されない。いくつかの部分の並列な実行、及び他の複数の部分が逐次的に実行される頻度の減少は、RANSACを実行するのに必要とされる時間を減少する。並列して実行される複数の部分は、複数の逐次的な部分を実行するシングルコア及び/又はシングルプロセッサコンポーネントとはアーキテクチャの点で異なる1又は複数のプロセッサコンポーネントの1又は複数のコアにより実行され得る。
本質的には、RANSACのイタレーションを実行する上で生じることは、RANSACを実行する長期の典型的な完全に逐次的アプローチの各イタレーションにおいて生じることから再定義される。そのような再定義されたイタレーションのそれぞれにおいて、データセットの複数のサブセットが生成され、複数の提示モデルの新たなセットが導出され及びテストされる。複数の提示モデルのそれぞれの新たなセットの導出及びテストに続いて、データセットに最も適合する新たなセットの1つの提示モデルは、前に導出され及びテストされた全てのセットの複数の提示モデルの全ての中から、全体的に最も適合したものであると前に決定された提示モデルと比較される。新たなセットの最も適合する提示モデルが、複数の提示モデルの全ての前のセットからの全体的に最良の提示モデルよりもデータセットにより良好に適合する場合、新たなセットの最も適合する提示モデルは、新たな全体的に最良の提示モデルになる。新たなセットの最も適合する提示モデルが、新たな全体的に最良の提示モデルになる場合、導出され及びテストされることを必要とする複数の提示モデルの合計数は、新たな全体的に最良の提示モデルがデータセットに適合する度合いに少なくとも部分的に基づいて再計算される。これまで導出され及びテストされた複数の提示モデルの数は次に、(再計算されようがされなかろうが)導出され及びテストされることを必要とする複数の提示モデルの数と比較され、複数の提示モデルの別のセットを導出及びテストする別のイタレーションが実行されるべきか否かを決定する。導出され及びテストされるべき複数の提示モデルのセットがこれ以上ないことが決定された時点で、全体的に最良の提示モデルである提示モデルはどれでも、RANSACの実行により導出されるモデルになる。
逐次的に実行されるRANSACアルゴリズムの複数の部分は、1つのプロセッサコンポーネントのシングルコアによって実行され得る。そのプロセッサコンポーネントのそのコアは、限定されないものの確率計算を実行することを含むそれらの複数の部分を逐次的態様で実行することをより好適とさせる1又は複数の特性を有することに基づいて選択され得る。並列して実行されるRANSACアルゴリズムの他の複数の部分は、同一のプロセッサコンポーネント又は異なるプロセッサコンポーネントのいずれかの1又は複数の他のコアにより実行され得る。1又は複数の他のコアは、複数のスレッドを実行し、及び/又はデータのsingle−instruction multiple−data(SIMD)並列処理を実行する機能を含むがそれに限定されず、1又は複数の他のコアに、並列してそれらの複数の部分を実行することをより好適とさせる1又は複数の特性を有することに基づいて選択され得る。
いくつかの実施形態において、逐次的態様でRANSACの複数の部分を実行する上で採用されるコアは、コンピューティングデバイスの中央処理装置(CPU)のものであり得、並列的方法でRANSACの他の複数の部分を実行する上で採用される1又は複数の他のコアは、そのコンピューティングデバイスのグラフィックス処理装置(GPU)のものであり得る。CPU及びGPUは、コンピューティングデバイスの同一のプロセッサコンポーネント内の同一の半導体ダイ上に実装され得る。代替的に、CPU及びGPUは、コンピューティングデバイスのシングルプロセッサコンポーネントのマルチチップモジュール(MCM)内に保持され及び相互接続される独立した半導体ダイで実装され得る。更に別の選択肢として、GPUは、CPUを組み込むコンピューティングデバイスのメインプロセッサコンポーネントの制御のもとでアクセス可能で動作するコンピューティングデバイスの別個のコントローラプロセッサコンポーネントコントローラ(例えば、グラフィックスサブシステムを実装するグラフィックスコントローラ)の一部として実装され得る。
異なる複数のコアの物理的実装に関わらず、逐次的態様でRANSACの複数の部分を実行する上で採用されるコア、及び並列的方法でRANSACの他の複数の部分を実行する1又は複数の他のコアは、コアと、1又は複数の他のコアとの両方にアクセス可能なストレージの共有ストレージスペースを経由して情報を交換し得る。更に、共有ストレージスペースは、キャッシュにより少なくとも部分的にカバーされている様々なアドレスでアクセス可能であり得る。交換された情報、及びキャッシュの複数のキャッシュラインの複数の相対的サイズに応じて、相当な実行上の利点が、共有ストレージスペースへ及び/又はそこから情報を格納及び/又は取得することと関連する複数のレイテンシを避ける態様で、キャッシュを介してそのような情報の交換を経由して実現され得る。
モデルが導出されるべきデータセット、及び/又は導出されるべきモデルの特性を示す定義データは、1又は複数の他のコンピューティングデバイスから、異なる複数のコアを組み込むコンピューティングデバイスにより受信され得る。このことは、コンピューティングデバイスが、「サーバファーム」のような、RANSACと同じような複数のタスクを実行すべく利用可能とされたコンピューティングデバイスのセットにおいて多数のコンピューティングデバイスの1つである場合であり得る。例として、データセットからモデルを導出すべく、RANSACを実行する要求が、提出デバイスにより、コンピューティングデバイスに提出され得る。そのような要求を受信する上で、コンピューティングデバイスは、提出デバイスから定義データを受信し得る。更に、要求は、データセットをストレージサーバとは別々に取得するコンピューティングデバイスのための指標を含み得る。
代替的に、データセット及び/又はモデルの特性の仕様は、コンピューティングデバイス内に生成され得る。このことは、画像処理において複数のオブジェクトを識別すべく複数の視覚的視点を用いる(例えば、画像認識におけるホモグラフィ)ことの一環として、2又はそれより多いカメラのアレイにより撮像される2又はそれより多いフレームにおいて複数の画素の複数のセット間の相関関係を識別するなど、アプリケーションルーチンが、実行されるべきRANSACに、より大きなタスクの一部としてモデルを導出するよう求める場合であり得る。
RANSACの複数の部分のそのようなハイブリッドの順次及び並列実行を通してモデルを導出すると、モデルそのものを記述する情報、又は導出されるモデルに基づいて後の逐次的処理から生成される他のデータのいずれかが、使用のため別のデバイスに送信され得る。例として、RANSACが、オブジェクトの3次元モデルを識別及び生成するなどより大きいタスクの一部としてモデルを導出するように採用される場合、そのオブジェクトの視覚化を含む結果データが、ディスプレイ上に視覚的に提示されるべく視聴デバイスに送信され得る。代替的に、そのような視覚化は、コンピューティングデバイスにより、視覚的に直接提示され得る。
本明細書で用いられる複数の表記及び用語を全体的に参照すると、後に続く発明の詳細な説明の複数の部分は、コンピュータ又は複数のコンピュータのネットワーク上で実行されるプログラム手順の観点から提示され得る。これらの手順の説明及び表現は当業者により用いられ、それらの動作の本質を最も効率的に他の当業者に伝達する。手順はここで、概して、所望の結果をもたらす複数のオペレーションの首尾一貫したシーケンスであると考えられる。これらのオペレーションは、物理量の物理的な操作を必要とするものである。通常、必ずしもそうではないが、これらの量は、格納され、転送され、組み合わされ、比較され、さもなければ操作されることが可能な電気、磁気又は光信号の形式を取る。これは、時には、主に共通使用のために、これらの信号をビット、値、要素、シンボル、文字、用語、数等を指すのに便宜的あることを示す。しかしながら、これら及び同様の用語の全てが、適切な物理量と関連付けられるべきであり、単にこれらの量に適用される便宜的なラベルであることに留意すべきである。
更に、これらの操作はしばしば、人間のオペレータにより実行される知的活動と通常関連付けられる、追加又は比較のような用語で言及される。しかしながら、1又は複数の実施形態の一部を形成する本明細書で説明される複数のオペレーションのいずれかにおいて、殆どの場合、人間のオペレータのそのような機能は必要とされない、又は望まれない。むしろ、これらのオペレーションは、機械のオペレーションである。様々な実施形態のオペレーションを実行するための有用な複数の機械は、本明細書における教示に従って書き込まれた範囲内で格納されるコンピュータプログラムにより選択的に達成又は構成されるような汎用デジタルコンピュータを含み、及び/又は必要な目的のために特別に構築された装置を含む。様々な実施形態はまた、これらのオペレーションを実行するための装置又はシステムにも関連する。これらの装置は、必要な目的のために特別に構築され得、又は、汎用コンピュータを含み得る。これらの様々な機械のために必要な構造は、以下の説明から明らかになるであろう。
ここで図面を参照するにあたり、同様の参照番号は、全体にわたって同様の要素に言及するために用いられる。以下の説明では、説明の目的のために、多数の具体的な詳細がその完全な理解を提供するべく明記される。しかしながら、複数の新規な実施形態がこれらの具体的な詳細なく実施可能であることは明らかであり得る。他の複数の例では、周知の複数の構造及びデバイスが、その説明を容易にすべく、ブロック図の形式で示される。特許請求の範囲に記載の範囲内の全ての修正、均等物及び代替手段をカバーする意図がある。
図1は、提出デバイス100、ストレージサーバ300、コンピューティングデバイス500、及び視聴デバイス700のうち1又は複数を組み込むモデル処理システム1000の実施形態のブロック図を示す。モデル処理システム1000において、定義データ130において定義される特性を有するモデルは、コンピューティングデバイス500によりデータセット330から導出され、データセット330は、複数のアウトライア(例えば、「ノイズ」である複数の要素)を高い割合で含むデータセットであり得る。定義データ130は、モデルを導出すべくRANSACを実行する提出デバイス100から受信される要求の一部として提出デバイス100からコンピューティングデバイス500により受信され得る。データセット330は、ストレージサーバ300からコンピューティングデバイス500により取得され得、そのような取得は、データセット330が格納された位置としてストレージサーバ300の提出デバイス100から要求が受信されるという指標に応答して、コンピューティングデバイス500により実行され得る。しかしながら、他の複数の実施形態において、定義データ130又はデータセット330の一方又は両方が、別のコンピューティングデバイスにより受信される代わりに、コンピューティングデバイス500内に完全に生成され得る。
コンピューティングデバイス500によるモデルの導出に続いて、コンピューティングデバイス500は、モデルを導出することを含むより大きなタスクを実行する上で、画像データ730を送信し得、モデルの視覚化を伝達し、又はコンピューティングデバイス500により生成される画像を伝達する。これらのコンピューティングデバイスの各々は、デスクトップコンピュータシステム、データ入力端子、ラップトップコンピュータ、ネットブックコンピュータ、タブレットコンピュータ、ハンドヘルドパーソナルデータアシスタント、スマートフォン、スマートメガネ、スマート腕時計、デジタルカメラ、衣類に組み込まれる装着式のコンピューティングデバイス、車両(例えば、車、自転車、車椅子等)に統合されるコンピューティングデバイス、サーバ、サーバのクラスタ、サーバファーム等を限定されることなく含む、様々なタイプのコンピューティングデバイスのいずれかであり得る。
示されるように、これらのコンピューティングデバイス100、300、500、及び700は、複数のデータセット、モデルの特性の定義データ、画像データ、及び/又は関連データを、ネットワーク999を通して伝達する、複数の信号を交換する。しかしながら、これらのコンピューティングデバイスのうち1又は複数は、データセットからのモデルの導出、又はそのモデルの使用とは全く無関係な他のデータを、互いに、及び/又はネットワーク999を介して更に他のコンピューティングデバイス(不図示)と交換し得る。様々な実施形態において、ネットワーク999は、おそらく単一の建物又は他の比較的限定された領域内に広範囲に及ぶことが制限される単一のネットワーク、おそらく相当な距離を拡張する接続されたネットワークの組み合わせであり得、及び/又は、インターネットを含み得る。従って、ネットワーク999は、電気的並びに/若しくは光学的に導電性のあるケーブル配線を採用する有線技術、及び赤外線、無線周波数又は他の形式の無線伝送を採用する無線技術を限定することなく含む、信号が交換され得る様々な通信技術(又はその組み合わせ)のいずれかに基づき得る。
複数の代替的な実施形態において、提出デバイス100、ストレージサーバ300、及び視聴デバイス700のうち1又は複数は、完全に異なる態様において、コンピューティングデバイス500に結合され得る。更に他の複数の実施形態において、定義データ130、データセット330、及び画像データ730のうち1又は複数は、取り外し可能な媒体(例えば、フラッシュメモリカード、光学ディスク、磁気ディスク等)を介してこれらのコンピューティングデバイス間で伝達され得る。
様々な実施形態において、コンピューティングデバイス500は、コンピューティングデバイス300をネットワーク999に結合すべく、プロセッサコンポーネント550、キャッシュ555、ストレージ560、ディスプレイ580、コントローラ600、及びインタフェース390のうちの1又は複数を組み込む。プロセッサコンポーネント550は、少なくとも1つのコア551を組み込む。ストレージ560は、定義データ130、データセット330、画像データ730、ワーキングデータ335、テストデータ530、制御ルーチン540、及び結果データ630のうちの1又は複数を格納する。コントローラ600は、プロセッサコンポーネント650及びストレージ660のうちの1又は複数を組み込む。プロセッサコンポーネント650は、1又は複数のコア651を組み込む。ストレージ660は、制御ルーチン640を格納する。共有ストレージ領域565は、ストレージ560内に規定され、ストレージ560の複数のストレージ位置のサブセットが、複数のプロセッサコンポーネント550及び650の両方にアクセス可能となり、それらの間でデータセット330、テストデータ530、及び結果データ630を含む情報の交換を可能にさせる。しかしながら、ストレージ560内にデータを格納し、又はそこからデータを取得する上で複数のレイテンシによりもたらされる遅延を避ける態様で、複数のプロセッサコンポーネント550及び650の間で交換される少なくともいくつかの情報がキャッシュ555を通して交換され得るように、共有ストレージ領域565の少なくとも一部は、キャッシュ555によりキャッシュされる様々なアドレスでアクセス可能である。
制御ルーチン540は、様々な機能を実行するロジックを実装するコンピューティングデバイス500のメインプロセッサコンポーネントとしての役割を担うプロセッサコンポーネント550上で動作可能な命令列を組み込む。いくつかの実施形態において制御ルーチン540を実行することにおいて、プロセッサコンポーネント550は、前述のように、定義データ130及びデータセット330の一方又は両方を他の複数のコンピューティングデバイスから受信し得、又は定義データ130及びデータセット330の一方又は両方を生成し得る。プロセッサコンポーネント550は次に、定義データ130及びデータセット330をストレージ560に格納する。その際、プロセッサコンポーネント550は、データセット330を共有ストレージ領域565に格納し得、そこでデータセット330は、複数のプロセッサコンポーネント550及び650の両方にアクセス可能になる。
定義データ130は、RANSACを介して導出されるべき数学モデルの様々な特性の指標を含み、これには数学モデルの所望のフォーマット(例えば、方程式、マトリックス、又は数式の更に別のフォーマット)の指標が含まれる。例として、導出されるべき数学モデルが、線、平面、曲線、楕円、多角形等のような幾何形状からなる場合、定義データ130は、導出されるべき数学モデルのタイプが、その幾何形状に含まれる複数の点の複数の座標の複数の値の間の幾何関係を表す幾何方程式のフォーマットを有するべきであることを示し得る。他の複数の例において、定義データ130は、変換(例えば、空間領域と周波数領域との間、又は2つの空間座標系の間)を表すモデルの所望のフォーマットが、複数の係数のマトリックスであることを示し得る。導出されるべきモデルのフォーマットの指標はまた、プロセッサコンポーネント550に、モデルを導出するのに必要とされるデータセット330からのデータ要素の最小数がいくつであるかという指標を提供する。RANSACに良く知られるものの中で、そのような最小数の要素はしばしば、ミニマルサンプルセット(MSS)と呼ばれる。MSSに組み込まれる複数の要素のそれぞれは、モデルが導出されるべきデータセットからランダムに選択される。
プロセッサコンポーネント550は次に、テストデータ530として、プロセッサコンポーネント650に提供されるべき複数のMSSのセットを生成する。これらの複数のMSSのそれぞれを構成するデータの複数の要素は、データセット330を構成する複数のデータ要素からランダムに選択される。セットにおける複数のMSSの数は、プロセッサコンポーネント650が並列して実行可能である一連の計算のインスタンスの数に完全に基づき得る。例として、プロセッサコンポーネント650は、特定の最大数までの実行のスレッドを並列して実行可能であり得、それぞれのスレッドにおいて、命令列が他の複数のスレッドとは独立に実行される。いくつかの実施形態において、プロセッサコンポーネント650の複数のコア651のそれぞれは、そのような複数のスレッドのそれぞれ1つを、他の複数のコア651のそれぞれによる別のスレッドの実行と並列して実行可能であり得る。 代替的に又はそれに加えて、複数のコア651のそれぞれは、レジスタセット、及び/又は、同一の数学及び他の複数のオペレーションが完全に別個である複数の断片のデータ上で同時に実行されることが可能である複数のSIMDオペレーションをサポートする他の複数の特徴を組み込み得る。言い換えると、プロセッサコンポーネント550は、プロセッサコンポーネント650が複数のオペレーションを並列して実行することが可能であるデータのセットの数に一致する複数のMSSを生成する。
プロセッサコンポーネント550はまた、定義データ130から以前に取得されたような所望のフォーマットの指標など、テストデータ530において導出されるべきモデルの特性の複数の指標を格納する。プロセッサコンポーネント550は更に、複数の提示モデルのそれぞれをテストする上で、プロセッサコンポーネント650により採用されるべきテストデータ530に適合閾値を格納する。プロセッサコンポーネント550は次に、プロセッサコンポーネント650に合図して、テストデータ530内の情報を用いて、複数の提示モデルのセットを生成させ、適合閾値を用いてデータセット330との適合の度合いに関してそれらをテストさせ、プロセッサコンポーネント550に結果データ630におけるそれらのテストの結果を提供させる。
制御ルーチン640は、様々な機能を実行するロジックを実装するコンピューティングデバイス500のコントローラ600のコントローラプロセッサコンポーネントとしての役割を担うプロセッサコンポーネント650上で動作可能な命令列を組み込む。制御ルーチン640を実行する上で、及びプロセッサコンポーネント550からの信号に応答して、プロセッサコンポーネント650は、テストデータ530においてプロセッサコンポーネント550により提供される複数のMSSのそれぞれに対するものついて、複数の提示モデルのセットを生成する。プロセッサコンポーネント650は、プロセッサコンポーネント650のアーキテクチャにおいて実装され得るような複数のスレッド、SIMDサポート、及び/又は他の並列処理技術の実行をサポートする複数のコア651を使用することで、セットの複数の提示モデルの全てのこの生成を並列して実行する。
複数のMSSのそれぞれに対する提示モデルを導出した後で、プロセッサコンポーネント650は次に、データセット330内のデータの複数の要素の全てで複数の提示モデルのそれぞれをテストする。より具体的には、複数の提示モデルのそれぞれに対して、プロセッサコンポーネント650は、データセット330のいくつのデータ要素が、適合閾値内の程度まで提示モデルに適合するのかをチェックする。それぞれの提示モデルに対して、適合閾値内で適合する複数のデータ要素は、その提示モデルの「インライア」であると決定され、適合閾値内で適合しない複数のデータ要素は、その提示モデルの「アウトライア」であると決定される。RANSACに良く知られるものの中で、データセットからの提示モデルの全てのインライアのセットはしばしば、「コンセンサスセット」と呼ばれる。プロセッサコンポーネント650は、結果データ630においてプロセッサコンポーネント650によって導出された複数の提示モデルの全ての指標を格納する。プロセッサコンポーネント650はまた、結果データ630における複数の提示モデルのそれぞれのコンセンサスセットにいくつのインライアが存在するかの複数の指標を格納する。プロセッサコンポーネント650は次に、プロセッサコンポーネント550に、複数の提示モデルのこのセットの導出及びテストが完了したという指標を合図する。
図3は、共有ストレージ領域565を介した複数のプロセッサコンポーネント550及び650間でのそのような情報交換の例示的な実施形態をより詳細に示す。示されるように、プロセッサコンポーネント550は、データセット330から複数のMSS533のセットを生成し、複数のMSS533のセットをテストデータ530に含める。プロセッサコンポーネント550はまた、テストデータ530にモデル特性531を含め、プロセッサコンポーネント650に対するモデルの所望のフォーマットとしてそのような特性を指定する。プロセッサコンポーネント550は更に、適合閾値537を含め、提示モデルのインライアであると決定され、ひいては、そのモデルのコンセンサスセットにおいて含まれるべく、その提示モデルにデータセット330のそれぞれのデータ要素が適合しなければならない度合いを指定する。
図3にまた示されるように、プロセッサコンポーネント651は、複数のコア651の提供を通して並列処理を可能とし、複数のコア651のそれぞれが、他の複数のコア651と並列して少なくとも1つのスレッドの実行をサポートすることが可能である。プロセッサコンポーネント650による制御ルーチン640の実行中に、複数のコア651のそれぞれは、モデル特性531と、テストデータ530の複数のMSS533の対応するものを共有ストレージ領域565内から取得する。複数のコア651のそれぞれは次に、モデル特性531及び複数のMSS533の対応するものを用いて、対応する提示モデルを生成する。複数のコア651のそれぞれは次に、データセット330及びテストデータ530の適合閾値537を取得する。複数のコア651のそれぞれは、データセット330の複数のデータ要素のそれぞれの適合の度合いを対応する提示モデルでテストし、その対応する提示モデルのコンセンサスセットのインライアがどれであり、アウトライアがどれであるのかを決定する。複数のコア651のそれぞれは次に、その対応する提示モデル636の仕様を、その対応する提示モデルのコンセンサスセットにおけるインライアの数を指定するモデル適合結果637の指標と共に、結果データ630に格納する。
図4は、共有ストレージ領域565を介したそのような情報交換の別の例示的実施形態を、より詳細に示す。再び、プロセッサコンポーネント650は、複数のMSS533(より具体的には533a〜dとラベリングされる)を、モデル特性531及び適合閾値537と共に受信する。しかしながら、図3の例示的な実施形態において示され、議論されたものとは異なり、図4において、プロセッサコンポーネント650の複数のコア651のうちの少なくとも1つは、レジスタセット652を含み、SIMDオペレーションに対するサポートをそれぞれのレジスタが提供することの一環として複数のレーン653a〜dに分けられ、同一の数学演算が複数の独立したデータ上で並列して実行されることが可能である。
SIMDオペレーションを使用することで並列処理に対してそのようなサポートを使用することの一環として、複数のMSS533a〜dのそれぞれは、複数のレーン653a〜dの異なるものにそれぞれ割り当てられる。複数のレーン653a〜dのそれぞれにおいて、モデル特性531及び複数のMSS533a〜dの対応するものが、対応する提示モデルを生成するように用いられる。データセット330及び適合閾値537が次に取得され、レーン653a〜dのそれぞれにおいて使用され、データセット330の複数のデータ要素のそれぞれの適合の度合いを、対応する提示モデルでテストし、データセット330のどのデータ要素が、対応する提示モデルのコンセンサスセットのインライアであるかを決定する。レーン653a〜dのそれぞれに関して、対応する提示モデルの対応する仕様636a〜d(それぞれが仕様636の例である)が結果データ630に格納される。また、レーン653a〜dのそれぞれに関して、対応するコンセンサスセットにおいてインライアの数を指定するモデル適合結果637a〜d(それぞれがモデル適合結果637の例である)の対応する指標がまた、結果データ630に格納される。
従って、説明されたように、及び、図3及び4において示されたように、複数の提示モデルの並列した導出及びテストに対するサポートは、複数のコア651の提供を通して、又は複数のコア651のうちの1つのレジスタセット652のレジスタにおいて複数のレーンの提供を通して提供され得る。更に他の複数の実施形態において、両方のアプローチが組み合わされ得、プロセッサコンポーネント650が複数のコア651を組み込み、それらのコアのそれぞれが、複数のレーンをサポートする複数のレジスタ652のレジスタセットを組み込む更により大きな並列処理を可能とする。
図1に戻り、制御ルーチン540を更に実行する上で、及びテストデータ530の複数のMSSのセットに対する複数の提示モデルのセットの導出及びテストが完了するというプロセッサコンポーネント650からの信号に応答して、プロセッサコンポーネント550は、新たなセットのどの提示モデルが最良であるかを決定する。いくつかの実施形態において、プロセッサコンポーネント550は、複数の提示モデルの新たなセットの複数の提示モデルのそれぞれのコンセンサスセットにいくつのインライアがあるかという結果データ630における複数の指標を比較することにより、そのようにし得る。そのコンセンサスセットにおけるインライアの最大数を有する新たなセットの複数の提示モデルのうちの1つが次に、複数の提示モデルの新たなセットの最良の提示モデルであるとみなされる。新たなセットにおける複数の提示モデルの最良のものは次に、前に導出されてテストされた複数の提示モデルの複数のセットの全てからの全体的に最良の提示モデルと比較される。前のセットの全てで全体的に最良の提示モデルの仕様は、データセット330のいくつのデータ要素がそのコンセンサスセットにおいてインライアであるかという指標と共に、ワーキングデータ335の一部として格納及び保持され得る。複数の提示モデルの新たなセットにおける複数の提示モデルの最良のものが、前に導出されてテストされた複数の提示モデルの複数のセットの全てで全体的に最良の提示モデルよりも良好であると決定された場合、新たなセットにおける複数の提示モデルの最良のものが、新たな全体的に最良の提示モデルになる。その場合、新たなセットにおける複数の提示モデルの最良のものの仕様は、データセット330のいくつのデータ要素がそのコンセンサスセットにおいてインライアであるかという指標と共に、ワーキングデータ335に格納される。
前に導出されテストされた複数の提示モデルのセットの全てで全体的に最良の提示モデルが、複数の提示モデルの新たなセットの最良の提示モデルと置換される場合、プロセッサコンポーネント550は、複数の提示モデルの全てから、所定の度合いの確率内でデータセット330に最も適合する正確なモデルを導出するのに、導出されてテストされなければならない提示モデルの全体数を再計算し得る。前に導出されてテストされた複数の提示モデルのセットの全てで全体的に最良の提示モデルが置換されるか否かに関わらず、これまで生成されテストされた複数の提示モデルの数は、複数の提示モデルの別のセットが導出されてテストされるべきであるかどうかを決定するのに導出されてテストされなければならない提示モデルの全体数と比較される。そうでない場合、現在の全体的に最良の提示モデルである(その仕様がワーキングデータ335において保持される)提示モデルであればどのようなものであっても、RANSACのこの実行により導出されるモデルになる。プロセッサコンポーネント550はまた、導出されてテストされなければならない複数の提示モデルの全体数と共に、ワーキングデータ335の一部としてこれまで生成されてテストされた複数の提示モデルの数を格納及び保持し得る。
いくつかの実施形態において、RANSACが正確なモデルであるとして不正確な提示モデルを不規則に選択する確率(1-WC)であって、式中、Wはこれまでに導出されてテストされたものの中から全体的に最良の提示モデルのコンセンサスセットにおけるインライアの数であって、CはそれぞれのMSSを生成すべくデータセット330からランダムに選択された複数のデータ要素の数である。不正確な提示モデルは、正確なモデルのアウトライアである少なくとも1つのランダムに選択されたデータ要素を含む、MSSから導出された提示モデルである。従って、Kは導出されてテストされなければならない提示モデルの全体数であるとすると、複数の提示モデルが導出される全てのMSSが正確なモデルの少なくとも1つのアウトライアを含む結果、複数の提示モデルの1つも正確でない確率は(1-WC)Kである。
結果として、Kは、(1−WC)Kを1−pの許容障害閾値と等しいか、それより小さいものにすべく、十分大きいものであるように選択されるべきで、式中pは、正確なモデルに到達する所望の確度と関連付けられる所定の信頼レベルである。従って、そのような複数の実施形態において、Kの値は以下のように計算される。
従って、そのような複数の実施形態において、複数のMSSのセットを生成するそれぞれのイタレーションと、複数の提示モデルのセットの導出及びテストの両方とに続いて、これまで導出されてテストされた提示モデルの数は、そのような別のイタレーションを実行すべきか否かを決定するのに必要とされる提示モデルの全体数Kと比較される。いくつのプロセッサコンポーネント650が並列して導出してテストをすることが可能であるかということに基づく、多数の提示モデルで複数の提示モデルのそれぞれのセットが構成されるとすると、複数のイタレーションを通して実際に導出されてテストされる提示モデルの数は、それぞれのセットにおける提示モデルの数の倍数であり得る。従って、導出されてテストされた提示モデルの数は、比較的少量で導出されてテストされるのに必要とされる提示モデルの数Kを最終的に超え得る。
図5は、並列及び順次処理のハイブリッドでRANSACを実行する実施形態の例示的使用を示す。これは、平面の複数の点のセットに最も適合する線の数学モデルを求める非常に簡略化された例であって、そのようなそれぞれの点は、データセット330の一部であることに留意すべきである。当業者に良く知られるように、複数の軸X及びYにより定義される平面内に延びる線は、典型的にy=ax+bのような方程式で説明され、a及びbの複数の値は、示された線の正確なモデルを導出すように決定されなければならない。定義データ130は、プロセッサコンポーネント650により導出されるべき複数の提示モデルの所望のフォーマットであるこの方程式のフォーマットの指標とともに、複数の提示モデルの導出を可能とするのに平面における2つの点を表すデータセット330の2つのデータ要素がそれぞれのMSSにおいて必要とされるという旨の指標を含み得る。
プロセッサコンポーネント550は、複数のMSS533のセットを生成し、それぞれがデータセット330により表される複数の点の一対のランダムに選択されたものを含み、複数のMSS533のセットを、テストデータ530の一部として格納する。プロセッサコンポーネント550はまた、モデル特性531の指標を格納し、それはy=ax+bの方程式のフォーマットの指標を、テストデータ530の一部として、適合閾値537の指標と共に含む。プロセッサコンポーネント550は次に、複数の提示モデルのセットを導出して、それらをテストし、結果データ630においてそのテストの複数の結果を提供するよう、プロセッサコンポーネント650に合図する。
プロセッサコンポーネント550からの合図に応じて、プロセッサコンポーネント650は、複数の提示モデルの対応するセットを導出すべく、複数のMSS533のセット及びモデル特性531を採用する、それぞれの提示モデルは、複数のMSS533の1つと対応する。それぞれの提示モデルは、異なる提示の線(そのうちの1つのみが図5において点線で示される)の数式であって、その線は、データセット330からランダムに選択された2つの点を通って延びる。再び、複数の提示モデルのそれぞれは、複数のMSS533のセットから導出される複数の提示モデルのセットにおいて他のものの全てと並列して導出される。
複数の提示モデルのセットを導出した後で、プロセッサコンポーネント650は、データセット330の複数の点のそれぞれが適合閾値537内で複数の提示モデルのそれぞれにある程度適合するか否かを決定することにより、セットの複数の提示モデルのそれぞれを、並列してテストする。図5に示されるように、適合閾値537は、点がその提示モデルのコンセンサスに含まれるインライアになるように十分よく適合するように、提示モデルに対応する線から平面内の最大距離を指定し得る。示されるように、適合閾値537により指定される距離は、提示の線の示された例に対して垂直に測定され得る。複数の提示モデルのセットの複数の提示モデルの全てを並列してテストすることに続いて、プロセッサコンポーネント650は、複数の提示モデルのそれぞれに対するコンセンサスセット内でインライアの数を指定するモデル適合結果637と共に、複数の提示モデルの複数の仕様636を結果データ630として格納する。プロセッサコンポーネント650は次に、複数の提示モデルのセットのテストの導出が完了したことをプロセッサコンポーネント550に合図する。
プロセッサコンポーネント650からの合図に応じて、プロセッサコンポーネント550は、テスト中に、複数の提示モデルのセットのどの提示モデルがデータセット330の複数の点に最も適合することが分かったか決定すべく、複数のモデル適合結果637を分析する。いくつかの実施形態において、このことは、そのコンセンサスセットにおいてインライアの最大数を有する提示モデルを識別すべく、複数の提示モデルのそれぞれのコンセンサスセットにおけるインライアの数を比較することにより決定され得る。セットの複数の提示モデルの最良のものが次に、(複数のモデルの複数の前のセットがある場合)複数のモデルの複数の前のセットの全ての中から全体的に最良の提示モデルと比較される。セットの最良の提示モデルが、全ての前のセットの中から全体的に最良の提示モデルよりも良好にデータセット330の複数の点に適合するものである場合(例えば、そのコンセンサスセットにおいてより多くの数のインライアを有する)、セットの最良の提示モデルは、新たな全体的に最良の提示モデルになる。また、セットの最良の提示モデルが、全ての前のセットの中から全体的に最良の提示モデルよりも良好に適合するものである場合、所定の確度で正確なモデルを決定するのに必要とされる複数の提示モデルの数が、新たな全体的に最良の提示モデルのコンセンサスセット内のインライアの数に少なくとも部分的に基づいて再計算される。そのような再計算が生じるか否かに関わらず、これまでに導出されてテストされた提示モデルの数は次に、複数の提示モデルの別のセットが導出されてテストされるべきか否かを決定する程度に必要とされる提示モデルの数と比較される。
図1に戻り、プロセッサコンポーネント650による複数の提示モデルのセットの並列的な導出及びテスト中に、プロセッサコンポーネント550は、制御ルーチン540を実行し続ける上で、別のイタレーションとなり得るものに備えて、複数のMSSの次のセットを先制して生成し、テストデータ530においてそれらを格納し得る。別のイタレーションが実行されるべきであるか否かについて不確実であるにもかかわらず、RANSACが実行される速度を増加させるべく、プロセッサコンポーネント650により複数の提示モデルの複数のセットの導出及びテストの間の遅延を最小化させるために、複数のMSSの次のセットを先制して生成することが望ましいとみなされ得る。
前述のように、共有ストレージ領域565の少なくとも一部が、キャッシュ555によりキャッシュされ得る。再び、データセット330、テストデータ530及び/又は結果データ630のサイズに対するキャッシュ555のサイズ及びアーキテクチャに応じて、そのような情報を、ストレージ560へのデータの格納又はそこからのデータ取得のいずれかに必要とされる時間に起因する遅延を引き起こすことなく、キャッシュ555を通してプロセッサコンポーネント550及び650間で交換することが可能となり得る。代替的に又はそれに加えて、いくつかの実施形態において、キャッシュ555は、プロセッサコンポーネント550及び650の一方又は他方により制御可能であり得、バッファとして機能するキャッシュ555の一部を割り当て、ストレージ560に対する読み取り又は書き込みのいずれかのオペレーションを全く伴うことなくそれらの間でそのようなデータを、伝達する。
前述のように、これ以上複数の提示モデルのセットが導出されるべきでなく、テストされるべきでない時点で、現在全体的に最良の提示モデルである提示モデルはどれでも、RANSACのハイブリッド並列及び順次実行により導出されるモデルになる。プロセッサコンポーネント550は次に、インタフェース590を動作し得、別のコンピューティングデバイスに、このモデルの指標を送信し、及び/又はこのモデルから導出された他のデータを送信する。例として、プロセッサコンポーネント550は、モデルの視覚化を生成し得、それを画像データ730として格納し得、プロセッサコンポーネント550は次に、それを視聴デバイス700に送信し、そのディスプレイ780で視覚的に提示する。代替的に、プロセッサコンポーネント550は、画像データ730をディスプレイ580で(存在している場合)より直接、視覚的に提示し得る。別の例において、RANSACの並列及び順次実行のそのようなハイブリッドは、モデルを使用する(例えば、アニメーションの画像をレンダリング)、又は画像処理の一部としてオブジェクトを識別する視覚イメージの生成のように、より大きな機能の一部としてモデルを導出すべく採用され得る。従って、画像データ730は、モデルを使用することで少なくとも部分的にレンダリングされた画像を表し得、又はモデルを使用して画像において識別されたオブジェクトの複数の態様を表し得る。
図2は、コンピューティングデバイス500の代替的な実施形態を含むモデル処理システム1000の代替的な実施形態のブロック図を示す。図2のモデル処理システム1000の代替的な実施形態は、多くの点で図1の実施形態と類似しており、従って、同様の参照番号は、全体にわたって同様の要素に言及するために用いられる。しかしながら、図1のコンピューティングデバイス500とは異なり、図2のコンピューティングデバイス500は、コントローラ600を組み込んでいない。従って、図1のコンピューティングデバイス500とは異なり、図2のコンピューティングデバイス500において、コア551及び651の両方を組み込み、従って、そうするべく別個のプロセッサコンポーネント650の代わりに制御ルーチン640を両方実行するのはプロセッサコンポーネント550である。
従って、図2の動作処理システム1000の代替的な実施形態において、プロセッサコンポーネント550は、RANSACのハイブリッド順次及び並列処理の実行のいくつかの部分の順次処理、及びRANSACのハイブリッド順次及び並列処理の実行の他の部分の並列処理の両方を実行する。より正確には、コア551は、データセット330から複数のMSS533の生成を逐次的に実行し得、1又は複数のコア651(またこの代替的な実施形態においてプロセッサコンポーネント550に組み込まれる)は、複数の提示モデルの複数のセットの導出及びテストを並列して実行し得る。この代替的な実施形態において、キャッシュ555は、それに加えて、プロセッサコンポーネント550に組み込まれ得る。
様々な実施形態において、プロセッサコンポーネント550及び650の各々は、多種多様な商業的に利用可能なプロセッサのいずれかを含み得る。また、これらのプロセッサコンポーネントのうちの1又は複数は、複数のプロセッサ、マルチスレッドプロセッサ、(複数のコアが同一又は別個のダイに共存するかいずれにせよ)複数のコアプロセッサ、及び/又は、複数の物理的に別個のプロセッサが何らかの方法でリンク付けされることによるいくつかの他の様々なマルチプロセッサアーキテクチャを含み得る。
更に、プロセッサコンポーネント550及び/又は650のコア551及び/又は651はそれぞれ、より大量の電力消費を犠牲にして比較的高い処理スループットを達成することが可能な1つのコアと、より遅い処理スループットを犠牲にして比較的低い電力の消費を達成することが可能な別のコアとを含む、複数のペアの複数の異種のコアで実装され得る。コア551及び/又は651のそのような実装において、複数のコアのそのようなそれぞれの異種のペアの複数のコア間での自動的な切り替えは、何度も処理スループットのレベルに応じて、及びそのような異種のペアの複数のコアがシングルコアとして知覚される複数のオペレーティングシステム及び/又はアプリケーションルーチンに十分透過的な態様で生じ得る。
例として、コア551が、複数のMSS533の新たなセットを生成すること又はインライアの数を比較することに携わる場合、コア551を構成する異種のペアの複数のコアのより高い処理スループットコアが作動中であり得る。しかしながら、複数の提示モデル636の新たなセットの並列導出及びテストに必要とされる時間に応じて、コア551は、そのような導出及びテストが完了するのを待機する間、比較的アイドルのままとさせられ得、したがって異種のペアの複数のコアの低電力消費コアが作動中となり得る。対応して、プロセッサコンポーネント650の1又は複数のコア651が複数の提示モデル636の新たなセットを導出してテストするのに携わる一方で、複数のコア651のそれぞれを構成する異種のペアの複数のコアのそれぞれのより高い処理スループットコアは、作動中であり得る。しかしながら、複数のインライア値の数の複数の比較に必要とされる時間に応じて、1又は複数のコア651は、そのような比較が終わり、複数の提示モデルの別のセットが導出されてテストされるべきであるか否かについての決定されるのを待機して比較的アイドルのままとさせられ得、したがってそれらの異種の複数のペアの複数のコアのそれぞれの低電力消費コアが作動中となり得る。
プロセッサコンポーネント550及び650の各々は、様々なタイプのプロセッサのいずれかを含み得るが、コントローラ600(存在する場合)のプロセッサコンポーネント650が、グラフィックス及び/又はビデオに関連するタスクを実行するべく、幾分か特化され及び/又は最適化され得ることが想定される。より広義には、コントローラ600が、プロセッサコンポーネント650及びそれにより密接に関連するコンポーネントから分離し、かつ、プロセッサコンポーネント650及びそれにより密接に関連するコンポーネントとは異なるコンポーネントを用いて、グラフィックスレンダリング、ビデオ圧縮、画像リスケーリング等に関連するタスクの実行を可能にするコンピューティングデバイス500のグラフィックスサブシステムを具現化することが想定される。
様々な実施形態において、ストレージ560及び660の各々は、電力の中断されない提供を必要とする揮発性技術をおそらく含む、及び、取り外し可能であり得、またはそうし得ない機械可読記憶媒体の使用を伴う技術をおそらく含む多種多様な情報ストレージ技術のいずれかに基づき得る。従って、これらのストレージの各々は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、ダブルデータレートDRAM(DDR−DRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)、プログラマブルROM(PROM)、消去可能なプログラマブルROM(EPROM)、電気的に消去可能なプログラマブルROM(EEPROM)、フラッシュメモリ、ポリマーメモリ(例えば、強誘電体ポリマーメモリ)、オボニックメモリ、相変化若しくは強誘電体メモリ、シリコン酸化物窒化物酸化物シリコン(SONOS)メモリ、磁気若しくは光カード、1又は複数の個別強磁性ディスクドライブ、又は、1又は複数のアレイで構成される複数のストレージデバイス(例えば、Redundant Array of Independent Disksアレイ又はRAIDアレイで構成される複数の強磁性ディスクドライブ)を限定することなく含む、ストレージデバイスの多種多様なタイプ(又はタイプの組み合わせ)のいずれかを含み得る。これらのストレージの各々が単一ブロックとして示されるが、これらのうちの1又は複数は、異なるストレージ技術に基づき得る複数のストレージデバイスを含み得ることに留意すべきである。従って、例えば、これらの示されたストレージの各々のうちの1又は複数は、プログラム及び/又はデータがいくつかの機械可読記憶媒体の形式で格納され得、かつ、伝達され得る光ドライブ又はフラッシュメモリカードリーダ、プログラム及び/又はデータを比較的拡張された期間ローカルに格納する強磁性ディスクドライブ、及び、プログラム及び/又はデータに対して比較的迅速にアクセスすることを可能にする1又は複数の揮発性ソリッドステートメモリデバイス(例えば、SRAM又はDRAM)の組み合わせを表し得る。これらのストレージの各々が、同一のストレージ技術に基づいて、複数のストレージコンポーネントで構成され得るが、(例えば、いくつかのDRAMデバイスがメインストレージとして採用される一方、他のDRAMデバイスがグラフィックスコントローラの別個のフレームバッファとして採用されるといった)使用における特性の結果として別々に保持され得ることもまた留意すべきである。
様々な実施形態において、インタフェース590は、説明されたように、これらのコンピューティングデバイスが他のデバイスに結合されることを可能にする多種多様なシグナリング技術のいずれかを採用し得る。これらのインタフェースの各々は、そのような結合を可能とする少なくともいくつかの必須の機能を提供する回路を含む。しかしながら、これらのインタフェースの各々はまた、(例えば、プロトコルスタック又は他の機能を実装する)プロセッサコンポーネントのうちの対応するものにより実行される命令列と共に少なくとも部分的に実装され得る。電気的及び/又は光学的に導電性のあるケーブル配線が採用された場合、これらのインタフェースは、RS―232C、RS―422、USB、イーサネット(登録商標)(IEEE−802.3)又はIEEE−1394を限定することなく含む、様々な業界標準のいずれかに準拠するシグナリング及び/又はプロトコルを採用し得る。無線信号伝送の使用が必要とされる場合、これらのインタフェースは、IEEE802.11a、802.11b、802.11g、802.16、802.20(通常、「モバイルブロードバンド無線アクセス」と呼ばれる)、Bluetooth(登録商標)、Zigbee(登録商標)、又は、GSM(登録商標)及び汎用パケット無線サービス(GSM(登録商標)/GPRS)、CDMA/lxRTT、EDGE(Enhanced Data Rates for Global Evolution)、EV−DO(Evolution Data Only/Optimized)、EV−DV(Evolution For Data and Voice)、HSDPA(High Speed Downlink Packet Access)、HSUPA(High Speed Uplink Packet Access)、4G LTE等のようなセルラー無線電話サービスを限定することなく含む、様々な業界標準のいずれかに準拠するシグナリング及び/又はプロトコルを採用し得る。
図6は、図1又は図2のいずれかのビデオ処理システム1000の実施形態の一部のブロック図をより詳細に示す。より具体的には、図6は、コントローラ600の動作環境を含むコンピューティングデバイス500の動作環境の複数の態様を示し、プロセッサコンポーネント550は、制御ルーチン540を実行する上でRANSACの複数の部分を逐次的に実行し、プロセッサコンポーネント550又は650は、複数の提示モデルの複数のセットの導出及びテストを並列して実行する。図7は、その部分の動作の複数の一時的態様をより詳細に示し、特に、コンピューティングデバイス500及びコントローラ600の動作環境間の並列処理の複数の態様を示す。図8は、RANSACの実行を停止するときを決定する部分の例示的なロジックの疑似コードを示す。当業者に認識可能なように、各々が構成される複数のコンポーネントを含む制御ルーチン540及び640は、プロセッサコンポーネント550及び650の適用可能なものを実装するために選択されるプロセッサ又は複数のプロセッサのタイプであれば、そのいずれにおいても動作可能となるように選択される。
様々な実施形態において、制御ルーチン540及び640の各々は、オペレーティングシステム、デバイスドライバ、及び/又は、(例えば、リモートサーバから取得された「アプレット」をディスク媒体上に提供した、いわゆる「ソフトウェアスイート」等の)アプリケーションレベルルーチンのうちの1又は複数を含み得る。オペレーティングシステムが含まれる場合、オペレーティングシステムは、プロセッサコンポーネント550又は650の対応するもののどれにも適用する様々な利用可能なオペレーティングシステムのいずれかであり得る。1又は複数のデバイスドライバが含まれる場合、これらのデバイスドライバは、コンピューティングデバイス500又はコントローラ600のもので、ハードウェア又はソフトウェアコンポーネントのいずれかの様々な他のコンポーネントのいずれかに関するサポートを提供し得る。
制御ルーチン540は、説明されたように、ネットワーク999を介して複数の信号を送信及び受信するインタフェース590を操作するプロセッサコンポーネント550により実行可能な通信コンポーネント549を含み得る。受信された複数の信号の中では、ネットワーク999を介してコンピューティングデバイス100、300、500、又は700のうち1又は複数の中で定義データ130、データセット330、及び/又は画像データ730を伝達する複数の信号であり得る。当業者に認識されるように、通信コンポーネント549は、インタフェース590を実装するように選択されるインタフェース技術のタイプであれば何でもあっても動作可能となるように選択される。
制御ルーチン540は、プロセッサコンポーネント550により実行可能なキャッシュコンポーネント545を含み得、プロセッサコンポーネント550及び650の間でバッファとして機能するキャッシュ555の少なくとも一部を構成し、データセット330、テストデータ530、及び結果データ630の1又は複数が、キャッシュ555のみを通してそれらの間で交換されることを可能とする。代替的に又はそれに加えて、キャッシュコンポーネント545は、共有ストレージ領域565の少なくとも一部をキャッシュするキャッシュ555の少なくとも一部を構成し得る。
制御ルーチン540は、プロセッサコンポーネント550により実行可能なテスト準備コンポーネント543を含み得、複数の提示モデルの新たなセットの生成及びテストに備えて、情報をテストデータ530に格納する。示されるように、テスト準備コンポーネント543は、複数の提示モデルの新たなセットが基づくべき複数のMSS533の新たなセットを生成するMSSジェネレータ5433を組み込み得る。テスト準備コンポーネント543は次に、複数のMSS533の新たなセットを、テストデータ530の一部として格納し得る。前述のように、複数のMSS533の新たなセットの導出は先制して行われ得、その一方で、複数のMSS533の最後のセットから複数の新たなモデルの生成及びテストが行われる。テスト準備コンポーネント543は、適合閾値及び/又は複数の提示モデルの新たなセットの複数の提示モデルが有するべき特性(例えば、フォーマット)の複数の指標を取得し得、それらの指標を、それぞれ適合閾値537及び/又はモデル特性531としてテストデータ530に格納し得る。
制御ルーチン640は、プロセッサコンポーネント650により実行可能な導出コンポーネント643を含み得、テストデータ530の複数のMSS533の新たなセットに基づいて、複数の提示モデル636の新たなセットを並列して導出する。導出コンポーネント643は、テストデータ530の複数のMSS533と同様に、モデル特性531を取得し得、複数の提示モデルのそれぞれが有するべきフォーマットの指標を取得する。複数の提示モデル636の新たなセットを生成すると、導出コンポーネント643は次に、複数の提示モデル636の新たなセットの複数の提示モデル636のそれぞれの仕様を、結果データ630の一部として格納し得る。
制御ルーチン640は、データセット330の複数のデータ要素への適合のための導出コンポーネント643により生成される複数の提示モデル636の新たなセットを並列してテストすべく、プロセッサコンポーネント650により実行可能なテストコンポーネント647を含み得る。テストコンポーネント647は、データセット330を取得とともに、テストデータ530から適合閾値537を取得し得る。複数の提示モデル636の新たなセットのテストが完了すると、テストコンポーネント647は、複数の提示モデル636の、データセット330の複数のデータ要素へのそれぞれの適合の度合いの指標を、結果データ630のモデル適合結果637として格納し得る。前述のように、適合の度合いの指標は、新たなセットにおいて複数の提示モデルのそれぞれのコンセンサスセットにおけるインライアであるデータセット330のデータ要素の数の指標を含み得る。
制御ルーチン640は、実行の複数のスレッドをインスタンス化すべく、プロセッサコンポーネント650により実行可能なスレッドディスパッチャ645を含み得、導出コンポーネント643及びテストコンポーネント647それぞれによる複数の提示モデル636のそれぞれの新たなセットの導出及びテストを可能とする。より正確には、スレッドディスパッチャ645は、MSSジェネレータ5433により生成される複数のMSS533の新たなセットのMSS533のそれぞれと関連されるべき別個のスレッドをインスタンス化し得る。複数のMSS533の1つからのそれぞれの提示モデル636の導出は、それぞれの提示モデル636の後のテストと同様、複数のMSS533の1つと関連するスレッドで生じ得る。
制御ルーチン540は、RANSACの実行の進捗度を制御すべくプロセッサコンポーネント550により実行可能な比較コンポーネント547を含み得る。比較コンポーネント547は、結果データ630のモデル適合結果637を取得し得、新たなセットのうちどれがデータセット330に最も適合するのかを決定すべく、複数の提示モデルの新たなセットの複数の提示モデルのそれぞれの適合の度合いについて、結果データ630のモデル適合結果637における複数の指標を比較し得る。比較コンポーネント547は次に、新たなセットの複数の提示モデルの最も適合する適合の度合いの指標を、ワーキングデータ335において保持される、複数の提示モデルの全ての前のセットの全体的に最良の提示モデルの適合の度合いの指標と比較し得る。示されるように、比較コンポーネント547は、新たなセットの最良の提示モデルが、全体的に最良の提示モデルよりも大いにデータセット330に適合する場合に新たな全体的に最良の提示モデルになる、複数の提示モデルの新たなセットの最も適合する提示モデルを選択すべく選択コンポーネント5477を組み込み得る。説明されたとおり、提示モデルは、そのコンセンサスセットにおいて多数のインライアを有する場合、より良好に適合するものであると決定され得る。複数の提示モデルの新たなセットの最良の提示モデルがより良好な適合である場合、選択コンポーネント5477は、結果データ630からそのモデル636の仕様を取得し、データセット330のいくつのデータ要素が新たなセットの最良の提示モデルのコンセンサスセットにおけるインライアであるかと共に、その仕様をワーキングデータ335に格納する。
新たなセットの複数の提示モデルの最も適合するものが、新たな全体的に最良の提示モデルになるようにより良好に適合するものである場合、比較コンポーネント547は、所定の確度で正確なモデルを決定するのに必要とされる複数の提示モデルの数を再計算し得る。全体的に最良の提示モデルが、そのような必要とされる提示モデルの数の再計算があり得、又はあり得ないように、導出されてテストされる提示モデルのそれぞれのセットに置換されるか否かに関わらず、比較コンポーネント547は、これまで導出されてテストされた複数の提示モデルの数を、複数の提示モデルの別の新たなセットが導出されてテストされるべきであるか否かを決定するのに必要とされる提示モデルの数と比較する。比較コンポーネント547は、いくつの提示モデルがこれまで導出されてテストされたか、及びいくつの提示モデルがワーキングデータ335において所定の確度で正確なモデルを決定するのに必要とされるかという複数の指標を格納し、保持し得る。これまで導出されてテストされた提示モデルの数が、必要とされる数を既に満たす又は超えている場合、これ以上の複数の提示モデルのセットは導出されたりテストされたりせず、現在全体的に最良の提示モデル(ワーキングデータ335において格納される仕様)である提示モデルはどれでもRANSACの実行により導出されるモデルになる。
より具体的に図7を参照すると、左から右へのタイムラインの進行で示されるように、制御ルーチン540及び640のそれぞれの少なくとも一部が並列して実行されている期間があり得、RANSACの更なる実行が必要であるか否かについて決定が行われる場合、制御ルーチン540が実行する他の期間と交互に起こる。より具体的には、複数のMSS533の新たなセットを先制的に導出すべく、制御ルーチン540の実行と並列して、複数の提示モデル636の複数のセットを導出してテストするよう制御ルーチン640が実行される間に複数の期間が存在し得る。
並列実行のそのような期間中に、制御ルーチン640のスレッドディスパッチャ645は、複数のスレッド(例えば、1からRの示された複数のスレッド)を、制御ルーチン540のMSSジェネレータ5433から以前に受信された複数のMSS533のセットの対応する複数のMSS533(例えば、MSS1からMSSRの対応するもの)と関連付けさせる。これらのスレッドのそれぞれにおいて、複数の提示モデル636のセットの対応する複数の提示モデル636(例えば、提示モデルM1からMRの対応するもの)が、複数のMSS533のセットから導出される。次に、これらのスレッドのそれぞれにおいて、複数の提示モデル636のそれぞれのインライアの数の対応する複数の指標を含む、複数のモデル適合結果637の複数の指標(例えば、インライアW1からWRの数)が、データセット330に対するそれらの提示モデル636のそれぞれのテストから生成される。説明されたように、スレッドディスパッチャ645により複数のMSS533のセットの対応するものと関連付けられた複数のスレッド1からRは、並列して実行され得る。いくつかの実施形態において、複数のスレッド1からRのそれぞれは、プロセッサコンポーネント650の異なるコア651による実行のために割り当てられ得、それによって、スレッド1からRの全てが同時に並列実行されることが可能となる。しかしながら、スレッド1からRの全ての同時実行を可能とするのに複数の利用可能なコア651の十分な数がない複数の実施形態において、複数のスレッド1からRの複数のサブセットは、複数の利用可能なコア651の数の中で、並列して実行され得る。
並列実行のそのような期間中にまた、制御ルーチン540のMSSジェネレータ5433は、複数の提示モデル636の別の新たなセット(例えば、MR+1からM2R)が導出されてテストされるべきであるという可能性に備えて、複数のMSS533の別のセット(例えば、MSSR+1からMSS2R)を先制的に導出し得る。以前に説明されたとおり、MSSジェネレータ5433による複数のMSS533の比較的少ない計算的に複雑な生成は、プロセッサコンポーネント550により実行される順次処理(例えば、単一スレッド)を使用して実行され得る。
他の複数の期間中、比較コンポーネント547は、これまでテストされた複数の提示モデルの全てで全体的に最良の提示モデルMのインライアWの数に対して、複数の提示モデル636の新たなセットのインライアの数(例えば、複数の提示モデルM1からMRのそれぞれのインライアW1からWRの数)の比較を実行し得る。より具体的には、これまで導出されてテストされてきた提示モデル636の数Nは、複数の制御ルーチン540及び640の最後の並列実行の期間中に、複数の提示モデル636の新たなセットの導出およびテストの完了を反映すべく、インクリメントされる。次に、複数の提示モデル636の新たなセットの複数の提示モデル636のいずれかが、全体的に最良の提示モデルMよりも良好にデータセット330に適合するか否かのチェックが行われる。説明されたように、複数の提示モデル636の新たなセットの複数の提示モデル636の1つのインライアの数が、全体的に最良の提示モデルMのものより大きいインライアの数を有する場合(例えば、W1からWRの1つがWより大きい)、複数の提示モデル636の新たなセットの提示モデル636は、新たな全体的に最良の提示モデルMになる。全体的に最良の提示モデルMがそのように置換される場合、全体的に最良の提示モデルMと関連付けられるインライアの数Wの指標は、新たな全体的に最良の提示モデルMと関連付けられるインライアの数を反映させるべく、更新される。更に、全体的に最良の提示モデルMがそのように置換される場合、所定の確度で正確なモデルを決定することが必要とされる複数の提示モデルの数Kは、新たな全体的に最良の提示モデルMと関連付けられるインライアの新たな数を踏まえて再計算される。
全体的に最良の提示モデルMの条件付き置換、関連付けられたインライアWの数の更新、及び提示モデル636の必要とされる数Kの再計算に続いて、これまで導出されてテストされてきた提示モデル636の数Nが、所定の確度で正確なモデルを決定するのに必要とされる提示モデル636の数Kよりも依然としてより小さいか否かについてチェックが行われる。NがもはやKより小さくない場合、RANSACを実行する制御ルーチン540および640の更なる実行を停止し、現在の全体的に最良の提示モデルMが、RANSACの実行により導出される正確なモデルであるとみなされる。しかしながら、NがKより小さい場合、制御ルーチン540および640の並列実行の別の期間が起動する。具体的には、複数のMSS533の別の新たなセット(例えば、MSSR+1からMSS2R)からの複数の提示モデル636の別の新たなセット(例えば、複数の提示モデルMR+1からM2R)の導出が、データセット330に対する複数の提示モデル636のテストと共に起動され、これらは、複数のMSS533の更に別の新たなセット(例えば、MSS2R+1からMSS3R)の先制的な生成と並列して起動される。
図8は、ホモグラフィ変換アプリケーションにおいてRANSACの実行を継続するか否かを決定する上で、制御ルーチン540の少なくとも比較コンポーネント547のロジックの動作の例を示す。この例において、所定の確度で正確なモデルを決定するのに必要とされる提示モデル636の数K(例えば、1−pの所定の許容障害閾値内)が2000の数に最初に設定され、試みを行う複数の提示モデル636の上限を定義する。その閾値を定義する所定の信頼レベルpは、0.995に設定される。複数の提示モデル636の各セットにおいて導出されてテストされるべき提示モデル636の数itersPerChunkは、500の数に設定され、制御ルーチン640の実行の全体にわたって並列して導出されテストされる複数の提示モデル636の上限を定義する。
実行に備えて、数Kに到達すべく更に導出されてテストされるべき提示モデル636の数leftItersは、最初にKに設定される(例えば、2000の初期の数)。そのような導出及びテストの現在の実行において、並列して導出されてテストされるべき複数の提示モデル636の数curNumOfModelsが、そのような導出およびテストの以下の実行において並列して導出されてテストされるべき複数の提示モデル636の数nextNumOfModelsと共に、数itersPerChunkに初期化される。これまでに導出されてテストされてきた全体的に最良の提示モデルのインライアWの数は、0に初期化される。
制御ルーチン540のロジックの少なくとも一部の実行をMSS選択で開始すると、テスト準備コンポーネント543の実行が、500の数の複数のMSS533のセットの生成で生じ、プロセッサコンポーネント650による制御ルーチン640の実行を可能にすべく共有ストレージ領域565を通して利用可能となる。前述のように、コントローラ600は、コンピューティングデバイス500のグラフィックスサブシステムであり得、それらのグラフィックス処理装置(GPU)として機能するプロセッサコンポーネント650を有する。制御ルーチン540の少なくともいくつかの部分の更なる実行は、500までの提示モデル636の並列な導出及びテストの両方を行う実行640の完了を待機し得る。
500までの提示モデル636のそのような並列した導出及びテストに続いて、制御ルーチン540のロジックの一部の実行は、比較コンポーネント547のロジックの一部を実装するfindBestHへの呼び出しで再開し得る。実行に備えて、全体的に最良の提示モデルMと関連付けられるインライアの数previousWは、現在の数Wに初期化され、インデックスiは、ゼロに初期化される。インデックスiは、複数の提示モデル636の新たなセットのそれぞれの提示モデル636と関連付けられたインライアWiの数を、全体的に最良の提示モデルMと関連付けられたインライアの数Wと反復の比較を制御するように用いられる。より正確には、単に導出されてテストされた複数の提示モデル636の新たなセットにおいて500の提示モデル636がある場合、iは0から499まで反復し、WとあらゆるWiとの比較を生じさせる。
そのような比較の結果、複数の提示モデル636の新たなセットの複数の提示モデル636の1つは、全体的に最良の提示モデルMと関連付けられたインライアWの数よりも多くの数のインライアWiを有することが分かった場合、新たなセットのその提示モデル636は、新たな全体的に最良の提示モデルMになる。従って、数Wは、数Wiに更新され、数Kは、インライアの新たな数Wを踏まえて再計算される(newKに設定)。
正確なモデルを決定することが必要とされる複数の提示モデル636の数Kが、新たな全体的に最良の提示モデルMである結果、更新されるか否かに関わらず、数Kに到達すべく導出されてテストされるべきのままである複数の提示モデル636の数leftItersが更新される。更新される結果、数leftItersがゼロに収まる場合(leftItersはゼロより下回ることは明示的に阻止されることに留意すべきである)、RANSACの更なる実行が停止し、現在の全体的に最良の提示モデルMが、RANSACを介して導出される正確なモデルであるとみなされる。
しかしながら、更新された結果、数leftItersがまだゼロに収まらない場合、複数の提示モデル636の次のセットにおいて導出されてテストされるべき複数の提示モデル636の数を示す数nextNumOfModelsが再計算される。数leftItersが、更新された後に500またはそれより以上である場合、数nextNumOfModelsは、500の初期の値に設定されたままで、複数の提示モデル636の次の新たなセットが500の提示モデル636の数を含むべきであることを示す。しかしながら、数leftItersが、更新後に500より下回る場合、数nextNumOfModelsは、次に導出されてテストされるべき数Kに到達することが必要とされる複数の提示モデル636の数のみを生じさせるべく、500より小さい値に設定される。
図9は、論理フロー2100の一実施形態を示す。論理フロー2100は、本明細書で説明された1又は複数の実施形態により実行されるオペレーションのうちのいくつか又は全てを代表し得る。より具体的に、論理フロー2100は、少なくとも制御ルーチン540及び640を実行する上で、プロセッサコンポーネント550及び/又は650により実行され、及び/又は、それぞれコンピューティングデバイス500又はコントローラ600の他のコンポーネントにより実行されるオペレーションを示し得る。
2110で、コンピューティングデバイスのプロセッサコンポーネント(例えば、コンピューティングデバイス500のプロセッサコンポーネント550)がデータセットから逐次的に複数のMSSの新たなセットを生成する。説明された通り、複数のMSSのセットにおける複数のMSSの数が、複数の提示モデルの新たなセットにおいて並列して生成されるべき複数の提示モデルの数と一致するよう選択され得る。
2120で、同一の及び/又は1又は複数の他のプロセッサコンポーネントの少なくとも1つのコア(例えば、プロセッサコンポーネント550及び/又は650の1又は複数のコア651)は、複数のMSSの新たなセット、及び複数の提示モデルの1又は複数の特性の指標(例えば、モデル特性531に示され得る複数の提示モデルのフォーマット)から、複数の提示モデルの新たなセットを並列して生成する。説明された通り、RANSACの複数の部分を実行することを伴うプロセッサコンポーネント及び/又はプロセッサコンポーネントのコアの間の通信は、キャッシュ及び/又はキャッシュによりキャッシュされる共有ストレージスペースを使用し得る(例えば、キャッシュ555及び/又は共有ストレージスペース565)。
2130で、複数の提示モデルの新たなセットが、データセットの複数のデータ要素で、新たなセットにおける複数の提示モデルのそれぞれの適合の度合いを決定すべく、並列してテストされる。それぞれの提示モデルに対して、データセットのどのデータ要素が提示モデルのインライアであって(従って、そのコンセンサスセットにあるか)、そして提示モデルのアウトライアであるのかを決定するべく、適合閾値が採用され得る。
2140で、新たなセットのどの提示モデルがデータセットに最も適合するかという決定がされる。次に、新たなセットの複数の提示モデルの最も適合するものが、前に導出されてテストされた複数の提示モデルの全てのセットの全ての複数の提示モデルの中から最もデータセットに適合する全体的に最良の提示モデルよりも良好にデータセットに適合するか否かについて決定がなされる。前述のように、それぞれの提示モデルに関する適合の度合いは、データセットのいくつのデータ要素が提示モデルのコンセンサスセットのインライアであるかに基づき得、提示モデルは、より良好に適合するとみなされるインライアのより大きい数のコンセンサスセットを有する。
2150で、複数の提示モデルの新たなセットの最も適合する提示モデルが、複数の提示モデルの全ての前のセットの全体的に最良の提示モデルよりも良好に適合するものである場合、新たなセットの最も適合する提示モデルが、2152で新たな全体的に最良の提示モデルになる。全体的に最良の提示モデルにおけるこの変更に続いて、所定の確度で正確なモデルを決定するよう導出されてテストされることが必要とされる複数のモデル数が2154で再計算される。
全体的に最良の提示モデルが変更され、導出されてテストされるべき必要とされる複数の提示モデルの数が再計算されるか否かに関わらず、2160では、必要とされている数がこれまでに導出されてテストされた数によって超過していないか否かを決定すべく、これまでに導出されてテストされた複数の提示モデルの数が複数の提示モデルの必要とされる数と比較される。そうでない場合、複数のMSSの別のセットの生成及び複数の提示モデルの別のセットの導出及びテストが実行される。
図10は、論理フロー2200の一実施形態を示す。論理フロー2200は、本明細書で説明された1又は複数の実施形態により実行されるオペレーションのうちのいくつか又は全てを代表し得る。より具体的に、論理フロー2200は、少なくとも制御ルーチン540を実行する上で、プロセッサコンポーネント550により実行され、及び/又は、コンピューティングデバイス500の他のコンポーネントにより実行される複数のオペレーションを示し得る。
2210で、コンピューティングデバイスのプロセッサコンポーネント(例えば、コンピューティングデバイス500のプロセッサコンポーネント550)が、複数の提示モデルの特性の複数の指標、及び共有メモリスペースにおけるデータセットへの適合の閾値を格納する。再び、複数のプロセッサコンポーネント及び/又はRANSACの複数の部分を実行することを伴う複数のプロセッサコンポーネントの複数のコアとの間の通信は、キャッシュ及び/又はキャッシュによりキャッシュされる共有ストレージスペース(例えば、キャッシュ555及び/又は共有ストレージスペース565)を使用し得る。
2220で、プロセッサコンポーネントはデータセットから複数のMSSの新たなセットを逐次的に生成する。説明されたとおり、複数のMSSのセットにおける複数のMSSの数は、複数の提示モデルの新たなセットに並列して生成されるべき複数の提示モデルの数と一致するよう選択され得る。再び、複数のMSSのセットにおいて複数のMSSの数が、複数の提示モデルの新たなセットにおいて並列して生成されるべき複数の提示モデルの数と一致するよう選択され得る。同一の、及び/又は1又は複数の他のプロセッサコンポーネントの少なくとも1つのコア(例えば、複数のプロセッサコンポーネント550及び/又は650の1又は複数のコア651)が、2230で、複数のMSSの新たなセットから、複数の提示モデルの新たなセットを並列して導出してテストするよう合図される。
2240で、プロセッサコンポーネントは、複数のMSSの別の新たなセットを、データセットから先制して逐次的に生成する。前述のように、複数のMSSのこの他の新たなセットが実際に使用されるか否かについて不確かではあるが、複数のMSSの別の新たなセットのこのような先制的な生成は、RANSACの実行に対する別の並列度をもたらし、それによって、実行時間を更に減少する。2250で、プロセッサコンポーネントは、複数の提示モデルの新たなセットの複数の提示モデルの仕様の複数の指標、及び複数の提示モデルの新たなセットの複数の提示モデルのそれぞれのデータセットへの適合の度合いをテストするテスト結果の格納を待機する。
2260で、新たなセットのどの提示モデルが、データセットに最も適合するかの決定がなされる。次に、新たなセットの複数の提示モデルの最も適合するものが、前に導出されてテストされた複数の提示モデルの全てのセットの複数の提示モデルの全ての中から最もデータセットに適合する全体的に最良の提示モデルよりも良好にデータセットに適合するか否かについての決定がなされる。再び、それぞれの提示モデルに対する適合の度合いは、データセットのいくつのデータ要素が、提示モデルのコンセンサスセットのインライアであるかに基づき得、提示モデルは、より良好に適合するものであるとみなされるより多い数のインライアを伴うコンセンサスセットを有する。
2270で、複数の提示モデルの新たなセットの最も適合する提示モデルが、複数の提示モデルの全ての前のセットの全体的に最良の提示モデルよりも良好に適合するものである場合、新たなセットの最も適合する提示モデルが、2272で、新たな全体的に最良の提示モデルになる。全体的に最良の提示モデルにおけるこの変更に続いて、所定の確度で正確なモデルを決定するのに導出されてテストされることが必要とされる複数のモデルの数が、2274で再計算される。
全体的に最良の提示モデルが変更されて、導出されてテストされるのに必要とされる複数の提示モデルの数が再計算されるか否かに関わらず、2280で、これまで導出されてテストされた複数の提示モデルの数は、必要とされる数がこれまで導出されてテストされた数により超過していないか否かを決定すべく、複数の提示モデルの必要とされる数と比較される。そうでない場合、同一の及び/又は1又は複数の他プロセッサコンポーネントの少なくとも1つのコアが、2230で複数のMSSの他の新たなセットから並列して複数の提示モデルの別の新たなセットを導出してテストするよう合図される。
図11は、論理フロー2300の一実施形態を示す。論理フロー2300は、本明細書で説明された1又は複数の実施形態により実行されるオペレーションのうちのいくつか又は全てを代表し得る。より具体的に、論理フロー2300は、少なくとも制御ルーチン640を実行しているときに、プロセッサコンポーネント550又は650により実行され、及び/又は、それぞれコンピューティングデバイス500又はコントローラ600の他のコンポーネントにより実行されるオペレーションを示し得る。
2310で、コンピューティングデバイスのプロセッサコンポーネント(例えば、コンピューティングデバイス500のプロセッサコンポーネント550、又はコントローラ600のプロセッサコンポーネント650)は、共有メモリスペースで格納される複数のMSSの新たなセットから複数の提示モデルの新たなセットを導出してテストすべく、同一の又は異なるプロセッサコンポーネントのコアからの信号を待機する。再び、RANSACの複数の部分を実行することを伴う複数のプロセッサコンポーネント及び/又は複数のプロセッサコンポーネントの複数のコアとの間の通信は、キャッシュ及び/又はキャッシュによりキャッシュされる共有ストレージスペースを使用し得る(例えば、キャッシュ555及び/又は共有ストレージスペース565)。
2320で、プロセッサコンポーネントは、複数の提示モデルの特性の指標(例えば、モデル特性531に示され得る複数の提示モデルのフォーマット)、及び複数のMSSの新たなセットを、共有メモリスペースから取得する。再び、複数のMSSのセットにおいて複数のMSSの数は、複数の提示モデルの新たなセットにおいて並列して生成されるべき複数の提示モデルの数に一致するよう選択され得る。2330にて、プロセッサコンポーネントの少なくとも1つのコア(例えば、プロセッサコンポーネント550s及び/又は650の少なくとも1つのコア651)は、複数のMSSの新たなセット、及び複数の提示モデルの1又は複数の特性の指標から並列して複数の提示モデルの新たなセットを生成する。
2340で、プロセッサコンポーネントは、複数のMSSが生成されたデータセット、及び適合閾値の指標を、共有メモリスペースから取得する。2350で、プロセッサコンポーネントの少なくとも1つのコアは、データセットの複数のデータ要素で、適合度合いに関して複数の提示モデルの新たなセットの複数の提示モデルの新たなセットをテストする。各提示モデルについて、適合閾値は、データセットのどのデータ要素が、提示モデルのインライアであって(従って、コンセンサスセットにあるか)、及びその提示モデルのアウトライアがどれであるかを決定すべく採用され得る。
2360にて、プロセッサコンポーネントは、複数の提示モデルの新たなセットの複数の提示モデルのそれぞれの仕様の複数の指標と、それぞれのテストの結果の複数の指標を、共有メモリスペースに格納する。再び、テスト結果の複数の指標は、いくつのインライアが、複数の提示モデルの新たなセットの複数の提示モデルのそれぞれのコンセンサスセット内にあるかという指標を含み得る。2370で、同一の又は異なるプロセッサコンポーネントの別のコアが、複数の提示モデルの新たなセットの導出及びテストが完了するという指標で合図される。
図12は、前に説明されたように、様々な実施形態を実装するために好適な例示的処理アーキテクチャ3000の実施形態を示す。より具体的に、処理アーキテクチャ3000(又はその変形)は、コンピューティングデバイス100、300、500又は700の1又は複数の一部として、及び/又はコントローラ600の一部として実装され得る。処理アーキテクチャ3000の複数のコンポーネントは、最後の2桁が、コンピューティングデバイス100、300、500及び700の一部、並びにコントローラ600として以前に示され、かつ、説明されたコンポーネントの少なくともいくつかの参照番号の最後の2桁に対応する所与の参照番号であることに留意すべきである。これは、コンポーネントの各々に対応する補助として行われる。
処理アーキテクチャ3000は、1又は複数のプロセッサ、複数のコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺機器、インタフェース、発振器、タイミングデバイス、ビデオカード、オーディオカード、マルチメディア入力/出力(I/O)コンポーネント、電力供給等を限定することなく含む、デジタル処理において通常採用される様々な要素を含む。本願において用いられるように、用語「システム」及び「コンポーネント」は、デジタル処理が実行されるコンピューティングデバイスのエンティティに言及することが意図され、そのエンティティは、ハードウェア、ハードウェア及びソフトウェアの組み合わせ、ソフトウェア又は実行中のソフトウェア、この示された例示的処理アーキテクチャにより提供される複数の例である。例えば、コンポーネントは、プロセッサコンポーネントにおいて実行されている処理、プロセッサコンポーネントそのもの、光及び/又は磁気記憶媒体を採用し得るストレージデバイス(例えば、ハードディスクドライブ、アレイにおける複数のストレージドライブ等)、ソフトウェアオブジェクト、実行可能な命令列、実行スレッド、プログラム及び/又はコンピューティングデバイス全体(例えば、コンピュータ全体)が可能であるがこれらに限定されない。例示として、サーバ上で実行するアプリケーション及びサーバの両方がコンポーネントであることが可能である。1又は複数のコンポーネントは、処理及び/又は実行スレッド内に存在することが可能で、コンポーネントは、1つのコンピューティングデバイス上に局在可能で、及び/又は、2又はそれより多いコンピューティングデバイスの間で分散可能である。更に、複数のコンポーネントは、複数のオペレーションを調整するべく、様々なタイプの通信媒体により互いに通信可能に結合され得る。調整は、一方向又は双方向の情報の交換を伴い得る。例えば、コンポーネントは、通信媒体を介して通信される複数の信号の形式で情報を通信し得る。情報は、1又は複数の信号線に割り当てられた複数の信号として実装可能である。(コマンド、ステータス、アドレス又はデータメッセージを含む)メッセージは、そのような信号のうちの1つであり得、又は、そのような信号のうちの複数であり得、かつ、直列的に又は実質的にのいずれかに並列して、様々な接続及び/又はインタフェースのいずれかを通じて送信され得る。
示されるように、処理アーキテクチャ3000の実装において、コンピューティングデバイスは、少なくともプロセッサコンポーネント950、ストレージ960、他のデバイスに対するインタフェース990及び結合959を含む。説明されるように、処理アーキテクチャ3000を実装するコンピューティングデバイスの様々な態様に応じて、その意図された使用及び/又は使用の状態を含み、そのようなコンピューティングデバイスは、そのような限定なく、ディスプレイインタフェース985のような追加のコンポーネントを更に含み得る。
結合959は、1又は複数のバス、ポイントツーポイントインタコネクト、送受信機、バッファ、クロスポイントスイッチ、及び/又は、少なくともプロセッサコンポーネント950をストレージ960に通信可能に結合する他の導体並びに/若しくはロジックを含む。結合959は、インタフェース990、オーディオサブシステム970及びディスプレイインタフェース985のうちの1又は複数にプロセッサコンポーネント950を更に結合し得る(これら及び/又は他のコンポーネントがまた存在することにも依る)。プロセッサコンポーネント950が結合959により結合された状態で、プロセッサコンポーネント950は、処理アーキテクチャ3000を実装する前述した複数のコンピューティングデバイスのうちのいずれかの1つについて、上記で詳しく説明した様々なタスクを実行することが可能である。結合959は、複数の信号が光学的及び/又は電気的に伝達される様々な技術のいずれか、又は、技術の組み合わせで実装され得る。更に、結合959の少なくとも一部は、アクセラレーテッドグラフィックスポート(AGP)、CardBus、E−ISA(Extended Industry Standard Architecture)、MCA(Micro Channel Architecture)、NuBus、ペリフェラルコンポーネントインターコネクト(Extended)(PCI−X)、PCI Express(PCI−E)、パーソナルコンピュータメモリカード国際協会(PCMCIA)バス、ハイパートランスポート(登録商標)、QuickPath等を限定することなく含む、多種多様な業界標準のいずれかに準拠するタイミング及び/又はプロトコルを採用し得る。
前述のように、(プロセッサコンポーネント550及び650に対応する)プロセッサコンポーネント950は、多種多様な技術のいずれかを採用し、複数の方法のいずれかで物理的に組み合わせられる1又は複数のコアとともに実装される、多種多様な商業的に利用可能なプロセッサのいずれかを含み得る。
前述のように、(ストレージ560及び660に対応する)ストレージ960は、多種多様な技術のいずれか又は技術の組み合わせに基づいて、1又は複数の別個のストレージデバイスで構成され得る。より具体的に、示されるように、ストレージ960は、揮発性ストレージ961(例えば、RAMテクノロジーの1又は複数の形式に基づくソリッドステートストレージ)、不揮発性ストレージ962(例えば、それらのコンテンツを保持するために一定の電力の提供を必要としないソリッドステート、強磁性又は他のストレージ)及びリムーバブルメディアストレージ963(例えば、情報がコンピューティングデバイス間で伝達され得るリムーバブルディスク又はソリッドステートメモリカードストレージ)のうちの1又は複数を含み得る。複数の別個のタイプのストレージをおそらく含むようなこのストレージ960の図は、プロセッサコンポーネント950によりデータのより迅速な操作を可能にする(しかし、電力を絶えず必要とする「揮発性」技術をおそらく用いる)、あるタイプが比較的迅速な読み取り及び書き込み機能を提供する一方、別のタイプが比較的高い密度の不揮発性ストレージを提供する(しかし、比較的遅い読み取り及び書き込み機能をおそらく提供する)、コンピューティングデバイス内の1より多いタイプのストレージデバイスの通常の使用が認められている。
異なる技術を採用するしばしば異なるストレージデバイスの異なる特性を考慮すると、異なるインタフェースを通じてそれらの異なるストレージデバイスに結合される異なるストレージコントローラを通じて、コンピューティングデバイスの他の一部に結合される、そのような異なるストレージデバイスについてもまた、よく見られる。例として、揮発性ストレージ961が存在し、RAMテクノロジーに基づく場合、揮発性ストレージ961は、行及び列のアドレス指定をおそらく採用する揮発性ストレージ961に適切なインタフェースを提供するストレージコントローラ965aを通じじて結合959に通信可能に結合され得、ストレージコントローラ965aは、揮発性ストレージ961内に格納された情報を保存することを補助するべく、行の更新及び/又は他のメンテナンスタスクを実行し得る。別の例として、不揮発性ストレージ962が存在し、1又は複数の強磁性及び/又はソリッドステートディスクドライブを含む場合、不揮発性ストレージ962は、情報及び/又はシリンダのブロックとセクターとのアドレス指定をおそらく採用する不揮発性ストレージ962に適切なインタフェースを提供するストレージコントローラ965bを通じて結合959に通信可能に結合され得る。更なる別の例として、リムーバブルメディアストレージ963が存在し、機械可読記憶媒体969の1又は複数の断片を採用する1又は複数の光及び/又はソリッドステートディスクドライブを含む場合、リムーバブルメディアストレージ963は、情報のブロックのアドレス指定をおそらく採用するリムーバブルメディアストレージ963に適切なインタフェースを提供するストレージコントローラ965cを通じて結合959に通信可能に結合され得、ストレージコントローラ965cは、機械可読記憶媒体969の寿命を延ばすことに特有の態様でオペレーションの読み出し、消去、及び書き込みを調整し得る。
揮発性ストレージ961又は不揮発性ストレージ962の一方又は他方は、各々が基づく複数の技術に応じて、プロセッサコンポーネント950により実行可能な命令列を含むルーチンが格納され得る、機械可読記憶媒体の形式における製品を含み得る。例として、不揮発性ストレージ962は、強磁性ベースのディスクドライブ(例えば、いわゆる「ハードドライブ」)を含む場合、そのような各ディスクドライブは、1又は複数の回転プラッタを典型的に採用し、フロッピー(登録商標)ディスケットのような記憶媒体に似た態様で命令列のような情報を格納するべく、磁気的に対応する粒子のコーティングが様々なパターンで堆積され、かつ、磁気的に指向される。別の例として、不揮発性ストレージ962は、ソリッドステートストレージデバイスのバンクで構成され得、コンパクトフラッシュ(登録商標)カードに似た態様で命令列のような情報を格納する。更に、実行可能なルーチン及び/又はデータを格納するべく、異なる回数でコンピューティングデバイスの異なるタイプのストレージデバイスを採用することがよく見られる。
従って、プロセッサコンポーネント950により実行される命令列を含むルーチンは、機械可読記憶媒体969に最初に格納され得、ルーチンが実行されるように、プロセッサコンポーネント950によって、より迅速なアクセスを可能とする機械可読記憶媒体969及び/又は揮発性ストレージ961の連続的な存在を必要としない、より長い期間の格納のための不揮発性ストレージ962に対してルーチンをコピーするときに、リムーバブルメディアストレージ963は続けて採用され得る。
前述のように、(おそらくインタフェース590に対応する)インタフェース990は、1又は複数の他のデバイスにコンピューティングデバイスを通信可能に結合するべく採用され得る様々な通信技術のいずれかに対応する様々なシグナリング技術のいずれかを採用し得る。更に、様々な形式の有線又は無線シグナリングの一方又は両方は、ネットワーク(例えば、ネットワーク999)又は相互接続されたネットワークのセットをおそらく通じて、入力/出力デバイス(例えば、示された例示的なキーボード920若しくはプリンタ925)及び/又は他のコンピューティングデバイスと相互作用することをプロセッサコンポーネント950に可能させるべく採用され得る。任意の1つのコンピューティングデバイスによって、しばしばサポートされるべき複数のタイプのシグナリング及び/又はプロトコルのしばしば大幅に異なる性質が認められる場合、インタフェース990は、複数の異なるインタフェースコントローラ995a、995b及び995cを含むように示される。インタフェースコントローラ995aは、示されたキーボード920のような、ユーザ入力デバイスから連続的に送信されたメッセージを受信するべく、様々なタイプの有線デジタルシリアルインタフェース又は無線周波数無線インタフェースのいずれかを採用し得る。インタフェースコントローラ995bは、示されたネットワーク999(1又は複数のリンクで構成されるおそらくネットワーク、より小さなネットワーク又はおそらくインターネット)を通じて他のコンピューティングデバイスにアクセスする様々なケーブルベース若しくは無線シグナリング、タイミング及び/又はプロトコルのいずれかを採用し得る。インタフェース995cは、示されたプリンタ925にデータを伝達するべく、シリアル又はパラレル信号伝送のいずれかの使用を可能にする、様々な電気的に導電性のあるケーブル配線のいずれかを採用し得る。インタフェース990の1又は複数のインタフェースコントローラを通じて通信可能に結合され得るデバイスの他の例は、人が作り得る音声又は他のサウンドを介してその人により合図されたコマンド及び/又はデータを受け入れるべく、人のサウンドをモニタするマイク、リモートコントロール、スタイラスペン、カードリーダ、指紋リーダ、仮想現実インタラクショングローブ、グラフィカル入力タブレット、ジョイスティック、他のキーボード、網膜スキャナ、タッチスクリーンのタッチ入力コンポーネント、トラックボール、様々なセンサ、ジェスチャ及び/又は顔の表現を介して人により合図されたコマンド及び/又はデータを受け入れるべく、人の動きをモニタするカメラ又はカメラアレイ、レーザプリンタ、インクジェットプリンタ、機械ロボット、ミリング機械等を、限定することなく含む。
コンピューティングデバイスがディスプレイ(例えば、示された例示的なディスプレイ980)に通信可能に結合される(又は、おそらく実際に組み込まれる)場合、そのような処理アーキテクチャ3000を実装するコンピューティングデバイスはまた、ディスプレイインタフェース985を含み得る。より汎用的なタイプのインタフェースは、ディスプレイに通信可能に結合するときに採用され得るが、ディスプレイに様々な形式のコンテンツを視覚的に表示する場合にしばしば必要とされる、それと同様に幾分か特化された追加の処理及び使用されるケーブルベースインタフェースの幾分か特化された性質は、しばしば別個のディスプレイインタフェースの提供を望ましいものとする。ディスプレイ980の通信可能な結合において、ディスプレイインタフェース985により採用され得る有線及び/又は無線シグナリング技術は、様々なアナログビデオインタフェース、デジタルビデオインタフェース(DVI)、DisplayPort等のいずれかを、限定することなく含む様々な業界標準のいずれかに準拠するシグナリング及び/又はプロトコルを使用し得る。
図13は、システム4000の実施形態を示す。様々な実施形態において、システム4000は、システム1000、コンピューティングデバイス100、300、500又は700の1又は複数、及び/又は、論理フロー2100、2200又は2300の1又は複数のような、本明細書で説明された1又は複数の実施形態での使用に好適なシステム又はアーキテクチャを代表し得る。実施形態は、この点に限定されない。
示されるように、システム4000は、複数の要素を含み得る。1又は複数の要素は、設計又は性能制約の所与のセットについて所望されるように、1又は複数の回路、コンポーネント、レジスタ、プロセッサ、ソフトウェアサブルーチン、モジュール又はそれらの任意の組み合わせを用いて実装され得る。図13は、例として、特定のトポロジーにおいて限定された数の要素を示しているが、任意の適切なトポロジーにおいて、より多くの又はより少ない要素が、所与の実装について所望されるように、システム4000で用いられる可能性があることが理解され得る。複数の実施形態は、この文脈に限定されない。
複数の実施形態において、システム4000は、この文脈に限定されないが、システム4000は、メディアシステムであり得る。例えば、システム4000は、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルデジタルアシスト(PDA)、携帯電話、携帯電話/PDAの組み合わせ、テレビ、スマートデバイス(例えば、スマートフォン、スマートタブレット又はスマートテレビ)、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス等に組み込まれ得る。
複数の実施形態において、システム4000は、ディスプレイ4980に結合されるプラットフォーム4900aを含む。プラットフォーム4900aは、コンテンツサービスデバイス4900c若しくはコンテンツ配信デバイス4900d又は他の同様のコンテンツソースのようなコンテンツデバイスからコンテンツを受信し得る。1又は複数のナビゲーション機能を含むナビゲーションコントローラ4920は、例えば、プラットフォーム4900a及び/又はディスプレイ4980と相互作用するために用いられ得る。これらのコンポーネントの各々は、以下により詳細に説明される。
複数の実施形態において、プラットフォーム4900aは、プロセッサコンポーネント4950、チップセット4955、メモリユニット4969、送受信機4995、ストレージ4962、アプリケーション4940及び/又はグラフィックスサブシステム4985の任意の組み合わせを含み得る。チップセット4955は、プロセッサ回路4950、メモリユニット4969、送受信機4995、ストレージ4962、アプリケーション4940及び/又はグラフィックスサブシステム4985間の相互通信を提供し得る。例えば、チップセット4955は、ストレージ4962との相互通信を提供することが可能なストレージアダプタ(図示せず)を含み得る。
プロセッサコンポーネント4950は、任意のプロセッサ又は論理デバイスを用いて実装され得、更に、プロセッサコンポーネント550または650のうち1又は複数、及び/又は図12のプロセッサコンポーネント950と同一又は同様のものであり得る。
メモリユニット4969は、データを格納することが可能な任意の機械可読又はコンピュータ可読媒体を用いて実装され得、更に、図12の記憶媒体969と同一又は同様のものであり得る。
送受信機4995は、様々な好適な無線通信技術を用いて、信号を送信し受信することを可能とする1又は複数の無線機を含み得、更に、図12の送受信機995bと同一又は同様のものであり得る。
ディスプレイ4980は、任意のテレビ型のモニタ又はディスプレイを含み得る、更に、ディスプレイ380及び/又は680のうち1又は複数、及び/又は図12のディスプレイ980と同一又は同様のものであり得る。
ストレージ4962は、不揮発性ストレージデバイスとして実装され得、更に、図12の不揮発性ストレージ962と同一又は同様のものであり得る。
グラフィックスサブシステム4985は、表示のための静止画又はビデオのような画像の処理を実行し得る。グラフィックスサブシステム4985は、例えば、グラフィックス処理装置(GPU)又はビジュアル処理装置(VPU)であり得る。アナログ又はデジタルインタフェースは、グラフィックスサブシステム4985及びディスプレイ4980を通信可能に結合するために用いられ得る。例えば、インタフェースは、高品位マルチメディアインタフェース、DisplayPort、無線HDMI(登録商標)及び/又は無線HD準拠技術のいずれかであり得る。グラフィックスサブシステム4985は、プロセッサ回路4950又はチップセット4955に統合され得る。グラフィックスサブシステム4985は、チップセット4955に通信可能に結合されるスタンドアロンカードであり得る。
本明細書で説明されるグラフィックス及び/又はビデオ処理技術は、様々なハードウェアアーキテクチャに実装され得る。例えば、グラフィックス及び/又はビデオ機能は、チップセット内に統合され得る。代替的に、別々のグラフィックス及び/又はビデオプロセッサが用いられ得る。更に別の実施形態のように、グラフィックス及び/又はビデオ機能は、複数のコアプロセッサを含む汎用プロセッサにより実装され得る。更なる実施形態において、機能は、消費者向け電子デバイスに実装され得る。
複数の実施形態において、コンテンツサービスデバイス4900bは、任意の国の、国際的な及び/又は独立のサービスによりホストされ得、従って、例えば、インターネットを介してプラットフォーム4900aにアクセス可能となる。コンテンツサービスデバイス4900bは、プラットフォーム4900a及び/又はディスプレイ4980に結合され得る。プラットフォーム4900a及び/又はコンテンツサービスデバイス4900bは、ネットワーク4999へ及びそこからメディア情報を通信(例えば、送信及び/又は受信)するべく、ネットワーク4999に結合され得る。コンテンツ配信デバイス4900cはまた、プラットフォーム4900a及び/又はディスプレイ4980に結合され得る。
複数の実施形態において、コンテンツサービスデバイス4900bは、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話、デジタル情報及び/又はコンテンツを提供することが可能なインターネット可能なデバイス若しくは電気機器、及び、ネットワーク4999を介して、又は直接的に、コンテンツプロバイダとプラットフォーム4900a及び/又はディスプレイ4980との間でコンテンツを一方向又は双方向に通信することが可能な任意の他の同様のデバイスを含み得る。コンテンツがネットワーク4999を介してシステム4000及びコンテンツプロバイダ内の複数のコンポーネントのうちの任意の1つへ、及びそれから一方向及び/又は双方向に通信し得ることが理解されよう。コンテンツの複数の例は、例えば、ビデオ、音楽、医療及びゲーム情報等を含む任意のメディア情報を含み得る。
コンテンツサービスデバイス4900bは、メディア情報、デジタル情報及び/又は他のコンテンツを含むケーブルテレビプログラミングのようなコンテンツを受信する。コンテンツプロバイダの複数の例は、任意のケーブル若しくは衛星テレビ又は無線機若しくはインターネットコンテンツプロバイダを含み得る。提供した複数の例は、実施形態を制限することを意味するものではない。
複数の実施形態において、プラットフォーム4900aは、1又は複数のナビゲーション機能を有するナビゲーションコントローラ4920から複数の制御信号を受信し得る。ナビゲーションコントローラ4920のナビゲーション機能は、例えば、ユーザインタフェース4880と相互作用するために用いられ得る。実施形態において、ナビゲーションコントローラ4920は、ユーザが空間(例えば、連続及び多次元の)データをコンピュータに入力することを可能にするコンピュータハードウェアコンポーネント(具体的に、ヒューマンインタフェースデバイス)であり得るポインティングデバイスであり得る。グラフィカルユーザインタフェース(GUI)及び、テレビ並びにモニタのような多くのシステムは、ユーザが身体的なジェスチャを利用してコンピュータ又はテレビを制御し、及びそこにデータを提供することを可能にする。
ナビゲーションコントローラ4920のナビゲーション機能の動きは、ディスプレイ上に表示されるポインタ、カーソル、フォーカスリング又は他の視覚的な指標の動きによって、ディスプレイ(例えば、ディスプレイ4980)上で同調され得る。例えば、ソフトウェアアプリケーション4940の制御のもと、ナビゲーションコントローラ4920上に位置付けられるナビゲーション機能は、ユーザインタフェース4880上に表示される仮想ナビゲーション機能にマッピングされ得る。複数の実施形態において、ナビゲーションコントローラ4920は、別個のコンポーネントではなく、プラットフォーム4900a及び/又はディスプレイ4980に統合され得る。しかしながら、複数の実施形態は、当該要素又は本明細書で示された若しくは説明された文脈に限定されない。
複数の実施形態において、複数のドライバ(不図示)は、例えば、イネーブルになったときに、初期のブートアップの後にボタンのタッチでテレビのようなプラットフォーム4900aをユーザが即座にオン及びオフすることを可能にする技術を含み得る。プログラムロジックは、プラットフォームが「オフ」にされるときに、プラットフォーム4900aが、メディアアダプタ又は他のコンテンツサービスデバイス4900b若しくはコンテンツ配信デバイス4900cにコンテンツをストリーミング配信することを可能にし得る。加えて、チップセット4955は、例えば、5.1サラウンドサウンドオーディオ及び/又は高精細な7.1サラウンドサウンドオーディオをサポートするハードウェア及び/又はソフトウェアを含み得る。ドライバは、統合されたグラフィックスプラットフォーム用のグラフィックスドライバを含み得る。複数の実施形態において、グラフィックスドライバは、ペリフェラルコンポーネントインターコネクト(PCI)エクスプレスグラフィックスカードを含み得る。
様々な実施形態において、システム4000内に示されるコンポーネントのうちの任意の1又は複数は、統合され得る。例えば、プラットフォーム4900a及びコンテンツサービスデバイス4900bが統合され得、若しくは、プラットフォーム4900a及びコンテンツ配信デバイス4900cが統合され得、又は、プラットフォーム4900a、コンテンツサービスデバイス4900b及びコンテンツ配信デバイス4900cが統合され得る。様々な実施形態において、プラットフォーム4900a及びディスプレイ4890は、統合されたユニットであり得る。例えば、ディスプレイ4980及びコンテンツサービスデバイス4900bが統合され得、又は、ディスプレイ4980及びコンテンツ配信デバイス4900cが統合され得る。これらの例は、実施形態を制限することを意味するものではない。
様々な実施形態において、システム4000は、無線システム、有線システム又は両方の組み合わせとして実装され得る。無線システムとして実装されるとき、システム4000は、1又は複数のアンテナ、送信機、受信機、送受信機、増幅器、フィルタ、制御ロジック等のような、無線共有媒体を介して通信するために好適なコンポーネント及びインタフェースを含み得る。 無線の共有媒体の一例は、RFスペクトル等のような無線スペクトルの複数の部分を含み得る。有線システムとして実装される場合、システム4000は、I/Oアダプタ、対応する有線通信媒体を有するI/Oアダプタを接続する物理コネクタ、ネットワークインタフェースカード(NIC)、ディスクコントローラ、ビデオコントローラ、オーディオコントローラ等のような、有線通信媒体を介して通信するために好適なコンポーネント及びインタフェースを含み得る。有線通信媒体の複数の例は、ワイヤ、ケーブル、複数の金属リード、プリント回路基板(PCB)、バックプレーン、スイッチファブリック、半導体材料、ツイストペアワイヤ、同軸ケーブル、光ファイバ等を含み得る。
プラットフォーム4900aは、情報を通信するべく、1又は複数の論理又は物理チャネルを確立し得る。情報は、メディア情報及び制御情報を含み得る。メディア情報は、ユーザ向けのコンテンツを表す任意のデータを指し得る。コンテンツの複数の例は、例えば、音声会話からのデータ、ビデオ会議、ストリーミングビデオ、電子メール(eメール)メッセージ、ボイスメールメッセージ、英数字記号、グラフィックス、画像、ビデオ、テキスト等を含み得る。音声会話からのデータは、例えば、スピーチ情報、無音期間、背景ノイズ、快適ノイズ、トーン等であり得る。制御情報は、自動化されたシステム向けのコマンド、命令又は制御語を表す任意のデータを指し得る。 例えば、制御情報は、システムを通じてメディア情報をルーティングするために、又は、所定の態様でメディア情報を処理することをノードに指示するのに用いられ得る。しかしながら、複数の実施形態は、要素又は図13に示され若しくは説明された文脈に限定されない。
上述のように、システム4000は、様々な物理的なスタイル又はフォームファクタで具現化され得る。図14は、システム4000が具現化され得るスモールフォームファクタデバイス5000の複数の実施形態を示す。複数の実施形態において、例えば、デバイス5000は、無線機能を有するモバイルコンピューティングデバイスとして実装され得る。モバイルコンピューティングデバイスは、処理システムと、例えば、1又は複数のバッテリのようなモバイル電源又はモバイル電力供給とを有する任意のデバイスを指し得る。
上述のように、モバイルコンピューティングデバイスの例は、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルデジタルアシスト(PDA)、携帯電話、携帯電話/PDAの組み合わせ、テレビ、スマートデバイス(例えば、スマートフォン、スマートタブレット又はスマートテレビ)、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス等を含み得る。
モバイルコンピューティングデバイスの複数の例はまた、リストコンピュータ、フィンガーコンピュータ、リングコンピュータ、眼鏡コンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、靴コンピュータ、衣類コンピュータ及び他のウェアラブルコンピュータのように、人によって着用されるように構成されたコンピュータを含み得る。複数の実施形態において、例えば、モバイルコンピューティングデバイスは、音声通信及び/又はデータ通信と同様、コンピュータアプリケーションを実行することが可能なスマートフォンとして実装され得る。いくつかの実施形態は、例として、スマートフォンとして実装されたモバイルコンピューティングデバイスを用いて説明され得るが、他の実施形態が、他の無線モバイルコンピューティングデバイスを同様に用いて実装され得ることが理解され得る。複数の実施形態は、この文脈に限定されない。
図14に示されたように、デバイス5000は、ディスプレイ5980、ナビゲーションコントローラ5920a、ユーザインタフェース5880、ハウジング5905、I/Oデバイス5920b及びアンテナ5998を含み得る。ディスプレイ5980は、モバイルコンピューティングデバイス用の適切な情報を表示する任意の適切なディスプレイユニットを含み得、かつ、図13のディスプレイ4980と同一又は同様のものであり得る。ナビゲーションコントローラ5920aは、ユーザインタフェース5880と相互作用することに用いられ得る1又は複数のナビゲーション機能を含み得、かつ、図13のナビゲーションコントローラ4920と同一又は同様のものであり得る。I/Oデバイス5920bは、モバイルコンピューティングデバイスに情報を入力するための任意の適切なI/Oデバイスを含み得る。I/Oデバイス5920bの複数の例は、英数字キーボード、テンキー、タッチパッド、入力キー、ボタン、スイッチ、ロッカースイッチ、マイク、スピーカ、音声認識デバイス及びソフトウェア等を含み得る。情報はまた、マイクを介してデバイス5000に入力され得る。そのような情報は、音声認識デバイスによってデジタル化され得る。複数の実施形態は、この文脈に限定されない。
より一般的に、本明細書で説明され及び図示されたコンピューティングデバイスの様々な要素は、様々なハードウェア要素、ソフトウェア要素又は両方の組み合わせを含み得る。ハードウェア要素の例は、デバイス、論理デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサコンポーネント、回路要素(例えば、トランジスタ、レジスタ、コンデンサ、インダクタ等)、集積回路、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、メモリユニット、ロジックゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット等を含み得る。ソフトウェア要素の複数の例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、ソフトウェア開発プログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、機能、方法、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラムインタフェース(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル又はそれらの任意の組み合わせを含み得る。しかしながら、実施形態がハードウェア要素及び/又はソフトウェア要素を用いて実装されるか否かを決定することは、所与の実装のために望まれるように、所望の計算レート、電力レベル、耐熱性、処理サイクル量、入力データレート、出力データレート、メモリリソース、データバス速度及び、他の設計又は性能制約のような任意の複数の要因によって異なり得る。
いくつかの実施形態は、「一実施形態」又は「実施形態」という表現をそれらの派生語と共に用いて説明され得る。これらの用語は、実施形態と関連して説明した特定の機能、構造又は特性が少なくとも一実施形態に含まれることを意味する。本明細書の様々な個所における「一実施形態」という文言の出現は、必ずしも同一の実施形態を全て指すわけではない。更に、いくつかの実施形態は、「結合され」及び「接続され」という表現をそれらの派生語と共に用いて説明され得る。これらの用語は、必ずしも、互いの同義語として意図されたものではない。例えば、いくつかの実施形態は、2又はそれより多い要素が、互いに直接物理的又は電気的に接触していることを示すべく、「接続され」及び/又は「結合され」という用語を用いて説明され得る。しかしながら、「結合され」という用語はまた、2又はそれより多い要素が互いに直接接触していないが、まだ依然として互いに協働又は相互作用することを意味し得る。更に、異なる実施形態からの複数の態様又は要素が組み合わせられ得る。
本開示の要約は、読み手が技術的開示の本質を迅速に把握することを可能にするために提供されることが強調される。要約書は、特許請求の範囲の範囲若しくは意味を解釈又は限定するために使用されないという理解の下に提出されている。加えて、上記の詳細な説明では、様々な機能が開示を効率的にする目的で単一の実施形態においてともにグループ化されていることが分かるであろう。本開示のこの方法は、請求された実施形態が各請求項に明示的に記載されたものより多くの機能を必要とする意図を反映するものとして解釈されるべきでない。むしろ、以下の特許請求の範囲が反映するように、本発明の主題は、単一の開示された実施形態の全ての機能よりも少ないことにある。従って、これにより、以下の特許請求の範囲は、別個の実施形態としてそれ自体に依存する各請求項とともに、本明細書において詳細な説明に組み込まれる。添付の請求項において、「including」及び「in which」という用語は、それぞれ「comprising」及び「wherein」というそれぞれの用語に相当する平易な英語として用いられる。更に、「第1」、「第2」、「第3」、「等」という用語は、単にラベルとして用いられ、それらの対象に数値的な要件を課すことは意図されない。
上記で説明されたものは、開示されたアーキテクチャの例を含む。それは、当然ながら、コンポーネント及び/又は方法論のあらゆる考えられる組み合わせを説明することは可能ではないが、当業者は、多くの更なる組み合わせ及び変形が可能であると認識し得る。従って、新規なアーキテクチャは、添付の請求項の主旨及び範囲内に収まるそのような全ての変更、修正及び変形を包含することが意図される。詳細な開示は、ここで更なる複数の実施形態に関する複数の例を提供することなる。以下で提供される複数の例は、限定することは意図されない。
例1において、ランダムサンプルコンセンサス(RANSAC)を実行するデバイスは、データセットの複数のミニマルサンプルセット(MSS)のセットから、複数の提示モデルの新たなセットの複数の提示モデルを並列して導出する導出コンポーネントと、比較コンポーネントとを含み、比較コンポーネントは、新たなセットの提示モデルが、任意の前に導出された提示モデルよりも良好にデータセットに適合する場合、選択された確度内で正確なモデルを導出するのに必要とされる、提示モデルの数を再計算し、必要とされる数と、既に導出された提示モデルの数との比較に基づいて、複数の提示モデルの別の新たなセットを導出するか否かを決定する。
例1の主題を含む例2において、デバイスは、複数の提示モデルの新たなセットのそれぞれの提示モデルの、データセットに対する適合度合いを並列してテストするテストコンポーネントを含み得、テストコンポーネントは、いくつのデータ要素が、選択された適合閾値内で新たなセットのそれぞれの提示モデルに適合するかに基づいて、データセットのいくつのデータ要素が、新たなセットのそれぞれの提示モデルのコンセンサスセットのインライアであるかを決定し得る。
例1から2のいずれかの主題を含む例3において、比較コンポーネントは、任意の前に導出された提示モデルよりも良好にデータセットに適合する新たなセットの提示モデルのコンセンサスセットにおいて複数のインライアの数に基づいて、必要とされる数を再計算し得る。
例1から3のいずれかの主題を含む例4において、比較コンポーネントは、複数の提示モデルの全ての前に導出されたセットでデータセットに最も適合する全体的に最良の提示モデルの仕様をストレージに格納し得、デバイスは、ストレージにおいて全体的に最良の提示モデルの仕様を、全体的に最良の提示モデルよりも良好にデータセットに適合する新たなセットの提示モデルの仕様に置換する選択コンポーネントを含み得る。
例1から4のいずれかの主題を含む例5において、デバイスは、複数の提示モデルの新たなセットを並列して導出することを可能とすべく、複数の提示モデルの新たなセットの導出の前に、複数のミニマルサンプルセット(MSS)のセットを生成し、及び、複数の提示モデルの別の新たなセットを並列して導出することに備えて、新たなセットの導出と並列して、複数のMSSの別のセットを生成するMSSジェネレータを含み得る。
例1から5のいずれかの主題を含む例6において、MSSジェネレータは、複数のMSSのセットのそれぞれのMSSと、複数のMSSの他のセットのそれぞれのMSSとを生成すべく、データセットの複数のデータ要素をランダムに選択し得る。
例1から6のいずれかの主題を含む例7において、デバイスは、MSSジェネレータを実行するコアと、導出コンポーネントを実行する少なくとも1つの他のコアと、コアと少なくとも1つの他のコアとの間で複数のMSSのセットを伝達するキャッシュとを含み得る。
例1から7のいずれかの主題を含む例8において、デバイスは、コアと、少なくとも1つの他のコアとを含み得る。
例1から8のいずれかの主題を含む例9において、少なくとも1つの他のコアは、複数のコアを含み得、複数のコアのそれぞれのコアは、少なくとも1つの実行のスレッドをサポートし得、導出コンポーネントは、複数のコアの1つで実行の別個のスレッドを介して、新たなセットのそれぞれの提示モデルを導出し得る。
例1から9のいずれかの主題を含む例10において、少なくとも1つの他のコアは、複数のレーンでsingle−instruction multiple−data(SIMD)オペレーションをサポートするレジスタセットを含み得、導出コンポーネントは、複数のレーンの別個のレーン内の新たなセットのそれぞれの提示モデルを導出し得る。
例1から10のいずれかの主題を含む例11において、デバイスは、コアと少なくとも1つの他のコアとの間でバッファとして機能するキャッシュを構成するキャッシュコンポーネントを含み得る。
例1から11のいずれかの主題を含む例12において、デバイスは、コアと少なくとも1つの他のコアとにアクセス可能なストレージと、ストレージ内に定義され、キャッシュにより少なくとも部分的にキャッシュされる共有ストレージスペースとを含み得、MSSジェネレータは、複数のMSSのセットと複数のMSSの他のセットを共有ストレージスペースに格納し、導出コンポーネントは、複数のMSSのセットを共有ストレージスペースから取得する。
例1から12のいずれかの主題を含む例13において、デバイスは、正確なモデルに基づいて画像を視覚的に提示するディスプレイ、又は正確なモデルと関連するデータを別のデバイスに送信するインタフェースのうちの少なくとも1つを含み得る。
例14において、ランダムサンプルコンセンサス(RANSAC)を実行するデバイスは、複数の提示モデルの新たなセットのうち複数の提示モデルのデータセットへの適合度合いを並列してテストするテストコンポーネントと、比較コンポーネントとを含み、比較コンポーネントは、新たなセットの提示モデルが、任意の前にテストされた提示モデルよりも良好にデータセットに適合する場合、選択された確度内で正確なモデルを導出するのに必要とされる、提示モデルの数を再計算し、必要とされる数と、既にテストされた提示モデルの数との比較に基づいて、複数の提示モデルの別の新たなセットをテストするか否かを決定する。
例14の主題を含む例15において、デバイスは、データセットの複数のミニマルサンプルセット(MSS)のセットから、複数の提示モデルの新たなセットのそれぞれの提示モデルを並列して導出する導出コンポーネントを含み得る。
例14から15のいずれかの主題を含む例16において、比較コンポーネントは、データセットに最も適合する複数の提示モデルの全ての前にテストされたセットの全体的に最良の提示モデルの仕様をストレージに格納し得、デバイスは、ストレージにおける全体的に最良の提示モデルの仕様を、全体的に最良の提示モデルよりも良好にデータセットに適合する新たなセットの提示モデルの仕様と置換する選択コンポーネントを含み得る。
例14から16のいずれかの主題を含む例17において、デバイスは、複数の提示モデルの新たなセットを並列して導出及びテストすることを可能とすべく、複数の提示モデルの新たなセットのテストの前に、複数のミニマルサンプルセット(MSS)のセットを生成し、及び、複数の提示モデルの別の新たなセットを並列して導出及びテストすることに備えて、新たなセットのテストと並列して、複数のMSSの別のセットを生成するMSSジェネレータを含み得る。
例14から17のいずれかの主題を含む例18において、MSSジェネレータは、複数のMSSのセットのそれぞれのMSSと、複数のMSSの他のセットのそれぞれのMSSとを生成すべく、データセットの複数のデータ要素をランダムに選択し得る。
例14から18のいずれかの主題を含む例19において、テストコンポーネントは、いくつのデータ要素が、選択された適合閾値内で新たなセットのそれぞれの提示モデルに適合するかに基づいて、データセットのいくつのデータ要素が、新たなセットのそれぞれの提示モデルのコンセンサスセットのインライアであるかを決定し得、比較コンポーネントは、任意の前にテストされた提示モデルよりも良好にデータセットに適合する新たなセットの提示モデルのコンセンサスセットにおけるインライアの数に基づいて、必要とされる数を再計算し得る。
例14から19のいずれかの主題を含む例20において、デバイスは、比較コンポーネントを実行するコアと、テストコンポーネントを実行する少なくとも1つの他のコアと、コアと少なくとも1つの他のコアとの間で複数の提示モデルの新たなセットの複数のコンセンサスセットのセットを伝達するキャッシュとを含み得る。
例14から20のいずれかの主題を含む例21において、プロセッサコンポーネントは、コアと、少なくとも1つの他のコアとを含み得る。
例14から21のいずれかの主題を含む例22において、少なくとも1つの他のコアは、複数のコアと、複数のコアの1つで別個の実行のスレッドを介して新たなセットのそれぞれの提示モデルをテストするテストコンポーネントとを含み得、複数のコアのそれぞれのコアは、少なくとも1つの実行のスレッドをサポートする。
例14から22のいずれかの主題を含む例23において、少なくとも1つの他のコアは、複数のレーンでsingle−instruction multiple−data(SIMD)オペレーションをサポートするレジスタセットを含み得、テストコンポーネントは、複数のレーンの別個のレーン内で新たなセットのそれぞれの提示モデルをテストし得る。
例14から23のいずれかの主題を含む例24において、デバイスは、コアと少なくとも1つの他のコアとの間でバッファとして機能するキャッシュを構成するキャッシュコンポーネントを含み得る。
例14から24のいずれかの主題を含む例25において、デバイスは、コアと少なくとも1つの他のコアとにアクセス可能なストレージと、ストレージ内に定義され、キャッシュにより少なくとも部分的にキャッシュされた共有ストレージスペースとを含み得、テストコンポーネントは、共有ストレージスペースにおいて複数のコンセンサスセットのセットを格納し、比較コンポーネントは、共有ストレージスペースから複数のコンセンサスセットのセットを取得する。
例14から25のいずれかの主題を含む例26において、デバイスは、正確なモデルに基づいて画像を視覚的に提示するディスプレイ、又は正確なモデルと関連付けられたデータを別のデバイスに送信するインタフェースのうちの少なくとも1つを含み得る。
例27において、ランダムサンプルコンセンサス(RANSAC)を実行するためのコンピュータ実装方法は、データセットの複数のミニマルサンプルセット(MSS)のセットから、複数の提示モデルの新たなセットの複数の提示モデルを並列して導出する段階と、新たなセットの提示モデルが、任意の前に導出された提示モデルよりも良好にデータセットに適合する場合、選択された確度内で正確なモデルを導出するのに必要とされる、提示モデルの数を再計算する段階と、必要とされる数と、既に導出された提示モデルの数との比較に基づいて、複数の提示モデルの別の新たなセットを導出するか否かを決定する段階とを含み得る。
例27の主題を含む例28において、方法は、いくつのデータ要素が、選択された適合閾値内で新たなセットのそれぞれの提示モデルに適合するかに基づいて、データセットのいくつのデータ要素が、新たなセットのそれぞれの提示モデルのコンセンサスセットのインライアであるかを決定する段階を含み得る。
例27から28のいずれかの主題を含む例29において、方法は、任意の前に導出された提示モデルよりも良好にデータセットに適合する新たなセットの提示モデルのコンセンサスセットにおける複数のインライアの数に基づいて、必要とされる数を再計算する段階を含み得る。
例27から29のいずれかの主題を含む例30において、方法は、複数の提示モデルの新たなセットを並列して導出することを可能とすべく、複数の提示モデルの新たなセットを導出する前に複数のMSSのセットを生成する段階と、複数の提示モデルの別の新たなセットを導出することに備えて、新たなセットを並列して導出することと並列して、複数のMSSの別のセットを生成する段階とを含み得る。
例27から30のいずれかの主題を含む例31において、方法は、複数のMSSのセットのそれぞれのMSSを生成すべく、データセットの複数のデータ要素をランダムに選択する段階と、複数のMSSの他のセットのそれぞれのMSSを生成すべく、データセットの複数のデータ要素をランダムに選択する段階とを含み得る。
例27から31のいずれかの主題を含む例32において、方法は、複数のMSSのセットと、複数のMSSの他のセットを1つのコアで生成する段階と、複数の提示モデルの新たなセットを少なくとも1つの他のコアで導出する段階とを含み得る。
例27から32のいずれかの主題を含む例33において、少なくとも1つの他のコアは、複数のコアを含み得、複数のコアのそれぞれのコアは、少なくとも1つの実行のスレッドをサポートし得、方法は、複数のコアの1つで別個の実行のスレッドを介して、新たなセットのそれぞれの提示モデルを導出する段階を含み得る。
例27から33のいずれかの主題を含む例34において、少なくとも1つの他のコアは、複数のレーンでsingle−instruction multiple−data(SIMD)オペレーションをサポートするレジスタセットを含み得、方法は、複数のレーンの別個のレーン内で新たなセットのそれぞれの提示モデルを導出する段階を含み得る。
例27から34のいずれかの主題を含む例35において、方法は、コアと少なくとも1つの他のコアとの間でバッファとして機能するキャッシュを構成する段階を含み得る。
例27から35のいずれかの主題を含む例36において、方法は、コアと少なくとも1つの他のコアにアクセス可能なストレージにおいて共有ストレージスペースを定義する段階と、共有ストレージスペースを少なくとも部分的にキャッシュするキャッシュを構成する段階と、複数のMSSのセットと複数のMSSの他のセットとを共有ストレージスペースに格納する段階とを含み得る。
例27から36のいずれかの主題を含む例37において、方法は、正確なモデルに基づいて画像を視覚的に提示する段階、又は正確なモデルと関連するデータを別のデバイスに送信する段階のうちの少なくとも1つを含み得る。
例38において、少なくとも1つの機械可読記憶媒体は、コンピューティングデバイスにより実行されるときに、コンピューティングデバイスに、データセットの複数のミニマルサンプルセット(MSS)のセットから、複数の提示モデルの新たなセットの複数の提示モデルを並列して導出させ、新たなセットの提示モデルが、任意の前に導出された提示モデルよりも良好にデータセットに適合する場合、選択された確度内で正確なモデルを導出するのに必要とされる、提示モデルの数を再計算させ、必要とされる数と、既に導出された提示モデルの数との比較に基づいて、複数の提示モデルの別の新たなセットを導出するか否かを決定させる複数の命令を含む。
例38の主題を含む例39において、コンピューティングデバイスは、いくつのデータ要素が、選択された適合閾値内で新たなセットのそれぞれの提示モデルに適合するかに基づいて、データセットのいくつのデータ要素が、新たなセットのそれぞれの提示モデルのコンセンサスセットのインライアであるかを決定させられ得る。
例38から39のいずれかの主題を含む例40において、コンピューティングデバイスは、任意の前に導出された提示モデルよりも良好にデータセットに適合する新たなセットの提示モデルのコンセンサスセットにおけるインライアの数に基づいて、必要とされる数を再計算させられ得る。
例38から40のいずれかの主題を含む例41において、コンピューティングデバイスは、複数の提示モデルの新たなセットを並列して導出することを可能とすべく、複数の提示モデルの新たなセットを導出する前に、複数のMSSのセットを生成させられ得、複数の提示モデルの別の新たなセットを並列して導出するのに備えて新たなセットを導出すること並列して、複数のMSSの別のセットを生成させられ得る。
例38から41のいずれかの主題を含む例42において、コンピューティングデバイスは、複数のMSSのセットのそれぞれのMSSを生成すべくデータセットの複数のデータ要素をランダムに選択させられ得、複数のMSSの他のセットのそれぞれのMSSを生成すべくデータセットの複数のデータ要素をランダムに選択させられ得る。
例38から42のいずれかの主題を含む例43において、コンピューティングデバイスは、複数のMSSのセットと、複数のMSSの他のセットとをコンピューティングデバイスの1つのコアで生成させられ得、複数の提示モデルの新たなセットをコンピューティングデバイスの少なくとも1つの他のコアで導出させられ得る。
例38から43のいずれかの主題を含む例44において、少なくとも1つの他のコアは、複数のコアを含み得、複数のコアのそれぞれのコアは、少なくとも1つの実行のスレッドをサポートし得、コンピューティングデバイスは、複数のコアの1つで別個の実行のスレッドを介して、新たなセットのそれぞれの提示モデルを導出させられ得る。
例38から44のいずれかの主題を含む例45において、少なくとも1つの他のコアは、複数のレーンでsingle−instruction multiple−data(SIMD)オペレーションをサポートするレジスタセットを含み得、コンピューティングデバイスは、複数のレーンの別個のレーン内で新たなセットのそれぞれの提示モデルを導出させられ得る。
例38から45のいずれかの主題を含む例46において、コンピューティングデバイスは、コアと少なくとも1つの他のコアとの間でバッファとして機能するコンピューティングデバイスのキャッシュを構成させられ得る。
例38から46のいずれかの主題を含む例47において、コンピューティングデバイスは、コアと少なくとも1つの他のコアとにアクセス可能なストレージにおいて共有ストレージスペースを定義させられ得、共有ストレージスペースを少なくとも部分的にキャッシュすべくキャッシュを構成させられ得、複数のMSSのセットと複数のMSSの他のセットとを共有ストレージスペースに格納させられ得る。
例38から47のいずれかの主題を含む例48において、コンピューティングデバイスは、正確なモデルと関連するデータを別のデバイスに送信させられ得る。
例49において、少なくとも1つの機械可読記憶媒体は、コンピューティングデバイスにより実行されるときに、コンピューティングデバイスに、上記のいずれかを実行させる複数の命令を含み得る。
例50において、ランダムサンプルコンセンサス(RANSAC)を実行するデバイスは、上記のいずれかを実行するための手段を含み得る。