図1は、直線パノラマを生成するよう一連の画像を捕捉するシステム100の一実施形態を表すハイレベルブロック図を示す。表されているシステム100は、ユーザによってアクセスされ得る1つ以上のクライアントデバイス115a・・・115nと、認識サーバ101とを備えてよい。図1及び残りの図において、参照番号の後の文字、例えば、“115a”、は、その特定の参照番号を有する要素に対する参照を表す。後続の文字を伴わないテキスト中の参照番号、例えば、“115”、は、その参照番号を有する要素のインスタンスに対する全般的な参照を表す。表されている実施形態において、システム100のそれらのエンティティは、ネットワーク105を介して通信上結合される。
ネットワーク105は、従来方式の有線又は無線であることができ、星形構成、トークンリング構成又は他の構成を含む多種多様な構成を有してよい。更には、ネットワーク105は、ローカルエリアネットワーク(LAN;local area network)、ワイドエリアネットワーク(WAN;wide area network)(例えば、インターネット)、及び/又は、複数のデバイスが通信し得る他の相互接続されたデータパスを含んでよい。いくつかの実施形態において、ネットワーク105はピア・ツー・ピアネットワークであってよい。ネットワーク105はまた、多種多様な通信プロトコルにおいてデータを送信する電気通信ネットワークの部分へ結合されるか、あるいは、そのような部分を含んでよい。いくつかの実施形態において、ネットワーク105は、ショート・メッセージング・サービス(SMS;short messaging service)、マルチメディア・メッセージング・サービス(MMS;multimedia messaging service)、ハイパーテキスト・トランスファー・プロトコル(HTTP;hypertext transfer protocol)、直接データ接続、WAP、電子メール、などを介することを含め、データを送信及び受信するためのBluetooth(登録商標)通信ネットワーク又はセルラー通信ネットワークを含んでよい。図1は、クライアントデバイス115及び認識サーバ101へ結合される1つのネットワーク105を表すが、実際には、1つ以上のネットワーク105がそれらのエンティティへ接続され得る。
いくつかの実施形態において、システム100は、ネットワーク105へ結合されている認識サーバ101を含む。いくつかの実施形態において、認識サーバ101は、ハードウェアサーバ、ソフトウェアサーバ、又はソフトウェア及びハードウェアの組み合わせのいずれかであってよい。認識サーバ101は、プロセッサ、メモリ、アプリケーション、データベース、及びネットワーク通信機能を含むコンピュータデバイスであってよく、あるいは、そのようなコンピュータデバイスによって実装されてよい。図1の例では、認識サーバ101のコンポーネントは、以下で更に詳細に記載される画像認識アプリケーション103aを実装するよう構成される。一実施形態において、認識サーバ101は、棚、仕分け箱、又は陳列における製品を特定するための消費者包装品に対するサービスを提供する。例は、ここでは、小売陳列のような棚の画像における製品の認識を記載するが、一方で、画像は、整理された対象のあらゆる配置を含んでよいことが理解されるべきである。例えば、画像は、問屋、倉庫、物置、キャビネット、などのものであってよい。同様に、対象は、小売製品に加えて、道具、製造や建造やメンテナンスにおいて使用される部品、医薬品、応急処置供給品、非常又は安全設備、などであってよい。
いくつかの実施形態において、認識サーバ101は、ネットワーク105を介してシステム100の他のエンティティとの間でデータを送受信する。例えば、認識サーバ101は、画像を含むデータをクライアントデバイス115との間で送受信する。認識サーバ101によって受信された画像は、クライアントデバイス115によって捕捉された画像、ウェブサイト又は電子メールからコピーされた画像、あるいは、何らかの他のソースからの画像を含んでよい。単一の認識サーバ101しか図1には示されていないが、認識サーバ101又はサーバ・クラスタはいくつあってもよいことが理解されるべきである。認識サーバ101はデータストレージ243を更に含む。データストレージ243については、図2を参照して更に詳細に以下で記載される。
クライアントデバイス115は、メモリ、プロセッサ及びカメラを含むコンピュータデバイスであって、例えば、ラップトップ・コンピュータ、デスクトップ・コンピュータ、タブレット・コンピュータ、携帯電話機、スマートフォン、パーソナル・デジタル・アシスタント(PDA;personal digital assistant)、モバイル電子メールデバイス、ウェブカメラ、ユーザ装着式コンピュータデバイス、又はネットワーク105にアクセス可能な何らかの他の電子機器であってよい。クライアントデバイス115は、如何なるタイプのアプリケーションのためにも全般的なグラフィクス及びマルチメディア処理を提供する。クライアントデバイス115は、認識サーバ101によって提供された情報を見るディスプレイを含む。図1は、2つのクライアントデバイス115a及び115nを表すが、本開示は、1つ以上のクライアントデバイス115を備えたシステムアーキテクチャに適用される。
クライアントデバイス115は、認識サーバ101との間でデータを送受信するよう構成される。例えば、クライアントデバイス115は、クエリ画像を認識サーバ101へ送信し、認識サーバ101は、クエリ画像で認識された1つ以上の対象に関してJSON(JavaScript(登録商標) Object Notation)においてデータをクライアントデバイス115へ供給する。
画像認識アプリケーション103は、直線パノラマを生成するよう一連の画像を捕捉する機能を提供するソフトウェア及び/又はロジックを含んでよい。いくつかの実施形態において、画像認識アプリケーション103は、フィールド・プログラマブル・ゲート・アレイ(FPGA;field-programmable gate array)又は特定用途向け集積回路(ASIC;application-specific integrated circuit)のような、プログラム可能な又は特殊化したハードウェアを用いて実装され得る。いくつかの実施形態において、画像認識アプリケーション103は、ハードウェア及びソフトウェアの組み合わせを用いて実装され得る。他の実施形態において、画像認識アプリケーション103は、クライアントデバイス115及び認識サーバ101の組み合わせにおいて、あるいは、クライアントデバイス115又は認識サーバ101のいずれか1つによって、記憶及び実行されてよい。
いくつかの実施形態において、画像認識アプリケーション103bは、クライアントデバイス115で実行されるいくつかの機能及び画像認識アプリケーション103によって認識サーバ101で実行される更なる機能を備えたシンクライアント・アプリケーションの役割をする。例えば、クライアントデバイス115にある画像認識アプリケーション103bは、画像を捕捉し、画像を認識サーバ101へ送信し、画像認識結果を表示するソフトウェア及び/又はロジックを含んでよい。シンクライアント・アプリケーション103bは、画像を処理すること及び特徴識別を実施することといった、画像認識アプリケーション103を参照してここで記載される更なる機能を含んでよい。
いくつかの実施形態において、画像認識アプリケーション103は、捕捉デバイス247から、関心のある対象の部分の画像を受け取る。画像認識アプリケーション103は、画像の特徴を決定する。画像認識アプリケーション103は、捕捉デバイス247のディスプレイにおいて、関心のある対象の現在のプレビュー画像を含むユーザインターフェイスを生成する。画像認識アプリケーション103は、画像の特徴を、関心のある対象の現在のプレビュー画像と動的に比較して、オーバーラップを決定する。画像認識アプリケーション103は、画像間の所望の又は所定のオーバーラップ及びアライメントを生じさせるよう捕捉デバイス247の移動を導くための視覚的にはっきりと識別できるインジケータを含めるようにユーザインターフェイスを更新する。画像認識アプリケーション103は、画像と現在のプレビューとの間のオーバーラップが所定のオーバーラップ及びアライメント閾値を満足するかどうかを判定する。例えば、オーバーラップ閾値は60パーセントに設定され得る。画像認識アプリケーション103は、オーバーラップが所定のオーバーラップ閾値を満足することに基づき、関心のある対象の部分の次の画像を捕捉する。画像認識アプリケーション103の動作及び上記の機能は、以下で更に詳細に記載される。
図2は、画像認識アプリケーション103を含むコンピュータデバイス200の一実施形態を表すブロック図を示す。コンピュータデバイス200は、いくつかの例に従って、プロセッサ235、メモリ237、通信ユニット241、データストレージ243、ディスプレイデバイス239、オリエンテーションセンサ245、捕捉デバイス247、及び出力デバイス249を更に含む。コンピュータデバイス200のコンポーネントは、バス220によって通信上結合される。バス220は、業界標準アーキテクチャ(ISA;industry standard architecture)バス、ペリフェラル・コンポーネント・インターコネクト(PCI;peripheral component interconnect)バス、ユニバーサル・シリアル・バス(USB;universal serial bus)、又は同様の機能を提供する当該技術で知られているその他バスを含む1つ以上のバスを表してよい。いくつかの実施形態において、コンピュータデバイス200は、クライアントデバイス115、認識サーバ101、又はクライアントデバイス115及び認識サーバ101の組み合わせであってよい。コンピュータデバイス200がクライアントデバイス115又は認識サーバ101であるような実施形態では、クライアントデバイス115及び認識サーバ101は、図2に示されていない他のコンポーネントを含んでよいことが理解されるべきである。
プロセッサ235は、様々な入力/出力、論理、及び/又は数学演算を実施することによって、ソフトウェア命令を実行してよい。プロセッサ235は、例えば、複数命令セットコンピュータ(CISC;complex instruction set computer)アーキテクチャ、縮小命令セットコンピュータ(RISC;reduced instruction set computer)アーキテクチャ、及び/又は命令セットの組み合わせを実装するアーキテクチャを含め、データ信号を処理する様々なコンピュータアーキテクチャを有してよい。プロセッサ235は、物理的及び/又は仮想的であってよく、単一のプロセッシングユニット、あるいは、複数のプロセッシングユニット及び/又はコアを含んでよい。いくつかの実施において、プロセッサ235は、電子表示信号を生成してディスプレイデバイスへ供給すること、画像の表示をサポートすること、画像を捕捉及び送信すること、様々なタイプの特徴抽出及びサンプリングを含む複雑なタスクを実施すること、などが可能であってよい。いくつかの実施形態において、プロセッサ235は、バス220を介してメモリ237へ結合され、その中のデータ及び命令にアクセスし且つデータをそこに格納してよい。バス220は、プロセッサ235を、例えば、メモリ237、通信ユニット241、画像認識アプリケーション103、及びデータストレージ243を含む、コンピュータデバイス200の他のコンポーネントへ結合してよい。当業者に明らかなように、他のプロセッサ、オペレーティングシステム、センサ、ディスプレイ及び物理構成が可能である。
メモリ237は、コンピュータデバイス200の他のコンポーネントのためのデータを記憶しそれへのアクセスを提供してよい。メモリ237は、本願において別なところで論じられているように、単一のコンピュータデバイスにおいて含まれるか、あるいは、複数のコンピュータデバイスの間で分配されてよい。いくつかの実施において、メモリ237は、プロセッサ235によって実行され得る命令及び/又はデータを記憶してよい。命令及び/又はデータは、ここで記載される技術を実施するためのコードを含んでよい。例えば、一実施形態において、メモリ237は画像認識アプリケーション103を記憶してよい。メモリ237は、例えば、オペレーティングシステム、ハードウェアドライバ、他のソフトウェアアプリケーション、データベース、などを含む、他の命令及びデータを記憶することも可能である。メモリ237は、プロセッサ235及びコンピュータデバイス200の他のコンポーネントとの通信のためのバス220へ結合されてよい。
メモリ237は、1つ以上の不揮発性のコンピュータで使用可能(例えば、読み出し可能、書き込み可能)なデバイス、静的ランダム・アクセス・メモリ(SRAM;static random access memory)デバイス、埋込メモリデバイス、ディスクリート・メモリデバイス(例えば、PROM、FPROM、ROM)、ハードディスクドライブ、光ディスクドライブ(CD、DVD、ブルーレイ、など)媒体を含んでよく、プロセッサ235による又はそれに関連した処理のための命令、データ、コンピュータプログラム、ソフトウェア、コード、ルーチン、などを含み、記憶し、通信し、又は運ぶことができる如何なる有形な装置又はデバイスであることもできる。いくつかの実施において、メモリ237は、揮発性メモリ及び不揮発性メモリの1つ以上を含んでよい。例えば、メモリ237は、制限なしに、動的ランダム・アクセス・メモリ(DRAM;dynamic random access memory)デバイス、静的ランダム・アクセス・メモリ(SRAM)デバイス、埋込メモリデバイス、ディスクリート・メモリデバイス(例えば、PROM、FPROM、ROM)、ハードディスクドライブ、光ディスクドライブ(CD、DVD、ブルーレイ、など)の1つ以上を含んでよい。メモリ237は、単一のデバイスであってよく、あるいは、複数のタイプのデバイス及び構成を含んでよいことが理解されるべきである。
通信ユニット241は、プロセッサ235をネットワーク105及び他のプロセッシングシステムへリンクすることによってデータを受信及び送信するハードウェアである。通信ユニット241は、クライアントデバイス115からリクエストのようなデータを受信し、そのリクエスト、例えば、画像を処理するためのリクエスト、をコントローラ201へ送信する。通信ユニット241はまた、例えば、画像を処理することに応答して、表示のために、認識結果を含む情報をクライアントデバイス115へ送信する。通信ユニット241はバス220へ結合されている。一実施形態において、通信ユニット241は、クライアントデバイス115への又は他の通信チャネルへの直接的な物理接続のためのポートを含んでよい。例えば、通信ユニット241は、クライアントデバイス115との有線接続のためにRJ45ポート又は同様のポートを含んでよい。他の実施形態において、通信ユニット241は、IEEE802.11、IEEE802.16、Bluetooth(登録商標)又は他の適切な無線通信方法のような1つ以上の無線通信方法を用いてクライアントデバイス115又はあらゆる他の通信チャネルとデータを交換するための無線トランシーバ(図示せず。)を含んでよい。
更なる他の実施形態において、通信ユニット241は、セルラー通信ネットワーク上で、例えば、ショート・メッセージング・サービス(SMS)、マルチメディア・メッセージング・サービス(MMS)、ハイパーテキスト・トランスファー・プロトコル(HTTP)、直接データ接続、WAP、電子メール、又は他の適切なタイプの電子通信を介して、データを送信及び受信するためのセルラー通信トランシーバを含んでよい。更なる別の実施形態において、通信ユニット241は、有線ポート及び無線トランシーバを含んでよい。通信ユニット241はまた、当業者に理解されるように、TCP/IP、HTTP、HTTPS及びSMTPのような標準のネットワークプロトコルを用いて、ファイル及び/又はメディアオブジェクトの分配のために、ネットワーク105への他の従来の接続を提供する。
データストレージ243は、ここで記載される機能を提供するためのデータを記憶する非一時的なメモリである。データストレージ243は、動的ランダム・アクセス・メモリ(DRAM)デバイス、静的ランダム・アクセス・メモリ(SRAM)デバイス、フラッシュメモリ又はその他メモリデバイスであってよい。いくつかの実施形態において、データストレージ243はまた、ハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、CD−ROMデバイス、DVD−ROMデバイス、DVD−RAMデバイス、DVD−RWデバイス、フラッシュメモリデバイス、又はより恒久的に情報を記憶するその他大容量デバイスを含む不揮発性メモリ又は同様の永久記憶デバイス及び媒体を含んでよい。
表されている実施形態では、データストレージ243は、バス220へ通信上結合される。データストレージ243は、受信された画像を解析するためのデータ並びに解析及びここで記載される他の機能の結果を記憶する。例えば、データストレージ243は、最適な重なり合った画像を捕捉するための画像オーバーラップ閾値を記憶してよい。データストレージ243は、捕捉された画像及び捕捉された画像について決定された特徴の組を同様に記憶してよい。加えて、データストレージ243は、張り合わされた直線状のパノラマ画像を記憶してよい。データストレージ243に記憶されるデータについては、より詳細に以下で記載される。
表されている実施形態では、ディスプレイデバイス239は、プレビュー画像又はユーザインターフェイスを表示するスクリーンであってよい。ディスプレイデバイス239は、バス220を介してプロセッサ235及びデータストレージ243へ接続し、画像認識アプリケーション103から情報を受けるよう構成されてよい。ディスプレイデバイス239は、携帯電話機、タブレット、コンピュータ、カメラ、又は表示スクリーンを有して構成されることが可能な他のデバイスに組み込まれてよい。
表されている実施形態では、捕捉デバイス247は、対象の画像を捕捉することが可能なデバイスであってよい。捕捉デバイス247は、カメラ又は同様のデバイスを含め、画像を捕捉することができる如何なるデバイスであってもよい。捕捉デバイス247は、スタンドアローンのデバイスであるか、あるいは、クライアントデバイス115の部分であるよう構成されてよい。捕捉デバイス247は、バス220を介してプロセッサ235及びデータストレージ243へ接続し、画像認識アプリケーション103から情報を受信及び送信するよう構成されてよい。
表されている実施形態では、オリエンテーションセンサ245は、デバイスの姿勢を検出することができるセンサであってよい。センサは、姿勢を検出することが可能な加速度計、磁気計又は他のセンサであってよい。オリエンテーションセンサ245は、クライアントデバイス115の内部に組み込まれるか、あるいは、クライアントデバイス115とは別個であってよい。オリエンテーションセンサ245は、バス220を介して画像認識アプリケーション103から情報を送信及び受信するよう構成されてよい。
表されている実施形態では、出力デバイス249は、ユーザへの出力を生成することができる如何なるデバイスであってもよい。出力デバイス249は、スピーカ、ユーザインターフェイスにおいて提示される画像、クライアントデバイス115における振動、あるいは、ユーザが検知可能な他の出力であってよい。いくつかの実施形態において、出力デバイス249は、触覚フィードバックモジュール219を用いて振動により触覚フィードバックを提供するよう構成された携帯電話機、タブレット・コンピュータ、又は他のモバイルデバイスであってよい。代替の実施形態では、出力デバイス249は、触覚フィードバックモジュール219を用いて触覚フィードバックを提供することができるスマートウォッチであってよい。そのような実施形態では、スマートウォッチは、タップ・シグニチャを提供することのような、より高度な触覚フィードバックを提供することが可能であってよい。タップ・シグニチャは、デバイスにおける正確なチルトのような何かを示す、ユーザの手首でのタップの特別なシーケンスであってよい。
いくつかの実施形態において、画像認識アプリケーション103は、コントローラ201、スティッチングモジュール209、ユーザインターフェイスモジュール211、特徴抽出モジュール203、アライメントモジュール205、ユーザガイダンスモジュール207、ヨー計算モジュール213、歪み補正モジュール215、ヨー・ユーザインターフェイスモジュール217、及び触覚フィードバックモジュール219を含んでよい。画像認識アプリケーション103のコンポーネントは、バス220を介して通信上結合される。
コントローラ201は、画像認識アプリケーション103の他のコンポーネントの動作を制御するソフトウェア及び/又はロジックを含んでよい。コントローラ201は、図3乃至8を参照して後述される方法を実施するよう画像認識アプリケーション103の他のコンポーネントを制御する。コントローラ201はまた、画像認識アプリケーション103とコンピュータデバイス200の他のコンポーネントとの間及び画像認識アプリケーション103のコンポーネント間の通信を扱う機能を提供するソフトウェア及び/又はロジックを含んでよい。いくつかの実施形態において、コントローラ201は、フィールド・プログラマブル・ゲート・アレイ(FPGA)又は特定用途向け集積回路(ASIC)を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、コントローラ201は、プロセッサ235によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、コントローラ201は、プロセッサ235によって実行可能な命令の組である。いくつかの実施において、コントローラ201は、メモリ237において記憶され、プロセッサ235によってアクセス可能であり実行可能である。いくつかの実施において、コントローラ201は、バス220を介してプロセッサ235、メモリ237、及び画像認識アプリケーション103の他のコンポーネントと協調及び通信するよう構成される。
いくつかの実施形態において、コントローラ201は、通信ユニット241を介してクライアントデバイス115及び認識サーバ101の1つ以上との間でデータを送受信する。例えば、コントローラ201は、通信ユニット241を介して、ユーザによって操作されているクライアントデバイス115から画像を受信し、画像をスティッチングモジュール209へ送信する。他の例では、コントローラ201は、グラフィカルユーザインターフェイスをユーザに提供するためのデータをユーザインターフェイスモジュール211から受信し、データをクライアントデバイス115へ送信して、クライアントデバイス115にユーザインターフェイスをユーザに提示させる。
いくつかの実施形態において、コントローラ201は、画像認識アプリケーション103の他のコンポーネントからデータを受信し、データをデータストレージ243に記憶する。例えば、コントローラ201は、画像について特定された特徴を含むデータをスティッチングモジュール209から受信し、データをデータストレージ243に記憶する。他の実施形態では、コントローラ201は、データストレージ243からデータを受信し、データを画像認識アプリケーション103の他のコンポーネントへ送信する。例えば、コントローラ201は、オーバーラップ閾値を含むデータをデータストレージ243から取り出し、取り出したデータをスティッチングモジュール209へ送信する。
スティッチングモジュール209は、単一の直線状のパノラマ画像を張り合わせるよう一連の画像を捕捉する機能を提供するソフトウェア及び/又はロジックを含んでよい。いくつかの実施形態において、スティッチングモジュール209は、フィールド・プログラマブル・ゲート・アレイ(FPGA)又は特定用途向け集積回路(ASIC)を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、スティッチングモジュール209は、プロセッサ235によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、スティッチングモジュール209は、画像を張り合わせるよう図15乃至17、20及び26A乃至26Eを参照して後述されるように方法を実施し且つユーザインターフェイス及び他の機能を実装することができる。いくつかの実施形態において、スティッチングモジュール209は、プロセッサ235によって実行可能な命令の組である。いくつかの実施において、スティッチングモジュール209は、メモリ237に記憶され、プロセッサ235によってアクセス可能であり実行可能である。いくつかの実施において、スティッチングモジュール209は、バス220を介してプロセッサ235、メモリ237、及び画像認識アプリケーション103の他のコンポーネントと協調及び通信するよう構成される。
ユーザインターフェイスモジュール211は、ユーザインターフェイスをユーザに提供するソフトウェア及び/又はロジックを含んでよい。いくつかの実施形態において、ユーザインターフェイスモジュール211は、フィールド・プログラマブル・ゲート・アレイ(FPGA)又は特定用途向け集積回路(ASIC)を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、ユーザインターフェイスモジュール211は、プロセッサ235によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、ユーザインターフェイスモジュール211は、プロセッサ235によって実行可能な命令の組である。いくつかの実施において、ユーザインターフェイスモジュール211は、メモリ237において記憶され、プロセッサ235によってアクセス可能であり実行可能である。いくつかの実施において、ユーザインターフェイスモジュール211は、バス220を介してプロセッサ235、メモリ237、及び画像認識アプリケーション103の他のコンポーネントと協調及び通信するよう構成される。
いくつかの実施形態において、ユーザインターフェイスモジュール211は、スティッチングモジュール209又は画像認識アプリケーション103の他のモジュールからの命令を受けて、前に捕捉された画像との良好なオーバーラップを有する次の画像を捕捉するために如何にクライアントデバイス115を動かすべきかに関してユーザに指示するグラフィカルユーザインターフェイスを生成する。いくつかの実施形態において、ユーザインターフェイスモジュール211は、スティッチングモジュール209からの命令を受けて、姿勢の軸のいずれか(例えば、X、Y、又はZ軸)においてほとんど傾きを有さずに重なり合った画像を捕捉するようユーザを誘導するグラフィカルユーザインターフェイスを生成する。他の実施形態では、ユーザインターフェイスモジュール211は、通信ユニット241を介してクライアントデバイス115内のアプリケーション(例えば、ブラウザ)へグラフィカルユーザインターフェイスを送信して、そのアプリケーションにデータをグラフィカルユーザインターフェイスとして表示させる。いくつかの実施形態において、ユーザインターフェイスモジュール211は、ヨー・ユーザインターフェイスモジュール217の代わりにヨー・ユーザインターフェイスを生成することができる。代替の実施形態では、ユーザインターフェイスモジュール211は、ヨー・ユーザインターフェイスモジュール217から情報を受け取って、ヨーデータをユーザインターフェイス上に組み込んでよい。そのような実施形態の例は、図26A乃至26E、27及び28において示され得る。
特徴抽出モジュール203は、関心のある特徴を検出するよう一連の画像を解析する機能を提供するソフトウェア及び/又はロジックを含んでよい。いくつかの実施形態において、特徴抽出モジュール203は、フィールド・プログラマブル・ゲート・アレイ(FPGA)又は特定用途向け集積回路(ASIC)を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、特徴抽出モジュール203は、プロセッサ235によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、特徴抽出モジュール203は、プロセッサ235によって実行可能な命令の組である。いくつかの実施において、特徴抽出モジュール203は、メモリ237において記憶され、プロセッサ235によってアクセス可能であり実行可能である。いくつかの実施において、特徴抽出モジュール203は、バス220を介してプロセッサ235、メモリ237、及び画像認識アプリケーション103の他のコンポーネントと協調及び通信するよう構成される。
アライメントモジュール205は、捕捉された画像を前の画像とアライメントする機能を提供するソフトウェア及び/又はロジックを含んでよい。いくつかの実施形態において、アライメントモジュール205は、フィールド・プログラマブル・ゲート・アレイ(FPGA)又は特定用途向け集積回路(ASIC)を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、アライメントモジュール205は、プロセッサ235によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、アライメントモジュール205は、プロセッサ235によって実行可能な命令の組である。いくつかの実施において、アライメントモジュール205は、メモリ237において記憶され、プロセッサ235によってアクセス可能であり実行可能である。いくつかの実施において、アライメントモジュール205は、バス220を介してプロセッサ235、メモリ237、及び画像認識アプリケーション103の他のコンポーネントと協調及び通信するよう構成される。
ユーザガイダンスモジュール207は、ヨー、ピッチ及びロールに関する命令を受け、ヨー、ピッチ又はロールエラーを補正する指示をユーザに与える機能を提供するソフトウェア及び/又はロジックを含んでよい。更には、ユーザガイダンスモジュール207は、パノラマ画像を生成するよう張り合わされる画像を撮影する方向を決定し、パノラマ画像のための次の画像を撮影する指示をユーザに与えることができる。いくつかの実施形態において、ユーザガイダンスモジュール207は、フィールド・プログラマブル・ゲート・アレイ(FPGA)又は特定用途向け集積回路(ASIC)を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、ユーザガイダンスモジュール207は、プロセッサ235によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、ユーザガイダンスモジュール207は、プロセッサ235によって実行可能な命令の組である。いくつかの実施において、ユーザガイダンスモジュール207は、メモリ237において記憶され、プロセッサ235によってアクセス可能であり実行可能である。いくつかの実施において、ユーザガイダンスモジュール207は、バス220を介してプロセッサ235、メモリ237、及び画像認識アプリケーション103の他のコンポーネントと協調及び通信するよう構成される。
触覚フィードバックモジュール219は、ヨー、ピッチ又はロールエラーが許容可能なマージンだけ低減された場合にユーザに警告する機能を提供するソフトウェア及び/又はロジックを含んでよい。代替の実施形態では、触覚フィードバックモジュール219は、ヨー、ピッチ又はロールエラーが設定された閾値を超えて増大した場合にユーザに警告する機能を提供するソフトウェア及び/又はロジックを含んでよい。いくつかの実施形態において、触覚フィードバックモジュール219は、ヨー、ピッチ又はロールデータのようなチルトエラーを受け取る。触覚フィードバックモジュール219は、チルトエラーが設定された閾値を上回るかあるいは下回るかどうかを特定し、チルトエラーが特定の閾値を上回る場合に出力デバイス249を用いてユーザに警告することができる。代替的に、いくつかの実施形態において、触覚フィードバックモジュール219は、チルトエラーが特定の閾値を下回る場合に出力デバイス249を用いてユーザに警告してよい。いくつかの実施形態において、触覚フィードバックモジュール219は、フィールド・プログラマブル・ゲート・アレイ(FPGA)又は特定用途向け集積回路(ASIC)を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、触覚フィードバックモジュール219は、プロセッサ235によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、触覚フィードバックモジュール219は、プロセッサ235によって実行可能な命令の組である。いくつかの実施において、触覚フィードバックモジュール219は、メモリ237において記憶され、プロセッサ235によってアクセス可能であり実行可能である。いくつかの実施において、触覚フィードバックモジュール219は、バス220を介してプロセッサ235、メモリ237、及び画像認識アプリケーション103の他のコンポーネントと協調及び通信するよう構成される。
ヨー計算モジュール213は、画像を解析してヨー角を特定する機能を提供するソフトウェア及び/又はロジックを含んでよい。ヨー計算モジュール213は、画像を受け取り、画像を解析してヨーエラーを特定することができる。ヨー計算モジュール213は、次いで、ヨーエラーを、更なる処理のために、他のモジュール又はデバイスへ送信してよい。ヨー計算モジュール213によって実施される処理の例は、図23及び24において見られてよい。いくつかの実施形態において、ヨー計算モジュール213は、フィールド・プログラマブル・ゲート・アレイ(FPGA)又は特定用途向け集積回路(ASIC)を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、ヨー計算モジュール213は、プロセッサ235によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、ヨー計算モジュール213は、プロセッサ235によって実行可能な命令の組である。いくつかの実施において、ヨー計算モジュール213は、メモリ237において記憶され、プロセッサ235によってアクセス可能であり実行可能である。いくつかの実施において、ヨー計算モジュール213は、バス220を介してプロセッサ235、メモリ237、及び画像認識アプリケーション103の他のコンポーネントと協調及び通信するよう構成される。
歪み補正モジュール215は、画像の歪み補正を実施する機能を提供するソフトウェア及び/又はロジックを含んでよい。いくつかの実施形態において、歪み補正モジュール215は、ヨー計算モジュール213からヨーデータを受け取り、ヨーデータを用いてデスキュー変換を決定してよい。歪み補正モジュール215は、次いで、デスキュー変換に基づき画像に対して歪み補正を実施してよい。いくつかの実施形態において、歪み補正モジュール215は、フィールド・プログラマブル・ゲート・アレイ(FPGA)又は特定用途向け集積回路(ASIC)を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、歪み補正モジュール215は、プロセッサ235によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、歪み補正モジュール215は、プロセッサ235によって実行可能な命令の組である。いくつかの実施において、歪み補正モジュール215は、メモリ237において記憶され、プロセッサ235によってアクセス可能であり実行可能である。いくつかの実施において、歪み補正モジュール215は、バス220を介してプロセッサ235、メモリ237、及び画像認識アプリケーション103の他のコンポーネントと協調及び通信するよう構成される。
ヨー・ユーザインターフェイスモジュール217は、計算されたヨー角を低減する指示をユーザに与える機能を提供するソフトウェア及び/又はロジックを含んでよい。いくつかの実施形態において、ヨー・ユーザインターフェイスモジュール217は、ヨー計算モジュール213からヨーデータを受け取り、ヨーデータを用いてユーザインターフェイス上でヨーデータのインジケータを生成してよい。いくつかの実施形態において、ヨーデータは、存在するヨーエラーの割合を計算するために使用されてよく、ヨー・ユーザインターフェイスモジュール217を用いて、存在するヨーエラーの割合に基づきインジケータを生成してよい。代替の実施形態では、ヨー・ユーザインターフェイスモジュール217は、ヨーデータを用いてヨーインジケータを生成し、ユーザインターフェイスモジュール211がヨーインジケータを含むユーザインターフェイスを生成するために、ヨーインジケータをユーザインターフェイスモジュール211へ送信してよい。いくつかの実施形態において、ヨー・ユーザインターフェイスモジュール217は、フィールド・プログラマブル・ゲート・アレイ(FPGA)又は特定用途向け集積回路(ASIC)を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、ヨー・ユーザインターフェイスモジュール217は、プロセッサ235によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、ヨー・ユーザインターフェイスモジュール217は、プロセッサ235によって実行可能な命令の組である。いくつかの実施において、ヨー・ユーザインターフェイスモジュール217は、メモリ237において記憶され、プロセッサ235によってアクセス可能であり実行可能である。いくつかの実施において、ヨー・ユーザインターフェイスモジュール217は、バス220を介してプロセッサ235、メモリ237、及び画像認識アプリケーション103の他のコンポーネントと協調及び通信するよう構成される。
[方法]
図3は、単一の直線状のパノラマ画像のための一連の画像を捕捉する方法の一実施形態を説明するフロー図300を示す。302で、スティッチングモジュール209は、関心のある対象の部分の画像を捕捉デバイス247から受け取る。例えば、画像は、棚、リージョン、アートワーク、ランドマーク、眺めの良い場所、アウタースペース、などの画像であることができる。304で、スティッチングモジュール209は画像の特徴を特定し、代替的に、スティッチングモジュール209は、特徴抽出モジュール203から情報を受け取り、特徴抽出モジュール203は画像の特徴を特定する。画像は処理され、単一の直線状のパノラマ画像を形成するのに必要な一連の画像における最初の画像であるための基準(位置、向き及びアライメント)を満足するとすれば、基準画像として記憶される。次いで、画像認識アプリケーション103は、少なくとも1つのプレビュー画像を受ける。306で、ユーザインターフェイスモジュール211は、関心のある対象の現在のプレビュー画像を含むユーザインターフェイスを、捕捉デバイス247のディスプレイ上に提示する。ユーザインターフェイスは、一連の画像における次の画像となり得るプレビュー画像を捕捉するようユーザを誘導するインジケータを含む。308で、スティッチングモジュール209は、基準画像の特徴を、捕捉デバイス247のディスプレイ上の関心のある対象の現在のプレビュー画像と動的に比較して、オーバーラップを決定する。310で、スティッチングモジュール209は、画像と現在のプレビュー画像との間のオーバーラップが所定のオーバーラップ閾値を満足するかどうかを判定する。例えば、所定のオーバーラップ閾値は、60%に設定され得る。十分なオーバーラップを有する画像が次のステップで捕捉されるまで、更なる画像がプレビュー画像として受け取られ、ユーザインターフェイスが更新される。312で、スティッチングモジュール209は、オーバーラップが所定のオーバーラップ閾値を満足することに基づき、捕捉デバイス247を用いて、関心のある対象の部分のプレビュー画像を捕捉し記憶する。314で、ユーザインターフェイスモジュール211は、捕捉された画像の記憶を示すようユーザインターフェイスを更新する。例えば、ユーザインターフェイスは、画像が捕捉されたことを示すよう、クライアントデバイス115にある出力デバイス249からの可聴なシャッター音を伴って束の間ピカッと光ってよい。316で、スティッチングモジュール209は、更なる画像が受信又はサンプリングされているかどうかを判定する。更なる画像が受信又はサンプリングされていない場合には、ステップ318で、スティッチングモジュール209は、単一の直線状のパノラマ画像を生成するよう、関心のある対象の部分の画像を送信する。更なる画像が受信されている場合には、スティッチングモジュール209は、画像が参照画像としてステップ312で記憶された状態で、ステップ304からプロセスを繰り返す。いくつかの実施形態において、スティッチングモジュール209はユーザ入力に応答し、ユーザがプレビュー画像の供給を中止すると、パノラマ画像は生成される。いくつかの実施形態において、スティッチングモジュール209は、パノラマ画像を形成するのに十分な画像が捕捉されたかどうかに関してユーザにフィードバックを与える。例えば、スティッチングモジュール209は、画像捕捉のパターンに関して入力を受け、プレビュー又は供給すべき次の画像に関してユーザを導く。言い換えれば、方法300は、画像のプレビューを提供するためにどのような縦及び横方向の移動が行われるべきかに関して追加のユーザフィードバックを提供してよい。
図4乃至4Bは、単一の直線状のパノラマ画像のための一連の画像を捕捉する方法の他の実施形態を説明するフロー図400を示す。402で、スティッチングモジュール209は、関心のある対象の部分の画像を捕捉デバイス247から受け取る。404で、スティッチングモジュール209は、画像の特徴を特定する。406で、ユーザインターフェイスモジュール211は、関心のある対象の現在のプレビュー画像を含むユーザインターフェイスを捕捉デバイス247のディスプレイ上で提示する。現在のプレビュー画像は、レンズによって形成された画像をクライアントデバイス115内に含まれる画像センサ上に連続的に且つ直接に投影することによってクライアントデバイス115の表示スクリーン上に生成されたライブプレビューであることができる。
408で、スティッチングモジュール209は、画像の特徴を、捕捉デバイス247のディスプレイ上の関心のある対象の現在のプレビュー画像と動的に比較する。410で、スティッチングモジュール209は、関心のある対象に沿った捕捉デバイス247の動きの方向、及び画像と現在のプレビュー画像との間のオーバーラップを特定する。412で、スティッチングモジュール209は、画像と現在のプレビュー画像との間のオーバーラップが所定のオーバーラップ閾値を満足するかどうかを判定する。例えば、所定のオーバーラップ閾値は60%に設定され得る。414で、ユーザインターフェイスモジュール211は、所定のオーバーラップ閾値を満足するオーバーラップを生じるよう捕捉デバイス247の動きを誘導するためのフィードバックをディスプレイ上に提供するように、ユーザインターフェイスを更新する。416で、スティッチングモジュール209は、ヨー計算モジュール213のような他のモジュールとともに、捕捉デバイス247が向きの3軸のうちの1つにおいて傾いているかどうかを判定する。例えば、向きの3軸はX軸、Y軸及びZ軸であることができる。418で、ユーザインターフェイスモジュール211は、向きの3軸のうちの1つにおける捕捉デバイス247の傾きを修正するためのフィードバックをディスプレイ上に提供するように、ユーザインターフェイスを更新する。
420で、スティッチングモジュール209は、捕捉デバイス247を用いて、関心のある対象の部分の次の画像を捕捉する。422で、ユーザインターフェイスモジュール211は、捕捉された画像の記憶を示すようユーザインターフェイスを更新し、記憶された画像を基準画像として使用する。424で、スティッチングモジュール209は、更なるプレビュー画像が受信又はサンプリングされているかどうかを判定する。更なるプレビュー画像が受信又はサンプリングされていない場合には、ステップ426で、スティッチングモジュール209は、単一の直線状のパノラマ画像を生成するよう、関心のある対象の部分の画像を送信する。更なる画像が受信又はサンプリングされている場合には、スティッチングモジュール209はステップ404からプロセスを繰り返す。
図5A乃至5Bは、単一の直線状のパノラマ画像のための一連の画像を捕捉する方法の更なる他の実施形態を説明するフロー図500を示す。502で、スティッチングモジュール209は、関心のある対象の部分の画像を捕捉デバイス247から受け取る。例えば、画像は、棚、リージョン、アートワーク、ランドマーク、眺めの良い場所、アウタースペース、などの画像であることができる。504で、スティッチングモジュール209は画像の特徴を特定する。506で、ユーザインターフェイスモジュール211は、関心のある対象の現在のプレビュー画像を含むユーザインターフェイスを、捕捉デバイス247のディスプレイ上に提示する。508で、スティッチングモジュール209は、画像の特徴を、捕捉デバイス247のディスプレイ上の関心のある対象の現在のプレビュー画像と動的に比較する。510で、スティッチングモジュール209は、動的な比較に基づき、関心のある対象に沿った捕捉デバイス247の動きの方向を特定する。512で、スティッチングモジュール209は、動きの方向において画像と現在のプレビュー画像との間にオーバーラップがあるかどうかを判定する。例えば、動きの方向は、北、南、東、又は西方向にあることができる。
514で、ユーザインターフェイスモジュール211は、第1の視覚的にはっきりと識別できるインジケータを捕捉デバイス247のディスプレイ上で生成する。ディスプレイ上での第1の視覚的に識別可能なインジケータの位置は、オーバーラップの範囲を表す。例えば、ユーザインターフェイスに示される視覚的に識別可能なインジケータは、制限なしに、視覚的に識別可能な形状、サイズ、色、位置、向き、陰影、など、又はそれらの組み合わせを含んでよい。516で、スティッチングモジュール209は、ディスプレイの中心にあるターゲット領域内に第1の視覚的に識別可能なインジケータを位置付けるよう、捕捉デバイス247の動きを受け取る。ターゲット領域内での第1の視覚的に識別可能なインジケータの位置は、オーバーラップが所定のオーバーラップ閾値を満足することを示す。例えば、第1の視覚的に識別可能なインジケータは、ユーザインターフェイス上のボール、又は同心円の一部分を覆うアイリッドであることができる。518で、スティッチングモジュール209は、ヨー計算モジュール213のような他のモジュールとともに、捕捉デバイス247が向きの3軸のうちの1つにおいて傾いているかどうかを判定する。520で、ユーザインターフェイスモジュール211は、3軸のうちの1つにおける傾きについて、捕捉デバイス247のディスプレイ上で、第2の視覚的にはっきりと識別できるインジケータを生成する。ディスプレイ上での第2の視覚的に識別可能なインジケータの位置は、捕捉デバイス247の傾きの範囲を表す。一例において、チルトについての第2の視覚的に識別可能なインジケータは、クライアントデバイス115にあるユーザインターフェイスの周囲においてチルト・フィードバックを示す、同心円の一部分を覆うアイリッド又はロール傾斜インジケータであることができる。
522で、スティッチングモジュール209は、第2の視覚的に識別可能なインジケータに、消失、フォーマットの変更、又は触覚フィードバックモジュール219からユーザへのキューの供給により、チルトが存在しないことを示させるよう、捕捉デバイス247の動きを受け取る。524で、スティッチングモジュール209は、捕捉デバイス247を用いて、関心のある対象の部分の次の画像を捕捉し、捕捉/記憶された画像を新しい基準画像として使用する。526で、ユーザインターフェイスモジュール211は、捕捉された画像の記憶を示すようユーザインターフェイスを更新する。528で、スティッチングモジュール209は、更なるプレビュー画像が受信又はサンプリングされているかどうかを判定する。更なるプレビュー画像が受信又はサンプリングされていない場合には、ステップ530で、スティッチングモジュール209は、単一の直線状のパノラマ画像を生成するよう、関心のある対象の部分の画像を送信する。更なる画像が受信又はサンプリングされている場合には、スティッチングモジュール209はステップ504からプロセスを繰り返す。
図6は、画像からヨー角を計算する方法600の一実施形態を説明するフロー図600を示す。より具体的には、図6の上半分において示されている、画像についてのヨー角を計算する方法602を示す。604で、ヨー計算モジュール213は、関心のある対象の一部分の画像を捕捉デバイス247(例えば、クライアントデバイス115の部分)から受け取る。例えば、画像は、棚、リージョン、アートワーク、ランドマーク、眺めの良い場所、アウタースペース、などの画像であることができる。606で、ヨー計算モジュール213は、受け取られた画像においてライン検出を実施して、元の場面において平行に走っている少なくとも2つのラインを特定する。なお、ラインは、遠近歪みにより画像においては平行でないことがある。608で、ヨー計算モジュール213は、画像において検出されたラインごとにラインパラメータ化を計算する。ラインパラメータ化は、数学的手法及び画像処理方法を含む様々な方法によって行われ得る。一例には、夫々の検出されたラインの開始点及び終了点を特定すること、又はラインごとに点及びこう配を特定することが含まれる。いくつかの任意の実施形態では、ラインパラメータ化は、610で、画像のメタデータにおいて、例えば、画像のエクスチェンジャブル・イメージ・ファイル・フォーマット(EXIF;Exchangeable Image File Format)ヘッダにおいて、埋め込まれてよく、あるいは、ラインパラメータ化は、データストレージ243においてセーブされてよい。612で、ヨー計算モジュール213は、ラインパラメータ化データを用いて、画像のヨー角を計算する。ヨー角は、図23及び24を参照して後述される基本的な三角法を使用することによって、計算されてよい。614で、ヨー計算モジュール213は、次いで、ヨー角及び関連データを、ヨー・ユーザインターフェイスモジュール217又は歪み補正モジュール215のような、更なる処理のための他のモジュールへ供給してよい。いくつかの実施形態において、ヨー計算モジュール213は、プレビュー画像を調整し、ヨー角エラーの一部分を取り除くことが可能であってよい。616で、ヨー計算モジュール213は、ヨー・ユーザインターフェイスモジュール217へデータを供給する。618で、ヨー計算モジュール213は、歪み補正モジュール215へデータを供給する。
図7は、画像を捕捉した際にヨーデータを補正するためのユーザへのインジケータを提供する方法616の実施形態を説明するフロー図を示す。702で、ヨー・ユーザインターフェイスモジュール217は、ヨー計算モジュール213からヨーデータを受け取る。704で、ヨー・ユーザインターフェイスモジュール217は、ヨーデータのインジケータについてのデータを計算する。インジケータは、ユーザインターフェイス上で同心円の一部分を覆うよう構成されたアイリッドインジケータであってよい。それにより、ヨーデータがヨーエラーの増大を示す場合には、アイリッドインジケータによって覆われる同心円の部分は、より大きくなり、ヨーデータがヨーエラーの低減を示す場合には、アイリッドインジケータによって覆われる同心円の部分は、より小さくなる。いくつかの実施形態において、ヨー・ユーザインターフェイスモジュール217は、同心円の一部分に陰影をつけるアイリッドインジケータを構成してよい。ヨー・ユーザインターフェイスモジュール217によって生成されるユーザインターフェイスの例は、図19乃至28を参照して後述される。706で、ヨー・ユーザインターフェイスモジュール217は、ユーザへの提示708のためにアイリッドインジケータをユーザインターフェイスに組み込む。ヨー・ユーザインターフェイスは、ヨーエラーの補正を支援するスタンドアローンのユーザインターフェイスであってよく、あるいは、ヨー・ユーザインターフェイスは、図13及び14で表されているボール・インターフェイスのような他のチルトインジケータを含むようユーザインターフェイスモジュール211に組み込まれてよい。710で、ヨー・ユーザインターフェイスモジュール217は、第2の画像から第2のヨーデータを受ける。712で、ヨー・ユーザインターフェイスモジュール217は、第2のヨーデータが閾値を上回るかどうかを判定してよい。714で、第2のヨーデータが閾値を上回る場合に、触覚フィードバックモジュール219は、出力デバイス249を用いて、ヨーエラーが閾値を上回ることをユーザに警告してよい。出力デバイス249は、例えば、クライアントデバイス115の振動又は聴覚信号を生成することによって、ユーザに警告してよい。
図8は、画像に対して歪み補正を実施する方法618の実施形態を説明するフロー図を示す。802で、歪み補正モジュール215は、ヨー計算モジュール213からヨーデータを受け取り、ヨー・ユーザインターフェイスモジュール217とは無関係に実行され得る。804で、歪み補正モジュール215は、ヨーデータを用いて画像のラインを検出し、検出されたラインの消失点を計算する。ヨーエラーが画像において存在する場合に、平行である元の場面内のラインは、ヨーエラーによって導入される歪みの結果として、画像において非平行であるように見えるので、消失点は、非平行なラインの束を使用することによって計算される。非平行なラインは、ラインが伸ばされる場合に、消失点で交差する。806で、歪み補正モジュール215は、消失点に基づきデスキュー変換を計算する。808で、歪み補正モジュール215は、元の場面の平行なラインを反映し且つ画像がクライアントデバイス115によって捕捉された際に不正確なヨー・チルトによって導入されたヨーエラーの少なくとも一部を取り除く画像を生成するよう、デスキュー変換を用いて画像に対して歪み補正を実施する。
図9に示されるように、図900は、棚903の画像を捕捉する例を表す。ユーザ901は、棚903の画像を捕捉するために、画像認識アプリケーション103を含むクライアントデバイス115を使用してよい。棚903は、製品を保持することができる如何なる棚であってもよく、あるいは、棚は、リージョン、アートワーク、ランドマーク、眺めの良い場所、アウタースペース、などによって置き換えられてよい。ユーザ901がクライアントデバイス115を使用する場合に、様々なチルトエラーは、クライアントデバイス115のユーザによる位置決めに基づき導入され得る。
いくつかの実施形態において、画像認識アプリケーション103は、クライアントデバイス115のユーザから、関心のある対象の画像を捕捉するためのリクエストを受ける。例えば、画像は、棚、リージョン、アートワーク、ランドマーク、眺めの良い場所、アウタースペース、などの画像であることができる。クライアントデバイス115は画像を捕捉し、それを画像認識アプリケーション103へ供給する。画像認識アプリケーション103は、ユーザインターフェイスモジュール211に、クライアントデバイス115を用いて画像を捕捉するためのユーザインターフェイスを生成するよう指示する。
図10に示されるように、図1000は、クライアントデバイス115の位置決めに応じて捕捉された画像に導入され得る3つの異なったチルトを表す。クライアントデバイス115は、ヨーエラーを画像に導入するようにY軸1001に関して回転されてよい。クライアントデバイス115はまた、ピッチエラーを画像に導入するようX軸1003に関して回転されてよい。最後に、クライアントデバイス115は、ロールエラーを画像に導入するようZ軸1005に関して回転されてよい。
図11は、クライアントデバイス115の例となる表示1100と、クライアントデバイス115によって捕捉された画像に導入され得る3つの異なったチルトとを示す。クライアントデバイス115は、オリエンテーションセンサ245を用いてx方向1103及びz方向1105においてチルトを検出することが可能なオリエンテーションセンサ245(図示せず。)を含んでよい。なお、いくつかの実施形態において、オリエンテーションセンサ245がクライアントデバイス115の内蔵加速度計である場合に、オリエンテーションセンサ245(例えば、内蔵加速度計)は、それがクライアントデバイス115のヨー・チルトの位置ごとの実際の位置にかかわらず同じ角度を返すので、y方向1101においてチルトを検出することが不可能であり得る。
[ユーザインターフェイス]
図12のグラフィカル描写1200における例となるユーザインターフェイスは、画像捕捉のためにクライアントデバイス115を棚とアライメントするためのコーナーマーカ1202によって画定されるフレーム1201と、表示の真ん中に棚の中心を置くための円のターゲットアウトライン1203と、フレーム1201の周囲にあるチルト基準矢印1211a及び1211bを伴うジャイロ水平ライン1217と、フレーム1201の周囲にあるチルト基準矢印1209a及び1209bを伴うジャイロ垂直ライン1215と、大きい方の同心円1204の周囲にあるチルト基準矢印1213a及び1213bとを含む。チルト基準矢印1209、1211及び1213は、画像を捕捉する前に、棚のプレビュー画像1207が中心を外れている及び/又は傾いているかどうかを示すために使用されてよい。
図13に示されるように、グラフィカル描写1300は、クライアントデバイス115によって表示されている棚の現在のプレビュー画像の上に現れているゴースト画像上のボール1301及びターゲットアウトライン1303を含むユーザインターフェイスを表す。ユーザの目標は、クライアントデバイス115を動かすことによってユーザインターフェイス上のターゲットアウトライン1303内にボール1301をアライメントし位置付けて、ゴースト画像とのアライメントを達成することである。ユーザインターフェイス1300は、チルト基準矢印1311を伴うジャイロ水平ライン1317及びチルト基準矢印1307を伴うジャイロ垂直ライン1315を含む。ユーザインターフェイスは、チルトが増大するにつれてフレームの部分に陰影をつけるチルトインジケータ1309及び1313を更に含んでよい。
他の例では、図14に示されるように、グラフィカル描写1400は、クライアントデバイス115で表示されている棚ユニットの現在のプレビュー画像1402の上に、より小さい同心円のターゲットアウトライン1412を含むユーザインターフェイスを表す。ユーザインターフェイスは、受け取られたチルト情報に基づき表示されるボール1410を含む。ユーザがクライアントデバイス115を回転させ、プレビュー画像におけるチルトエラーを小さくすると、ボール1410はターゲットアウトライン1412の中に移動して、チルトが小さくなりつつあることをユーザに知らせる。ユーザインターフェイスは、現在のプレビュー画像1402の下に、捕捉された画像のモザイクプレビュー1406を表示する領域1404を更に含む。モザイクプレビュー1406は、棚ユニットの捕捉された画像がそれに加えられることに基づき次第に大きくなってよい。領域1404内に含まれるモザイクプレビュー1406は、クライアントデバイス115の動きの方向に応じて、領域1404の右又は領域1404の左のいずれか一方へ突き出され得る。領域1404におけるモザイクプレビュー1406(目下、空である。)は、クライアントデバイス115が棚ユニットの第1画像を捕捉する場合に取って代わられ得る空のサムネイル画像の‘4’と標示されたアウトライン1408を含む。
棚の画像は、認識のために受け取られてよく、複数の関心のあるアイテムを含んでよい。例えば、画像は、小売店内の棚の上にある包装した製品(例えば、コーヒーのパッケージ、朝食用シリアルの箱、ソーダボトル、など)の画像であることができる。包装した製品は、それを棚の上の他のアイテムと区別する、その表面上に印刷されたテキスト及び絵による情報を含んでよい。一例において、クライアントデバイス115のディスプレイは、ユーザがスクリーンをタップすることに応答して、画像が捕捉されたことを示すよう点滅してよい。いくつかの実施形態において、画像認識アプリケーション103は、画像から特徴の組を特定するとともに、夫々の特徴が現れる画像内の点(例えば、1つの識別された特徴の位置)までの相対的位置を特定する。いくつかの実施形態において、クライアントデバイス115は、捕捉された画像及び識別された特徴の組をキャッシュにおいて記憶する。他の実施形態では、クライアントデバイス115は、捕捉された画像を認識サーバ101へ送信する。
一連の画像を用いて直線状のパノラマ画像を生成するために、ユーザは、第1画像の後に後続の画像を捕捉するよう関心のある対象と平行なままでいずれかの方向においてクライアントデバイス115を動かしてよい。例えば、クライアントデバイス115は、連続した他の画像を捕捉するよう棚ユニットと平行なままで北、南、東、又は西方向において動くことができる。いくつかの実施形態において、画像認識アプリケーション103は、一連の画像を捕捉するための画像捕捉のパターンのユーザ選択を受け取る。画像認識アプリケーション103は、画像捕捉の選択されたパターンに基づき、ユーザインターフェイスモジュール211に、一連の画像内の次の画像を如何にして捕捉すべきかに関して、クライアントデバイス115を介してユーザへの誘導を提供するよう指示する。
一実施形態において、画像捕捉の選択されたパターンは、図15に示される蛇行スキャンパターンであってよい。蛇行スキャンパターンにおいて、画像捕捉におけるシーケンスは、上下間又は左から右の間1502若しくは右から左の間1504を行ったり来たりしてよく、一方、クライアントデバイス115は、水平方向(又は垂直方向)において関心のある対象と平行に移動している。画像認識アプリケーション103は、ユーザインターフェイスモジュール211に、蛇行スキャンパターンに従うために、例えば、クライアントデバイスを最初に関心のある対象の下(又は上)に動かし、次いで関心のある対象の右(又は左)へ動かし、次いで関心のある対象の上(又は下)に動かし、次いで関心のある対象の右(又は左)へ動かし、再度関心のある対象の下(又は上)に動かすようユーザを導くユーザインターフェイスをクライアントデバイス115において生成するように、指示してよい。画像認識アプリケーション103は、クライアントデバイス115の夫々の動きの終わりに、関心のある対象の捕捉された画像を受け取る。
他の実施形態では、画像捕捉の選択されたパターンは、ラスタースキャンパターンであってよい。ラスタースキャンパターンは、一度に1つのラインずつ関心のある対象に沿って漸次にクライアントデバイス115を動かすことによって、関心のある対象の画像捕捉をカバーする。画像認識アプリケーション103は、ユーザインターフェイスモジュール211に、ラスタースキャンパターンに従うために、例えば、クライアントデバイス115を、あるラインにおいて関心のある対象の左から右へ(又は右から左へ)動かし、次いでラインの終わりで関心のある対象の下(又は上)に動かし、次のラインにおいて再度関心のある対象の左から右へ(又は右から左へ)動かすようユーザを導くユーザインターフェイスをクライアントデバイス115において生成するように、指示する。画像認識アプリケーション103は、左から右へ(又は右から左へ)のクライアントデバイス115の夫々の動きの終わりに、関心のある対象の捕捉された画像を受け取る。
更なる他の実施形態では、画像捕捉の選択されたパターンは、オーバー・アンド・バックスキャンパターンであってよい。オーバー・アンド・バックスキャンパターンは、クライアントデバイス115を関心のある対象の一部分の上で水平(又は垂直)方向において一方の端部へ動かし、次いで、カバーされなかった関心のある対象の他の部分を捕捉するようクライアントデバイス115を戻すことによって、関心のある対象の画像捕捉をカバーする。画像認識アプリケーション103は、ユーザインターフェイスモジュール211に、オーバー・アンド・バックスキャンパターンに従うために、例えば、クライアントデバイス115を、一方の端に向かって関心のある対象の左から右へ(又は右から左へ)動かし、次いで関心のある対象の下(又は上)に動かし、開始した端に向かって右から左へ(又は左から右へ)戻すようユーザを導くユーザインターフェイスをクライアントデバイス115において生成するように、指示する。画像認識アプリケーション103は、一方の端に向かう左から右へのクライアントデバイス115の夫々の動きの終わりに、及び開始した端に向かう右から左へのクライアントデバイス115の夫々の動きの終わりに、関心のある対象の捕捉された画像を受け取る。
いくつかの実施形態において、スティッチングモジュール209は、画像間で一定量のオーバーラップを伴って一連の捕捉された画像を受け取る。いくつかの実施形態において、画像認識アプリケーション103は、ユーザインターフェイスモジュール211に、前に捕捉された画像と一定量だけ重なり合っている一連の画像内の次の画像を捕捉するようユーザを導くように、指示する。これは、連続して個々に捕捉された画像の夫々を張り合わせることによって直線パノラマを生成するために使用されるスティッチングアルゴリズムによって期待される画像間のオーバーラップの閾量(例えば、60%)であってよい。いくつかの実施形態において、画像のオーバーラップの閾値は、スティッチングアルゴリズムに基づき調整されてよい。例えば、スティッチングアルゴリズムは、スケール不変特徴変換(SIFT;Scale-Invariant Feature Transform)アルゴリズム、ランダム・サンプル・コンセンサス(RANSAC;Random Sample Consensus)アルゴリズム、プログレッシブ・サンプル・コンセンサス(PROSAC;Progressive Sample Consensus)アルゴリズム、RIVRアルゴリズム、などのグループの中の1つ以上であることができる。
いくつかの実施形態において、画像認識アプリケーション103は、関心のある対象を指し示す場合にクライアントデバイス115によって表示される関心のある対象の現在のプレビュー画像を受け取る。現在のプレビュー画像は、クライアントデバイス115内に含まれている画像センサ上にレンズによって形成された画像を連続して直接に投影することによってクライアントデバイス115の表示スクリーン上で生成されたライブプレビューであることができる。いくつかの実施形態において、特徴抽出モジュール203は、クライアントデバイス115が関心のある対象に沿って動く場合に、カメラプレビューにおける画像について画像特徴を特定する。スティッチングモジュール209は、関心のある対象の以前に捕捉された画像の識別された特徴を、クライアントデバイス115によって表示されている現在のプレビュー画像と動的に比較する。スティッチングモジュール209は、前に捕捉された画像において特徴的な特徴を識別し、次いで、それらを現在のプレビュー画像の特徴と効率よく照合して、画像の対の間の対応を即時に定める。例えば、図16において、プロセス1600は、画像特徴の第1の組106がF0であってよく、変数‘i’が最も直前に捕捉された画像Fiを表すために使用されてよく、従って、現在の画像についての画像特徴の組がFi+1によって表されてよいことを示す。いくつかの実施形態において、スティッチングモジュール209は、類似尺度Siを生成するよう以前に捕捉された画像Fiを現在の画像Fi+1と比較するために相似関数を使用する。例えば、式1604は、sim(Fi,Fi+1)=Siと記述されてよい。1606で、値Siは、前に捕捉された画像Fiと現在の画像Fi+1との間の類似の程度を表す。
いくつかの実施形態において、スティッチングモジュール209は、画像捕捉パターンのシーケンスにおける中断の後に、クライアントデバイス115によって表示される関心のある対象の現在のプレビュー画像を、前に捕捉された画像の視点とアライメントする、ユーザからのリクエストを受ける。例えば、ユーザは、関心のある対象の一部分の画像を捕捉した後に中断状態となり、シーンを一定期間そのままにしておかざるを得ないことがある。その場合に、ユーザは、中断後に、関心のある対象の次の画像を捕捉することに戻りたいことがある。いくつかの場合に、ユーザは、画像捕捉プロセスのどこで中断されたかを記憶していないことがある。ある売り場内の棚ユニットの画像を捕捉する例において、最後の画像が中断の前に捕捉された同じ位置で画像捕捉プロセスを再開することが重要である。いくつかの実施形態において、オーバーラップ及び/又は方向についての視覚的に識別可能なインジケータは、ユーザが前に捕捉された画像との良好なオーバーラップの位置から画像捕捉プロセスを再開しない限り、機能することができない。
画像認識アプリケーション103は、ユーザインターフェイスモジュール211に、クライアントデバイス115によって表示されている現在のプレビュー画像の上にゴースト画像として前に捕捉された画像を置くユーザインターフェイスを生成するように指示する。特徴抽出モジュール203は、前に捕捉された画像の特徴を特定しキャッシュにおいて保存して、捕捉プロセスの中断が起こる場合に基準画像として使用する。スティッチングモジュール209は、ユーザインターフェイスモジュール211に、再アライメントのための視覚的に識別なインジケータによりユーザインターフェイスを更新するように指示する。特徴抽出モジュール203は、クライアントデバイス115が関心のある対象に沿って動く場合に、カメラプレビューにおける画像について画像特徴を特定する。ユーザインターフェイス上に示されている再アライメントのための視覚的に識別可能なインジケータは、制限なしに、視覚的に識別可能な形状、サイズ、色、位置、向き、陰影、など、又はそれらの組み合わせを含んでよい。例えば、ユーザは、彼らが最後の画像が前に捕捉されたと認識している関心のある対象に沿った位置へ歩いていき、そして、再アライメントプロセスを開始するために現在のプレビュー画像上へのゴースト画像のオーバーレイを使用してよい。スティッチングモジュール209は、前に捕捉された画像の特徴を、クライアントデバイスのカメラプレビューに表示されている画像フレームに関連した画像特徴と動的に比較することによって、捕捉ユーザインターフェイスをアライメントし直す。スティッチングモジュール209は、ユーザインターフェイス上の再アライメントのための視覚的に識別可能なインジケータの位置をクライアントデバイス115の動きと結合する。スティッチングモジュール209は、関心のある対象の前に捕捉された画像の識別された特徴を、クライアントデバイス115の動きの方向において、現在のプレビュー画像と動的に比較する。
いくつかの実施形態において、スティッチングモジュール209は、画像捕捉パターンのシーケンスにおける中断の後に、クライアントデバイス115によって表示される関心のある対象の現在のプレビュー画像を、前に捕捉された画像の視点とアライメントする、ユーザからのリクエストを受ける。例えば、ユーザは、関心のある対象の一部分の画像を捕捉した後に中断状態となり、シーンを一定期間そのままにしておかざるを得ないことがある。その場合に、ユーザは、中断後に、関心のある対象の次の画像を捕捉することに戻りたいことがある。いくつかの場合に、ユーザは、画像捕捉プロセスのどこで中断されたかを記憶していないことがある。ある売り場内の棚ユニットの画像を捕捉する例において、最後の画像が中断の前に捕捉された同じ位置で画像捕捉プロセスを再開することが重要である。いくつかの実施形態において、オーバーラップ及び/又は方向についての視覚的に識別可能なインジケータは、ユーザが前に捕捉された画像との良好なオーバーラップの位置から画像捕捉プロセスを再開しない限り、機能することができない。
スティッチングモジュール209は、ユーザインターフェイスモジュール211に、クライアントデバイス115によって表示されている現在のプレビュー画像の上にゴースト画像として前に捕捉された画像を置くユーザインターフェイスを生成するように指示する。スティッチングモジュール209は、前に捕捉された画像の特徴を特定しキャッシュにおいて保存して、捕捉プロセスの中断が起こる場合に基準画像として使用する。スティッチングモジュール209は、ユーザインターフェイスモジュール211に、再アライメントのための視覚的に識別なインジケータによりユーザインターフェイスを更新するように指示する。スティッチングモジュール209は、クライアントデバイス115が関心のある対象に沿って動く場合に、カメラプレビューにおける画像について画像特徴を特定する。ユーザインターフェイス上に示されている再アライメントのための視覚的に識別可能なインジケータは、制限なしに、視覚的に識別可能な形状、サイズ、色、位置、向き、陰影、など、又はそれらの組み合わせを含んでよい。例えば、ユーザは、彼らが最後の画像が前に捕捉されたと認識している関心のある対象に沿った位置へ歩いていき、そして、再アライメントプロセスを開始するために現在のプレビュー画像上へのゴースト画像のオーバーレイを使用してよい。スティッチングモジュール209は、前に捕捉された画像の特徴を、クライアントデバイスのカメラプレビューに表示されている画像フレームに関連した画像特徴と動的に比較することによって、捕捉ユーザインターフェイスをアライメントし直す。スティッチングモジュール209は、ユーザインターフェイス上の再アライメントのための視覚的に識別可能なインジケータの位置をクライアントデバイス115の動きと結合する。スティッチングモジュール209は、関心のある対象の前に捕捉された画像の識別された特徴を、クライアントデバイス115の動きの方向における現在のプレビュー画像と動的に比較する。例えば、前に捕捉された画像についての画像特徴の組は、F0と表されてよい。プレビュー画像フレームについて特定された画像特徴の組は、Fiによって表されてよい。クライアントデバイス115が、前に捕捉された画像と再アライメントするよう、関心のある対象に沿って動く場合に、スティッチングモジュール209は、夫々のプレビュー画像フレームについての画像特徴を生成する。Fiにおける変数‘i’が5に等しい場合に(すなわち、5つのプレビュー画像特徴は、前に捕捉された画像を数に入れずに捕捉されており、第5のプレビュー画像フレームはF5である。)、スティッチングエンジンは、相似関数を用いて、前に捕捉された画像F0を現在のプレビュー画像F5と比較し、類似尺度S5を生成する。例えば、相似関数はsim(F0,F5)=S5と表され得る。この値S5は、2つの画像がどの程度互いに類似しているかを表し、ユーザが前に捕捉された画像と再アライメントするために関心のある対象に沿ってどれくらい移動すべきかを示す。類似尺度S5は、画像特徴セットF5に先行する最後の画像特徴セットF4とではなく、基準となる前に捕捉された画像F0との比較を示す。スティッチングモジュール209は、次いで、移動の方向における動的な比較を、ユーザインターフェイスにおける視覚的に識別可能なインジケータの位置の変更へと転じて、それにより、前に捕捉された画像との適切な再アライメントを達成するために如何にしてクライアントデバイス115を動かすべきかに関するフィードバックをユーザに提供する。いくつかの実施形態において、スティッチングモジュール209は、再アライメントが成功したのとユーザインターフェイスモジュール211からの確認を受け取る。スティッチングモジュール209は、次いで、ユーザインターフェイスモジュール211に、一連の画像における次の画像を如何にして捕捉すべきかに関してユーザを導くユーザインターフェイスへ戻るように指示する。
図17の例で示されるように、グラフィカル描写1700は、再アライメントのための視覚的に識別可能なインジケータを生成する再アライメントプロセスの実施形態を表す。図17において、グラフィカル描写1700は、ユーザがクライアントデバイス115を動かすことに基づき変化する画像フレーム(F1乃至F4)についてのカメラプレビューフレーム1704を含む。グラフィカル描写1700は、夫々のプレビュー画像フレーム1704の特徴と前に捕捉された画像1702の特徴との間で計算される類似尺度関数1706を更に含む。前に捕捉された画像についての画像特徴の組は、F0と表されてよい。前の画像特徴について決定された画像特徴の組は、Fiと表されてよい。クライアントデバイス115が、前に捕捉された画像と再アライメントするよう、関心のある対象に沿って動く場合に、スティッチングモジュール209は、夫々のプレビュー画像フレームについての画像特徴を生成する。Fiにおける変数‘i’が5に等しい場合に(すなわち、5つのプレビュー画像特徴は、前に捕捉された画像を数に入れずに捕捉されており、第5のプレビュー画像フレームはF5である。)、スティッチングエンジンは、相似関数を用いて、前に捕捉された画像F0を現在のプレビュー画像F5と比較し、類似尺度S5を生成する。例えば、相似関数はsim(F0,F5)=S5と表され得る。この値S5は、2つの画像がどの程度互いに類似しているかを表し、ユーザが前に捕捉された画像と再アライメントするために関心のある対象に沿ってどれくらい移動すべきかを示す。類似尺度S5は、画像特徴セットF5に先行する最後の画像特徴セットF4とではなく、基準となる前に捕捉された画像F0との比較を示す。ユーザガイダンスモジュール207は、次いで、移動の方向における動的な比較を、ユーザインターフェイスにおける視覚的に識別可能なインジケータの位置の変更へと転じて、それにより、前に捕捉された画像との適切な再アライメントを達成するために如何にしてクライアントデバイス115を動かすべきかに関するフィードバックをユーザに提供する。いくつかの実施形態において、スティッチングモジュール209は、再アライメントが成功したのとユーザインターフェイスモジュール211からの確認を受け取る。画像認識アプリケーション103は、次いで、ユーザインターフェイスモジュール211に、一連の画像における次の画像を如何にして捕捉すべきかに関してユーザを導くユーザインターフェイスへ戻るように指示する。いくつかの実施形態において、スティッチングモジュール209は、クライアントデバイス115でユーザインターフェイスを介してユーザにガイダンス及び/又はフィードバックを提供するために、現在のプレビュー画像と前に捕捉された画像との間の動的な特徴比較とともに、パラメータとして画像オーバーラップ閾値を使用する。例えば、スティッチングモジュール209は、類似値‘V’を0.6に設定するために画像オーバーラップ閾値を使用する。いくつかの実施形態において、スティッチングモジュール209は、ユーザが、前の画像を捕捉した後に、関心のある対象と平行へ方向の1つ(例えば、北、南、東又は西)においてクライアントデバイス115を動かす場合に、クライアントデバイス115の動きを含むデータを受け取る。スティッチングモジュール209は、関心のある対象の前に捕捉された画像と、クライアントデバイス115によって表示されている現在のプレビュー画像との間の動的な特徴比較に基づき、クライアントデバイス115の動きの方向を特定する。スティッチングモジュール209は、クライアントデバイス115の動きの方向において前に捕捉され画像と現在のプレビュー画像との間にオーバーラップが存在するかどうかを判定する。スティッチングモジュール209は、ユーザインターフェイスモジュール211に、クライアントデバイス115の動きの方向における特定された方向に応答して、ユーザインターフェイスでのオーバーラップについての視覚的に識別可能なインジケータを生成するように、指示する。ユーザインターフェイス上に示される、オーバーラップについての視覚的に識別可能なインジケータは、制限なしに、視覚的に識別可能な形状、サイズ、色、位置、向き、陰影、など、又はそれらの組み合わせを含んでよい。
スティッチングモジュール209は、ユーザインターフェイス上のオーバーラップについての視覚的に識別可能なインジケータの位置を、クライアントデバイス115の動きの方向と結合する。スティッチングモジュール209は、関心のある対象の前に捕捉された画像の識別された特徴を、クライアントデバイス115の動きの方向において、現在のプレビュー画像と動的に比較し続ける。スティッチングモジュール209は、動きの方向における動的な比較を、ユーザインターフェイス上の視覚的に識別可能なインジケータの位置を変えることに転じることで、所定のオーバーラップ閾値を満足する最適なオーバーラップを達成するために如何にしてクライアントデバイス115を動かすべきかに関するフィードバックをユーザに提供する。例えば、前に捕捉された画像と現在のプレビュー画像との間のオーバーラップが、動きの方向における所定の画像オーバーラップ閾値(すなわち、類似値‘V’=60%)を満足する場合に、オーバーラップについての視覚的に識別可能なインジケータの位置は、そのような条件が満足されたことを示すようユーザインターフェイス上で変化する。オーバーラップについての視覚的に識別可能なインジケータは、例えば、円、四角、又は多角形のような幾何形状の境界領域内に移動して、条件が最適的なオーバーラップについて満足されていることを表す。いくつかの実施形態において、スティッチングモジュール209は許容値‘T’を使用する。許容値‘T’は、類似値‘V’ととともに、オーバーラップについての視覚的に識別可能なインジケータが範囲内、例えば、幾何形状の中にある場合を計算するために使用されてよい。いくつかの実施形態において、スティッチングモジュール209は、許容値‘T’を用いて、画像が捕捉され得る前にオーバーラップについての視覚的に識別可能なインジケータのどの程度が幾何形状の中にある必要があるのかに関して少しの不明りょうさを許容する。いくつかの実施形態において、スティッチングモジュール209は、ユーザインターフェイスモジュール211に、画像オーバーラップ閾値が満足されるまで、前に捕捉された画像と現在のプレビュー画像との間で起こるオーバーラップの範囲を示すようユーザインターフェイス上で進捗ステータスバーを生成するように、指示する。他の実施形態では、スティッチングモジュール209は、オーバーラップが画像オーバーラップ閾値を満足することに応答して画像を捕捉するようクライアントデバイス115へ捕捉コマンドを送る。スティッチングモジュール209は、いつ画像を捕捉すべきかを決定するために、相似関数とともに距離測度関数を使用する。距離測度関数は、画像F0(すなわち、S0)から画像Fi(すなわち、Si)までの全ての類似尺度‘S’の和を表し、dist(Si)と表されてよい。距離測度関数は、2つの画像F0及びFiが互いにどれくらい近いかを決定する。距離測度関数は、次の式(V−T)<dist(Si)<(V+T)が満足されるように類似尺度Siが類似値‘V’の許容値‘T’内にあるかどうか判定する。満足される場合には、スティッチングモジュール209は、画像を捕捉するようクライアントデバイス115へ捕捉コマンドを送る。距離測度関数dist(Si)が、許容値‘T’内にあるよう近づくにつれて、距離測度関数dist(Si)は、オーバーラップについての視覚的に識別可能なインジケータが幾何形状の境界領域内に収まるよう幾何形状により近づくことを表すために使用され得る値を生成するために使用され得る。例えば、これは、オーバーラップについての視覚的に識別可能なインジケータがクライアントデバイス115のユーザインターフェイス上でますます透明になることに形を変えてよい。
いくつかの実施形態において、画像認識アプリケーション103は、画像間でほとんどチルトが起こることなしに、関心のある対象の第1の捕捉された画像の後に、次の捕捉された画像を受け取る。図18において、画像認識アプリケーション103は、ユーザインターフェイスモジュール211に、張り合わされた画像1810及び個々の画像を示すためのボタン1803をユーザに提示するユーザインターフェイス1800を生成するように指示する。ほとんどチルトなしで重なり合っている画像は、高解像度の直線状のパノラマ画像を生成するために、スティッチングアルゴリズムによって期待されてよい。
いくつかの実施形態において、画像認識アプリケーション103は、向きの3軸のいずれかにおけるクライアントデバイス115の傾きを含むジャイロデータを(例えば、オリエンテーションセンサ245から)受け取る。例えば、X軸における回転の角度はピッチパラメータによって定義され、Z軸における回転の角度はロールパラメータによって定義される。ジャイロデータは、クライアントデバイス115内に含まれるジャイロセンサのようなオリエンテーションセンサ245によって生成され得る。ジャイロセンサは、X軸及びZ軸に沿った回転の角度を測定してよい。画像認識アプリケーション103は、X軸及びZ軸についてはジャイロデータに基づき、Y軸についてはヨー計算モジュール213を用いて計算上、関心のある対象を指し示したときにクライアントデバイス115が向きの軸の1つにおいて傾いているかどうかを判定する。ユーザインターフェイスモジュール211及びヨー・ユーザインターフェイスモジュール217は、軸の1つ以上におけるクライアントデバイス115の傾きに応答して、クライアントデバイス115のユーザインターフェイス上でチルトについての視覚的に識別可能なインジケータを生成する。ユーザインターフェイス上でのチルトについての視覚的に識別可能なインジケータの位置は、3軸のいずれかにおいてクライアントデバイス115と関連するチルトが存在する場合にフィードバックを通じて示すことができるように、クライアントデバイス115の動きと結合されてよい。
図19に示されるように、グラフィカル描写1900は、3つの軸の夫々に沿ったチルトエラーを夫々表示する3つの異なったユーザインターフェイス1907、1909及び1911を集合的に表す。X軸に沿ったピッチエラー1901は、大きい方の同心円1906の中に存在する水平アイリッドインジケータ1908として、ユーザインターフェイス1907において示されてよい。ピッチエラー1901が増大するにつれて、大きい方の同心円1906のより広い部分が、水平アイリッドインジケータ1908によって覆われる。ピッチエラー1901が低減するにつれて、水平アイリッドインジケータ1908によって覆われる大きい方の同心円1906の部分は、より小さくなる。Y軸に沿ったヨーエラー1903は、小さい方の同心円1912の中に存在する垂直アイリッドインジケータ1910として、ユーザインターフェイス1909において示されてよい。ヨーエラー1903が増大するにつれて、小さい方の同心円1912のより広い部分が、垂直アイリッドインジケータ1910によって覆われる。ヨーエラー1903が低減するにつれて、垂直アイリッドインジケータ1910によって覆われる小さい方の同心円1912の部分は、より小さくなる。Z軸に沿ったロールエラー1905は、大きい方の同心円1916の外にあるボールインジケータ1913、及び矢印1915として、ユーザインターフェイス1911において示されてよい。ロールエラー1905が増大するにつれて、ボールインジケータ1913は、大きい方の同心円1916の外側に沿って動き、矢印1915は、ボールインジケータ1913を追跡し続ける。ロールエラー1905が低減するにつれて、ボールインジケータ1913は、大きい方の同心円1916の頂部の方へと大きい方の同心円1916の外側に沿って動き、矢印1915は、ボールインジケータ1913を追跡し続ける。これらの異なったユーザインターフェイスの3つ全てが、ユーザインターフェイスにおいて別々に、あるいは、同じユーザインターフェイスにおいて一緒に種々の組み合わせにおいて、提示されてよい。更には、異なるインターフェイス・コンポーネントが、ヨー、ピッチ及びロールのいずれかを示すために代替的に使用されてよいことが理解されるべきである。
図20の例で示されるように、グラフィカル描写2000は、様々な程度のヨーエラーをクライアントデバイス115が如何にして導入するのかを表す。製品棚の画像は、画像認識アプリケーション103によって受け取られる。第1の画像2001、第2の画像2003、第3の画像2005及び第4の画像2007は、チルトエラーの程度が異なっており、全てが画像認識アプリケーション103によって受け取られる。画像2001、2003、2005及び20007が撮影し直されないならば、スティッチングモジュール209が第1の画像2001、第2の画像2003、第3の画像2005及び第4の画像2007を高解像度の直線状のパノラマ画像へとつなぎ合わせる場合に、結果として得られる張り合わせ画像には様々な程度の歪みが導入される。オリエンテーションセンサ245、クライアントデバイス115にある内蔵加速度計又は他のセンサの形をとってよく、ピッチ及びロールのエラーを検出することができ、オリエンテーションセンサ245の出力は、画像がユーザインターフェイスモジュール211で提示される前に、ピッチ及びロールのエラーを補正するために使用され得る。
図21の例で示されるように、グラフィカル描写2100は、ライン検出を実施する方法を表す。ヨー計算モジュール213は、棚903の画像を解析して、ライン2101のサブセットを検出する。ヨー計算モジュール213は、少なくとも2つの検出されたラインを必要とする。この例では、上ライン2103及び下ライン2107があれば十分であり、中央のライン2105は、検出されるものの、ヨー計算には不要である。ライン2101は、如何なる方法によっても検出されてよく、方法の一例はハフ(Hough)変換である。画像において、上ライン2103及び下ライン2107は、たとえ元の場面において2つのラインが平行であるとしても、ヨーエラーによる歪みのために非平行なラインである。ヨー計算モジュール213において、点A2109でのライン2103及び2107の間の高さが検出され、点B2111でのライン2103及び2107の間の高さが特定される。ライン2103及び2107は、夫々のラインの開始点及び終了点を特定することと、又は夫々のラインについての点及びこう配の特定によって、パラメータ化されてよい。これより更に図22を参照すると、ライン2103、2105及び2107の束は、消失点2201を特定するよう、画像を越えて延伸されて示されている。消失点2201は、消失点2201に基づきデスキュー変換を計算することによる画像の歪み補正のために歪み補正モジュール215へ送られてよい。デスキュー変換によれば、歪み補正モジュール215は、デスキュー変換により画像の歪み補正を実施するために画像処理を使用してよい。代替の実施形態では、消失点2201は、他の目的のためにデータストレージ243にセーブされてよい。
図23の例で示されるように、グラフィカル描写2300は、ライン検出及びパラメータ化が計算された後に距離を計算する図を表す。クライアントデバイス115で、棚903の画像が撮影される。レンズ面2301は、レンズの方向に基づき特定され、点A及び点Bは、図22を参照して上述されたライン検出及びパラメータ化を用いて特定される。クライアントデバイス115の地点Cは、CとAとの間の長さLCA2315を特定するために使用され得る。クライアントデバイス(地点C)は、点Cと点Bとの間の長さLCB2317を特定するために使用され得る。点D及び点Eは、各々の長さLDA2303及びLEB2305を有する。長さLDA2303及びLEB2305は、図21の点A及び点Bでの高さに反比例する。相対的長さLCA2315及びLCB2317は、LDA2303及びLEB2305と同じである。LCA2315の値は、LCB2317を1に正規化することによって(LCB=1)、特定され得る。次いで、LCA2315は、図21の点Bの高さで点Aの高さを割ったものに等しい(LCA=HB/HA)。
図24の方法で示されるように、グラフィカル描写2400は、ヨー角を決定する一実施形態を表す。点Cにあるクライアントデバイス115から点A及び点Bまでの長さは、図23を参照して上述されたように特定された。それらの特定された長さによれば、長さLABが決定されてよい。角度A(θA)2407は、棚903と、点Cから点Aの間のラインとの間の角度である。角度B(θB)2409は、棚903と、点Cから点Bの間のラインとの間の角度である。角度D(θD)2401は、棚903から点Cへと延在する垂線2411と、点Cから点Aまでのラインとの間の角度である。視野角(θFOV)2403は、点Cから点Aまでのラインと、点Cから点Bまでのラインとの間の角度である。ヨー角(θyaw)は、垂線2411と、点Cから、点Aから点Bの間の中点へと延在する中点ライン2413との間の角度である。三角法を使用することによって、ヨー角(θyaw)の値は決定されてよい。余弦の法則によって、点Aから点Bまでの長さ(LAB)は、式:LAB=sqrt[LCA 2+LCB 2+2LCALCBcosθFOV]において示されるように、長さLCA2315の二乗と、長さLCB2317の二乗と、2、LCA2315、LCB2317及び視野角(θFOV)2403の余弦を掛け合わせたものとを足し合わせて得られたものの平方根に等しい。正弦の法則によって、式:sinθA/LCB=sinθFOV/LABにおいて示されるように、クライアントデバイス115から点Bまでの長さ(LCB)によって角度A(θA)2047の正弦を割ったものは、点Aから点Bまでの距離(LAB)によって視野角(θFOV)2403の正弦を割ったものに等しい。その式を操作することで、式θA=arcsin[(LCB/LAB)sinθFOV]が得られる。それらの計算及び代入を行った後、角度D(θD)2401は、式:θD=(90°−θA)において示されるように、90度から角度A(θA)2407を減じたものに等しい。従って、ヨー角(θyaw)2405は、式:θyaw=θD−(θFOV/2.0)において示されるように、角度D(θD)2401から、視野角(θFOV)2403を2で割ったものを減じて得られる結果に等しくなり得る。図24は、ヨー角を決定する数式の一例となる実施形態を表す。明らかなように、他の三角関数及び数学的手法が、ヨー角を決定するための他の実施形態で使用されてよい。
図25A乃至Dの例で示されるように、グラフィカル描写は、ヨー補正のための、例となるユーザインターフェイスの実施形態を表す。図25Aにおいて、グラフィカル描写は、ヨーエラー・フィードバックがないユーザインターフェイス2500を表す。ユーザインターフェイス2500は、ヨーが存在する場合に垂直アイリッドインジケータが現れ得る小さい方の同心円2501を表示する。小さい方の同心円2501は垂直アイリッドインジケータデータ2503を表示しないので、ユーザインターフェイス2500ではヨーが検出されていない。
図25Bにおいて、ユーザインターフェイス2505は、小さい方の同心円2501の中に、クライアントデバイス115がY軸上で中心よりわずかに左方向に角度をつけられていることをユーザに示す垂直アイリッドインジケータ2507によって覆われた小さい部分を示すことによって、小さなヨーエラーのフィードバックを表す。ユーザが、クライアントデバイス115をY軸に沿って中心に戻すことによって、このヨーエラーを補正すると、垂直アイリッドインジケータ2507は減り、ユーザインターフェイスは図25Aに示される状態に戻る。いくつかの実施形態において、陰影は、図25B乃至25Dに表されるように右から左ではなく、左から右へ増大してよい点が理解されるべきである。更には、色、クロスハッチング、などのような、陰影以外の他の視覚的なインジケータが、ヨーエラーの量を示すために垂直アイリッドインジケータ2507において使用されてよい。
図25Cにおいて、ユーザインターフェイス2509は、小さい方の同心円2501の中に、クライアントデバイス115がY軸上で中心より左方向に角度をつけられていることをユーザに示す垂直アイリッドインジケータ2511によって覆われた中程度の部分を示すことによって、中程度のヨーエラーのフィードバックを示す。ユーザが、クライアントデバイス115をY軸に沿って中心に戻すことによって、このヨーエラーを補正すると、垂直アイリッドインジケータ2511は減り、ユーザインターフェイスは図25Aに示される状態に戻る。
図25Dにおいて、ユーザインターフェイス2513は、小さい方の同心円2501の中に、クライアントデバイス115がY軸上で中心より左方向に大幅に角度をつけられていることをユーザに示す垂直アイリッドインジケータ2515によって覆われた大きい部分を示すことによって、大きなヨーエラーのフィードバックを表す。ユーザが、クライアントデバイス115をY軸に沿って中心に戻すことによって、このヨーエラーを補正すると、垂直アイリッドインジケータ2515は減り、ユーザインターフェイスは図25Aに示される状態に戻る。垂直アイリッドインジケータ2515は、左又は右のいずれか一方の方向において、計算されたヨー角に基づき、小さい方の同心円2501の如何なる部分も覆ってよく、図25A乃至Dにおいて論じられている垂直アイリッドインジケータの3つの例に制限されない。
図26A乃至26Eの例で示されるように、グラフィカル描写は、画像をプレビューし、プレビューされた画像が前の画像と張り合わされる前に、そのプレビューされた画像におけるヨーエラーを表示する実施形態を表す。グラフィカル描写において、背景は、生成されるパノラマ画像における前の画像の例を表すよう張り合わされており、グラフィカルユーザインターフェイス2601は、前面の画像の上にヨーエラーのためのユーザインターフェイスを伴って最前面に現れている。図26Aにおいて、グラフィカル描写2600は、小さい方の同心円2602に垂直アイリッドインジケータ2603が存在していない状態によって示されるように、ヨーエラーが検出されていないユーザインターフェイスを表す。例となるユーザインターフェイスは、クライアントデバイス115のユーザが如何なるヨーエラーもなしで張り合わせに必要な次の画像を正確に捕捉するよう次の画像を並べるのを助けるボールインジケータ2605を更に含む。2604で、y軸が表示されており、その周りをクライアントデバイス115は回転してヨーエラーを生じさせ得る。上述されたように、いくつかの実施形態において、ヨーエラーを示す陰影は、図26B乃至26Eに表されるように右から左ではなく、左から右へ増大してよい点が理解されるべきである。更には、色、クロスハッチング、などのような、陰影以外の他の視覚的なインジケータが、ヨーエラーの量を示すために垂直アイリッドインジケータ2603において使用されてよい。
図26Bにおいて、グラフィカル描写2606は、小さなヨーエラーが検出されたユーザインターフェイスを表す。クライアントデバイス115は、Y軸2604に沿って中心から左方向に角度をつけられており、小さい方の同心円2602の小さい部分を覆う垂直アイリッドインジケータ2609が存在する。ユーザが、Y軸2604の中心に向かって逆方向にクライアントデバイス115を回転させて、ヨーエラーを取り除くと、垂直アイリッドインジケータ2609によって覆われる小さい方の同心円2602の部分は、ヨーエラーが減少していることをユーザに示すように小さくなる。
図26Cにおいて、グラフィカル描写2611は、大きなヨーエラーが検出されたユーザインターフェイスを表す。クライアントデバイス115は、Y軸2604に沿って大幅に中心から左方向に角度をつけられており、小さい方の同心円2602の大きい部分を覆う垂直アイリッドインジケータ2613が存在する。ユーザが、Y軸2604の中心に向かって逆方向にクライアントデバイス115を回転させて、ヨーエラーを取り除くと、垂直アイリッドインジケータ2613によって覆われる小さい方の同心円2602の部分は、ヨーエラーが減少していることをユーザに示すように小さくなる。
図26Dにおいて、グラフィカル描写2615は、小さなヨーエラーが検出されたユーザインターフェイスを表す。クライアントデバイス115は、Y軸2604に沿って中心から右方向に角度をつけられており、小さい方の同心円2602の小さい部分を覆う垂直アイリッドインジケータ2617が存在する。ユーザが、Y軸2604の中心に向かって逆方向にクライアントデバイス115を回転させて、ヨーエラーを取り除くと、垂直アイリッドインジケータ2617によって覆われる小さい方の同心円2602の部分は、ヨーエラーが減少していることをユーザに示すように小さくなる。
図26Eにおいて、グラフィカル描写2619は、大きなヨーエラーが検出されたユーザインターフェイスを表す。クライアントデバイス115は、Y軸2604に沿って大幅に中心から右方向に角度をつけられており、小さい方の同心円2602の大きい部分を覆う垂直アイリッドインジケータ2621が存在する。ユーザが、Y軸2604の中心に向かって逆方向にクライアントデバイス115を回転させて、ヨーエラーを取り除くと、垂直アイリッドインジケータ2621によって覆われる小さい方の同心円2602の部分は、ヨーエラーが減少していることをユーザに示すように小さくなる。
図27の例で示されるように、グラフィカル描写2700は、ユーザへのフィードバックのためにピッチエラーを表示するユーザインターフェイスを表す。ユーザインターフェイスにおいて、大きい方の同心円が存在し、そこに、クライアントデバイス115のユーザにピッチエラーを示すよう、水平アイリッドインジケータが存在してよい。ユーザインターフェイス2701は、水平アイリッドインジケータ2705が存在せず、ユーザに、ピッチエラーが許容レベルを下回っていることを示す。ボールインジケータ2703も存在し、ユーザがパノラマ画像へと張り合わせるための次の画像を撮影するよう誘導する。ユーザインターフェイス2707の第2の例では、クライアントデバイス115がX軸から下に角度をつけられている場合に、少量のピッチエラーが検出され、大きい方の同心円の小さい部分が、ピッチエラーが存在することをクライアントデバイス115のユーザに示すよう水平アイリッドインジケータ2709によって覆われている。ユーザがZ軸から上に角度をつけてクライアントデバイスを傾けて、ピッチエラーを低減するにつれて、水平アイリッドインジケータは、覆われている大きい方の同心円の部分を減じてよい。ユーザインターフェイス2711の第3の例では、クライアントデバイス115がX軸から下に角度をつけられている場合に、多量のピッチエラーが検出され、大きい方の同心円の大きい部分が、ピッチエラーが存在することをクライアントデバイス115のユーザに示すよう水平アイリッドインジケータ2713によって覆われている。ユーザがZ軸から上に角度をつけてクライアントデバイスを傾けて、ピッチエラーを低減するにつれて、水平アイリッドインジケータは、覆われている大きい方の同心円の部分を減じてよい。ピッチエラーが逸脱するにつれて、画像の直角度は低減し、画像の部分はピッチエラーに基づき歪められる。ピッチエラーが低減されない場合には、それらの歪んだ画像は、張り合わされる場合に、歪んだパノラマ画像を生じさせる。水平アイリッドインジケータ2709は、X軸に沿って上又は下のいずれかの方向において、ピッチ角に基づき、大きい方の同心円の如何なる部分も覆ってよく、図27で論じられている水平アイリッドインジケータ2709の例に制限されない。
図28において、グラフィカル描写2800は、ヨー、ピッチ及びロールインジケータのためのインジケータを含み得る、例となるユーザインターフェイスを表す。垂直アイリッドインジケータ2801は、ヨーエラーがプレビュー画像において検出されていることをユーザに示すよう、小さい方の同心円2807の中に存在してよい。ユーザがヨーエラーを低減するにつれて、垂直アイリッドインジケータ2801が覆う小さい方の同心円2807の部分は、より小さくなり、ユーザがヨーエラーを増大させるにつれて、垂直アイリッドインジケータ2801が覆う小さい方の同心円2807の部分は、より大きくなる。触覚フィードバック(図示せず。)もユーザインターフェイスに組み込まれてよく、それにより、ヨーエラーが検出される場合に、クライアントデバイス115は、検出されたエラーを、トーン、振動、又は他の触覚的なインジケーション手段を通じてユーザに示してよい。代替的に、触覚フィードバックは、ヨーエラーが閾値を下回る場合をユーザに示して、ユーザが画像を捕捉することができることを知らせてよい。水平アイリッドインジケータ2805は、ピッチエラーがプレビュー画像において検出されていることをユーザに示すよう、大きい方の同心円2809の中に存在してよい。ユーザがピッチエラーを低減するにつれて、水平アイリッドインジケータ2805が覆う大きい方の同心円2809の部分は、より小さくなり、ユーザがピッチエラーを増大させるにつれて、水平アイリッドインジケータ2805が覆う大きい方の同心円2809の部分は、より大きくなる。触覚フィードバック(図示せず。)もユーザインターフェイスに組み込まれてよく、それにより、ピッチエラーが検出される場合に、クライアントデバイス115は、検出されたエラーを、トーン、振動、又は他の触覚的なインジケーション手段を通じてユーザに示してよい。代替的に、触覚フィードバックは、ピッチエラーが閾値を下回る場合をユーザに示して、ユーザが画像を捕捉することができることを知らせてよい。ボール及び矢印インジケータ2803は、ロールエラーを示すよう、且つ、次のプレビュー画像を捕捉するためのガイドとして、ユーザインターフェイスにおいて存在してよい。ロールエラーが増大するにつれて、ボール及び矢印インジケータ2803は、ロールエラーの増大を示すよう移動し、ユーザに、大きい方の同心円の頂部の位置へボール及び矢印を動かすよう警告してよい。代替的に、ボールインジケータ2803は、張り合わせのために一連の画像における次の画像を如何にしてアライメントすべきかのインジケータであってよい。ユーザがボールインジケータ2803の方へと小さい方の同心円2807を動かす場合に、張り合わせの次の画像に必要な画像、及びユーザが捕捉する実際の画像は、同じである。いくつかの実施形態において、水平ラインインジケータ2811は、ロールエラーを示すようユーザインターフェイスにおいて存在してよい。ロールエラーがある方向において増大するにつれて、水平ラインインジケータ2811は、小さい方の同心円2807の中心の周りを回転して、ロールエラーが低減されるべきことをユーザに示す。ロールエラーが低減するにつれて、水平ラインインジケータ2811は、図28に示される水平位置の方へと逆に回転する。この例となるユーザインターフェイス2800において、3つ全てのインジケータは、対象デバイスの画面の中心近くに存在する。3つ全てのインジケータを中心近くに組み入れることによって、ユーザは、パノラマ合成のために一連の画像における次の画像を捕捉するようプレビュー画像をアライメントする際に、より容易にフィードバックを受ける。ユーザがインジケータのフィードバックに基づき調整することが可能である場合に3つ全てのインジケータを組み入れることによって、ヨー、ピッチ又はロールエラーが低減された、張り合わせのための、より高い品質の画像が捕捉され、より高い品質のパノラマ画像を得ることができる。
いくつかの実施形態において、スティッチングモジュール209は、単一の直線状のパノラマ画像を張り合わせるために、オーバーラップ情報とともに、捕捉された画像の組を認識サーバ101へ送る。いくつかの実施形態において、スティッチングモジュール209は、捕捉された画像における夫々の個々の画像の抽出された特徴を、認識のための電子データベーステーブルに格納されている特徴と比較する。スティッチングモジュール209は、例えば、個々の画像において製品を識別し、そのような情報を、捕捉された画像の組を単一の直線状のパノラマ画像へと張り合わせるために、オーバーラップ情報と組み合わせて使用する。
カメラ姿勢におけるヨーエラーを推定するアルゴリズム及びヨー・ユーザインターフェイスの提示のためのシステム及び方法が記載されてきた。上記の記載において、説明を目的として、多くの具体的な詳細は、上記の技術の完全な理解を提供するために示されている。なお、当業者に明らかなように、技術はそれらの具体的な詳細によらずとも実施され得る。他の事例では、構造及びデバイスは、記載を不明りょうにしないように、且つ、理解の容易のために、ブロック図形式で示される。例えば、技術は、主としてソフトウェア及び特定のハードウェアを参照して先に一実施形態において記載される。なお、本発明は、データ及びコマンドを受信し、サービスを提供する如何なる周辺機器の部分としても情報を提示することができる如何なるタイプのコンピューティングシステムにも適用される。
「一実施形態」又は「実施形態」との明細書中の言及は、実施形態に関連して記載される特定の機構、構造、又は特性が少なくとも1つの実施形態において含まれることを意味する。明細書中の様々な箇所における「一実施形態において」との文言の出現は、必ずしも全てが同じ実施形態に言及しているわけではない。
上記の詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する動作のアルゴリズム及びシンボル表現に関して与えられている。それらのアルゴリズム的記載及び表現は、いくつかの環境下で、データ処理分野において通常の知識を有する者(すなわち、当業者)に彼らの作業の内容を伝えるよう、当業者によって使用される。アルゴリズムは、ここでは、且つ、一般的に、所望の結果をもたらすステップの自己矛盾のないシーケンスであると考えられている。ステップは、物理量の物理的操作を必要とするものである。通常、必ずしもではないが、それらの量は、記憶され、転送され、結合され、比較され、且つ、別なふうに操作されることが可能な電気的又は磁気的信号の形をとる。主に共通使用を理由として、それらの信号をビット、値、エレメント、シンボル、キャラクタ、ターム、数、又は同様のものと呼ぶことが、時々都合がよいことが知られている。
なお、それら及び同様の語の全ては、適切な物理量に関連すべきであり、それらの量に適用される簡便なラベルにすぎない点が留意されるべきである。以下の議論から明らかなように特段述べられない限りは、本明細書の全体にわたって、「処理する(processing)」、「計算する(computing)」、「計算する(calculating)」、「決定する(determining)」、「表示する(displaying)」、又は同様のもののような語を用いる議論は、コンピュータシステム内のレジスタ及びメモリ内で物理(電子)量として表されているデータを操作して、コンピュータシステムのメモリ若しくはレジスタ又は他のそのような情報ストレージ、送信若しくは表示デバイス内で物理量として同様に表されている他のデータへと変換する、コンピュータシステム又は同様の電子コンピュータデバイスの動作及びプロセスに言及することが理解される。
技術は、ここでは、動作を実施する装置にも関係がある。この装置は、必要とされる目的のために特に構成されてよく、あるいは、それは、コンピュータに記憶されているコンピュータプログラムによって選択的に作動又は再構成される汎用のコンピュータを有してよい。そのようなコンピュータプログラムは、制限なしに、夫々がコンピュータシステムバスへ結合されている、フロッピー(登録商標)ディスク、光ディスク、CD−ROM、及び磁気ディスクを含むあらゆるタイプのディスク、リード・オンリー・メモリ(ROM;read-only memory)、ランダム・アクセス・メモリ(RAM;random access memory)、EPROM、EEPROM、磁気又は光学式カード、不揮発性メモリを備えたUSBキーを含むフラッシュメモリ、あるいは、電子命令を記憶するのに適したあらゆるタイプの媒体のような、コンピュータ可読記憶媒体において記憶されてよい。
いくつかの実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、又はハードウェア及びソフトウェアの両方の要素を含む実施形態の形をとることができる。一実施形態はソフトウェアにおいて実施され、制限なしに、ファームウェア、常駐ソフトウェア、マイクロコード、などを含む。
更には、いくつかの実施形態は、コンピュータ又はあらゆる命令実行システムによって又はそれに関連して使用されるプログラムコードを提供する、コンピュータが使用可能な又はコンピュータが読み出し可能な媒体からアクセス可能なコンピュータプログラム製品の形をとることができる。この記載のために、コンピュータが使用可能な又はコンピュータが読み出し可能な媒体は、命令実行システム、装置、又はデバイスによって又はそれに関連して使用されるプログラムを含み、記憶し、通信し、伝搬し、又は転送することができる如何なる装置であることもできる。
プログラムコードを記憶及び/又は実行するのに適したデータ処理システムは、メモリ要素へ直接に又はシステムバスを通じて間接的に結合されている少なくとも1つのプロセッサを含むことができる。メモリ要素は、プログラムコードの実際の実行中に用いられるローカルメモリと、バルクストレージと、コードが実行中にバルクストレージから取り出されるべき回数を減らすために少なくとも一部のプログラムコードの一時記憶を提供するキャッシュメモリとを含むことができる。
入力/出力又はI/Oデバイス(制限なしに、キーボード、ディスプレイ、ポインティングデバイス、などを含む。)は、直接に、あるいは、介在するI/Oコントローラを通じて、システムへ結合され得る。
ネットワークアダプタは、データ処理システムが、介在する私的な又は公衆のネットワークを通じて他のデータ処理システム又は遠隔のプリンタ若しくは記憶デバイスへ結合されるようになることを可能にするよう、システムへ更に結合されてよい。モデム、ケーブルモデム及びイーサネット(登録商標)カードは、ネットワークアダプタの現在利用可能なタイプのほんのいくつかである。
最後に、ここで与えられているアルゴリズム及び表示は、如何なる特定のコンピュータ又は他の装置にも本質的に関係がない。様々な汎用のシステムは、ここでの教示に従ってプログラムとともに使用されてよく、あるいは、より特殊化された装置を、必要とされる方法ステップを実施するよう構成することが、都合がよいことがある。様々なそれらのシステムの必要とされる構造は、以下の記載から明らかである。加えて、技術は、如何なる特定のプログラミング言語を参照しても記述されない。明らかなように、様々なプログラミング言語が、ここで記載される様々な実施形態の教示を実施するために使用されてよい。
実施形態の前述の記載は、実例及び説明のために与えられてきた。包括的であること、又は明細書をまさに開示されている形態へ制限することは、意図されない。上記の教示を鑑みて、多くの変更及び変形が可能である。実施形態の適用範囲は、この詳細な説明によってではなく、むしろ本願の特許請求の範囲によって、制限されることが意図される。当業者によって理解されるように、例は、その主旨又は本質的な特性から外れることなしに、他の具体的な形態において具現されてよい。同様に、モジュール、ルーチン、機構、属性、メソッドロジ、及び他の態様の特定のネーミング及び区分は、強制的又は有意義ではなく、説明又はその特徴を実施するメカニズムは、種々の名称、区分及び/又は形態を有してよい。更には、当業者に明らかなように、本明細書のモジュール、ルーチン、機構、属性、メソッドロジ及び他の態様は、ソフトウェア、ハードウェア、ファームウェア、又はそれら3つの如何なる組み合わせとしても、実装され得る。また、本明細書のコンポーネント(その例はモジュールである。)がソフトウェアとして実装されようとも、コンポーネントは、スタンドアローンのプログラムとして、より大きいプログラムの部分として、複数の別個のプログラムとして、静的若しくは動的にリンクされたライブラリとして、カーネル・ローダブル・モジュールとして、デバイスドライバとして、及び/又はコンピュータプログラミングの分野において通常の知識を有する者に現在又は将来知られているありとあらゆる他の方法において、実装され得る。加えて、本明細書は、如何なる特定のプログラミング言語にある実施形態にも、あるいは、如何なる特定のオペレーティングシステム若しくは環境にある実施形態にも決して制限されない。然るに、本開示は、以下の特許請求の範囲で示される本明細書の適用範囲の例示であるよう意図され、制限ではない。
[関連出願の相互参照]
本願は、合衆国法典第35巻第119条の下で、2015年9月30日付けで出願された、“Camera Pose Yaw Error Determination and Use in a Yaw User Interface”と題された米国特許仮出願第62/234804号に基づく優先権を主張するものである。なお、先の米国特許出願は、その全文を参照により本願に援用される。