(57)【要約】      （修正有）【課題】基準マーカ識別のためのシステム及び方法を提供する。【解決手段】基準マーカ識別システムにおいて処理１３２は、限定することなく、コンピューティング・デバイスのＧＰＵ１２２及びＣＰＵ１２４において実施される。効率を高めるために、より計算的に高価な処理１３２の処理ブロックが、ＧＰＵ１２２において実施される。それに加えて、ＧＰＵ１２２において処理ブロックの少なくともいくつかを実施することにより、２つ以上の処理ブロックが並列に実施される。処理１３２自体は、ＣＰＵ１２４上で実施されたとしても、従来のアプローチと比較して計算時間を低減する処理ブロックを含む。【選択図】図１Ｂ
2020119550.tif 000002
【特許請求の範囲】
【請求項１】
画像を表す画像データを受け取ることと、
前記画像データを、高次元の色空間から、低次元の色空間の変換画像に変換することと、
前記変換画像内の境界を識別することと、
候補コーナ点を表すピクセルを検出することと、
前記境界のうちの少なくとも１つまでのしきい距離内にある前記候補コーナ点のセットを判定することと、
前記候補コーナ点の前記セットを分析して、少なくとも１つのポリゴンのコーナを表す前記候補コーナ点のサブセットを判定することと、
少なくとも１つのフィルタを、前記少なくとも１つのポリゴンに適用して、基準マーカの基準マーカ境界に対応するものとして、前記少なくとも１つのポリゴンのうちのポリゴンを識別することとを備えた、方法。
【請求項２】
前記画像データを前記変換画像に前記変換することは、グローバルしきい値処理又は適応しきい値処理のうちの少なくとも１つを備えた、請求項１に記載の方法。
【請求項３】
前記境界を前記識別することは、
前記変換色画像において、第１の色のピクセルの第１の連続クラスタと、第２の色のピクセルの第２の連続クラスタとを識別することと、
前記第１の連続クラスタのうちの少なくとも１つと、前記第２の連続クラスタのうちの少なくとも１つとが、互いに隣接して延びるところを識別することに少なくとも部分的に基づいて、前記境界を判定することとを備えた、請求項１に記載の方法。
【請求項４】
前記基準マーカは、ＡｐｒｉｌＴａｇ、ＡＲＴａｇ、ＡＲＴｏｏｌｋｉｔ基準マーカ、又はＡＲＴｏｏｌｋｉｔＰｌｕｓ基準マーカのうちの１つである、請求項１に記載の方法。
【請求項５】
前記候補コーナ点を表す前記画像内の前記ピクセルを前記検出することと、前記画像データを前記変換画像に前記変換することと、前記変換画像内の前記境界を前記識別することと、前記境界のうちの前記少なくとも１つまでの前記しきい距離内にある前記候補コーナ点の前記セットを前記判定することとのうちの少なくとも１つは、グラフィック処理装置（ＧＰＵ）によって実行される、請求項１に記載の方法。
【請求項６】
前記画像データを前記変換画像に前記変換することは、
前記画像データを、前記画像のグレースケール・バージョンを表すグレースケール画像データに変換することと、
前記画像のバイナリ・バージョンを表すバイナリ画像データを生成するために、前記グレースケール画像データをしきい値処理することとを備え、
前記変換画像は、前記画像の前記バイナリ・バージョンである、請求項１に記載の方法。
【請求項７】
前記画像データを前記変換画像へ前記変換すること、又は、前記変換画像内の前記境界を前記識別することのうちの少なくとも１つは、前記候補コーナ点を表す前記画像内の前記ピクセルを前記検出することと並列に実行される、請求項１に記載の方法。
【請求項８】
前記候補コーナ点の前記セットを前記分析して、前記少なくとも１つのポリゴンの前記コーナを表す前記候補コーナ点の前記サブセットを判定することは、
同じ境界ＩＤに関連付けられた前記候補コーナ点の前記セットのメンバを判定することと、
前記候補コーナ点の前記セットの前記メンバ間に延びるエッジを生成することと、
前記エッジの隣接するエッジによって形成される角度を計算することと、
最小の大きさの角度のセットに関連付けられた前記候補コーナ点の前記セットの前記メンバを、前記候補コーナ点の前記サブセットとして識別することとを備えた、請求項１に記載の方法。
【請求項９】
前記少なくとも１つのフィルタを、前記少なくとも１つのポリゴンに前記適用することは、
前記少なくとも１つのポリゴンを表すピクセル・データを生成するために、前記少なくとも１つのポリゴン内のピクセル値を復号することと、
前記ピクセル・データを、基準マーカを表す基準マーカ・データと比較することと、
前記比較することに少なくとも部分的に基づいて、前記少なくとも１つのポリゴンのいずれかが前記基準マーカのいずれかに対応するか否かを判定することとを備えた、請求項１に記載の方法。
【請求項１０】
第１の画像における境界を表すデータと、前記境界の関連付けられた境界識別子（ＩＤ）とを受け取ることと、
前記境界のうちの少なくとも１つの境界までのしきい距離内の候補コーナ点を表す、前記第１の画像又は第２の画像のうちの少なくとも１つにおけるピクセルを判定することと、
前記境界の各境界について、
前記境界ＩＤに少なくとも部分的に基づいて、同じ境界ＩＤに関連付けられた前記候補コーナ点のセットを判定することと、
前記候補コーナ点の前記セットのメンバ間に延びるエッジを生成することと、
前記エッジの隣接するエッジによって形成される角度を計算することと、
最小の大きさの角度のセットに関連付けられた前記候補コーナ点の前記セットのサブセットを、四辺形のコーナとして識別することと、
前記四辺形が、基準マーカの基準マーカ境界に対応するか否かを判定するために、少なくとも１つのフィルタを、前記四辺形に適用することとを備えた、方法。
【請求項１１】
前記方法の少なくとも第１の部分は、中央処理装置（ＣＰＵ）において実行され、前記方法の第２の部分は、グラフィック処理装置（ＧＰＵ）において実行される、請求項１０に記載の方法。
【請求項１２】
前記少なくとも１つのフィルタを、前記四辺形に前記適用することは、
前記四辺形を表すピクセル・データを判定するために、前記四辺形内のピクセル値を復号することと、
前記ピクセル・データを、基準マーカを表す基準マーカ・データと比較することと、
前記比較することに少なくとも部分的に基づいて、前記四辺形が前記基準マーカのいずれかに対応するか否かを判定することとを備えた、請求項１０に記載の方法。
【請求項１３】
前記候補コーナ点の前記セットの前記メンバ間に延びる前記エッジを前記生成することは、前記メンバの各メンバについて、
前記メンバから、前記メンバの第１の隣接するメンバへ延びる第１のエッジを生成することと、
前記メンバから、前記メンバの第２の隣接するメンバへ延びる第２のエッジを生成することとを備えた、請求項１０に記載の方法。
【請求項１４】
前記エッジを前記生成することに少なくとも部分的に基づいて、第１のエッジは、前記候補コーナ点の前記メンバの第１のメンバから、前記第１のメンバに隣接する前記メンバの第２のメンバへ延び、
前記エッジを前記生成することに少なくとも部分的に基づいて、第２のエッジは、前記候補コーナ点の前記メンバの前記第１のメンバから、前記第１のメンバに隣接する前記メンバの第３のメンバへ延び、
前記第１のエッジ及び前記第２のエッジは、前記隣接するエッジに含まれ、
前記エッジの前記隣接するエッジによって形成される前記角度を前記計算することは、前記第１のエッジ及び前記第２のエッジによって形成される角度を計算することを含む、請求項１０に記載の方法。
【請求項１５】
前記基準マーカは、ＡｐｒｉｌＴａｇ、ＡＲＴａｇ、ＡＲＴｏｏｌｋｉｔ基準マーカ、又はＡＲＴｏｏｌｋｉｔＰｌｕｓ基準マーカのうちの１つである、請求項１０に記載の方法。
【請求項１６】
画像内で識別された少なくとも１つの境界までのしきい距離内の候補コーナ点を表す前記画像内のピクセルを、１つ又は複数のグラフィック処理装置（ＧＰＵ）によって判定することと、
前記１つ又は複数のＧＰＵによって、ＧＰＵメモリから中央処理装置（ＣＰＵ）メモリに前記ピクセルをコピーすることであって、前記ＣＰＵメモリは、１つ又は複数のＣＰＵに関連付けられた、コピーすることと、
前記境界の各境界について、
前記少なくとも１つの境界のうちの同じ境界に関連付けられた前記候補コーナ点のセットを、前記１つ又は複数のＣＰＵによって判定することと、
前記候補コーナ点の前記セットのメンバ間に延びるエッジを、前記１つ又は複数のＣＰＵによって生成することと、
前記エッジの隣接するエッジによって形成される角度を、前記１つ又は複数のＣＰＵによって計算することと、
最小の大きさの角度のセットに関連付けられた前記候補コーナ点の前記セットのサブセットを、前記１つ又は複数のＣＰＵによって、四辺形のコーナとして識別することと、
前記四辺形が基準マーカの基準マーカ境界に対応するか否かを、前記１つ又は複数のＣＰＵによって判定することとを備えた、方法。
【請求項１７】
前記四辺形が前記基準マーカの前記基準マーカ境界に対応するか否かを前記判定することは、
前記四辺形を表すピクセル・データを判定するために、前記四辺形内のピクセル値を復号することと、
前記ピクセル・データを、基準マーカを表す基準マーカ・データと比較することと、
前記比較することに少なくとも部分的に基づいて、前記四辺形が前記基準マーカのいずれかに対応するか否かを判定することとを備えた、請求項１６に記載の方法。
【請求項１８】
前記候補コーナ点の前記セットの前記メンバ間に延びる前記エッジを前記生成することは、前記メンバの各メンバについて、
前記メンバから、前記メンバの第１の隣接するメンバへ延びる第１のエッジを生成することと、
前記メンバから、前記メンバの第２の隣接するメンバへ延びる第２のエッジを生成することとを備えた、請求項１６に記載の方法。
【請求項１９】
前記エッジを前記生成することに少なくとも部分的に基づいて、第１のエッジは、前記候補コーナ点の前記メンバの第１のメンバから、前記第１のメンバに隣接する前記メンバの第２のメンバへ延び、
前記エッジを前記生成することに少なくとも部分的に基づいて、第２のエッジは、前記候補コーナ点の前記メンバの前記第１のメンバから、前記第１のメンバに隣接する前記メンバの第３のメンバへ延び、
前記第１のエッジ及び前記第２のエッジは、前記隣接するエッジに含まれ、
前記エッジの前記隣接するエッジによって形成される前記角度を前記計算することは、前記第１のエッジ及び前記第２のエッジによって形成される角度を計算することを含む、請求項１６に記載の方法。
【請求項２０】
前記基準マーカは、ＡｐｒｉｌＴａｇ、ＡＲＴａｇ、ＡＲＴｏｏｌｋｉｔ基準マーカ、又はＡＲＴｏｏｌｋｉｔＰｌｕｓ基準マーカのうちの１つである、請求項１６に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
ＡｐｒｉｌＴａｇ、ＡＲＴａｇ、ＡＲＴｏｏｌｋｉｔ、ＡＲＴｏｏｌｋｉｔＰｌｕｓ、ＲＵＮＥ−Ｔａｇ、ｒｅａｃＴＩＶｉｓｏｎ、ＱＲコード（登録商標）などの基準マーカは、仮想現実、拡張現実、ロボティクス、及びオブジェクトのローカリゼーションのための他の技術分野（たとえば、ロボットからロボットへのローカリゼーション）、オブジェクトの識別、オブジェクトの位置の検出、オブジェクトの方位の検出、仮想現実ヘッドセットのテスト、環境内のオブジェクトの追跡、同時ローカリゼーション及びマッピング（ＳＬＡＭ）アルゴリズム評価、カメラ・キャリブレーション、及び他の用途で使用されてきた。通常、基準マーカは、ポリゴン内の所定の配置においてグラフィカルなデータのパターンとして展開され、各パターンは、対応するデータ・レコード（ユーザ・アカウント、ユニット、製品、メッセージなど）に一意にマッピングされる。これらの目的のために基準マーカを使用するためには、特殊なアルゴリズムを使用して、シーン又は環境における基準マーカを検出及び識別する。
【０００２】
基準マーカを検出するためのいくつかの従来のアプローチは、入力画像内の線を識別し、それらをポリゴンに結合するためのグラフ・ベースの画像分割アルゴリズムに依存してきた。これらのアプローチは、圧倒的な数の識別されたポリゴン（たとえば、四辺形）をもたらし、それにより、ポリゴンをフィルタ処理して画像内の実際の基準マーカを識別するときに、コンピューティング・リソースを消耗する。さらに、いくつかの従来のアプローチでは、分割を使用して画像内の境界を識別し、境界に沿ったピクセルのおのおのを分析して、ポリゴンのコーナを判定する。しかしながら、境界に沿ったピクセルのおのおのの分析は非効率的であり、コンピューティング、時間、及びエネルギのコストが大幅に増加する。
【０００３】
上述のように、これらの従来の方法のおのおのは、コンピューティング及びエネルギのリソースの著しい消耗をもたらす。これは、基準マーカを識別するために中央処理装置（ＣＰＵ）に依存していることによって悪化される。たとえば、ＣＰＵの処理限界により、これらの従来のアプローチは、たとえば、６４０×４８０（たとえば、４８０ｐ）の解像度を有する入力画像で、毎秒３０フレーム（ｆｐｓ）のフレーム・レートで動作でき得るが、１９２０×１０８０（たとえば、１０８０ｐ）の解像度の入力画像に対して１０ｆｐｓのフレーム・レートでのみ動作でき得る。このような低フレーム・レートは、特に入力画像の解像度が（たとえば、３８４０×２１６０（たとえば、４ｋ）、７６８０×４３２０（たとえば、８ｋ）、又はそれ以上へ）増加し続けるので、基準マーカの多くの用途のために必要とされる機能性をサポートしない場合がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
本開示の実施例は、グラフィカルな基準マーカ識別に関する。より具体的には、いくつかの実例では、グラフィック処理装置（ＧＰＵ）において少なくとも部分的に実施されるコンピュータ・ビジョン処理を使用して、基準マーカを含む環境を表す画像データを使用して基準マーカを識別するシステム及び方法が開示される。
【０００５】
上述のような従来のシステムとは対照的に、本システムは、入力画像内の境界を識別するために、入力画像のフィルタ処理及び分割を実施し得る。このように境界を識別することにより、入力画像内の多数の四辺形又は他のポリゴンを識別することに関連する従来のアプローチの欠点が大幅に低減される。それに加えて、いくつかの実例では、本システムは、画像しきい値処理及び分割処理と並列に、入力画像内のオブジェクトのコーナに対応するピクセルを識別するためのコーナ検出を実施し得る。その後、入力画像内の境界のうちの１つまで、しきい距離内のコーナのみが残るように、識別されたコーナがフィルタ処理される。このようにコーナを識別及びフィルタ処理することにより、入力画像内のポリゴンを検出及び処理するために必要なピクセル数が少なくなるため、それにより、基準マーカの識別のためのコンピューティング・コストが大幅に低減される。
【０００６】
それに加えて、従来のシステムとはさらに対照的に、本システムは、ＧＰＵ上で少なくともいくつかの処理を実施し得る。そうすることで、特に２つ以上の処理（たとえば、画像しきい値処理、画像分割、及び／又はコーナ検出）が並列に実行される場合、処理の実行効率が向上する。さらに、処理のいくつかをＧＰＵにオフロードすることにより、中央処理装置（ＣＰＵ）に必要な処理量はわずかとなり得るため、コンピューティング及びエネルギの要件も低減しながら、システムの全体的な効率及び有効性が向上する。たとえば、本明細書で説明される処理は、入力画像内の基準マーカを毎秒３０フレーム（ｆｐｓ）以上のフレーム・レートで効果的に識別することにより、システムが、より高い画像解像度（たとえば、１０８０ｐ、４ｋなど）で効果的に実行できるようにし得る。
【０００７】
グラフィカルな基準マーカ識別のための本システム及び方法は、添付の図面を参照して以下で詳細に説明される。
【図面の簡単な説明】
【０００８】
【図１Ａ】本開示のいくつかの実施例による、基準マーカ識別システムのシステム図である。
【図１Ｂ】本開示のいくつかの実施例による、図１Ａの基準マーカ識別システムによって実施され得る処理を示す例示的なデータ・フロー図である。
【図２Ａ】本開示のいくつかの実施例による、基準マーカ識別のための例示的なデータ・フロー図である。
【図２Ｂ】本開示のいくつかの実施例による、基準マーカ識別のための別の例示的なデータ・フロー図である。
【図２Ｃ】本開示のいくつかの実施例による、基準マーカ識別のための別の例示的なデータ・フロー図である。
【図３】本開示のいくつかの実施例による、基準マーカ識別方法の一部の例示的な図である。
【図４】本開示のいくつかの実施例による、基準マーカ識別のための方法を示すフロー図である。
【図５】本開示のいくつかの実施例による、基準マーカ識別のための別の方法を示すフロー図である。
【図６】本開示のいくつかの実施例を実施する際の使用に適した例示的なコンピューティング・デバイスのブロック図である。
【発明を実施するための形態】
【０００９】
グラフィック処理装置を使用する基準マーカ識別に関連するシステム及び方法が開示される。図１Ａを参照して示すように、図１Ａは、本開示のいくつかの実施例による、基準マーカ識別システム１００の例示的なシステム図である。本明細書で説明されるこの配置及び他の配置は、実例としてのみ記載されていることを理解されたい。示されているものに加えて、又はその代わりに、他の配置及び要素（たとえば、マシン、インターフェース、機能、順序、機能のグループ化など）を使用でき、いくつかの要素は完全に省略され得る。さらに、本明細書で説明される要素の多くは、個別の構成要素又は分散された構成要素として、又は他の構成要素と連携して、任意の適切な組合せ及び場所で実施され得る機能エンティティである。エンティティによって実行されるものとして本明細書で説明される様々な機能は、ハードウェア、ファームウェア、及び／又はソフトウェアによって実行され得る。たとえば、メモリに記憶された命令を実行するプロセッサによって、様々な機能が実行され得る。
【００１０】
基準マーカ識別システム１００は、とりわけ、コンピューティング・デバイス１０２、コンピューティング・デバイス１３０、及び／又はネットワーク１２８を含み得る。コンピューティング・デバイス１０２及びコンピューティング・デバイス１３０が図１に示されているが、これは限定することを意図していない。任意の実施例では、任意の数のコンピューティング・デバイス１０２及び／又はコンピューティング・デバイス１３０が存在し得る。基準マーカ識別システム１００（及び、その構成要素及び／又は特徴）は、本明細書にさらに詳細に説明されるように、図６のコンピューティング・デバイス６００のような１つ又は複数のコンピューティング・デバイスを使用して実施され得る。
【００１１】
基準マーカ識別システム１００の構成要素は、ネットワーク１２８を介して通信し得る。ネットワークには、広域ネットワーク（ＷＡＮ）（たとえば、インターネット、公衆交換電話網（ＰＳＴＮ）など）、ローカル・エリア・ネットワーク（ＬＡＮ）（たとえば、Ｗｉ−Ｆｉ、ＺｉｇＢｅｅ、Ｚ−Ｗａｖｅ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）  Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＬＥ）、Ｅｔｈｅｒｎｅｔ（登録商標）など）、低電力広域ネットワーク（ＬＰＷＡＮ）（たとえば、ＬｏＲａＷＡＮ、Ｓｉｇｆｏｘなど）、グローバル・ナビゲーション衛星システム（ＧＮＳＳ）ネットワーク（たとえば、全地球測位システム（ＧＰＳ））、及び／又は別のネットワーク・タイプを含み得る。いずれの実例でも、基準マーカ識別システム１００の構成要素のおのおのは、ネットワーク１２８の１つ又は複数を介して、他の構成要素の１つ又は複数と通信し得る。
【００１２】
コンピューティング・デバイス１０２（及び／又はコンピューティング・デバイス１３０）は、スマート・フォン、ラップトップ・コンピュータ、タブレット・コンピュータ、デスクトップ・コンピュータ、ウェアラブル・デバイス、ゲーム・コンソール、仮想現実システム（たとえば、ヘッドセット、コンピュータ、車両、ゲーム・コンソール、リモート、コントローラ、及び／又はその他の構成要素）、拡張現実システム、インテリジェント・パーソナル・アシスタントを含み得るスマート・ホーム・デバイス、ロボティクス・デバイス、スマート・カメラ又はＩｏＴカメラ、及び／又は、基準マーカの識別が可能な（たとえば、入力画像内の１つ又は複数の基準マーカを識別するために入力画像を分析することが可能な）他の任意のタイプのデバイスを含み得る。
【００１３】
コンピューティング・デバイス１０２は、画像マネジャ１０４、しきい値処理器１０６、画像分割器１０８、コーナ検出器１１０、コーナ・フィルタ１１２、クワッド・フィッタ１１４、デコーダ１１６、基準マーカ・マネジャ１１８、カメラ１２０、グラフィック処理装置（ＧＰＵ）１２２、中央処理装置（ＣＰＵ）１２４、データ・ストア１２６、及び／又は追加又は代替の構成要素を含み得る。いくつかの実例では、構成要素又は特徴の１つ又は複数は、第１のコンピューティング・デバイス１０２によって実施され得、他の構成要素又は特徴の１つ又は複数は、第２のコンピューティング・デバイス１０２及び／又は１３０によって実施され得る。たとえば、処理１３２の少なくともいくつかは、第１のコンピューティング・デバイス１０２によって実施され得、処理１３２の少なくともいくつかは、第２のコンピューティング・デバイス１０２及び／又は１３０によって実施され得る。他の実例では、処理１３２の処理ブロックのおのおのは、単一のコンピューティング・デバイスによって実施され得る。
【００１４】
非限定的な実例では、第１のコンピューティング・デバイス１０２は、カメラ１２０を使用して画像をキャプチャし得、別のコンピューティング・デバイス１０２及び／又は１３０は、処理１３２に従って画像を処理し得る。さらに別の非限定的な実例では、同じコンピューティング・デバイス１０２は、カメラ１２０を使用して画像をキャプチャし得、処理１３２に従って画像を処理し得る。たとえば、第１のコンピューティング・デバイス１０２はロボット内にあり得、第２のコンピューティング・デバイス１０２及び／又は１３０は、サーバであり得るか、及び／又は、別のロボット内にあり得、これによって、ロボットは、画像をキャプチャし得るか、及び／又は、いくつかの処理を実行し得る一方、他の処理は、サーバ及び／又は他のロボットにオフロードされる。いくつかの実例では、コンピューティング・デバイス１０２は、仮想現実システムであり得、システムは、ヘッドセット、コンピュータを含み得るか、及び／又は、ネットワーク１２８を介して１つ又は複数のサーバと通信し得る。その結果、処理１３２は、ヘッドセット、コンピュータ、及び／又は、サーバによって実行され得る。本開示の範囲から逸脱することなく、他の実例が企図される。言い換えれば、コンピューティング・デバイス１０２及び／又は１３０の任意の組合せを使用して、基準マーカ識別システムを実施し、処理１３２、及び／又は、基準マーカ識別のための他の処理を実行し得る。
【００１５】
基準マーカ識別システム１００は、いくつかの異なる方法及び／又は処理のいずれかに従って基準マーカ識別を実行するために使用され得る。言い換えれば、システム１００の構成要素及び機能性は、基準マーカ識別のための処理１３２を示す図１Ｂのデータ・フロー図に関して本明細書で説明され得るが、これは、限定することを意図していない。たとえば、適応しきい値処理１３６及び画像分割１３８は、コーナ検出１４０と並列に実行されるものとして示されているが、これは限定することを意図していない。いくつかの実例では、追加又は代替の処理ブロックが並列に実行され得るか、又は処理１３２の処理ブロックのいずれも並列に実行され得ない。別の実例として、追加又は代替の処理ブロックは、図１Ｂに示されたもの以外の基準マーカ識別システム１００によって実施され得る。
【００１６】
図１Ｂを参照して示すように、図１Ｂは、本開示のいくつかの実施例による、図１Ａの基準マーカ識別システム１００によって実施され得る処理１３２を示す例示的なデータ・フロー図である。処理１３２は、限定することなく、コンピューティング・デバイス１０２のＧＰＵ１２２及びＣＰＵ１２４において実施され得る。たとえば、効率を高めるために、より計算的に高価な処理１３２の処理ブロックが、ＧＰＵ１２２において実施され得る。それに加えて、ＧＰＵ１２２において処理ブロックの少なくともいくつかを実施することにより、２つ以上の処理ブロックが並列に実施され得る（たとえば、ＮＶＩＤＩＡのＣＵＤＡを使用した並列処理）。たとえば、ＧＰＵ１２２は多数のスレッドを同時に実行することができ得、ＧＰＵ１２２は、ＧＰＵ１２２において処理ブロックの少なくともいくつかを実施することによって、ＣＰＵ１２４よりも画像データの処理により適し得るので、画像内の基準マーカを識別するための計算時間は、本明細書で説明されるような従来のアプローチと比較して大幅に低減され得る。それに加えて、本明細書で説明されるように、処理１３２自体は、ＣＰＵ１２４上で実施されたとしても、従来のアプローチと比較して計算時間を低減する処理ブロックを含む。その結果、より効率的な処理１３２を作成し、ＧＰＵ１２２において少なくとも部分的に処理１３２を実施することにより、画像内の基準マーカを識別するのに必要な全体的な処理要件、計算能力、エネルギ、帯域幅リソースが大幅に低減される。
【００１７】
いくつかの実例では、限定することなく、図１Ｂの破線１５０の上方に示される処理１３２の処理ブロックは、コンピューティング・デバイス１０２のＧＰＵ１２２において少なくとも部分的に実行され得、破線１５０の下方に示される処理ブロックは、コンピューティング・デバイス１０２のＣＰＵ１２４において少なくとも部分的に実行され得る。
【００１８】
処理１３２は、入力画像受取１３４を含み得る。たとえば、入力画像２０２（図２Ａ）を表す画像データが、画像マネジャ１０４によって、（たとえば、入力画像２０２がカメラ１２０によってキャプチャされることに応答して）受け取られ、及び／又は、管理され得る。たとえば、入力画像２０２は、入力画像受取１３４の際に画像マネジャ１０４によりデータ・ストア１２６に記憶され得るか、及び／又は、画像マネジャ１０４によってデータ・ストア１２６から取得され、入力画像２０２が、別の処理ブロック（たとえば、適応しきい値処理１３６、コーナ検出１４０など）へ渡され得る。
【００１９】
いくつかの実例では、入力画像２０２は、（本明細書でより詳細に説明される）適応しきい値処理１３６の結果として生成される変換画像よりも高次元の色空間からなり得る。たとえば、入力画像２０２は、赤、緑、及び青（ＲＧＢ）カラー画像、シアン、マゼンタ、黄、及び黒（ＣＭＹＫ）カラー画像、インデクス付きカラー画像、色相、彩度、及び明度（ＨＳＢ）カラー画像、及び／又は別の画像タイプのようなカラー画像であり得る。
【００２０】
図２Ａに示されるように、入力画像２０２は、任意の数の基準マーカ２０４（たとえば、基準マーカ２０４Ａ、基準マーカ２０４Ｂ、基準マーカ２０４Ｃなど）を含み得る。図２Ａ〜図２Ｃ及び図３に関して説明された基準マーカ２０４は、ＡｐｒｉｌＴａｇを含むが、これは限定することは意図されていない。たとえば、本開示の範囲から逸脱することなく、ＡＲＫｉｔ基準マーカ、ＡＲＴｏｏｌｋｉｔ、ＡＲＴｏｏｌＫｉｔＰｌｕｓ、及び／又は他の基準マーカ・タイプを使用して、処理１３２の同様の処理及び／又は処理ブロックが実行され得る。
【００２１】
入力画像２０２はさらに、たとえば、入力画像２０２の背景２０８に、テーブル２０６などの追加のオブジェクト、及び／又は、１つ又は複数の他のオブジェクト（図示せず）を含み得る。
【００２２】
画像マネジャ１０４は、入力画像２０２の適応しきい値処理１３６のために、入力画像２０２をしきい値処理器１０６に伝送、送信、及び／又は渡し得、及び／又はコーナ検出１４０のために、入力画像２０２をコーナ検出器１１０に伝送、送信、及び／又は渡し得る。しきい値処理器１０６は、入力画像２０２を受け取り、実例として、限定することなく、入力画像２０２に対して適応しきい値処理１３６を実行し得る。しかしながら、他の実例では、他のタイプのしきい値処理が、しきい値処理器１０６によって実行され得る。たとえば、グローバルしきい値処理、ローカルしきい値処理、適応しきい値処理、及び／又はそれらの組合せは、適応しきい値処理に加えて又は代替として、しきい値処理器によって実行され得る。
【００２３】
適応しきい値処理１３６を実施する場合、しきい値処理器１０６は、入力画像２０２を入力画像２０２のグレースケール・バージョン（たとえば、グレースケール入力画像）に変換し得る。グレースケール入力画像が生成されると、グレースケール入力画像の各ピクセルの周囲の領域における最小値及び最大値を発見するために、適応しきい値処理１３６が実行され得る。しかしながら、いくつかの実例では、グレースケール入力画像の各ピクセルの周囲の正確な極値（たとえば、最大値及び最小値）を計算する代わりに、グレースケール入力画像が、ピクセルのタイル（たとえば、いくつかの実例では、４×４ピクセル）に分割され得る。その後、タイルのおのおの内の極値（たとえば、最大及び最小）が計算され得る。極値の差が大きいタイル境界間でアーティファクトが発生しないように、（たとえば、少なくとも１つのタイルの重なりが、極値の算出に考慮されることを保証するため）入力グレースケール画像における隣接ピクセルのための極値を計算する場合、周囲のタイルのグループの極値（たとえば、いくつかの実例ではタイルの３×３近傍）が使用され得る。その結果、各ピクセルは、周囲のタイルからの最大値及び最小値を、その最大値及び最小値として採用し得る。所与のタイルにおいて、最大値と最小値とが近すぎる場合、タイルは十分高いコントラストを有していないと識別され得、タイル内のピクセルには、グレー（又は別の色）に関連付けられたピクセル値が割り当てられ、さらなる処理から省略され得る。タイルが十分なコントラストを有する場合、平均値（たとえば、（最大＋最小）／２）をしきい値として使用して、各ピクセルに白又は黒の値が割り当てられ得る。
【００２４】
適応しきい値処理１３６の結果は、変換画像２１０（本明細書では代わりにしきい値処理画像２１０とも呼ばれる）を含み得る。いくつかの実例では、（たとえば、さらなる処理で使用されるピクセルは、黒ピクセル及び白ピクセルのみであり得るため）変換画像２１０は、バイナリ画像であり得る、及び／又は、バイナリ画像と呼ばれ得る。そのため、変換画像２１０は、本明細書で説明されるように、入力画像２０２よりも低次元の色空間からなり得る。変換画像２１０に示されるように、適応しきい値処理１３６の結果として、白ピクセルに隣接する黒ピクセル、及び黒ピクセルに隣接する白ピクセルの領域２１２（たとえば、白領域２１２Ａ及び黒領域２１２Ｂ）は、適応しきい値処理１３６後も白黒のままであり得る一方、変換画像２１０の他の部分２１４（たとえば、その中のピクセル）は、（たとえば、密集した対角線によって示されるように）グレーであり得る。たとえば、黒ピクセルのタイルが黒ピクセルのタイルで囲まれている領域は、コントラストが十分に高くない場合があり得、したがってグレーに変換され得る。いくつかの実例では、グレーを表すピクセル値（又は、基準マーカの識別のために重要ではないピクセルを示す別の色）が割り当てられたピクセルのいずれも、処理１３２の将来のあらゆる処理ブロックから除外され得る（たとえば、画像分割器１０８は、画像分割１３８を実行する場合、これらのピクセルを処理から除外し得る）。
【００２５】
ＡｐｒｉｌＴａｇ、ＡＲＴａｇなどの基準マーカを識別する場合、（たとえば、基準マーカが白黒であるため）画像内の基準マーカに関連付けられたピクセルの色は黒又は白のみであり、結果として、この適応しきい値処理１３６の処理は、基準マーカを形成する白ピクセルと黒ピクセルの一貫した区別を可能にし得、他の色（たとえば、グレー）に変更される残りのピクセルを無視する。
【００２６】
しきい値処理器１０６は、変換画像２１０を画像分割器１０８に伝送、送信、及び／又は渡し得る。画像分割器１０８は、画像分割１３８を実行して、変換画像２１０の連続的な白領域２１２Ａ及び黒領域２１２Ｂをグループ化し、これらの領域２１２を分割する境界を抽出し得る。
【００２７】
従来のアプローチは、反対の色の近傍ピクセル（たとえば、黒ピクセルに隣接する白ピクセル）を有するピクセルを識別し、その後、エッジとして識別されたこれらピクセルの連結グループ（たとえば、おのおの黒ピクセルに隣接する白ピクセルの連続グループ）を形成した。しかしながら、これら従来のアプローチは、白ピクセルのグループ化が単一のピクセルの幅しかない場合（たとえば、遠いタグ又は物理的に小さなタグの結果として）効果的ではない場合があり得る。このようなアプローチでは、単一のピクセル幅の白ピクセルのグループに隣接する黒ピクセルのグループは、誤って単一のエッジとして識別され得、その結果、基準マーカが検出されなくなる可能性がある。
【００２８】
従来のアプローチのこれらの欠点を克服するために、画像分割器１０８は、結合発見ベースの領域クラスタリング及び領域境界抽出を使用し得る。結合発見ベースの領域クラスタリングは、変換画像２１０を、黒の連続領域と白の連続領域（たとえば、白領域２１２Ａ及び黒領域２１２Ｂ）に分割又はグループ化することを含み得る。このように変換画像２１０を分割するために、変換画像２１０からの近傍の白ピクセルがともにグループ化され得、変換画像２１０からの近傍の黒ピクセルがともにグループ化され得る。この処理は、ローカル・マージ、境界処理、グローバル結合マージを含み得る。処理のおのおのは、ＧＰＵ１２２を使用して（たとえば、第１のＣＵＤＡカーネルにおいてローカル・マージ、第２のＣＵＤＡカーネルにおいて境界処理、及び第３のＣＵＤＡカーネルにおいてグローバル結合マージのように）個別のカーネルで実施され得る。
【００２９】
結合発見ベースの領域クラスタリングのローカル・マージ処理のために、変換画像２１０は、ピクセルのブロック（たとえば、４×４ピクセル、８×８ピクセルなど）に分割され得る。いくつかの実例では、ブロックのおのおのは、ＧＰＵ１２２上の異なるスレッドに割り当てられ得、異なるスレッドは、共有メモリを使用して互いに協力することができ得るか、及び／又は、互いに同期可能であり得る。すべてのピクセルをその左の近傍のピクセルとその上の近傍のピクセルにリンクするために、ピクセルの各ブロックで行スキャン及び列スキャンが実行され得る。いくつかの実例では、リンクは、近傍ピクセルの強度が同じ場合（たとえば、黒又は白）にのみ形成され得る。ローカル・マージ後、ピクセルのブロック間ではなく、同じブロック内のピクセル間にのみリンクが存在し得る。
【００３０】
結合発見ベースの領域クラスタリングの境界処理では、ピクセルのブロックの境界に沿ったセル（又はピクセル）は、ピクセルの近傍ブロックの境界に沿ったセル（又は、ピクセル）にリンクされ得る。たとえば、別の行スキャン及び列スキャンは、ピクセルの隣接ブロックの隣接境界に関してピクセルの各ブロックの境界で実行され得る。ローカル・マージ処理及び境界処理の後、変換画像２１０における各ピクセルは、同じ強度（たとえば、白又は黒）の近傍ピクセルへのリンクを有し得る。
【００３１】
結合発見ベースの領域クラスタリングのグローバル結合マージ処理のために、連続する黒領域又は連続する白領域のピクセルのおのおのは、同じ代表的な親ピクセルにリンクされ得る。その後、連続する各黒領域及び連続する各白領域に、ユニークな領域識別子（ＩＤ）が割り当てられ得る。
【００３２】
領域境界抽出のために、連続する黒領域と連続する白領域との間の境界が抽出され得る。領域境界抽出は、ＧＰＵ１２２上で実行され得、より具体的には、処理カーネル（たとえば、ＣＵＤＡカーネル）を使用して実行され得る。たとえば、境界は、領域ＩＤによってラベル付けされた一連の順序付けられていない点として表され得る。境界は、ピクセルのブロック内のセル位置が、境界座標を符号化し得、セル値が、領域ＩＤを示し得る２次元境界グリッドに記憶され得る。その後、各黒ピクセルと近傍の又は隣接する白ピクセルとの間の境界点が識別され得る。たとえば、領域ＩＤ「ＩＤ１」の画像座標「Ｐ１」の各黒ピクセルと、領域ＩＤ「ＩＤ２」の画像座標「Ｐ２」のその近傍の白ピクセルとが識別され得る。境界点は、その後、画像座標（たとえば（Ｐ１＋Ｐ２）／２）によってインデクス付けされ、近傍の領域のＩＤに基づいて境界識別子（ＩＤ）値を割り当てられ得る（たとえば、２つの３２ビットの領域ＩＤは、そのうちの１つを３２ビットシフトし、他のＩＤを追加して、ユニークな６４ビット境界ＩＤを取得することによって結合され得る）。
【００３３】
たとえば、変換画像２１０に関して、領域境界抽出処理を使用して、白領域２１２Ａと、白領域２１２Ａに隣接又は近傍の黒領域との間の境界が、境界として識別され得る。同様に、白領域に隣接して延びる黒領域のおのおのについて、他の境界が識別され得、境界のおのおのは境界ＩＤを割り当てられ得、境界ＩＤは、単一の連続した境界を示す。
【００３４】
結果として、上述のような従来のシステムとは対照的に、画像分割１３８の結果として、第１の黒領域及び第２の黒領域に隣接する単一ピクセル幅の白領域（たとえば、白領域の両側）は、２つの異なる境界（たとえば、第１の黒領域と白領域との間の第１の境界と、第２の黒領域と白領域との間の第２の境界）の識別となり得る。
【００３５】
画像分割器１０８は、境界情報をコーナ・フィルタ１１２に伝送、送信、及び／又は渡し得る。それに加えて、以下でより詳細に説明するように、コーナ・フィルタ１１２はまた、コーナ検出１４０後にコーナ検出器１１０からの出力を受け取り得る。適応しきい値処理１３６及び画像分割１３８の処理ブロックは、コーナ検出１４０を実行するために必要とされない可能性があるため、これらの処理は、いくつかの実例では、境界コーナ・フィルタ処理１４２のためコーナ・フィルタ１１２へハンド・オフする前に、（たとえば、ＧＰＵ１２２の並列処理能力を使用して）並列に実行され得る。
【００３６】
本明細書で説明される従来のシステムは、画像内で識別された境界に沿ったピクセルのおのおの又は多数を分析して、ポリゴンのコーナを判定し得る。しかしながら、境界に沿ったピクセルのおのおのを分析することは非効率的であり、コンピューティング及びエネルギのコストが大幅に増加する。従来のシステムとは対照的に、主題技術でコーナ検出１４０を使用することにより、比較的少数の点のみが候補コーナとして識別され、その大部分は、コーナ２１８Ａ及び２１８Ｂ）のような実際のコーナ２１８を表す。少数の点が（候補コーナ２２０Ａ及び２１８Ｄのような候補コーナ２１８として一時的に誤識別され得る一方、全体のピクセル（たとえば、候補コーナ２１８を表すピクセル）の処理が少なくなるため、処理、コンピューティング、及びエネルギの要件が低減する。それに加えて、従来のシステムとは対照的に、入力画像内の境界は、コーナ検出１４０の前に識別される必要がないため、コーナ検出１４０は、適応しきい値処理１３６及び／又は画像分割１３８（たとえば、境界を識別するための処理ステップ）と並列に実行され得るので、それにより、処理時間を低減し、システム１００の効率を向上させる。
【００３７】
コーナ検出器１１０は、グレースケール・バージョンの入力画像２０２（たとえば、グレースケール入力画像）、入力画像２０２、及び／又は変換画像２１０（図２Ｂに示すように）でコーナ検出１４０を実行し、グレースケール入力画像、入力画像２０２及び／又は変換画像２１０における候補コーナ２１８（たとえば、図２Ｂにおいて陰影又は他の塗りつぶしなしで示される）を検出し得る。入力画像２０２上に表されるコーナ検出１４０の例示的な結果を示す視覚化２１６は、基準マーカ２０４、テーブル２０６、背景、及び複数の候補コーナ２１８を含み得る。本開示の範囲から逸脱することなく、追加又は代替の候補コーナ２１８が、コーナ検出１４０の結果として識別された可能性があるため、候補コーナ２１８（たとえば、コーナ２１８Ａ〜２１８Ｃ、及びラベルなしコーナ２１８）は、限定することは意図されていない。いくつかの実例では、本明細書で説明されるように、コーナ検出１４０は、ＧＰＵ１２２において実施され得る。
【００３８】
いくつかの実例では、コーナ検出１４０は、（たとえば、図２Ｂに陰影で示される誤識別されたピクセル２２０のように）ピクセルが実際のコーナを表していない場合でも、いくつかのピクセルが候補コーナとしてラベル付けされるという結果となり得る。たとえば、コーナ検出１４０は、影、ノイズ、及び／又は画像解像度の懸念に敏感であり得、その結果、ピクセルの一部（たとえば、誤識別されるピクセル２２０Ａ〜２２０Ｄ）は、たとえそれらが実際のコーナ点ではなくても、候補コーナ２１８として識別され得る。しかしながら、誤識別されたピクセル２２０であっても、コーナ検出１４０を使用した結果では依然として、従来のアプローチよりも減少した、分析される必要のあるピクセル（たとえば、コーナ２１８）が識別される。いずれの実例でも、コーナ２１８及び誤識別されたピクセル２２０は、集合的に、候補コーナ点のセット、又は識別された候補コーナ点のセットと総称され得る。
【００３９】
いくつかの実例では、影、ノイズ、及び／又は画像解像度の懸念に関する問題点を考慮するために、追加の処理が実行され得る。たとえば、（たとえば、グレースケール入力画像及び／又は変換画像２１０のみが単一のスケールで使用される）コーナ検出１４０がスケール変化であり得る実例では、画像内の異なるスケール空間をカバーするために、可変ガウス畳み込みカーネルを使用するなどによって、追加の処理が実行され得る。たとえば、グレースケール入力画像及び／又は変換画像２１０に加えて、少なくとも１つの追加のスケール空間画像が生成され得る。いくつかの非限定的な実例では、３つの追加のスケール空間画像が生成され得、グレースケール入力画像及び／又は変換画像２１０に加えて、又は代わりに、３つの追加のスケール空間画像も分析され、候補コーナを判定し得る。いくつかの実例では、スケール空間画像のおのおのは、画像のスケール空間に固有の異なるカーネルを使用して実行され得る。いずれの実例においても、異なるスケール空間画像並びにグレースケール入力画像及び／又は変換画像２１０で検出されたコーナが比較され、検出された候補コーナ間の関係が判定され得る。たとえば、各スケール空間画像で検出された候補コーナが、グレースケール入力画像及び／又は変換画像２１０と比較され、各画像でコーナがサポートされている（たとえば、識別されている）か否かが判定され得る。結果として、ノイズ、影、及び／又は、画像解像度の懸念の結果として検出された誤識別された（たとえば、１つの画像では、候補コーナとして検出されるが、異なるスケール空間の別の画像では、検出されない）ピクセルの少なくともいくつかが、フィルタ処理によって除外され得、それにより、コーナ２１８として分析されるピクセルの数がさらに少なくなる。
【００４０】
上述のように、検出された候補コーナ２１８（誤識別されたピクセル２２０を含み得る）は、その後（図２Ｃに例示されるように）、境界コーナ・フィルタ処理１４２のためにコーナ・フィルタ１１２へ伝送、送信、及び／又は渡され得る。コーナ・フィルタ１１２はまた、上述のように、画像分割１３８から境界３０８（たとえば、白ピクセル領域２１２Ａと黒ピクセル領域２１２Ｂとの間の境界）を受け取り得る。その結果、コーナ・フィルタ１１２は、コーナ２１８、誤識別されたピクセル２２０、及び境界３０８を使用して、境界コーナ・フィルタ処理１４２を実行し得る。本明細書で説明されるように、コーナ検出１４０は、境界３０８上にない誤識別されたピクセル２２０Ａ及び２２０Ｂなどの誤識別されたピクセル２２０をもたらす可能性があるため、境界コーナ・フィルタ処理１４２が使用され、誤識別されたピクセル２２０の少なくとも一部が、フィルタ処理によって除外され得る。
【００４１】
図３に示すように、コーナ２１８である第１のピクセル３０２は、コーナ検出器１１０により識別され得、境界２０８の上又は近くにあるが、誤識別されるピクセル２２０である第２のピクセル３０４が識別され得、コーナ２１８ではないが、境界２０８上又は近くにもなく（たとえば、境界３０８から２ピクセル、４ピクセルのように、境界３０８からしきい距離離れた）、誤識別されるピクセル２２０である（図３に陰影で示される）第３のピクセル３０６が識別され得る。その後、境界コーナ・フィルタ処理１４２を使用して、第３のピクセル３０６をフィルタ処理によって除外し得る。これらは、誤識別されたピクセル２２０であり、境界３０８までのしきい距離内にない。いくつかの実例では、しきい距離は、境界３０８から離れたいくつかのピクセル（たとえば、境界３０８に関連付けられたピクセル）であり得る。たとえば、限定することなく、しきい距離は、２ピクセル、３ピクセル、７ピクセル、１０ピクセルなどであり得る。結果として、画像内のピクセルは、それらがコーナ候補に含まれておらず（たとえば、コーナ２１８及び／又は誤識別されたピクセル２２０に含まれておらず）、境界３０８のうちの１つに対するしきい距離内にない場合、フィルタ処理によって除外され得る。結果として生じるピクセル（たとえば、第１のピクセル３０２及び第２のピクセル３０４）は、候補コーナのセット（たとえば、ピクセルのセットは、コーナ２１８及び誤識別されたピクセル２２０を含み得る）のサブセットと集合的に呼ばれ得る。
【００４２】
本明細書で説明されるように、境界コーナ・フィルタ処理１４２は、ＧＰＵ１２２によって実行され得、カーネル（たとえば、ＣＵＤＡカーネル）は、コーナ２１８として識別されたピクセル（たとえば、第１のピクセル３０２、第２のピクセル３０４、及び第３のピクセル３０６）、及び／又は、並列に誤識別されたピクセル２２０のおのおのを分析するために使用され得る（たとえば、各ピクセルが、ＧＰＵ１２２上の個別のスレッドに適用され得る）。
【００４３】
コーナ・フィルタ１１２は、その後、ピクセル（たとえば、第１のピクセル３０２及び第２のピクセル３０４）をクワッド・フィッタ１１４に伝送、送信、及び／又は渡し、クワッド・フィッティング１４４を実行し得る。いくつかの実例では、クワッド・フィッティング１４４はＣＰＵ１２４によって実行され、その結果、ピクセルはＧＰＵ１２２に関連付けられたメモリから、ＣＰＵ１２４に関連付けられたメモリにコピーされ得る。たとえば、ピクセル（たとえば、画像内のピクセルの位置）は、ＧＰＵ１２２のメモリから検索され、ＣＰＵ１２４へ伝送され、ＣＰＵ１２４のメモリによって記憶され得る。いくつかの実例では、データ・ストア１２６は、ＧＰＵ１２２に関連付けられたメモリ、及び／又は、ＣＰＵ１２４に関連付けられたメモリを含み得る。多数のエッジ・ピクセル（たとえば、画像で識別された境界に沿ったピクセルのおのおの）がＣＰＵによって分析される従来のシステムとは対照的に、システム１００は、ピクセルがポリゴンのコーナ（たとえば、ＡｐｒｉｌＴａｇ、ＡＲＴａｇなどの基準マーカ境界を形成する四辺形のような四辺形）を表すか否かを判定するために、ＣＰＵ１２４が単にピクセル（たとえば、第１のピクセル３０２及び第２のピクセル３０４）のセットのサブセットを分析することのみを必要とし得る。結果として、かなりの計算及び処理時間が節約され、それにより、同じ又はより高いフレーム・レート（たとえば、３０ｆｐｓ、６０ｆｐｓなど）において、基準マーカを正確に識別しながら、従来のシステムよりもより高い画像解像度（たとえば、１０８０ｐ、４ｋなど）を処理でき得る、より効率的で堅牢なシステム１００となる。
【００４４】
クワッド・フィッタ１１４は、ポリゴンのコーナ２１８を識別するためにクワッド・フィッティング１４４を実行し得る。そのため、クワッド・フィッタ１１４は、クワッドすなわち四辺形に関して言及されているが、これは限定するように意図されていない。たとえば、クワッド・フィッタ１１４は、（たとえば、基準マーカ境界が、四辺形ではない場合）代わりに、ポリゴン・フィッタ１１４と呼ばれ、クワッド・フィッティング１４４は、代わりに、ポリゴン・フィッティング１４４と呼ばれ得る。
【００４５】
コーナ２１８及び誤識別されたピクセル２２０のおのおのは、ハッシュ・テーブルに記憶され得る。ハッシュ・テーブル内で、各コーナ２１８（たとえば、第１のピクセル３０２）及び各誤識別されたピクセル２２０（たとえば、第２のピクセル３０４のように、境界３０８に関連付けられた誤識別されたピクセル２２０）は、それぞれの境界３０８（たとえば、隣接又は近傍の白ピクセル領域２１２Ａと黒ピクセル領域２１２Ｂとの間に広がる画像分割１３８中に判定される境界）について（たとえば、ピクセルが、画像分割１３８に関連付けられ、画像分割１３８によって判定されるような境界３０８に基づいて）、対応する境界ＩＤとともに記憶され得る。その結果、同じ境界ＩＤに関連付けられた各コーナ２１８及び／又は誤識別されたピクセル２２０は、ともにグループ化され得る。その後、クワッド・フィッタ１１４は、基準マーカ２０４の基準マーカ境界を表すための最良のコーナ候補（たとえば、最良のコーナ２１８及び／又は誤識別されたピクセル２２０）を識別するために、各グループを他のグループと別個に分析し得る。
【００４６】
いくつかの実例では、ピクセルのグループは、まず、各境界に関連付けられたピクセルの数に基づいて分析され得る。たとえば、既知の形状の境界を有する基準マーカの場合、コーナ点の数も既知であり得る（たとえば、正方形又は長方形は４つのコーナを有し、三角形は３つのコーナを有するなど）。そのため、ピクセルのグループが各境界に対して形成されると、ピクセルのグループは、基準マーカ・タイプのために存在すべきピクセルの数を考慮して分析され得る。たとえば、基準マーカの境界が正方形であり、したがって、４つのコーナ点を有すると知られている場合、４つ未満のピクセルを有するピクセルのグループのいずれかは、フィルタ処理によって除外され、以降のいずれの処理にも含まれない可能性がある。このような実例では、４つのコーナ点を有するピクセルのグループのいずれも、４つの候補コーナのみを識別するために追加のコーナ・フィルタ処理を必要としない場合があるが、４つのピクセルによって形成される四辺形は、以下でより詳細に説明するように、依然としてフィルタ処理を受けて、四辺形が、基準マーカ境界の候補であるか否かを判定し得る。それに加えて、ピクセルのグループが４より大きい場合、以下でより詳細に説明するように、フィルタ処理を実行して、四辺形の候補コーナ点になり得る４つのピクセルを判定し得る。
【００４７】
候補コーナの各グループについて、エッジ３１０の連続ストリングが形成され得るまで、各候補コーナから、次に近い候補コーナ（たとえば、候補コーナから、重心に関して時計回りの第１の候補と、候補コーナから反時計回りの第２の候補コーナ）まで延びるエッジ３１０（たとえば、第１の境界３０８Ａのエッジ３１０、第２の境界３０８Ｂのエッジ３１０Ｂなど）が生成され得る。いくつかの実例では、候補コーナは、それらの重心に関して（たとえば、時計回り、反時計回りなどで）ソートされ、エッジ３１０は、候補コーナのソートされたリストに基づいて、各候補コーナから次のコーナ候補まで生成され得る。たとえば、図３におけるクワッド・フィッティング１４４に関し、境界３０８Ａに関連付けられた候補コーナは、重心から時計回りにソートされ得る。このような実例では、候補コーナは、第１のピクセル３０２Ｃ、第２のピクセル３０４Ｂ、第１のピクセル３０２Ｄ、第１のピクセル３０２Ｅ、第２のピクセル３０４Ａ、第１のピクセル３０２Ｆ、第２のピクセル３０４Ｃ、そして第１のピクセル３０２Ｃとしてソートされ得る。そのため、候補コーナのおのおのを介して延びる、連続ループ又はエッジのグループ化が形成されるまで、第１のピクセル３０２Ｃと第２のピクセル３０４Ｂとの間に延びる第１のエッジ３１０Ａが生成され得、第２のピクセル３０４Ｂと第１のピクセル３０２Ｄとの間に延びる第２のエッジ３１０Ａが生成され得、第１のピクセル３０２Ｄと第１のピクセル３０２Ｅとの間に延びる第３のエッジ３１０Ａが生成され得るという具合である。
【００４８】
いくつかの実例では、画像のエイリアシング又はノイズの結果として、１つ又は複数のピクセルが、実際にはコーナではなく、エッジ（たとえば、ポリゴンの一部を形成するエッジ）に沿って誤識別されたピクセルである候補コーナとして検出され得る。したがって、コーナとして不適切に識別されたこれらのピクセルをフィルタ処理によって除外するために、連続ループ又はエッジのグループ化が形成されると、候補コーナからポリゴン（たとえば、四辺形）の実際のコーナを識別するために、各２つの隣接するエッジ間に形成される角度３１２が、計算（たとえば、算出）され得る。いくつかの実例では、候補コーナは、それらの重心、時計回り、又は反時計回りに関して順序付けられ得る。候補コーナのおのおのについて、角度３１２は、候補コーナから直前の候補コーナまでの第１のベクトル（たとえば、第１のエッジ）と、候補コーナから直後の候補コーナまでの第２ベクトル（たとえば、第２のエッジ）との間で算出され得る。（たとえば、２つの近傍コーナに関して）同一直線上にないエッジ（又はベクトル）に関連付けられた候補コーナは、実際のコーナと見なされ得る。言い換えると、最小の大きさの角度３１２、又は９０度に最も近い角度（たとえば、ポリゴンが四辺形である場合）を使用して、実際のコーナ（たとえば、第１のピクセル３０２Ｃ）を識別し及び／又は、ポリゴンのエッジにある候補コーナ（たとえば、第２のピクセル３０４Ａ）をフィルタ処理によって除外し得る。結果として、最小の大きさの角度３１２、又は９０度に最も近い角度３１２が、ポリゴン（たとえば、図３の例示に関する四辺形）の実際のコーナとして識別され得る。別の実例として、ポリゴンが正三角形である場合など、６０度に最も近い角度３１２は、実際のコーナであると判定され得る。同様の判定は、識別されるべき基準マーカの境界に対応する形状に応じて行われ得る。
【００４９】
たとえば、第１のピクセル３０２Ｆと第２のピクセル３０４Ｃとの間に延びるエッジ３１０Ａと、第１のピクセル３０２Ｆと第２のピクセル３０４Ａとの間に延びるエッジ３１０Ａとの間に形成される角度３１２Ａは、約９０度の角度を含み得る。このような実例では、第１のピクセル３０２Ｆと第２のピクセル３０４Ａとの間に延びるエッジ３１０Ａと、第２のピクセル３０４Ａと第１のピクセル３０２Ｅとの間に延びるエッジ３１０Ａとの間に形成される角度は、約０度であり得る。同様に、第１のピクセル３０２Ｃ、３０２Ｄ、及び３０２Ｅから延びるエッジ３１０Ａによって形成される角度３１２は、約９０度であり、第２のピクセル３０４Ｂ及び３０４Ｃから延びるエッジ３１０Ａによって形成される角度は、約０度である。そのため、第１のピクセル３０２Ｃ、３０２Ｄ、３０２Ｅ、及び３０２Ｆは、境界３０８Ａの実際のコーナ点であると判定され得る（たとえば、最終的に、基準マーカ境界であると判定され得る）。
【００５０】
別の実例として、境界３０８Ｂに関連付けられたコーナ候補は、境界３０８Ａに関して説明したものと同様の処理を受け得る。結果として、４つのコーナ点（たとえば、エッジ３１０Ｂがその間に延びる４つのコーナ点）が識別され得る。エッジ３１０Ｂは、最終的に基準マーカ境界（たとえば、境界３０８Ａなど）の候補として含まれない可能性がある識別されたポリゴン（又は図３に関して四辺形）の実例である。同様に、図２Ｃにおける境界２２２Ｂ及び２２Ｄは、基準マーカ境界の候補として最終的に含まれない可能性があるクワッド・フィッティング１４４の結果として識別されたポリゴンを表す一方、境界２２２Ａ及び２２２Ｃは、基準マーカ境界を表し得る。そのため、基準マーカ境界を識別するために、追加の処理（たとえば、フィルタ処理）が適用され得る。
【００５１】
基準マーカ境界の候補として使用することが望ましくない可能性のある識別されたポリゴンをフィルタ処理によって除去するために、クワッド・フィッタ１１４によって１つ又は複数のフィルタが実行され得る。たとえば、エッジ３１０の長さを探し、及び／又は、同じ境界３０８のエッジ３１０の長さを比較して、割合又は比率を判定する第１のフィルタが適用され得る。たとえば、いくつかの基準マーカは、データを効果的に符号化するために最小数のピクセルを必要とし得る。結果として、最小数のピクセルよりも短い長さを有する任意のエッジ３１０は、エッジ３１０が関連付けられているポリゴンを、フィルタ処理によって除外する結果となり得る。別の実例として、いくつかの基準マーカは、正方形、長方形、三角形（たとえば、正三角形）などの既知の形状を含み得、その結果、異なるエッジ間の割合は、基準マーカ境界として、ポリゴンの候補を示し得る。特定の実例では、基準マーカの境界が正方形であると知られている場合、様々な割合のエッジ３１０（たとえば、環境内の画像の歪み又は基準マーカの方位を考慮したしきい値の外側）は、フィルタ処理によって除外され得る。
【００５２】
別の実例として、検出されたポリゴン内の角度を使用して、基準マーカ境界の候補として、ポリゴンをフィルタ処理によって除外し得る。たとえば、既知の形状の基準マーカの場合、基準マーカのエッジによって形成される角度は既知であり得る。たとえば、正方形の基準マーカ境界の場合、画像内の基準マーカの方位、画像の歪みなどに基づくいくつかの分散を考慮して、内角は、すべて約９０度である必要がある。そのため、図３に関して、基準マーカ境界が、正方形であることが知られている場合、ポリゴンのエッジ３１０Ｂ間に形成される角度３１２Ｂは、基準マーカ境界の候補としてポリゴンをフィルタ処理によって除外するために使用され得る（なぜなら、たとえば、この角度は約４５度であり、これは、画像内で検出されたポリゴンの角度のしきい値の外側になり得るからである）。
【００５３】
クワッド・フィッティング１４４の結果は、基準マーカ境界の候補となり得る１つ又は複数のポリゴンのセットである。クワッド・フィッタ１１４は、基準マーカ復号１４６のために候補ポリゴンをデコーダ１１６に伝送、送信、及び／又は渡し得る。デコーダ１１６は、実施例に応じて、入力画像２０２、入力画像２０２のグレースケール・バージョン、及び／又は、変換画像２１０を使用して候補クワッドを復号し得る。ピクセル値のパターンでデータを符号化し得る基準マーカ（たとえば、ピクセル・データ）を使用した結果、デコーダ１１６は、候補基準マーカ境界内のピクセルのパターン（たとえば、クワッド・フィッタ１１４によって識別されるポリゴン内のピクセル）を復号し、（たとえば、ピクセル値を表す）復号されたデータを、既存又は既知のピクセル値マスク又は基準マーカのテンプレート（たとえば、白黒ピクセル値コード、又は基準マーカ・データ）と比較し得る。たとえば、ポリゴンのコードを表す復号されたデータは、既知の基準マーカを表すコード（たとえば、基準マーカ・データ）のリストを含むコード表と比較され得る（たとえば、ルックアップ・テーブルであり得るコード表でクエリが実行され得る）。ポリゴンに関連付けられたコードがコード表に含まれている場合、基準マーカ（たとえば、図２Ｃの基準マーカ２０４Ａ、２０４Ｂ、及び２０４Ｃ）が正常に認識され得る一方、コードがコード表に含まれていない場合、ポリゴンは偽った肯定と見なされ得、フィルタ処理によってさらなる処理から除外され得る。
【００５４】
たとえば、ＡｐｒｉｌＴａｇを参照すると、ＡｐｒｉｌＴａｇは一般に正方形であり、一般に、Ｎ×Ｎの黒又は白のセルであり、ここで、Ｎは、ＡｐｒｉｌＴａｇファミリ又はクラスに応じて事前に定義されている。その結果、ファミリ又はクラスにおける各ＡｐｒｉｌＴａｇは、Ｎ×Ｎビットのバイナリ・コードで符号化され得、ここで、０及び１は、黒及び白をそれぞれ表す。デコーダ１１６は、（たとえば、図３における境界３０８Ａ内のピクセルによって表されるように）画像内のポリゴンによって表されるデータを判定するために復号アルゴリズムを実行し得る。ピクセル値が境界３０８Ａ内から復号されると、（たとえば、ＡｐｒｉｌＴａｇのような基準マーカのコードを表す）復号されたピクセル値は、ルックアップ・テーブル、及び／又は、ＡｐｒｉｌＴａｇの既知のパターン・マスク又はテンプレートを含むコード表と比較され得る。結果として、境界３０８Ａ内のピクセルは、コード表内のコードの１つに対するしきい類似度内（たとえば、２、３、４などのしきいハミング距離内）にあると判定され得る。その結果、境界３０８Ａは、正常に復号された基準マーカ（たとえば、ＡｐｒｉｌＴａｇ）であると判定され得、基準マーカ・マネジャ１１８によって使用されて、１つ又は複数の機能を実行し、１つ又は複数のコマンドを実行し、コンピューティング・デバイス１０２及び／又は別のコンピューティング・デバイス１０２及び／又は１３０の別の構成要素又は特徴によって、１つ又は複数のコマンドをトリガし得る。
【００５５】
図３を参照して示すように、コーナ検出１４０について「白」及び「黒」とラベル付けされた画像の部分は、他の処理ブロック（たとえば、境界コーナ・フィルタ処理１４２、クワッド・フィッティング１４４、及び基準マーカ復号１４６）においても白及び黒であるが、明確化のために、他の処理ブロックには含まれていない。図３における黒領域及び白領域は、ＡｐｒｉｌＴａｇ、ＡＲＫｉｔ、ＡＲＴｏｏｌｋｉｔなどの基準マーカを構成し得る。
【００５６】
図４及び図５を参照して示すように、本明細書で説明される方法４００及び方法５００の各ブロックは、ハードウェア、ファームウェア、及び／又はソフトウェアの任意の組合せを使用して実行され得るコンピューティング処理を含む。たとえば、メモリに記憶された命令を実行するプロセッサによって、様々な機能が実行され得る。方法４００及び方法５００はまた、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令として具現化され得る。方法４００及び方法５００は、いくつか例を挙げると、スタンドアロン・アプリケーション、サービス又はホスト・サービス（スタンドアロン又は別のホスト・サービスとの組合せ）、又は別の製品へのプラグ・インによって提供され得る。それに加えて、方法４００及び方法５００は、実例として、基準マーカ識別システム１００（図１Ａ）及び処理１３２（図１Ｂ）に関して説明される。しかしながら、これらの方法は、追加的又は代替的に、本明細書で説明されるものを含むがこれらに限定されない任意の１つのシステム、又はシステムの任意の組合せによって実行され得る。
【００５７】
図４は、本開示のいくつかの実施例による、基準マーカ識別のための方法４００を示すフロー図である。方法４００は、ブロックＢ４０２で、画像を表す画像データを受け取ることを含む。たとえば、画像マネジャ１０４は、（たとえば、処理１３２の入力画像受取１３４処理ブロックで）画像を表す画像データを受け取り得る。入力画像は、コンピューティング・デバイス１０２のカメラ１２０によってキャプチャされていてもよい。いくつかの実例では、入力画像は、データ・ストア１２６に記憶され、画像マネジャ１０４によって管理され得る。
【００５８】
方法４００は、ブロックＢ４０４で、候補コーナ点を表すピクセルを検出することを含む。たとえば、コーナ検出器１１０は、候補コーナ点を表すピクセル（たとえば、図２Ｂのコーナ２１８及び誤識別されたピクセル２２０）を検出し得る。いくつかの実例では、候補コーナ点を表すピクセルの検出は、処理１３２のコーナ検出１４０処理ブロックでコーナ検出器１１０によって実行され得る。
【００５９】
方法４００は、ブロックＢ４０６で、画像データを変換画像に変換することを含む。たとえば、画像は、高次元の色空間から、低次元の色空間の変換画像に変換され得る。これには、画像の、適応しきい値処理１３６などの、しきい値処理を含み得る。いくつかの実例において、画像のグレースケール・バージョンは、適応しきい値処理１３６（及び／又はグローバルしきい値処理）の前に生成され得る。いくつかの実例では、画像の変換画像への変換は、しきい値処理器１０６によって実行され得る。
【００６０】
方法４００は、ブロックＢ４０８で、変換画像内の境界を識別することを含む。たとえば、隣接する白ピクセル領域（たとえば、図２Ａの領域２１２Ａ）と黒ピクセル領域（たとえば、図２Ａの領域２１２Ｂ）とを分離する境界は、画像分割器１０８による画像分割１３８の結果として識別され得る。
【００６１】
方法４００は、ブロックＢ４１０で、境界までのしきい距離内にある候補コーナ点のセットを判定することを含む。たとえば、コーナ・フィルタ１１２は、ブロックＢ４０８で識別された境界の１つへのしきい距離内にない候補コーナ点のセットから、ピクセルをフィルタ処理によって除外し得る。いくつかの実例では、コーナ・フィルタ１１２は、処理１３２の境界コーナ・フィルタ処理１４２を実行するときに候補コーナ点のセットを判定し得る。
【００６２】
方法４００は、ブロックＢ４１２で、候補コーナ点のセットを分析して、ポリゴンのコーナを表す候補コーナ点のサブセットを判定することを含む。たとえば、クワッド・フィッタ１１４は、候補コーナ点のセットを分析して、ポリゴンのコーナである候補コーナ点のサブセットを判定し得る。たとえば、隣接する候補ピクセル間を延びるエッジを生成し、隣接するエッジ間の角度を分析して、候補コーナ点がコーナ点として適切であるか否かが判定され得る。候補コーナ点のセットの分析は、処理１３２のクワッド・フィッティング１４４を実行するときにクワッド・フィッタ１１４によって実行され得る。
【００６３】
方法４００は、ブロックＢ４１４で、少なくとも１つのフィルタをポリゴンに適用して、基準マーカの基準マーカ境界に対応するものとしてポリゴンを識別することを含む。たとえば、エッジの長さ、エッジの長さの割合、エッジによって形成される角度に基づいて、及び／又は、ポリゴン内からの復号されたデータを、既知のマスク又は基準マーカのテンプレートを表すコード表と比較することに基づいて、ポリゴンがフィルタ処理され得る。いくつかの実例では、フィルタは、クワッド・フィッティング１４４中にクワッド・フィッタ１１４によって適用され得、及び／又は、処理１３２を実行するときにデコーダ１１６による基準マーカ復号１４６中にフィルタ処理によって除去され得る。フィルタ及び／又は復号の結果として、残りのポリゴンは、基準マーカであると判定され得、ポリゴンは、基準マーカ境界であると判定され得る。
【００６４】
図５は、本開示のいくつかの実施例による、基準マーカ識別のための別の方法５００を示すフロー図である。方法５００は、ブロックＢ５０２で、画像内で識別された少なくとも１つの境界までのしきい距離内の候補コーナ点を表す画像内のピクセルを判定することを含む。たとえば、変換画像２１０及び／又は入力画像２０２のグレースケール・バージョンで識別された境界の１つへのしきい距離内にある、変換画像２１０及び／又は入力画像２０２のグレースケール・バージョンのピクセルが、判定され得る。いくつかの実例では、処理１３２の入力画像受取１３４、適応しきい値処理１３６、画像分割１３８、コーナ検出１４０、及び／又は境界コーナ・フィルタ１４２の後に、候補コーナ点が判定され得る。いくつかの実例では、本明細書で説明されるように、これらのステップのおのおのは、ＧＰＵ１２２において実行され得、処理ブロックの１つ又は複数は、並列に実行され得る。
【００６５】
処理５００は、ブロックＢ５０４で、ＧＰＵメモリからＣＰＵメモリにピクセルをコピーすることを含む。たとえば、境界コーナ・フィルタ処理１４２がＧＰＵ１２２により完了すると、処理１３２はＣＰＵ１２４で継続し得る。そのため、ブロックＢ５０２で識別されたピクセルは、ＣＰＵ１２４によるさらなる処理のために、ＧＰＵメモリからＣＰＵメモリにコピーされ得る。しかしながら、破線で示されているように、ブロックＢ５０４はオプションであり、ＧＰＵ１２２とＣＰＵ１２４の両方が使用されていない実例、又は次の処理ブロックがＣＰＵ１２４において実行されていない例では、ブロックＢ５０４は削除され得る。
【００６６】
処理５００は、ブロックＢ５０６で、同じ境界に関連付けられた候補コーナ点のセットを判定することを含む。たとえば、同じ境界ＩＤに関連付けられた候補コーナ点は、クワッド・フィッティング１４４中にクワッド・フィッタ１１４によって判定され得る。
【００６７】
処理５００は、ブロックＢ５０８で、候補コーナ点のセットのメンバ間に延びるエッジを生成することを含む。たとえば、クワッド・フィッタ１１４は、各候補コーナ点と各隣接候補コーナ点との間に延びるエッジを生成し得る。
【００６８】
処理５００は、ブロックＢ５１０で、エッジの隣接するエッジによって形成される角度を計算することを含む。たとえば、クワッド・フィッタ１１４は、エッジの隣接するエッジによって形成される角度を計算し得る。
【００６９】
処理５００は、ブロックＢ５１２で、最小の大きさの角度のセットに関連付けられた候補コーナ点のセットのサブセットを、ポリゴンのコーナとして識別することを含む。たとえば、クワッド・フィッタ１１４は、最小の大きさの角度（たとえば、図３の第１のピクセル３０２Ｃ、３０２Ｄ、３０２Ｅ、及び３０２Ｆ）に関連付けられた候補コーナ点のセットのサブセットを識別し得る。
【００７０】
処理５００は、ブロックＢ５１４で、ポリゴンが基準マーカの基準マーカ境界に対応するか否かを判定することを含む。たとえば、クワッド・フィッタ１１４及び／又はデコーダ１１６は、画像内で検出されたポリゴンが、基準マーカの基準マーカ境界に対応するか否かを判定し得る。この処理は、上述した図４の方法４００のブロックＢ４１４の処理と同様であり得る。
【００７１】
図６を参照して示すように、図６は、本開示の少なくともいくつかの実施例を実施する際の使用に適した１つの実例のコンピューティング・デバイス６００のブロック図である。コンピューティング・デバイス６００は、以下のデバイス、すなわち、メモリ６０４、１つ又は複数の中央処理装置（ＣＰＵ）６０６、１つ又は複数のグラフィック処理装置（ＧＰＵ）６０８、通信インターフェース６１０、入力／出力（Ｉ／Ｏ）ポート６１２、入力／出力構成要素６１４、電源６１６、及び１つ又は複数の表示構成要素６１８（たとえば、ディスプレイ）を直接的又は間接的に結合するバス６０２を含み得る。
【００７２】
図６の様々なブロックは、バス６０２を介してラインと接続されているように示されているが、これは限定を意図するものではなく、明確にするためだけのものである。たとえば、いくつかの実施例では、ディスプレイ・デバイスなどの表示構成要素６１８は、（たとえば、ディスプレイがタッチ・スクリーンである場合）Ｉ／Ｏ構成要素６１４と見なされ得る。別の実例として、ＣＰＵ６０６及び／又はＧＰＵ６０８は、メモリを含み得る（たとえば、メモリ６０４は、ＧＰＵ６０８、ＣＰＵ６０６、及び／又は他の構成要素のメモリに加えて記憶デバイスを表し得る）。言い換えれば、図６のコンピューティング・デバイスは、単なる例示である。「ワークステーション」、「サーバ」、「ラップトップ」、「デスクトップ」、「タブレット」、「クライアント・デバイス」、「モバイル・デバイス」、「ハンドヘルド・デバイス」、「ゲーム・コンソール」、「電子制御ユニット（ＥＣＵ）」、「仮想現実システム」、「ロボット・デバイス」、及び／又は、他のデバイス又は、システムのタイプなどのカテゴリは区別されず、すべて図６のコンピューティング・デバイスの範囲内で考慮される。
【００７３】
バス６０２は、アドレス・バス、データ・バス、制御バス、又はそれらの組合せのような１つ又は複数のバスを表し得る。バス６０２は、業界標準アーキテクチャ（ＩＳＡ）バス、拡張業界標準アーキテクチャ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス標準協会（ＶＥＳＡ）バス、周辺機器相互接続（ＰＣＩ）バス、周辺機器構成要素相互接続エクスプレス（ＰＣＩｅ）バス、及び／又は別のタイプのバスなどの１つ又は複数のバス・タイプを含み得る。
【００７４】
メモリ６０４は、様々なコンピュータ可読媒体のいずれかを含み得る。コンピュータ可読媒体は、コンピューティング・デバイス６００によってアクセスできる任意の利用可能な媒体であり得る。コンピュータ可読媒体は、揮発性媒体と不揮発性媒体、及びリムーバブル媒体と非リムーバブル媒体の両方を含み得る。実例として、限定ではなく、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を含み得る。
【００７５】
コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、及び／又は他のデータ・タイプのように、情報を記憶するための任意の方法又は技術で実施される揮発性媒体及び不揮発性媒体及び／又はリムーバブル及び非リムーバブル媒体の両方を含み得る。たとえば、メモリ６０４は、（たとえば、オペレーティング・システムなどのプログラム及び／又はプログラム要素を表すコンピュータ可読命令を記憶し得る。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリ又は他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）又は他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶デバイス、又は、所望の情報を記憶するために使用でき、コンピューティング・デバイス６００によってアクセスできる任意の他の媒体を含み得るが、これらに限定されない。本明細書で使用されるように、コンピュータ記憶媒体は、信号自体を含まない。
【００７６】
通信媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、及び／又は、搬送波又は他のトランスポート機構のような変調データ信号における他のデータ・タイプを具現化することができ、任意の情報配信媒体を含む。「変調データ信号」という用語は、信号内の情報を符号化するように設定又は変更された特性の１つ又は複数を有する信号を称し得る。限定ではなく実例として、通信媒体は、有線ネットワーク又は直接有線接続のような有線媒体、及び音響、ＲＦ、赤外線、及び他の無線媒体のような無線媒体を含み得る。上記のいずれの組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【００７７】
ＣＰＵ６０６は、コンピュータ可読命令を実行してコンピューティング・デバイス６００の１つ又は複数の構成要素を制御し、本明細書で説明された方法及び／又は処理の１つ又は複数を実行するように構成され得る。ＣＰＵ６０６はおのおの、多数のソフトウェア・スレッドを同時に処理することができる１つ又は複数（たとえば、１、２、４、８、２８、７２など）のコアを含み得る。ＣＰＵ６０６は、任意のタイプのプロセッサを含み得、実施されるコンピューティング・デバイス６００のタイプに応じて異なるタイプのプロセッサ（たとえば、モバイル・デバイスのコアが少ないプロセッサ及びサーバのコアが多いプロセッサ）を含み得る。たとえば、コンピューティング・デバイス６００のタイプに応じて、プロセッサは、縮小命令セット・コンピューティング（ＲＩＳＣ）を使用して実施されるＡＲＭプロセッサ、又は複合命令セット・コンピューティング（ＣＩＳＣ）を使用して実施される×８６プロセッサであり得る。コンピューティング・デバイス６００は、１つ又は複数のマイクロプロセッサ、又は数学コプロセッサのような補助的なコプロセッサに加えて、１つ又は複数のＣＰＵ６０６を含み得る。
【００７８】
ＧＰＵ６０８は、コンピューティング・デバイス６００によって使用され、グラフィック（たとえば、３Ｄグラフィック）をレンダリングし得る。ＧＰＵ６０８は、数百又は数千のソフトウェア・スレッドを同時に処理することができる数百又は数千のコアを含み得る。ＧＰＵ６０８は、レンダリング・コマンド（たとえば、ホスト・インターフェースを介して受け取ったＣＰＵ６０６からのレンダリング・コマンド）に応答して、出力画像のピクセル・データを生成し得る。ＧＰＵ６０８は、ピクセル・データを記憶するためのディスプレイ・メモリなどのグラフィック・メモリを含み得る。ディスプレイ・メモリは、メモリ６０４の一部として含まれ得る。ＧＰＵ６０８は、（たとえば、リンクを介して）並列に動作する２つ以上のＧＰＵを含み得る。ともに組み合わされると、各ＧＰＵ６０８は、出力画像の異なる部分又は異なる出力画像（たとえば、第１の画像用の第１のＧＰＵと、第２の画像用の第２のＧＰＵ）のピクセル・データを生成し得る。各ＧＰＵには独自のメモリを含めることも、又は他のＧＰＵとメモリを共有することもできる。
【００７９】
コンピューティング・デバイス６００がＧＰＵ６０８を含まない実例では、ＣＰＵ６０６を使用してグラフィックをレンダリングし得る。
【００８０】
通信インターフェース６１０は、有線及び／又は無線通信を含む電子通信ネットワークを介してコンピューティング・デバイス６００が他のコンピューティング・デバイスと通信できるようにする１つ又は複数の受信機、送信機、及び／又はトランシーバを含み得る。通信インターフェース６１０は、無線ネットワーク（たとえば、Ｗｉ−Ｆｉ、Ｚ−Ｗａｖｅ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）  ＬＥ、ＺｉｇＢｅｅなど）、有線ネットワーク（たとえば、Ｅｔｈｅｒｎｅｔ（登録商標）を介した通信）、低電力広域ネットワーク（たとえば、ＬｏＲａＷＡＮ、ＳｉｇＦｏｘなど）、及び／又はインターネットのような多くの異なるネットワークのいずれかを介した通信を可能にする構成要素及び機能性を含み得る。
【００８１】
Ｉ／Ｏポート６１２により、コンピューティング・デバイス６００を、Ｉ／Ｏ構成要素６１４、表示構成要素６１８、及び／又は他の構成要素を含む他のデバイスに論理的に結合することができ得、これらのいくつかは、コンピューティング・デバイス６００に組み込まれ（たとえば、統合され）得る。例示的なＩ／Ｏ構成要素６１４は、マイクロホン、マウス、キーボード、ジョイスティック、ゲーム・パッド、ゲーム・コントローラ、衛星放送受信アンテナ、スキャナ、プリンタ、無線デバイスなどを含む。Ｉ／Ｏ構成要素６１４は、エア・ジェスチャ、音声、又はユーザによって生成された他の生理学的入力を処理する自然なユーザ・インターフェース（ＮＵＩ）を提供し得る。場合によっては、入力は、さらなる処理のために、適切なネットワーク要素に送られ得る。ＮＵＩは、音声認識、スタイラス認識、顔認識、生体認証、ともに画面上及び画面に隣接するジェスチャ認識、エア・ジェスチャ、頭と目の追跡、及び、コンピューティング・デバイス６００のディスプレイに関連付けられた（以下で詳細に説明するような）タッチ認識の任意の組合せを実施し得る。コンピューティング・デバイス６００は、ジェスチャ検出及び認識のために、立体視カメラ・システム、赤外線カメラ・システム、ＲＧＢカメラ・システム、タッチ・スクリーン技術、及びこれらの組合せなどの深度カメラを含み得る。さらに、コンピューティング・デバイス６００は、動きの検出を可能にする加速度計又は（たとえば、慣性測定ユニット（ＩＭＵ）の一部として）ジャイロスコープを含み得る。いくつかの実例では、加速度計又はジャイロスコープの出力が、コンピューティング・デバイス６００によって使用され、没入型拡張現実又は仮想現実をレンダリングし得る。
【００８２】
電源６１６は、ハード・ワイヤ電源、バッテリ電源、又はこれらの組合せを含み得る。電源６１６は、コンピューティング・デバイス６００に電力を供給して、コンピューティング・デバイス６００の構成要素が動作できるようにし得る。
【００８３】
表示構成要素６１８は、ディスプレイ（たとえば、モニタ、タッチ・スクリーン、テレビ画面、ヘッド・アップ・ディスプレイ（ＨＵＤ）、他のディスプレイ・タイプ、又はそれらの組合せ）、スピーカ、及び／又は他の表示構成要素を含み得る。表示構成要素６１８は、他の構成要素（たとえば、ＧＰＵ６０８、ＣＰＵ６０６など）からデータを受け取り、データを（たとえば、画像、ビデオ、音声などとして）出力し得る。
【００８４】
本開示は、携帯情報端末又は他のハンドヘルド・デバイスなどのコンピュータ又は他のマシンによって実行される、プログラム・モジュールのようなコンピュータ実行可能命令を含むコンピュータ・コード又はマシン使用可能命令の一般的な文脈で説明され得る。一般に、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含むプログラム・モジュールは、特定のタスクを実行したり、又は特定の抽象データ・タイプを実施するコードを称する。本開示は、ハンドヘルド・デバイス、家庭用電化製品、汎用コンピュータ、より専門的なコンピューティング・デバイスなどを含む様々なシステム構成で実現され得る。本開示は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境でも実現され得る。
【００８５】
本開示の実施例に関して説明された要素（たとえば、システム、構成要素、特徴、マシン、インターフェース、機能、順序、機能のグループ化、機能性、及び／又は配置）は、実例としてのみ記載されている。本明細書で説明される要素以外の他の要素は、本明細書で説明される要素に加えて、又はその代わりに使用され得、いくつかの要素は完全に省略され得る。さらに、本明細書で説明される要素の多くは、個別の構成要素又は分散された構成要素として、又は他の構成要素と組み合わせて、任意の適切な組合せ及び場所で実施され得る機能エンティティである。エンティティによって実行されるものとして本明細書で説明される様々な機能は、ハードウェア、ファームウェア、及び／又はソフトウェアによって実行され得る。たとえば、メモリに記憶された命令を実行するプロセッサによって様々な機能が実行され得る。
【００８６】
本明細書で使用されるように、２つ以上の要素に関する「及び／又は」の列挙は、１つの要素のみ、又は要素の組合せを意味すると解釈されるべきである。たとえば、「要素Ａ、要素Ｂ、及び／又は要素Ｃ」は、要素Ａのみ、要素Ｂのみ、要素Ｃのみ、要素Ａと要素Ｂ、要素Ａと要素Ｃ、要素Ｂと要素Ｃ、又は要素Ａ、Ｂ、及びＣを含み得る。それに加えて、「要素Ａ又は要素Ｂの少なくとも１つ」は、要素Ａの少なくとも１つ、要素Ｂの少なくとも１つ、又は要素Ａの少なくとも１つ及び要素Ｂの少なくとも１つを含み得る。さらに、「要素Ａ及び要素Ｂの少なくとも１つ」は、要素Ａの少なくとも１つ、要素Ｂの少なくとも１つ、又は要素Ａの少なくとも１つ及び要素Ｂの少なくとも１つを含み得る。
【００８７】
本開示の主題は、法的要件を満たすように本明細書で具体的に説明された。しかしながら、説明自体は、本開示の範囲を限定することを意図したものではない。むしろ、本発明者は、特許請求される主題が他の手法で具現化され、他の現在又は将来の技術と併せて、本書に説明されるものとは異なるステップ、又は類似したステップの組合せを含むことを企図している。さらに、「ステップ」及び／又は「ブロック」という用語は、適用される方法の異なる要素を示すために本明細書で使用され得るが、これら用語は、個々のステップの順序が明示的に説明されていない限り、及び個々のステップの順序が明示的に説明される場合を除いて、本明細書で開示される様々なステップ間の特定の順序を示唆するとして解釈されるべきではない。
【図１Ａ】
2020119550.tif 000003
【図１Ｂ】
2020119550.tif 000004
【図２Ａ】
2020119550.tif 000005
【図２Ｂ】
2020119550.tif 000006
【図２Ｃ】
2020119550.tif 000007
【図３】
2020119550.tif 000008
【図４】
2020119550.tif 000009
【図５】
2020119550.tif 000010
【図６】
2020119550.tif 000011
【外国語明細書】
2020119550000001.pdf