(57)【特許請求の範囲】
【請求項１】
１つ以上のコンピュータデバイスにより、ヨーデータを含む対象の第１プレビュー画像を受けるステップと、
前記１つ以上のコンピュータデバイスにより、前記第１プレビュー画像についてのヨー角を計算し、該ヨー角に基づきヨーインジケータを決定するステップと、
前記１つ以上のコンピュータデバイスにより、前記ヨーインジケータをユーザインターフェイスに加えるステップと、
前記１つ以上のコンピュータデバイスにより、表示デバイスの一部分において前記第１プレビュー画像の上に前記ヨーインジケータを伴った前記ユーザインターフェイスを提示するステップと
を有し、
前記ヨーインジケータは、より大きい同心円内に中心があるより小さい同心円と、該より小さい同心円の中の領域の一部分を覆う垂直アイリッドインジケータとを伴った、前記表示デバイスの中心近くに存在する前記より大きい同心円である、
方法。
【請求項２】
前記ヨー角は、
前記１つ以上のコンピュータデバイスにより、前記第１プレビュー画像においてライン検出を実行し、
前記１つ以上のコンピュータデバイスにより、前記第１プレビュー画像において検出された２つのラインについてのラインパラメータ化を計算し、
前記１つ以上のコンピュータデバイスにより、前記２つのラインについての前記ラインパラメータ化を用いて前記第１プレビュー画像についての前記ヨー角を計算する
ことによって計算される、請求項１に記載の方法。
【請求項３】
前記１つ以上のコンピュータデバイスにより、前記対象の第２プレビュー画像を受けるステップと、
前記１つ以上のコンピュータデバイスにより、前記第２プレビュー画像を用いて、更新されたヨー角を計算するステップと、
前記１つ以上のコンピュータデバイスにより、前記更新されたヨー角に関して前記ヨーインジケータを更新するステップと、
前記１つ以上のコンピュータデバイスにより、前記表示デバイスの前記一部分において前記第２プレビュー画像の上に前記更新されたヨーインジケータを提示するステップと
を更に有する請求項１に記載の方法。
【請求項４】
前記１つ以上のコンピュータデバイスにより、前記第１プレビュー画像についてのピッチ角及びロール角を計算するステップと、
前記１つ以上のコンピュータデバイスにより、前記ピッチ角に基づき水平アイリッドインジケータを決定するステップと、
前記１つ以上のコンピュータデバイスにより、前記ロール角に基づきボールインジケータを決定するステップと、
前記１つ以上のコンピュータデバイスにより、前記表示デバイスにおいて前記より大きい同心円の中の領域の一部分の上に前記水平アイリッドインジケータを提示するステップと、
前記１つ以上のコンピュータデバイスにより、前記表示デバイスにおいて前記より大きい同心円の外側エッジに沿って前記ボールインジケータを提示するステップと
を更に有する請求項１に記載の方法。
【請求項５】
前記垂直アイリッドインジケータを決定することは、前記１つ以上のコンピュータデバイスにより、前記第１プレビュー画像において存在するヨー角の割合に対応するインジケータの陰影部の割合を決定することを含む、
請求項１又は４に記載の方法。
【請求項６】
前記１つ以上のコンピュータデバイスにより、前記ヨー角が予め定義された閾値を満足しないことをユーザに示すステップ
を更に有する請求項１に記載の方法。
【請求項７】
前記ヨー角が予め定義された閾値を満足しないことをユーザに示すステップは、触覚フィードバックを提供することによって行われる、
請求項６に記載の方法。
【請求項８】
プロセッサと、
前記プロセッサによって実行される場合に、該プロセッサに、
ヨーデータを含む対象の第１プレビュー画像を受けさせ、
前記第１プレビュー画像についてのヨー角を計算させ、該ヨー角に基づきヨーインジケータを決定させ、
前記ヨーインジケータをユーザインターフェイスに加えさせ、
表示デバイスの一部分において前記第１プレビュー画像の上に前記ヨーインジケータを伴った前記ユーザインターフェイスを提示させる
命令を記憶しているメモリと
を有し、
前記ヨーインジケータは、より大きい同心円内に中心があるより小さい同心円と、該より小さい同心円の中の領域の一部分を覆う垂直アイリッドインジケータとを伴った、前記表示デバイスの中心近くに存在する前記より大きい同心円である、
システム。
【請求項９】
前記ヨー角を計算する命令は、前記プロセッサに、更に
前記第１プレビュー画像においてライン検出を実行させ、
前記第１プレビュー画像において検出された２つのラインについてのラインパラメータ化を計算させ、
前記２つのラインについての前記ラインパラメータ化を用いて前記第１プレビュー画像についての前記ヨー角を計算させる、
請求項８に記載のシステム。
【請求項１０】
前記命令は、前記プロセッサに、更に、
前記対象の第２プレビュー画像を受けさせ、
前記第２プレビュー画像を用いて、更新されたヨー角を計算させ、
前記更新されたヨー角に関して前記ヨーインジケータを更新させ、
前記表示デバイスの前記一部分において前記第２プレビュー画像の上に前記更新されたヨーインジケータを提示させる、
請求項８に記載のシステム。
【請求項１１】
前記命令は、前記プロセッサに、更に、
前記第１プレビュー画像についてのピッチ角及びロール角を計算させ、
前記ピッチ角に基づき水平アイリッドインジケータを決定させ、
前記ロール角に基づきボールインジケータを決定させ、
前記表示デバイスにおいて前記より大きい同心円の中の領域の一部分の上に前記水平アイリッドインジケータを提示させ、
前記表示デバイスにおいて前記より大きい同心円の外側エッジに沿って前記ボールインジケータを提示させる、
請求項８に記載のシステム。
【請求項１２】
前記命令は、前記プロセッサ、更に、
触覚フィードバックを提供することによって、前記ヨー角が予め定義された閾値を満足しないことをユーザに示させる、
請求項８に記載のシステム。
【請求項１３】
コンピュータ読出可能なプログラムを記憶しているコンピュータで使用可能な媒体であって、
前記コンピュータ読出可能なプログラムは、コンピュータで実行される場合に、該コンピュータに、
ヨーデータを含む対象の第１プレビュー画像を受けさせ、
前記第１プレビュー画像についてのヨー角を計算し、該ヨー角に基づきヨーインジケータを決定させ、
前記ヨーインジケータをユーザインターフェイスに加えさせ、
表示デバイスの一部分において前記第１プレビュー画像の上に前記ヨーインジケータを伴った前記ユーザインターフェイスを提示させ、
前記ヨーインジケータは、より大きい同心円内に中心があるより小さい同心円と、該より小さい同心円の中の領域の一部分を覆う垂直アイリッドインジケータとを伴った、前記表示デバイスの中心近くに存在する前記より大きい同心円である、
コンピュータで使用可能な媒体。
【請求項１４】
前記コンピュータに前記ヨー角を計算させることは、前記コンピュータに、更に、
前記第１プレビュー画像においてライン検出を実行させ、
前記第１プレビュー画像において検出された２つのラインについてのラインパラメータ化を計算させ、
前記２つのラインについての前記ラインパラメータ化を用いて前記第１プレビュー画像についての前記ヨー角を計算させる、
請求項１３に記載のコンピュータで使用可能な媒体。
【請求項１５】
前記コンピュータ読出可能なプログラムは、前記コンピュータで実行される場合に、該コンピュータに、更に、
前記対象の第２プレビュー画像を受けさせ、
前記第２プレビュー画像を用いて、更新されたヨー角を計算させ、
前記更新されたヨー角に関して前記ヨーインジケータを更新させ、
前記表示デバイスの前記一部分において前記第２プレビュー画像の上に前記更新されたヨーインジケータを提示させる、
請求項１３に記載のコンピュータで使用可能な媒体。
【請求項１６】
前記コンピュータ読出可能なプログラムは、前記コンピュータで実行される場合に、該コンピュータに、更に、
前記第１プレビュー画像についてのピッチ角及びロール角を計算させ、
前記ピッチ角に基づき水平アイリッドインジケータを決定させ、
前記ロール角に基づきボールインジケータを決定させ、
前記表示デバイスにおいて前記より大きい同心円の中の領域の一部分の上に前記水平アイリッドインジケータを提示させ、
前記表示デバイスにおいて前記より大きい同心円の外側エッジに沿って前記ボールインジケータを提示させる、
請求項１３に記載のコンピュータで使用可能な媒体。
【請求項１７】
前記コンピュータ読出可能なプログラムは、前記コンピュータで実行される場合に、該コンピュータに、更に、
触覚フィードバックを提供することによって、前記ヨー角が予め定義された閾値を満足しないことをユーザに示させる、
請求項１３に記載のコンピュータで使用可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、概して、一連の画像を捕捉して単一の直線状のパノラマ画像を生成するためにユーザを導くユーザインターフェイスを提供することに関係がある。特に、本明細書は、単一の直線状のパノラマ画像を生成するよう一連の画像を捕捉する際にユーザを導くための即時フィードバックを提供する１つ以上のユーザインターフェイス要素を生成するシステム及び方法に関係がある。更には特に、本明細書は、カメラ姿勢のヨーエラーの決定及びユーザインターフェイスにおけるエラーの使用に関係がある。
【背景技術】
【０００２】
プラノグラムは、小売業環境における製品の視覚表現である。例えば、プラノグラムは、小売業環境においてどこにどれくらいの製品が位置付けられるべきかを示してよい。そのようなプラノグラムは、売り上げを増大させ、在庫品目を管理し、且つ、品目の所望の量及びサイズが利益を又は他のパラメータを最適化するよう発注されることを別なふうに確かにする有効なツールであると知られている。
【０００３】
しかし、棚、仕分け箱及び陳列台における在庫の適切な水準の提示及びメンテナンスは、労働集約的な取り組みであり、それにより、プラノグラムの実施を難しくする。小売店における製品の位置及び量はユーザによって手動で管理され得るが、一方で、製品を自動的に認識し、製品の状態に関する情報を自動的に又は半自動で入手する試みが行われている。
【０００４】
画像がプラノグラムのために捕捉される場合に、チルトエラーが画像において存在するならば、プラノグラムには歪みが導入される。ほとんどのシステムは、ヨーエラーチルトを検出するための加速度計を内蔵しない。更には、捕捉された画像においてヨーエラーチルトを検出するために既存の内蔵加速度計を使用することへの従前の試みは、成功していない。ヨー回転の角度ごとに、内蔵加速度計は同じ値を報告し、ヨーエラー回転を伴ったプラノグラム用画像を生じさせる。
【０００５】
製品を認識することへの従前の試みには欠陥がある。例えば、複数の画像から複数の製品を認識するという目標を達成する１つの方法は、画像スティッチングによる。あいにく、既存の画像スティッチング技術は、アーチファクトをもたらすことがあり、認識の最適な動作に干渉し得る。
【発明の概要】
【０００６】
ここで紹介される技術は、カメラ姿勢のエラーの決定及びヨー・ユーザインターフェイスにおける使用のためのシステム及び方法によって、少なくとも部分的に先行技術の欠陥及び制限を解消する。一実施形態において、カメラのヨーエラーの決定のためのシステム及び方法は、対象の第１プレビュー画像を受け取り、該第１プレビュー画像についてのヨー角を計算し、該ヨー角に基づきヨーインジケータを決定し、該ヨーインジケータを表示デバイスの一部分において前記第１プレビュー画像の上に提示することを含む。
【０００７】
他の実施形態において、ユーザインターフェイスにおいてヨー角を使用するシステム及び方法は、棚のプレビュー画像を受け取り、該プレビュー画像においてライン検出を実施し、前記プレビュー画像において少なくとも２つのラインを検出するようラインパラメータ化を計算し、該ラインパラメータ化を用いて前記プレビュー画像についてのヨー角を計算し、該ヨー角に基づき垂直アイリッドインジケータを決定し、該垂直アイリッドインジケータを表示デバイスにおいてより小さい同心円の一部分の上に提示することを有する。
【０００８】
他の実施形態において、カメラのヨーエラーを決定するシステム及び方法は、対象のプレビュー画像を受け取り、前記対象の前記プレビュー画像において第１ライン及び第２ラインを決定し、前記プレビュー画像における第１点での前記第１ラインと前記第２ラインとの間の第１高さを決定し、前記プレビュー画像における第２点での前記第１ラインと前記第２ラインとの間の第２高さを決定し、前記第１ライン及び前記第２ラインをパラメータ化し、捕捉デバイス点から前記第１点までの第１距離を計算し、前記捕捉デバイス点から前記第２点までの第２距離を計算し、前記第１ラインのパラメータ化、前記第２ラインのパラメータ化、前記第１距離及び前記第２距離を用いてヨー角を計算し、該ヨー角を用いて前記対象の前記プレビュー画像を補正することを含む。
【０００９】
他の態様には、方法、システム、装置、並びにそれら及び他の発明態様のためのコンピュータプログラム製品が含まれる。
【００１０】
ここで記載される特徴及び利点は包括的ではなく、多くの特徴及び利点は、図面及び明細書を考慮して当業者に明らかである。更には、本明細書中で使用される言語は、読みやすさ及び教育的目的のために主として選択されており、記載されている技術の適用範囲を制限すべきでないことが、留意されるべきである。
【図面の簡単な説明】
【００１１】
ここで紹介される技術は、限定ではなく、一例として、添付の図面の図において表される。図面において、同じ参照符号は、同様の要素を参照するために使用される。
【００１２】
【図１】直線パノラマを生成するよう一連の画像を捕捉するシステムの一実施形態を表すハイレベルブロック図を示す。
【００１３】
【図２】画像認識アプリケーションを含むコンピュータデバイスの一実施形態を表すブロック図を示す。
【００１４】
【図３】単一の直線状のパノラマ画像のための一連の画像を捕捉する方法の一実施形態を表すフロー図を示す。
【００１５】
【図４Ａ】単一の直線状のパノラマ画像のための一連の画像を捕捉する方法の他の実施形態を表すフロー図を示す。
【図４Ｂ】図４Ａの続きである。
【００１６】
【図５Ａ】単一の直線状のパノラマ画像のための一連の画像を捕捉する方法の更なる他の実施形態を表すフロー図を示す。
【図５Ｂ】図５Ａの続きである。
【００１７】
【図６】ヨー角を計算する方法の一実施形態を表すフロー図を示す。
【００１８】
【図７】ユーザインターフェイスにおいてヨー角を表示する方法の一実施形態を表すフロー図を示す。
【００１９】
【図８】歪み補正を実施する方法の一実施形態を表すフロー図を示す。
【００２０】
【図９】ユーザが棚の画像を捕捉する実施形態のグラフィック描写を示す。
【００２１】
【図１０】チルトエラーのグラフィック描写を示す。
【００２２】
【図１１】クライアントデバイスについてのチルトエラーのグラフィック描写を示す。
【００２３】
【図１２】ユーザインターフェイスの実施形態のグラフィック描写を示す。
【００２４】
【図１３】チルトインジケータを伴ったユーザインターフェイスの実施形態のグラフィック描写を示す。
【００２５】
【図１４】ユーザインターフェイスの実施形態のグラフィック描写を示す。
【００２６】
【図１５】画像捕捉の蛇行スキャンパターンの一実施形態のグラフィック描写を示す。
【００２７】
【図１６】カメラのプレビューフレームを決定する一実施形態のグラフィック描写を示す。
【００２８】
【図１７】カメラのプレビューフレームを決定する代替の実施形態のグラフィック描写を示す。
【００２９】
【図１８】張り合わせられた画像を表示するユーザインターフェイスの他の実施形態のグラフィック描写を示す。
【００３０】
【図１９】３つの異なったチルトエラーについてのユーザインターフェイスの一実施形態のグラフィック描写を示す。
【００３１】
【図２０】ヨーエラーが存在する張り合わせられた画像の一実施形態のグラフィック描写を示す。
【００３２】
【図２１】ライン検出及びパラメータ化計算の一実施形態のグラフィック描写を示す。
【００３３】
【図２２】ライン検出及び消失点計算の他の実施形態のグラフィック描写を示す。
【００３４】
【図２３】画像の長さ計算の一実施形態のグラフィック描写を示す。
【００３５】
【図２４】画像のヨー角計算の一実施形態のグラフィック描写を示す。
【００３６】
【図２５Ａ】ヨーエラーインジケータ・ユーザインターフェイスの第１実施形態のグラフィック描写を示す。
【図２５Ｂ】ヨーエラーインジケータ・ユーザインターフェイスの第１実施形態のグラフィック描写を示す。
【図２５Ｃ】ヨーエラーインジケータ・ユーザインターフェイスの第１実施形態のグラフィック描写を示す。
【図２５Ｄ】ヨーエラーインジケータ・ユーザインターフェイスの第１実施形態のグラフィック描写を示す。
【００３７】
【図２６Ａ】ヨーエラーインジケータ・ユーザインターフェイスの第２実施形態のグラフィック描写を示す。
【図２６Ｂ】ヨーエラーインジケータ・ユーザインターフェイスの第２実施形態のグラフィック描写を示す。
【図２６Ｃ】ヨーエラーインジケータ・ユーザインターフェイスの第２実施形態のグラフィック描写を示す。
【図２６Ｄ】ヨーエラーインジケータ・ユーザインターフェイスの第２実施形態のグラフィック描写を示す。
【図２６Ｅ】ヨーエラーインジケータ・ユーザインターフェイスの第２実施形態のグラフィック描写を示す。
【００３８】
【図２７】ピッチエラーインジケータ・ユーザインターフェイスの一実施形態のグラフィック描写を示す。
【００３９】
【図２８】３つの異なったチルトインジケータを組み込むユーザインターフェイスの一実施形態のグラフィック描写を示す。
【発明を実施するための形態】
【００４０】
図１は、直線パノラマを生成するよう一連の画像を捕捉するシステム１００の一実施形態を表すハイレベルブロック図を示す。表されているシステム１００は、ユーザによってアクセスされ得る１つ以上のクライアントデバイス１１５ａ・・・１１５ｎと、認識サーバ１０１とを備えてよい。図１及び残りの図において、参照番号の後の文字、例えば、“１１５ａ”、は、その特定の参照番号を有する要素に対する参照を表す。後続の文字を伴わないテキスト中の参照番号、例えば、“１１５”、は、その参照番号を有する要素のインスタンスに対する全般的な参照を表す。表されている実施形態において、システム１００のそれらのエンティティは、ネットワーク１０５を介して通信上結合される。
【００４１】
ネットワーク１０５は、従来方式の有線又は無線であることができ、星形構成、トークンリング構成又は他の構成を含む多種多様な構成を有してよい。更には、ネットワーク１０５は、ローカルエリアネットワーク（ＬＡＮ；local  area  network）、ワイドエリアネットワーク（ＷＡＮ；wide  area  network）（例えば、インターネット）、及び／又は、複数のデバイスが通信し得る他の相互接続されたデータパスを含んでよい。いくつかの実施形態において、ネットワーク１０５はピア・ツー・ピアネットワークであってよい。ネットワーク１０５はまた、多種多様な通信プロトコルにおいてデータを送信する電気通信ネットワークの部分へ結合されるか、あるいは、そのような部分を含んでよい。いくつかの実施形態において、ネットワーク１０５は、ショート・メッセージング・サービス（ＳＭＳ；short  messaging  service）、マルチメディア・メッセージング・サービス（ＭＭＳ；multimedia  messaging  service）、ハイパーテキスト・トランスファー・プロトコル（ＨＴＴＰ；hypertext  transfer  protocol）、直接データ接続、ＷＡＰ、電子メール、などを介することを含め、データを送信及び受信するためのＢｌｕｅｔｏｏｔｈ（登録商標）通信ネットワーク又はセルラー通信ネットワークを含んでよい。図１は、クライアントデバイス１１５及び認識サーバ１０１へ結合される１つのネットワーク１０５を表すが、実際には、１つ以上のネットワーク１０５がそれらのエンティティへ接続され得る。
【００４２】
いくつかの実施形態において、システム１００は、ネットワーク１０５へ結合されている認識サーバ１０１を含む。いくつかの実施形態において、認識サーバ１０１は、ハードウェアサーバ、ソフトウェアサーバ、又はソフトウェア及びハードウェアの組み合わせのいずれかであってよい。認識サーバ１０１は、プロセッサ、メモリ、アプリケーション、データベース、及びネットワーク通信機能を含むコンピュータデバイスであってよく、あるいは、そのようなコンピュータデバイスによって実装されてよい。図１の例では、認識サーバ１０１のコンポーネントは、以下で更に詳細に記載される画像認識アプリケーション１０３ａを実装するよう構成される。一実施形態において、認識サーバ１０１は、棚、仕分け箱、又は陳列における製品を特定するための消費者包装品に対するサービスを提供する。例は、ここでは、小売陳列のような棚の画像における製品の認識を記載するが、一方で、画像は、整理された対象のあらゆる配置を含んでよいことが理解されるべきである。例えば、画像は、問屋、倉庫、物置、キャビネット、などのものであってよい。同様に、対象は、小売製品に加えて、道具、製造や建造やメンテナンスにおいて使用される部品、医薬品、応急処置供給品、非常又は安全設備、などであってよい。
【００４３】
いくつかの実施形態において、認識サーバ１０１は、ネットワーク１０５を介してシステム１００の他のエンティティとの間でデータを送受信する。例えば、認識サーバ１０１は、画像を含むデータをクライアントデバイス１１５との間で送受信する。認識サーバ１０１によって受信された画像は、クライアントデバイス１１５によって捕捉された画像、ウェブサイト又は電子メールからコピーされた画像、あるいは、何らかの他のソースからの画像を含んでよい。単一の認識サーバ１０１しか図１には示されていないが、認識サーバ１０１又はサーバ・クラスタはいくつあってもよいことが理解されるべきである。認識サーバ１０１はデータストレージ２４３を更に含む。データストレージ２４３については、図２を参照して更に詳細に以下で記載される。
【００４４】
クライアントデバイス１１５は、メモリ、プロセッサ及びカメラを含むコンピュータデバイスであって、例えば、ラップトップ・コンピュータ、デスクトップ・コンピュータ、タブレット・コンピュータ、携帯電話機、スマートフォン、パーソナル・デジタル・アシスタント（ＰＤＡ；personal  digital  assistant）、モバイル電子メールデバイス、ウェブカメラ、ユーザ装着式コンピュータデバイス、又はネットワーク１０５にアクセス可能な何らかの他の電子機器であってよい。クライアントデバイス１１５は、如何なるタイプのアプリケーションのためにも全般的なグラフィクス及びマルチメディア処理を提供する。クライアントデバイス１１５は、認識サーバ１０１によって提供された情報を見るディスプレイを含む。図１は、２つのクライアントデバイス１１５ａ及び１１５ｎを表すが、本開示は、１つ以上のクライアントデバイス１１５を備えたシステムアーキテクチャに適用される。
【００４５】
クライアントデバイス１１５は、認識サーバ１０１との間でデータを送受信するよう構成される。例えば、クライアントデバイス１１５は、クエリ画像を認識サーバ１０１へ送信し、認識サーバ１０１は、クエリ画像で認識された１つ以上の対象に関してＪＳＯＮ（JavaScript（登録商標）  Object  Notation）においてデータをクライアントデバイス１１５へ供給する。
【００４６】
画像認識アプリケーション１０３は、直線パノラマを生成するよう一連の画像を捕捉する機能を提供するソフトウェア及び／又はロジックを含んでよい。いくつかの実施形態において、画像認識アプリケーション１０３は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ；field-programmable  gate  array）又は特定用途向け集積回路（ＡＳＩＣ；application-specific  integrated  circuit）のような、プログラム可能な又は特殊化したハードウェアを用いて実装され得る。いくつかの実施形態において、画像認識アプリケーション１０３は、ハードウェア及びソフトウェアの組み合わせを用いて実装され得る。他の実施形態において、画像認識アプリケーション１０３は、クライアントデバイス１１５及び認識サーバ１０１の組み合わせにおいて、あるいは、クライアントデバイス１１５又は認識サーバ１０１のいずれか１つによって、記憶及び実行されてよい。
【００４７】
いくつかの実施形態において、画像認識アプリケーション１０３ｂは、クライアントデバイス１１５で実行されるいくつかの機能及び画像認識アプリケーション１０３によって認識サーバ１０１で実行される更なる機能を備えたシンクライアント・アプリケーションの役割をする。例えば、クライアントデバイス１１５にある画像認識アプリケーション１０３ｂは、画像を捕捉し、画像を認識サーバ１０１へ送信し、画像認識結果を表示するソフトウェア及び／又はロジックを含んでよい。シンクライアント・アプリケーション１０３ｂは、画像を処理すること及び特徴識別を実施することといった、画像認識アプリケーション１０３を参照してここで記載される更なる機能を含んでよい。
【００４８】
いくつかの実施形態において、画像認識アプリケーション１０３は、捕捉デバイス２４７から、関心のある対象の部分の画像を受け取る。画像認識アプリケーション１０３は、画像の特徴を決定する。画像認識アプリケーション１０３は、捕捉デバイス２４７のディスプレイにおいて、関心のある対象の現在のプレビュー画像を含むユーザインターフェイスを生成する。画像認識アプリケーション１０３は、画像の特徴を、関心のある対象の現在のプレビュー画像と動的に比較して、オーバーラップを決定する。画像認識アプリケーション１０３は、画像間の所望の又は所定のオーバーラップ及びアライメントを生じさせるよう捕捉デバイス２４７の移動を導くための視覚的にはっきりと識別できるインジケータを含めるようにユーザインターフェイスを更新する。画像認識アプリケーション１０３は、画像と現在のプレビューとの間のオーバーラップが所定のオーバーラップ及びアライメント閾値を満足するかどうかを判定する。例えば、オーバーラップ閾値は６０パーセントに設定され得る。画像認識アプリケーション１０３は、オーバーラップが所定のオーバーラップ閾値を満足することに基づき、関心のある対象の部分の次の画像を捕捉する。画像認識アプリケーション１０３の動作及び上記の機能は、以下で更に詳細に記載される。
【００４９】
図２は、画像認識アプリケーション１０３を含むコンピュータデバイス２００の一実施形態を表すブロック図を示す。コンピュータデバイス２００は、いくつかの例に従って、プロセッサ２３５、メモリ２３７、通信ユニット２４１、データストレージ２４３、ディスプレイデバイス２３９、オリエンテーションセンサ２４５、捕捉デバイス２４７、及び出力デバイス２４９を更に含む。コンピュータデバイス２００のコンポーネントは、バス２２０によって通信上結合される。バス２２０は、業界標準アーキテクチャ（ＩＳＡ；industry  standard  architecture）バス、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ；peripheral  component  interconnect）バス、ユニバーサル・シリアル・バス（ＵＳＢ；universal  serial  bus）、又は同様の機能を提供する当該技術で知られているその他バスを含む１つ以上のバスを表してよい。いくつかの実施形態において、コンピュータデバイス２００は、クライアントデバイス１１５、認識サーバ１０１、又はクライアントデバイス１１５及び認識サーバ１０１の組み合わせであってよい。コンピュータデバイス２００がクライアントデバイス１１５又は認識サーバ１０１であるような実施形態では、クライアントデバイス１１５及び認識サーバ１０１は、図２に示されていない他のコンポーネントを含んでよいことが理解されるべきである。
【００５０】
プロセッサ２３５は、様々な入力／出力、論理、及び／又は数学演算を実施することによって、ソフトウェア命令を実行してよい。プロセッサ２３５は、例えば、複数命令セットコンピュータ（ＣＩＳＣ；complex  instruction  set  computer）アーキテクチャ、縮小命令セットコンピュータ（ＲＩＳＣ；reduced  instruction  set  computer）アーキテクチャ、及び／又は命令セットの組み合わせを実装するアーキテクチャを含め、データ信号を処理する様々なコンピュータアーキテクチャを有してよい。プロセッサ２３５は、物理的及び／又は仮想的であってよく、単一のプロセッシングユニット、あるいは、複数のプロセッシングユニット及び／又はコアを含んでよい。いくつかの実施において、プロセッサ２３５は、電子表示信号を生成してディスプレイデバイスへ供給すること、画像の表示をサポートすること、画像を捕捉及び送信すること、様々なタイプの特徴抽出及びサンプリングを含む複雑なタスクを実施すること、などが可能であってよい。いくつかの実施形態において、プロセッサ２３５は、バス２２０を介してメモリ２３７へ結合され、その中のデータ及び命令にアクセスし且つデータをそこに格納してよい。バス２２０は、プロセッサ２３５を、例えば、メモリ２３７、通信ユニット２４１、画像認識アプリケーション１０３、及びデータストレージ２４３を含む、コンピュータデバイス２００の他のコンポーネントへ結合してよい。当業者に明らかなように、他のプロセッサ、オペレーティングシステム、センサ、ディスプレイ及び物理構成が可能である。
【００５１】
メモリ２３７は、コンピュータデバイス２００の他のコンポーネントのためのデータを記憶しそれへのアクセスを提供してよい。メモリ２３７は、本願において別なところで論じられているように、単一のコンピュータデバイスにおいて含まれるか、あるいは、複数のコンピュータデバイスの間で分配されてよい。いくつかの実施において、メモリ２３７は、プロセッサ２３５によって実行され得る命令及び／又はデータを記憶してよい。命令及び／又はデータは、ここで記載される技術を実施するためのコードを含んでよい。例えば、一実施形態において、メモリ２３７は画像認識アプリケーション１０３を記憶してよい。メモリ２３７は、例えば、オペレーティングシステム、ハードウェアドライバ、他のソフトウェアアプリケーション、データベース、などを含む、他の命令及びデータを記憶することも可能である。メモリ２３７は、プロセッサ２３５及びコンピュータデバイス２００の他のコンポーネントとの通信のためのバス２２０へ結合されてよい。
【００５２】
メモリ２３７は、１つ以上の不揮発性のコンピュータで使用可能（例えば、読み出し可能、書き込み可能）なデバイス、静的ランダム・アクセス・メモリ（ＳＲＡＭ；static  random  access  memory）デバイス、埋込メモリデバイス、ディスクリート・メモリデバイス（例えば、ＰＲＯＭ、ＦＰＲＯＭ、ＲＯＭ）、ハードディスクドライブ、光ディスクドライブ（ＣＤ、ＤＶＤ、ブルーレイ、など）媒体を含んでよく、プロセッサ２３５による又はそれに関連した処理のための命令、データ、コンピュータプログラム、ソフトウェア、コード、ルーチン、などを含み、記憶し、通信し、又は運ぶことができる如何なる有形な装置又はデバイスであることもできる。いくつかの実施において、メモリ２３７は、揮発性メモリ及び不揮発性メモリの１つ以上を含んでよい。例えば、メモリ２３７は、制限なしに、動的ランダム・アクセス・メモリ（ＤＲＡＭ；dynamic  random  access  memory）デバイス、静的ランダム・アクセス・メモリ（ＳＲＡＭ）デバイス、埋込メモリデバイス、ディスクリート・メモリデバイス（例えば、ＰＲＯＭ、ＦＰＲＯＭ、ＲＯＭ）、ハードディスクドライブ、光ディスクドライブ（ＣＤ、ＤＶＤ、ブルーレイ、など）の１つ以上を含んでよい。メモリ２３７は、単一のデバイスであってよく、あるいは、複数のタイプのデバイス及び構成を含んでよいことが理解されるべきである。
【００５３】
通信ユニット２４１は、プロセッサ２３５をネットワーク１０５及び他のプロセッシングシステムへリンクすることによってデータを受信及び送信するハードウェアである。通信ユニット２４１は、クライアントデバイス１１５からリクエストのようなデータを受信し、そのリクエスト、例えば、画像を処理するためのリクエスト、をコントローラ２０１へ送信する。通信ユニット２４１はまた、例えば、画像を処理することに応答して、表示のために、認識結果を含む情報をクライアントデバイス１１５へ送信する。通信ユニット２４１はバス２２０へ結合されている。一実施形態において、通信ユニット２４１は、クライアントデバイス１１５への又は他の通信チャネルへの直接的な物理接続のためのポートを含んでよい。例えば、通信ユニット２４１は、クライアントデバイス１１５との有線接続のためにＲＪ４５ポート又は同様のポートを含んでよい。他の実施形態において、通信ユニット２４１は、ＩＥＥＥ８０２．１１、ＩＥＥＥ８０２．１６、Ｂｌｕｅｔｏｏｔｈ（登録商標）又は他の適切な無線通信方法のような１つ以上の無線通信方法を用いてクライアントデバイス１１５又はあらゆる他の通信チャネルとデータを交換するための無線トランシーバ（図示せず。）を含んでよい。
【００５４】
更なる他の実施形態において、通信ユニット２４１は、セルラー通信ネットワーク上で、例えば、ショート・メッセージング・サービス（ＳＭＳ）、マルチメディア・メッセージング・サービス（ＭＭＳ）、ハイパーテキスト・トランスファー・プロトコル（ＨＴＴＰ）、直接データ接続、ＷＡＰ、電子メール、又は他の適切なタイプの電子通信を介して、データを送信及び受信するためのセルラー通信トランシーバを含んでよい。更なる別の実施形態において、通信ユニット２４１は、有線ポート及び無線トランシーバを含んでよい。通信ユニット２４１はまた、当業者に理解されるように、ＴＣＰ／ＩＰ、ＨＴＴＰ、ＨＴＴＰＳ及びＳＭＴＰのような標準のネットワークプロトコルを用いて、ファイル及び／又はメディアオブジェクトの分配のために、ネットワーク１０５への他の従来の接続を提供する。
【００５５】
データストレージ２４３は、ここで記載される機能を提供するためのデータを記憶する非一時的なメモリである。データストレージ２４３は、動的ランダム・アクセス・メモリ（ＤＲＡＭ）デバイス、静的ランダム・アクセス・メモリ（ＳＲＡＭ）デバイス、フラッシュメモリ又はその他メモリデバイスであってよい。いくつかの実施形態において、データストレージ２４３はまた、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ＣＤ−ＲＯＭデバイス、ＤＶＤ−ＲＯＭデバイス、ＤＶＤ−ＲＡＭデバイス、ＤＶＤ−ＲＷデバイス、フラッシュメモリデバイス、又はより恒久的に情報を記憶するその他大容量デバイスを含む不揮発性メモリ又は同様の永久記憶デバイス及び媒体を含んでよい。
【００５６】
表されている実施形態では、データストレージ２４３は、バス２２０へ通信上結合される。データストレージ２４３は、受信された画像を解析するためのデータ並びに解析及びここで記載される他の機能の結果を記憶する。例えば、データストレージ２４３は、最適な重なり合った画像を捕捉するための画像オーバーラップ閾値を記憶してよい。データストレージ２４３は、捕捉された画像及び捕捉された画像について決定された特徴の組を同様に記憶してよい。加えて、データストレージ２４３は、張り合わされた直線状のパノラマ画像を記憶してよい。データストレージ２４３に記憶されるデータについては、より詳細に以下で記載される。
【００５７】
表されている実施形態では、ディスプレイデバイス２３９は、プレビュー画像又はユーザインターフェイスを表示するスクリーンであってよい。ディスプレイデバイス２３９は、バス２２０を介してプロセッサ２３５及びデータストレージ２４３へ接続し、画像認識アプリケーション１０３から情報を受けるよう構成されてよい。ディスプレイデバイス２３９は、携帯電話機、タブレット、コンピュータ、カメラ、又は表示スクリーンを有して構成されることが可能な他のデバイスに組み込まれてよい。
【００５８】
表されている実施形態では、捕捉デバイス２４７は、対象の画像を捕捉することが可能なデバイスであってよい。捕捉デバイス２４７は、カメラ又は同様のデバイスを含め、画像を捕捉することができる如何なるデバイスであってもよい。捕捉デバイス２４７は、スタンドアローンのデバイスであるか、あるいは、クライアントデバイス１１５の部分であるよう構成されてよい。捕捉デバイス２４７は、バス２２０を介してプロセッサ２３５及びデータストレージ２４３へ接続し、画像認識アプリケーション１０３から情報を受信及び送信するよう構成されてよい。
【００５９】
表されている実施形態では、オリエンテーションセンサ２４５は、デバイスの姿勢を検出することができるセンサであってよい。センサは、姿勢を検出することが可能な加速度計、磁気計又は他のセンサであってよい。オリエンテーションセンサ２４５は、クライアントデバイス１１５の内部に組み込まれるか、あるいは、クライアントデバイス１１５とは別個であってよい。オリエンテーションセンサ２４５は、バス２２０を介して画像認識アプリケーション１０３から情報を送信及び受信するよう構成されてよい。
【００６０】
表されている実施形態では、出力デバイス２４９は、ユーザへの出力を生成することができる如何なるデバイスであってもよい。出力デバイス２４９は、スピーカ、ユーザインターフェイスにおいて提示される画像、クライアントデバイス１１５における振動、あるいは、ユーザが検知可能な他の出力であってよい。いくつかの実施形態において、出力デバイス２４９は、触覚フィードバックモジュール２１９を用いて振動により触覚フィードバックを提供するよう構成された携帯電話機、タブレット・コンピュータ、又は他のモバイルデバイスであってよい。代替の実施形態では、出力デバイス２４９は、触覚フィードバックモジュール２１９を用いて触覚フィードバックを提供することができるスマートウォッチであってよい。そのような実施形態では、スマートウォッチは、タップ・シグニチャを提供することのような、より高度な触覚フィードバックを提供することが可能であってよい。タップ・シグニチャは、デバイスにおける正確なチルトのような何かを示す、ユーザの手首でのタップの特別なシーケンスであってよい。
【００６１】
いくつかの実施形態において、画像認識アプリケーション１０３は、コントローラ２０１、スティッチングモジュール２０９、ユーザインターフェイスモジュール２１１、特徴抽出モジュール２０３、アライメントモジュール２０５、ユーザガイダンスモジュール２０７、ヨー計算モジュール２１３、歪み補正モジュール２１５、ヨー・ユーザインターフェイスモジュール２１７、及び触覚フィードバックモジュール２１９を含んでよい。画像認識アプリケーション１０３のコンポーネントは、バス２２０を介して通信上結合される。
【００６２】
コントローラ２０１は、画像認識アプリケーション１０３の他のコンポーネントの動作を制御するソフトウェア及び／又はロジックを含んでよい。コントローラ２０１は、図３乃至８を参照して後述される方法を実施するよう画像認識アプリケーション１０３の他のコンポーネントを制御する。コントローラ２０１はまた、画像認識アプリケーション１０３とコンピュータデバイス２００の他のコンポーネントとの間及び画像認識アプリケーション１０３のコンポーネント間の通信を扱う機能を提供するソフトウェア及び／又はロジックを含んでよい。いくつかの実施形態において、コントローラ２０１は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）又は特定用途向け集積回路（ＡＳＩＣ）を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、コントローラ２０１は、プロセッサ２３５によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、コントローラ２０１は、プロセッサ２３５によって実行可能な命令の組である。いくつかの実施において、コントローラ２０１は、メモリ２３７において記憶され、プロセッサ２３５によってアクセス可能であり実行可能である。いくつかの実施において、コントローラ２０１は、バス２２０を介してプロセッサ２３５、メモリ２３７、及び画像認識アプリケーション１０３の他のコンポーネントと協調及び通信するよう構成される。
【００６３】
いくつかの実施形態において、コントローラ２０１は、通信ユニット２４１を介してクライアントデバイス１１５及び認識サーバ１０１の１つ以上との間でデータを送受信する。例えば、コントローラ２０１は、通信ユニット２４１を介して、ユーザによって操作されているクライアントデバイス１１５から画像を受信し、画像をスティッチングモジュール２０９へ送信する。他の例では、コントローラ２０１は、グラフィカルユーザインターフェイスをユーザに提供するためのデータをユーザインターフェイスモジュール２１１から受信し、データをクライアントデバイス１１５へ送信して、クライアントデバイス１１５にユーザインターフェイスをユーザに提示させる。
【００６４】
いくつかの実施形態において、コントローラ２０１は、画像認識アプリケーション１０３の他のコンポーネントからデータを受信し、データをデータストレージ２４３に記憶する。例えば、コントローラ２０１は、画像について特定された特徴を含むデータをスティッチングモジュール２０９から受信し、データをデータストレージ２４３に記憶する。他の実施形態では、コントローラ２０１は、データストレージ２４３からデータを受信し、データを画像認識アプリケーション１０３の他のコンポーネントへ送信する。例えば、コントローラ２０１は、オーバーラップ閾値を含むデータをデータストレージ２４３から取り出し、取り出したデータをスティッチングモジュール２０９へ送信する。
【００６５】
スティッチングモジュール２０９は、単一の直線状のパノラマ画像を張り合わせるよう一連の画像を捕捉する機能を提供するソフトウェア及び／又はロジックを含んでよい。いくつかの実施形態において、スティッチングモジュール２０９は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）又は特定用途向け集積回路（ＡＳＩＣ）を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、スティッチングモジュール２０９は、プロセッサ２３５によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、スティッチングモジュール２０９は、画像を張り合わせるよう図１５乃至１７、２０及び２６Ａ乃至２６Ｅを参照して後述されるように方法を実施し且つユーザインターフェイス及び他の機能を実装することができる。いくつかの実施形態において、スティッチングモジュール２０９は、プロセッサ２３５によって実行可能な命令の組である。いくつかの実施において、スティッチングモジュール２０９は、メモリ２３７に記憶され、プロセッサ２３５によってアクセス可能であり実行可能である。いくつかの実施において、スティッチングモジュール２０９は、バス２２０を介してプロセッサ２３５、メモリ２３７、及び画像認識アプリケーション１０３の他のコンポーネントと協調及び通信するよう構成される。
【００６６】
ユーザインターフェイスモジュール２１１は、ユーザインターフェイスをユーザに提供するソフトウェア及び／又はロジックを含んでよい。いくつかの実施形態において、ユーザインターフェイスモジュール２１１は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）又は特定用途向け集積回路（ＡＳＩＣ）を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、ユーザインターフェイスモジュール２１１は、プロセッサ２３５によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、ユーザインターフェイスモジュール２１１は、プロセッサ２３５によって実行可能な命令の組である。いくつかの実施において、ユーザインターフェイスモジュール２１１は、メモリ２３７において記憶され、プロセッサ２３５によってアクセス可能であり実行可能である。いくつかの実施において、ユーザインターフェイスモジュール２１１は、バス２２０を介してプロセッサ２３５、メモリ２３７、及び画像認識アプリケーション１０３の他のコンポーネントと協調及び通信するよう構成される。
【００６７】
いくつかの実施形態において、ユーザインターフェイスモジュール２１１は、スティッチングモジュール２０９又は画像認識アプリケーション１０３の他のモジュールからの命令を受けて、前に捕捉された画像との良好なオーバーラップを有する次の画像を捕捉するために如何にクライアントデバイス１１５を動かすべきかに関してユーザに指示するグラフィカルユーザインターフェイスを生成する。いくつかの実施形態において、ユーザインターフェイスモジュール２１１は、スティッチングモジュール２０９からの命令を受けて、姿勢の軸のいずれか（例えば、Ｘ、Ｙ、又はＺ軸）においてほとんど傾きを有さずに重なり合った画像を捕捉するようユーザを誘導するグラフィカルユーザインターフェイスを生成する。他の実施形態では、ユーザインターフェイスモジュール２１１は、通信ユニット２４１を介してクライアントデバイス１１５内のアプリケーション（例えば、ブラウザ）へグラフィカルユーザインターフェイスを送信して、そのアプリケーションにデータをグラフィカルユーザインターフェイスとして表示させる。いくつかの実施形態において、ユーザインターフェイスモジュール２１１は、ヨー・ユーザインターフェイスモジュール２１７の代わりにヨー・ユーザインターフェイスを生成することができる。代替の実施形態では、ユーザインターフェイスモジュール２１１は、ヨー・ユーザインターフェイスモジュール２１７から情報を受け取って、ヨーデータをユーザインターフェイス上に組み込んでよい。そのような実施形態の例は、図２６Ａ乃至２６Ｅ、２７及び２８において示され得る。
【００６８】
特徴抽出モジュール２０３は、関心のある特徴を検出するよう一連の画像を解析する機能を提供するソフトウェア及び／又はロジックを含んでよい。いくつかの実施形態において、特徴抽出モジュール２０３は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）又は特定用途向け集積回路（ＡＳＩＣ）を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、特徴抽出モジュール２０３は、プロセッサ２３５によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、特徴抽出モジュール２０３は、プロセッサ２３５によって実行可能な命令の組である。いくつかの実施において、特徴抽出モジュール２０３は、メモリ２３７において記憶され、プロセッサ２３５によってアクセス可能であり実行可能である。いくつかの実施において、特徴抽出モジュール２０３は、バス２２０を介してプロセッサ２３５、メモリ２３７、及び画像認識アプリケーション１０３の他のコンポーネントと協調及び通信するよう構成される。
【００６９】
アライメントモジュール２０５は、捕捉された画像を前の画像とアライメントする機能を提供するソフトウェア及び／又はロジックを含んでよい。いくつかの実施形態において、アライメントモジュール２０５は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）又は特定用途向け集積回路（ＡＳＩＣ）を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、アライメントモジュール２０５は、プロセッサ２３５によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、アライメントモジュール２０５は、プロセッサ２３５によって実行可能な命令の組である。いくつかの実施において、アライメントモジュール２０５は、メモリ２３７において記憶され、プロセッサ２３５によってアクセス可能であり実行可能である。いくつかの実施において、アライメントモジュール２０５は、バス２２０を介してプロセッサ２３５、メモリ２３７、及び画像認識アプリケーション１０３の他のコンポーネントと協調及び通信するよう構成される。
【００７０】
ユーザガイダンスモジュール２０７は、ヨー、ピッチ及びロールに関する命令を受け、ヨー、ピッチ又はロールエラーを補正する指示をユーザに与える機能を提供するソフトウェア及び／又はロジックを含んでよい。更には、ユーザガイダンスモジュール２０７は、パノラマ画像を生成するよう張り合わされる画像を撮影する方向を決定し、パノラマ画像のための次の画像を撮影する指示をユーザに与えることができる。いくつかの実施形態において、ユーザガイダンスモジュール２０７は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）又は特定用途向け集積回路（ＡＳＩＣ）を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、ユーザガイダンスモジュール２０７は、プロセッサ２３５によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、ユーザガイダンスモジュール２０７は、プロセッサ２３５によって実行可能な命令の組である。いくつかの実施において、ユーザガイダンスモジュール２０７は、メモリ２３７において記憶され、プロセッサ２３５によってアクセス可能であり実行可能である。いくつかの実施において、ユーザガイダンスモジュール２０７は、バス２２０を介してプロセッサ２３５、メモリ２３７、及び画像認識アプリケーション１０３の他のコンポーネントと協調及び通信するよう構成される。
【００７１】
触覚フィードバックモジュール２１９は、ヨー、ピッチ又はロールエラーが許容可能なマージンだけ低減された場合にユーザに警告する機能を提供するソフトウェア及び／又はロジックを含んでよい。代替の実施形態では、触覚フィードバックモジュール２１９は、ヨー、ピッチ又はロールエラーが設定された閾値を超えて増大した場合にユーザに警告する機能を提供するソフトウェア及び／又はロジックを含んでよい。いくつかの実施形態において、触覚フィードバックモジュール２１９は、ヨー、ピッチ又はロールデータのようなチルトエラーを受け取る。触覚フィードバックモジュール２１９は、チルトエラーが設定された閾値を上回るかあるいは下回るかどうかを特定し、チルトエラーが特定の閾値を上回る場合に出力デバイス２４９を用いてユーザに警告することができる。代替的に、いくつかの実施形態において、触覚フィードバックモジュール２１９は、チルトエラーが特定の閾値を下回る場合に出力デバイス２４９を用いてユーザに警告してよい。いくつかの実施形態において、触覚フィードバックモジュール２１９は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）又は特定用途向け集積回路（ＡＳＩＣ）を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、触覚フィードバックモジュール２１９は、プロセッサ２３５によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、触覚フィードバックモジュール２１９は、プロセッサ２３５によって実行可能な命令の組である。いくつかの実施において、触覚フィードバックモジュール２１９は、メモリ２３７において記憶され、プロセッサ２３５によってアクセス可能であり実行可能である。いくつかの実施において、触覚フィードバックモジュール２１９は、バス２２０を介してプロセッサ２３５、メモリ２３７、及び画像認識アプリケーション１０３の他のコンポーネントと協調及び通信するよう構成される。
【００７２】
ヨー計算モジュール２１３は、画像を解析してヨー角を特定する機能を提供するソフトウェア及び／又はロジックを含んでよい。ヨー計算モジュール２１３は、画像を受け取り、画像を解析してヨーエラーを特定することができる。ヨー計算モジュール２１３は、次いで、ヨーエラーを、更なる処理のために、他のモジュール又はデバイスへ送信してよい。ヨー計算モジュール２１３によって実施される処理の例は、図２３及び２４において見られてよい。いくつかの実施形態において、ヨー計算モジュール２１３は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）又は特定用途向け集積回路（ＡＳＩＣ）を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、ヨー計算モジュール２１３は、プロセッサ２３５によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、ヨー計算モジュール２１３は、プロセッサ２３５によって実行可能な命令の組である。いくつかの実施において、ヨー計算モジュール２１３は、メモリ２３７において記憶され、プロセッサ２３５によってアクセス可能であり実行可能である。いくつかの実施において、ヨー計算モジュール２１３は、バス２２０を介してプロセッサ２３５、メモリ２３７、及び画像認識アプリケーション１０３の他のコンポーネントと協調及び通信するよう構成される。
【００７３】
歪み補正モジュール２１５は、画像の歪み補正を実施する機能を提供するソフトウェア及び／又はロジックを含んでよい。いくつかの実施形態において、歪み補正モジュール２１５は、ヨー計算モジュール２１３からヨーデータを受け取り、ヨーデータを用いてデスキュー変換を決定してよい。歪み補正モジュール２１５は、次いで、デスキュー変換に基づき画像に対して歪み補正を実施してよい。いくつかの実施形態において、歪み補正モジュール２１５は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）又は特定用途向け集積回路（ＡＳＩＣ）を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、歪み補正モジュール２１５は、プロセッサ２３５によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、歪み補正モジュール２１５は、プロセッサ２３５によって実行可能な命令の組である。いくつかの実施において、歪み補正モジュール２１５は、メモリ２３７において記憶され、プロセッサ２３５によってアクセス可能であり実行可能である。いくつかの実施において、歪み補正モジュール２１５は、バス２２０を介してプロセッサ２３５、メモリ２３７、及び画像認識アプリケーション１０３の他のコンポーネントと協調及び通信するよう構成される。
【００７４】
ヨー・ユーザインターフェイスモジュール２１７は、計算されたヨー角を低減する指示をユーザに与える機能を提供するソフトウェア及び／又はロジックを含んでよい。いくつかの実施形態において、ヨー・ユーザインターフェイスモジュール２１７は、ヨー計算モジュール２１３からヨーデータを受け取り、ヨーデータを用いてユーザインターフェイス上でヨーデータのインジケータを生成してよい。いくつかの実施形態において、ヨーデータは、存在するヨーエラーの割合を計算するために使用されてよく、ヨー・ユーザインターフェイスモジュール２１７を用いて、存在するヨーエラーの割合に基づきインジケータを生成してよい。代替の実施形態では、ヨー・ユーザインターフェイスモジュール２１７は、ヨーデータを用いてヨーインジケータを生成し、ユーザインターフェイスモジュール２１１がヨーインジケータを含むユーザインターフェイスを生成するために、ヨーインジケータをユーザインターフェイスモジュール２１１へ送信してよい。いくつかの実施形態において、ヨー・ユーザインターフェイスモジュール２１７は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）又は特定用途向け集積回路（ＡＳＩＣ）を含むプログラム可能な又は特殊化されたハードウェアを用いて実装され得る。いくつかの実施形態において、ヨー・ユーザインターフェイスモジュール２１７は、プロセッサ２３５によって実行可能なソフトウェア及びハードウェアの組み合わせを用いて実装され得る。いくつかの実施形態において、ヨー・ユーザインターフェイスモジュール２１７は、プロセッサ２３５によって実行可能な命令の組である。いくつかの実施において、ヨー・ユーザインターフェイスモジュール２１７は、メモリ２３７において記憶され、プロセッサ２３５によってアクセス可能であり実行可能である。いくつかの実施において、ヨー・ユーザインターフェイスモジュール２１７は、バス２２０を介してプロセッサ２３５、メモリ２３７、及び画像認識アプリケーション１０３の他のコンポーネントと協調及び通信するよう構成される。
【００７５】
［方法］
図３は、単一の直線状のパノラマ画像のための一連の画像を捕捉する方法の一実施形態を説明するフロー図３００を示す。３０２で、スティッチングモジュール２０９は、関心のある対象の部分の画像を捕捉デバイス２４７から受け取る。例えば、画像は、棚、リージョン、アートワーク、ランドマーク、眺めの良い場所、アウタースペース、などの画像であることができる。３０４で、スティッチングモジュール２０９は画像の特徴を特定し、代替的に、スティッチングモジュール２０９は、特徴抽出モジュール２０３から情報を受け取り、特徴抽出モジュール２０３は画像の特徴を特定する。画像は処理され、単一の直線状のパノラマ画像を形成するのに必要な一連の画像における最初の画像であるための基準（位置、向き及びアライメント）を満足するとすれば、基準画像として記憶される。次いで、画像認識アプリケーション１０３は、少なくとも１つのプレビュー画像を受ける。３０６で、ユーザインターフェイスモジュール２１１は、関心のある対象の現在のプレビュー画像を含むユーザインターフェイスを、捕捉デバイス２４７のディスプレイ上に提示する。ユーザインターフェイスは、一連の画像における次の画像となり得るプレビュー画像を捕捉するようユーザを誘導するインジケータを含む。３０８で、スティッチングモジュール２０９は、基準画像の特徴を、捕捉デバイス２４７のディスプレイ上の関心のある対象の現在のプレビュー画像と動的に比較して、オーバーラップを決定する。３１０で、スティッチングモジュール２０９は、画像と現在のプレビュー画像との間のオーバーラップが所定のオーバーラップ閾値を満足するかどうかを判定する。例えば、所定のオーバーラップ閾値は、６０％に設定され得る。十分なオーバーラップを有する画像が次のステップで捕捉されるまで、更なる画像がプレビュー画像として受け取られ、ユーザインターフェイスが更新される。３１２で、スティッチングモジュール２０９は、オーバーラップが所定のオーバーラップ閾値を満足することに基づき、捕捉デバイス２４７を用いて、関心のある対象の部分のプレビュー画像を捕捉し記憶する。３１４で、ユーザインターフェイスモジュール２１１は、捕捉された画像の記憶を示すようユーザインターフェイスを更新する。例えば、ユーザインターフェイスは、画像が捕捉されたことを示すよう、クライアントデバイス１１５にある出力デバイス２４９からの可聴なシャッター音を伴って束の間ピカッと光ってよい。３１６で、スティッチングモジュール２０９は、更なる画像が受信又はサンプリングされているかどうかを判定する。更なる画像が受信又はサンプリングされていない場合には、ステップ３１８で、スティッチングモジュール２０９は、単一の直線状のパノラマ画像を生成するよう、関心のある対象の部分の画像を送信する。更なる画像が受信されている場合には、スティッチングモジュール２０９は、画像が参照画像としてステップ３１２で記憶された状態で、ステップ３０４からプロセスを繰り返す。いくつかの実施形態において、スティッチングモジュール２０９はユーザ入力に応答し、ユーザがプレビュー画像の供給を中止すると、パノラマ画像は生成される。いくつかの実施形態において、スティッチングモジュール２０９は、パノラマ画像を形成するのに十分な画像が捕捉されたかどうかに関してユーザにフィードバックを与える。例えば、スティッチングモジュール２０９は、画像捕捉のパターンに関して入力を受け、プレビュー又は供給すべき次の画像に関してユーザを導く。言い換えれば、方法３００は、画像のプレビューを提供するためにどのような縦及び横方向の移動が行われるべきかに関して追加のユーザフィードバックを提供してよい。
【００７６】
図４乃至４Ｂは、単一の直線状のパノラマ画像のための一連の画像を捕捉する方法の他の実施形態を説明するフロー図４００を示す。４０２で、スティッチングモジュール２０９は、関心のある対象の部分の画像を捕捉デバイス２４７から受け取る。４０４で、スティッチングモジュール２０９は、画像の特徴を特定する。４０６で、ユーザインターフェイスモジュール２１１は、関心のある対象の現在のプレビュー画像を含むユーザインターフェイスを捕捉デバイス２４７のディスプレイ上で提示する。現在のプレビュー画像は、レンズによって形成された画像をクライアントデバイス１１５内に含まれる画像センサ上に連続的に且つ直接に投影することによってクライアントデバイス１１５の表示スクリーン上に生成されたライブプレビューであることができる。
【００７７】
４０８で、スティッチングモジュール２０９は、画像の特徴を、捕捉デバイス２４７のディスプレイ上の関心のある対象の現在のプレビュー画像と動的に比較する。４１０で、スティッチングモジュール２０９は、関心のある対象に沿った捕捉デバイス２４７の動きの方向、及び画像と現在のプレビュー画像との間のオーバーラップを特定する。４１２で、スティッチングモジュール２０９は、画像と現在のプレビュー画像との間のオーバーラップが所定のオーバーラップ閾値を満足するかどうかを判定する。例えば、所定のオーバーラップ閾値は６０％に設定され得る。４１４で、ユーザインターフェイスモジュール２１１は、所定のオーバーラップ閾値を満足するオーバーラップを生じるよう捕捉デバイス２４７の動きを誘導するためのフィードバックをディスプレイ上に提供するように、ユーザインターフェイスを更新する。４１６で、スティッチングモジュール２０９は、ヨー計算モジュール２１３のような他のモジュールとともに、捕捉デバイス２４７が向きの３軸のうちの１つにおいて傾いているかどうかを判定する。例えば、向きの３軸はＸ軸、Ｙ軸及びＺ軸であることができる。４１８で、ユーザインターフェイスモジュール２１１は、向きの３軸のうちの１つにおける捕捉デバイス２４７の傾きを修正するためのフィードバックをディスプレイ上に提供するように、ユーザインターフェイスを更新する。
【００７８】
４２０で、スティッチングモジュール２０９は、捕捉デバイス２４７を用いて、関心のある対象の部分の次の画像を捕捉する。４２２で、ユーザインターフェイスモジュール２１１は、捕捉された画像の記憶を示すようユーザインターフェイスを更新し、記憶された画像を基準画像として使用する。４２４で、スティッチングモジュール２０９は、更なるプレビュー画像が受信又はサンプリングされているかどうかを判定する。更なるプレビュー画像が受信又はサンプリングされていない場合には、ステップ４２６で、スティッチングモジュール２０９は、単一の直線状のパノラマ画像を生成するよう、関心のある対象の部分の画像を送信する。更なる画像が受信又はサンプリングされている場合には、スティッチングモジュール２０９はステップ４０４からプロセスを繰り返す。
【００７９】
図５Ａ乃至５Ｂは、単一の直線状のパノラマ画像のための一連の画像を捕捉する方法の更なる他の実施形態を説明するフロー図５００を示す。５０２で、スティッチングモジュール２０９は、関心のある対象の部分の画像を捕捉デバイス２４７から受け取る。例えば、画像は、棚、リージョン、アートワーク、ランドマーク、眺めの良い場所、アウタースペース、などの画像であることができる。５０４で、スティッチングモジュール２０９は画像の特徴を特定する。５０６で、ユーザインターフェイスモジュール２１１は、関心のある対象の現在のプレビュー画像を含むユーザインターフェイスを、捕捉デバイス２４７のディスプレイ上に提示する。５０８で、スティッチングモジュール２０９は、画像の特徴を、捕捉デバイス２４７のディスプレイ上の関心のある対象の現在のプレビュー画像と動的に比較する。５１０で、スティッチングモジュール２０９は、動的な比較に基づき、関心のある対象に沿った捕捉デバイス２４７の動きの方向を特定する。５１２で、スティッチングモジュール２０９は、動きの方向において画像と現在のプレビュー画像との間にオーバーラップがあるかどうかを判定する。例えば、動きの方向は、北、南、東、又は西方向にあることができる。
【００８０】
５１４で、ユーザインターフェイスモジュール２１１は、第１の視覚的にはっきりと識別できるインジケータを捕捉デバイス２４７のディスプレイ上で生成する。ディスプレイ上での第１の視覚的に識別可能なインジケータの位置は、オーバーラップの範囲を表す。例えば、ユーザインターフェイスに示される視覚的に識別可能なインジケータは、制限なしに、視覚的に識別可能な形状、サイズ、色、位置、向き、陰影、など、又はそれらの組み合わせを含んでよい。５１６で、スティッチングモジュール２０９は、ディスプレイの中心にあるターゲット領域内に第１の視覚的に識別可能なインジケータを位置付けるよう、捕捉デバイス２４７の動きを受け取る。ターゲット領域内での第１の視覚的に識別可能なインジケータの位置は、オーバーラップが所定のオーバーラップ閾値を満足することを示す。例えば、第１の視覚的に識別可能なインジケータは、ユーザインターフェイス上のボール、又は同心円の一部分を覆うアイリッドであることができる。５１８で、スティッチングモジュール２０９は、ヨー計算モジュール２１３のような他のモジュールとともに、捕捉デバイス２４７が向きの３軸のうちの１つにおいて傾いているかどうかを判定する。５２０で、ユーザインターフェイスモジュール２１１は、３軸のうちの１つにおける傾きについて、捕捉デバイス２４７のディスプレイ上で、第２の視覚的にはっきりと識別できるインジケータを生成する。ディスプレイ上での第２の視覚的に識別可能なインジケータの位置は、捕捉デバイス２４７の傾きの範囲を表す。一例において、チルトについての第２の視覚的に識別可能なインジケータは、クライアントデバイス１１５にあるユーザインターフェイスの周囲においてチルト・フィードバックを示す、同心円の一部分を覆うアイリッド又はロール傾斜インジケータであることができる。
【００８１】
５２２で、スティッチングモジュール２０９は、第２の視覚的に識別可能なインジケータに、消失、フォーマットの変更、又は触覚フィードバックモジュール２１９からユーザへのキューの供給により、チルトが存在しないことを示させるよう、捕捉デバイス２４７の動きを受け取る。５２４で、スティッチングモジュール２０９は、捕捉デバイス２４７を用いて、関心のある対象の部分の次の画像を捕捉し、捕捉／記憶された画像を新しい基準画像として使用する。５２６で、ユーザインターフェイスモジュール２１１は、捕捉された画像の記憶を示すようユーザインターフェイスを更新する。５２８で、スティッチングモジュール２０９は、更なるプレビュー画像が受信又はサンプリングされているかどうかを判定する。更なるプレビュー画像が受信又はサンプリングされていない場合には、ステップ５３０で、スティッチングモジュール２０９は、単一の直線状のパノラマ画像を生成するよう、関心のある対象の部分の画像を送信する。更なる画像が受信又はサンプリングされている場合には、スティッチングモジュール２０９はステップ５０４からプロセスを繰り返す。
【００８２】
図６は、画像からヨー角を計算する方法６００の一実施形態を説明するフロー図６００を示す。より具体的には、図６の上半分において示されている、画像についてのヨー角を計算する方法６０２を示す。６０４で、ヨー計算モジュール２１３は、関心のある対象の一部分の画像を捕捉デバイス２４７（例えば、クライアントデバイス１１５の部分）から受け取る。例えば、画像は、棚、リージョン、アートワーク、ランドマーク、眺めの良い場所、アウタースペース、などの画像であることができる。６０６で、ヨー計算モジュール２１３は、受け取られた画像においてライン検出を実施して、元の場面において平行に走っている少なくとも２つのラインを特定する。なお、ラインは、遠近歪みにより画像においては平行でないことがある。６０８で、ヨー計算モジュール２１３は、画像において検出されたラインごとにラインパラメータ化を計算する。ラインパラメータ化は、数学的手法及び画像処理方法を含む様々な方法によって行われ得る。一例には、夫々の検出されたラインの開始点及び終了点を特定すること、又はラインごとに点及びこう配を特定することが含まれる。いくつかの任意の実施形態では、ラインパラメータ化は、６１０で、画像のメタデータにおいて、例えば、画像のエクスチェンジャブル・イメージ・ファイル・フォーマット（ＥＸＩＦ；Exchangeable  Image  File  Format）ヘッダにおいて、埋め込まれてよく、あるいは、ラインパラメータ化は、データストレージ２４３においてセーブされてよい。６１２で、ヨー計算モジュール２１３は、ラインパラメータ化データを用いて、画像のヨー角を計算する。ヨー角は、図２３及び２４を参照して後述される基本的な三角法を使用することによって、計算されてよい。６１４で、ヨー計算モジュール２１３は、次いで、ヨー角及び関連データを、ヨー・ユーザインターフェイスモジュール２１７又は歪み補正モジュール２１５のような、更なる処理のための他のモジュールへ供給してよい。いくつかの実施形態において、ヨー計算モジュール２１３は、プレビュー画像を調整し、ヨー角エラーの一部分を取り除くことが可能であってよい。６１６で、ヨー計算モジュール２１３は、ヨー・ユーザインターフェイスモジュール２１７へデータを供給する。６１８で、ヨー計算モジュール２１３は、歪み補正モジュール２１５へデータを供給する。
【００８３】
図７は、画像を捕捉した際にヨーデータを補正するためのユーザへのインジケータを提供する方法６１６の実施形態を説明するフロー図を示す。７０２で、ヨー・ユーザインターフェイスモジュール２１７は、ヨー計算モジュール２１３からヨーデータを受け取る。７０４で、ヨー・ユーザインターフェイスモジュール２１７は、ヨーデータのインジケータについてのデータを計算する。インジケータは、ユーザインターフェイス上で同心円の一部分を覆うよう構成されたアイリッドインジケータであってよい。それにより、ヨーデータがヨーエラーの増大を示す場合には、アイリッドインジケータによって覆われる同心円の部分は、より大きくなり、ヨーデータがヨーエラーの低減を示す場合には、アイリッドインジケータによって覆われる同心円の部分は、より小さくなる。いくつかの実施形態において、ヨー・ユーザインターフェイスモジュール２１７は、同心円の一部分に陰影をつけるアイリッドインジケータを構成してよい。ヨー・ユーザインターフェイスモジュール２１７によって生成されるユーザインターフェイスの例は、図１９乃至２８を参照して後述される。７０６で、ヨー・ユーザインターフェイスモジュール２１７は、ユーザへの提示７０８のためにアイリッドインジケータをユーザインターフェイスに組み込む。ヨー・ユーザインターフェイスは、ヨーエラーの補正を支援するスタンドアローンのユーザインターフェイスであってよく、あるいは、ヨー・ユーザインターフェイスは、図１３及び１４で表されているボール・インターフェイスのような他のチルトインジケータを含むようユーザインターフェイスモジュール２１１に組み込まれてよい。７１０で、ヨー・ユーザインターフェイスモジュール２１７は、第２の画像から第２のヨーデータを受ける。７１２で、ヨー・ユーザインターフェイスモジュール２１７は、第２のヨーデータが閾値を上回るかどうかを判定してよい。７１４で、第２のヨーデータが閾値を上回る場合に、触覚フィードバックモジュール２１９は、出力デバイス２４９を用いて、ヨーエラーが閾値を上回ることをユーザに警告してよい。出力デバイス２４９は、例えば、クライアントデバイス１１５の振動又は聴覚信号を生成することによって、ユーザに警告してよい。
【００８４】
図８は、画像に対して歪み補正を実施する方法６１８の実施形態を説明するフロー図を示す。８０２で、歪み補正モジュール２１５は、ヨー計算モジュール２１３からヨーデータを受け取り、ヨー・ユーザインターフェイスモジュール２１７とは無関係に実行され得る。８０４で、歪み補正モジュール２１５は、ヨーデータを用いて画像のラインを検出し、検出されたラインの消失点を計算する。ヨーエラーが画像において存在する場合に、平行である元の場面内のラインは、ヨーエラーによって導入される歪みの結果として、画像において非平行であるように見えるので、消失点は、非平行なラインの束を使用することによって計算される。非平行なラインは、ラインが伸ばされる場合に、消失点で交差する。８０６で、歪み補正モジュール２１５は、消失点に基づきデスキュー変換を計算する。８０８で、歪み補正モジュール２１５は、元の場面の平行なラインを反映し且つ画像がクライアントデバイス１１５によって捕捉された際に不正確なヨー・チルトによって導入されたヨーエラーの少なくとも一部を取り除く画像を生成するよう、デスキュー変換を用いて画像に対して歪み補正を実施する。
【００８５】
図９に示されるように、図９００は、棚９０３の画像を捕捉する例を表す。ユーザ９０１は、棚９０３の画像を捕捉するために、画像認識アプリケーション１０３を含むクライアントデバイス１１５を使用してよい。棚９０３は、製品を保持することができる如何なる棚であってもよく、あるいは、棚は、リージョン、アートワーク、ランドマーク、眺めの良い場所、アウタースペース、などによって置き換えられてよい。ユーザ９０１がクライアントデバイス１１５を使用する場合に、様々なチルトエラーは、クライアントデバイス１１５のユーザによる位置決めに基づき導入され得る。
【００８６】
いくつかの実施形態において、画像認識アプリケーション１０３は、クライアントデバイス１１５のユーザから、関心のある対象の画像を捕捉するためのリクエストを受ける。例えば、画像は、棚、リージョン、アートワーク、ランドマーク、眺めの良い場所、アウタースペース、などの画像であることができる。クライアントデバイス１１５は画像を捕捉し、それを画像認識アプリケーション１０３へ供給する。画像認識アプリケーション１０３は、ユーザインターフェイスモジュール２１１に、クライアントデバイス１１５を用いて画像を捕捉するためのユーザインターフェイスを生成するよう指示する。
【００８７】
図１０に示されるように、図１０００は、クライアントデバイス１１５の位置決めに応じて捕捉された画像に導入され得る３つの異なったチルトを表す。クライアントデバイス１１５は、ヨーエラーを画像に導入するようにＹ軸１００１に関して回転されてよい。クライアントデバイス１１５はまた、ピッチエラーを画像に導入するようＸ軸１００３に関して回転されてよい。最後に、クライアントデバイス１１５は、ロールエラーを画像に導入するようＺ軸１００５に関して回転されてよい。
【００８８】
図１１は、クライアントデバイス１１５の例となる表示１１００と、クライアントデバイス１１５によって捕捉された画像に導入され得る３つの異なったチルトとを示す。クライアントデバイス１１５は、オリエンテーションセンサ２４５を用いてｘ方向１１０３及びｚ方向１１０５においてチルトを検出することが可能なオリエンテーションセンサ２４５（図示せず。）を含んでよい。なお、いくつかの実施形態において、オリエンテーションセンサ２４５がクライアントデバイス１１５の内蔵加速度計である場合に、オリエンテーションセンサ２４５（例えば、内蔵加速度計）は、それがクライアントデバイス１１５のヨー・チルトの位置ごとの実際の位置にかかわらず同じ角度を返すので、ｙ方向１１０１においてチルトを検出することが不可能であり得る。
【００８９】
［ユーザインターフェイス］
図１２のグラフィカル描写１２００における例となるユーザインターフェイスは、画像捕捉のためにクライアントデバイス１１５を棚とアライメントするためのコーナーマーカ１２０２によって画定されるフレーム１２０１と、表示の真ん中に棚の中心を置くための円のターゲットアウトライン１２０３と、フレーム１２０１の周囲にあるチルト基準矢印１２１１ａ及び１２１１ｂを伴うジャイロ水平ライン１２１７と、フレーム１２０１の周囲にあるチルト基準矢印１２０９ａ及び１２０９ｂを伴うジャイロ垂直ライン１２１５と、大きい方の同心円１２０４の周囲にあるチルト基準矢印１２１３ａ及び１２１３ｂとを含む。チルト基準矢印１２０９、１２１１及び１２１３は、画像を捕捉する前に、棚のプレビュー画像１２０７が中心を外れている及び／又は傾いているかどうかを示すために使用されてよい。
【００９０】
図１３に示されるように、グラフィカル描写１３００は、クライアントデバイス１１５によって表示されている棚の現在のプレビュー画像の上に現れているゴースト画像上のボール１３０１及びターゲットアウトライン１３０３を含むユーザインターフェイスを表す。ユーザの目標は、クライアントデバイス１１５を動かすことによってユーザインターフェイス上のターゲットアウトライン１３０３内にボール１３０１をアライメントし位置付けて、ゴースト画像とのアライメントを達成することである。ユーザインターフェイス１３００は、チルト基準矢印１３１１を伴うジャイロ水平ライン１３１７及びチルト基準矢印１３０７を伴うジャイロ垂直ライン１３１５を含む。ユーザインターフェイスは、チルトが増大するにつれてフレームの部分に陰影をつけるチルトインジケータ１３０９及び１３１３を更に含んでよい。
【００９１】
他の例では、図１４に示されるように、グラフィカル描写１４００は、クライアントデバイス１１５で表示されている棚ユニットの現在のプレビュー画像１４０２の上に、より小さい同心円のターゲットアウトライン１４１２を含むユーザインターフェイスを表す。ユーザインターフェイスは、受け取られたチルト情報に基づき表示されるボール１４１０を含む。ユーザがクライアントデバイス１１５を回転させ、プレビュー画像におけるチルトエラーを小さくすると、ボール１４１０はターゲットアウトライン１４１２の中に移動して、チルトが小さくなりつつあることをユーザに知らせる。ユーザインターフェイスは、現在のプレビュー画像１４０２の下に、捕捉された画像のモザイクプレビュー１４０６を表示する領域１４０４を更に含む。モザイクプレビュー１４０６は、棚ユニットの捕捉された画像がそれに加えられることに基づき次第に大きくなってよい。領域１４０４内に含まれるモザイクプレビュー１４０６は、クライアントデバイス１１５の動きの方向に応じて、領域１４０４の右又は領域１４０４の左のいずれか一方へ突き出され得る。領域１４０４におけるモザイクプレビュー１４０６（目下、空である。）は、クライアントデバイス１１５が棚ユニットの第１画像を捕捉する場合に取って代わられ得る空のサムネイル画像の‘４’と標示されたアウトライン１４０８を含む。
【００９２】
棚の画像は、認識のために受け取られてよく、複数の関心のあるアイテムを含んでよい。例えば、画像は、小売店内の棚の上にある包装した製品（例えば、コーヒーのパッケージ、朝食用シリアルの箱、ソーダボトル、など）の画像であることができる。包装した製品は、それを棚の上の他のアイテムと区別する、その表面上に印刷されたテキスト及び絵による情報を含んでよい。一例において、クライアントデバイス１１５のディスプレイは、ユーザがスクリーンをタップすることに応答して、画像が捕捉されたことを示すよう点滅してよい。いくつかの実施形態において、画像認識アプリケーション１０３は、画像から特徴の組を特定するとともに、夫々の特徴が現れる画像内の点（例えば、１つの識別された特徴の位置）までの相対的位置を特定する。いくつかの実施形態において、クライアントデバイス１１５は、捕捉された画像及び識別された特徴の組をキャッシュにおいて記憶する。他の実施形態では、クライアントデバイス１１５は、捕捉された画像を認識サーバ１０１へ送信する。
【００９３】
一連の画像を用いて直線状のパノラマ画像を生成するために、ユーザは、第１画像の後に後続の画像を捕捉するよう関心のある対象と平行なままでいずれかの方向においてクライアントデバイス１１５を動かしてよい。例えば、クライアントデバイス１１５は、連続した他の画像を捕捉するよう棚ユニットと平行なままで北、南、東、又は西方向において動くことができる。いくつかの実施形態において、画像認識アプリケーション１０３は、一連の画像を捕捉するための画像捕捉のパターンのユーザ選択を受け取る。画像認識アプリケーション１０３は、画像捕捉の選択されたパターンに基づき、ユーザインターフェイスモジュール２１１に、一連の画像内の次の画像を如何にして捕捉すべきかに関して、クライアントデバイス１１５を介してユーザへの誘導を提供するよう指示する。
【００９４】
一実施形態において、画像捕捉の選択されたパターンは、図１５に示される蛇行スキャンパターンであってよい。蛇行スキャンパターンにおいて、画像捕捉におけるシーケンスは、上下間又は左から右の間１５０２若しくは右から左の間１５０４を行ったり来たりしてよく、一方、クライアントデバイス１１５は、水平方向（又は垂直方向）において関心のある対象と平行に移動している。画像認識アプリケーション１０３は、ユーザインターフェイスモジュール２１１に、蛇行スキャンパターンに従うために、例えば、クライアントデバイスを最初に関心のある対象の下（又は上）に動かし、次いで関心のある対象の右（又は左）へ動かし、次いで関心のある対象の上（又は下）に動かし、次いで関心のある対象の右（又は左）へ動かし、再度関心のある対象の下（又は上）に動かすようユーザを導くユーザインターフェイスをクライアントデバイス１１５において生成するように、指示してよい。画像認識アプリケーション１０３は、クライアントデバイス１１５の夫々の動きの終わりに、関心のある対象の捕捉された画像を受け取る。
【００９５】
他の実施形態では、画像捕捉の選択されたパターンは、ラスタースキャンパターンであってよい。ラスタースキャンパターンは、一度に１つのラインずつ関心のある対象に沿って漸次にクライアントデバイス１１５を動かすことによって、関心のある対象の画像捕捉をカバーする。画像認識アプリケーション１０３は、ユーザインターフェイスモジュール２１１に、ラスタースキャンパターンに従うために、例えば、クライアントデバイス１１５を、あるラインにおいて関心のある対象の左から右へ（又は右から左へ）動かし、次いでラインの終わりで関心のある対象の下（又は上）に動かし、次のラインにおいて再度関心のある対象の左から右へ（又は右から左へ）動かすようユーザを導くユーザインターフェイスをクライアントデバイス１１５において生成するように、指示する。画像認識アプリケーション１０３は、左から右へ（又は右から左へ）のクライアントデバイス１１５の夫々の動きの終わりに、関心のある対象の捕捉された画像を受け取る。
【００９６】
更なる他の実施形態では、画像捕捉の選択されたパターンは、オーバー・アンド・バックスキャンパターンであってよい。オーバー・アンド・バックスキャンパターンは、クライアントデバイス１１５を関心のある対象の一部分の上で水平（又は垂直）方向において一方の端部へ動かし、次いで、カバーされなかった関心のある対象の他の部分を捕捉するようクライアントデバイス１１５を戻すことによって、関心のある対象の画像捕捉をカバーする。画像認識アプリケーション１０３は、ユーザインターフェイスモジュール２１１に、オーバー・アンド・バックスキャンパターンに従うために、例えば、クライアントデバイス１１５を、一方の端に向かって関心のある対象の左から右へ（又は右から左へ）動かし、次いで関心のある対象の下（又は上）に動かし、開始した端に向かって右から左へ（又は左から右へ）戻すようユーザを導くユーザインターフェイスをクライアントデバイス１１５において生成するように、指示する。画像認識アプリケーション１０３は、一方の端に向かう左から右へのクライアントデバイス１１５の夫々の動きの終わりに、及び開始した端に向かう右から左へのクライアントデバイス１１５の夫々の動きの終わりに、関心のある対象の捕捉された画像を受け取る。
【００９７】
いくつかの実施形態において、スティッチングモジュール２０９は、画像間で一定量のオーバーラップを伴って一連の捕捉された画像を受け取る。いくつかの実施形態において、画像認識アプリケーション１０３は、ユーザインターフェイスモジュール２１１に、前に捕捉された画像と一定量だけ重なり合っている一連の画像内の次の画像を捕捉するようユーザを導くように、指示する。これは、連続して個々に捕捉された画像の夫々を張り合わせることによって直線パノラマを生成するために使用されるスティッチングアルゴリズムによって期待される画像間のオーバーラップの閾量（例えば、６０％）であってよい。いくつかの実施形態において、画像のオーバーラップの閾値は、スティッチングアルゴリズムに基づき調整されてよい。例えば、スティッチングアルゴリズムは、スケール不変特徴変換（ＳＩＦＴ；Scale-Invariant  Feature  Transform）アルゴリズム、ランダム・サンプル・コンセンサス（ＲＡＮＳＡＣ；Random  Sample  Consensus）アルゴリズム、プログレッシブ・サンプル・コンセンサス（ＰＲＯＳＡＣ；Progressive  Sample  Consensus）アルゴリズム、ＲＩＶＲアルゴリズム、などのグループの中の１つ以上であることができる。
【００９８】
いくつかの実施形態において、画像認識アプリケーション１０３は、関心のある対象を指し示す場合にクライアントデバイス１１５によって表示される関心のある対象の現在のプレビュー画像を受け取る。現在のプレビュー画像は、クライアントデバイス１１５内に含まれている画像センサ上にレンズによって形成された画像を連続して直接に投影することによってクライアントデバイス１１５の表示スクリーン上で生成されたライブプレビューであることができる。いくつかの実施形態において、特徴抽出モジュール２０３は、クライアントデバイス１１５が関心のある対象に沿って動く場合に、カメラプレビューにおける画像について画像特徴を特定する。スティッチングモジュール２０９は、関心のある対象の以前に捕捉された画像の識別された特徴を、クライアントデバイス１１５によって表示されている現在のプレビュー画像と動的に比較する。スティッチングモジュール２０９は、前に捕捉された画像において特徴的な特徴を識別し、次いで、それらを現在のプレビュー画像の特徴と効率よく照合して、画像の対の間の対応を即時に定める。例えば、図１６において、プロセス１６００は、画像特徴の第１の組１０６がＦ０であってよく、変数‘ｉ’が最も直前に捕捉された画像Ｆｉを表すために使用されてよく、従って、現在の画像についての画像特徴の組がＦｉ＋１によって表されてよいことを示す。いくつかの実施形態において、スティッチングモジュール２０９は、類似尺度Ｓｉを生成するよう以前に捕捉された画像Ｆｉを現在の画像Ｆｉ＋１と比較するために相似関数を使用する。例えば、式１６０４は、ｓｉｍ（Ｆｉ，Ｆｉ＋１）＝Ｓｉと記述されてよい。１６０６で、値Ｓｉは、前に捕捉された画像Ｆｉと現在の画像Ｆｉ＋１との間の類似の程度を表す。
【００９９】
いくつかの実施形態において、スティッチングモジュール２０９は、画像捕捉パターンのシーケンスにおける中断の後に、クライアントデバイス１１５によって表示される関心のある対象の現在のプレビュー画像を、前に捕捉された画像の視点とアライメントする、ユーザからのリクエストを受ける。例えば、ユーザは、関心のある対象の一部分の画像を捕捉した後に中断状態となり、シーンを一定期間そのままにしておかざるを得ないことがある。その場合に、ユーザは、中断後に、関心のある対象の次の画像を捕捉することに戻りたいことがある。いくつかの場合に、ユーザは、画像捕捉プロセスのどこで中断されたかを記憶していないことがある。ある売り場内の棚ユニットの画像を捕捉する例において、最後の画像が中断の前に捕捉された同じ位置で画像捕捉プロセスを再開することが重要である。いくつかの実施形態において、オーバーラップ及び／又は方向についての視覚的に識別可能なインジケータは、ユーザが前に捕捉された画像との良好なオーバーラップの位置から画像捕捉プロセスを再開しない限り、機能することができない。
【０１００】
画像認識アプリケーション１０３は、ユーザインターフェイスモジュール２１１に、クライアントデバイス１１５によって表示されている現在のプレビュー画像の上にゴースト画像として前に捕捉された画像を置くユーザインターフェイスを生成するように指示する。特徴抽出モジュール２０３は、前に捕捉された画像の特徴を特定しキャッシュにおいて保存して、捕捉プロセスの中断が起こる場合に基準画像として使用する。スティッチングモジュール２０９は、ユーザインターフェイスモジュール２１１に、再アライメントのための視覚的に識別なインジケータによりユーザインターフェイスを更新するように指示する。特徴抽出モジュール２０３は、クライアントデバイス１１５が関心のある対象に沿って動く場合に、カメラプレビューにおける画像について画像特徴を特定する。ユーザインターフェイス上に示されている再アライメントのための視覚的に識別可能なインジケータは、制限なしに、視覚的に識別可能な形状、サイズ、色、位置、向き、陰影、など、又はそれらの組み合わせを含んでよい。例えば、ユーザは、彼らが最後の画像が前に捕捉されたと認識している関心のある対象に沿った位置へ歩いていき、そして、再アライメントプロセスを開始するために現在のプレビュー画像上へのゴースト画像のオーバーレイを使用してよい。スティッチングモジュール２０９は、前に捕捉された画像の特徴を、クライアントデバイスのカメラプレビューに表示されている画像フレームに関連した画像特徴と動的に比較することによって、捕捉ユーザインターフェイスをアライメントし直す。スティッチングモジュール２０９は、ユーザインターフェイス上の再アライメントのための視覚的に識別可能なインジケータの位置をクライアントデバイス１１５の動きと結合する。スティッチングモジュール２０９は、関心のある対象の前に捕捉された画像の識別された特徴を、クライアントデバイス１１５の動きの方向において、現在のプレビュー画像と動的に比較する。
【０１０１】
いくつかの実施形態において、スティッチングモジュール２０９は、画像捕捉パターンのシーケンスにおける中断の後に、クライアントデバイス１１５によって表示される関心のある対象の現在のプレビュー画像を、前に捕捉された画像の視点とアライメントする、ユーザからのリクエストを受ける。例えば、ユーザは、関心のある対象の一部分の画像を捕捉した後に中断状態となり、シーンを一定期間そのままにしておかざるを得ないことがある。その場合に、ユーザは、中断後に、関心のある対象の次の画像を捕捉することに戻りたいことがある。いくつかの場合に、ユーザは、画像捕捉プロセスのどこで中断されたかを記憶していないことがある。ある売り場内の棚ユニットの画像を捕捉する例において、最後の画像が中断の前に捕捉された同じ位置で画像捕捉プロセスを再開することが重要である。いくつかの実施形態において、オーバーラップ及び／又は方向についての視覚的に識別可能なインジケータは、ユーザが前に捕捉された画像との良好なオーバーラップの位置から画像捕捉プロセスを再開しない限り、機能することができない。
【０１０２】
スティッチングモジュール２０９は、ユーザインターフェイスモジュール２１１に、クライアントデバイス１１５によって表示されている現在のプレビュー画像の上にゴースト画像として前に捕捉された画像を置くユーザインターフェイスを生成するように指示する。スティッチングモジュール２０９は、前に捕捉された画像の特徴を特定しキャッシュにおいて保存して、捕捉プロセスの中断が起こる場合に基準画像として使用する。スティッチングモジュール２０９は、ユーザインターフェイスモジュール２１１に、再アライメントのための視覚的に識別なインジケータによりユーザインターフェイスを更新するように指示する。スティッチングモジュール２０９は、クライアントデバイス１１５が関心のある対象に沿って動く場合に、カメラプレビューにおける画像について画像特徴を特定する。ユーザインターフェイス上に示されている再アライメントのための視覚的に識別可能なインジケータは、制限なしに、視覚的に識別可能な形状、サイズ、色、位置、向き、陰影、など、又はそれらの組み合わせを含んでよい。例えば、ユーザは、彼らが最後の画像が前に捕捉されたと認識している関心のある対象に沿った位置へ歩いていき、そして、再アライメントプロセスを開始するために現在のプレビュー画像上へのゴースト画像のオーバーレイを使用してよい。スティッチングモジュール２０９は、前に捕捉された画像の特徴を、クライアントデバイスのカメラプレビューに表示されている画像フレームに関連した画像特徴と動的に比較することによって、捕捉ユーザインターフェイスをアライメントし直す。スティッチングモジュール２０９は、ユーザインターフェイス上の再アライメントのための視覚的に識別可能なインジケータの位置をクライアントデバイス１１５の動きと結合する。スティッチングモジュール２０９は、関心のある対象の前に捕捉された画像の識別された特徴を、クライアントデバイス１１５の動きの方向における現在のプレビュー画像と動的に比較する。例えば、前に捕捉された画像についての画像特徴の組は、Ｆ０と表されてよい。プレビュー画像フレームについて特定された画像特徴の組は、Ｆｉによって表されてよい。クライアントデバイス１１５が、前に捕捉された画像と再アライメントするよう、関心のある対象に沿って動く場合に、スティッチングモジュール２０９は、夫々のプレビュー画像フレームについての画像特徴を生成する。Ｆｉにおける変数‘ｉ’が５に等しい場合に（すなわち、５つのプレビュー画像特徴は、前に捕捉された画像を数に入れずに捕捉されており、第５のプレビュー画像フレームはＦ５である。）、スティッチングエンジンは、相似関数を用いて、前に捕捉された画像Ｆ０を現在のプレビュー画像Ｆ５と比較し、類似尺度Ｓ５を生成する。例えば、相似関数はｓｉｍ（Ｆ０，Ｆ５）＝Ｓ５と表され得る。この値Ｓ５は、２つの画像がどの程度互いに類似しているかを表し、ユーザが前に捕捉された画像と再アライメントするために関心のある対象に沿ってどれくらい移動すべきかを示す。類似尺度Ｓ５は、画像特徴セットＦ５に先行する最後の画像特徴セットＦ４とではなく、基準となる前に捕捉された画像Ｆ０との比較を示す。スティッチングモジュール２０９は、次いで、移動の方向における動的な比較を、ユーザインターフェイスにおける視覚的に識別可能なインジケータの位置の変更へと転じて、それにより、前に捕捉された画像との適切な再アライメントを達成するために如何にしてクライアントデバイス１１５を動かすべきかに関するフィードバックをユーザに提供する。いくつかの実施形態において、スティッチングモジュール２０９は、再アライメントが成功したのとユーザインターフェイスモジュール２１１からの確認を受け取る。スティッチングモジュール２０９は、次いで、ユーザインターフェイスモジュール２１１に、一連の画像における次の画像を如何にして捕捉すべきかに関してユーザを導くユーザインターフェイスへ戻るように指示する。
【０１０３】
図１７の例で示されるように、グラフィカル描写１７００は、再アライメントのための視覚的に識別可能なインジケータを生成する再アライメントプロセスの実施形態を表す。図１７において、グラフィカル描写１７００は、ユーザがクライアントデバイス１１５を動かすことに基づき変化する画像フレーム（Ｆ１乃至Ｆ４）についてのカメラプレビューフレーム１７０４を含む。グラフィカル描写１７００は、夫々のプレビュー画像フレーム１７０４の特徴と前に捕捉された画像１７０２の特徴との間で計算される類似尺度関数１７０６を更に含む。前に捕捉された画像についての画像特徴の組は、Ｆ０と表されてよい。前の画像特徴について決定された画像特徴の組は、Ｆｉと表されてよい。クライアントデバイス１１５が、前に捕捉された画像と再アライメントするよう、関心のある対象に沿って動く場合に、スティッチングモジュール２０９は、夫々のプレビュー画像フレームについての画像特徴を生成する。Ｆｉにおける変数‘ｉ’が５に等しい場合に（すなわち、５つのプレビュー画像特徴は、前に捕捉された画像を数に入れずに捕捉されており、第５のプレビュー画像フレームはＦ５である。）、スティッチングエンジンは、相似関数を用いて、前に捕捉された画像Ｆ０を現在のプレビュー画像Ｆ５と比較し、類似尺度Ｓ５を生成する。例えば、相似関数はｓｉｍ（Ｆ０，Ｆ５）＝Ｓ５と表され得る。この値Ｓ５は、２つの画像がどの程度互いに類似しているかを表し、ユーザが前に捕捉された画像と再アライメントするために関心のある対象に沿ってどれくらい移動すべきかを示す。類似尺度Ｓ５は、画像特徴セットＦ５に先行する最後の画像特徴セットＦ４とではなく、基準となる前に捕捉された画像Ｆ０との比較を示す。ユーザガイダンスモジュール２０７は、次いで、移動の方向における動的な比較を、ユーザインターフェイスにおける視覚的に識別可能なインジケータの位置の変更へと転じて、それにより、前に捕捉された画像との適切な再アライメントを達成するために如何にしてクライアントデバイス１１５を動かすべきかに関するフィードバックをユーザに提供する。いくつかの実施形態において、スティッチングモジュール２０９は、再アライメントが成功したのとユーザインターフェイスモジュール２１１からの確認を受け取る。画像認識アプリケーション１０３は、次いで、ユーザインターフェイスモジュール２１１に、一連の画像における次の画像を如何にして捕捉すべきかに関してユーザを導くユーザインターフェイスへ戻るように指示する。いくつかの実施形態において、スティッチングモジュール２０９は、クライアントデバイス１１５でユーザインターフェイスを介してユーザにガイダンス及び／又はフィードバックを提供するために、現在のプレビュー画像と前に捕捉された画像との間の動的な特徴比較とともに、パラメータとして画像オーバーラップ閾値を使用する。例えば、スティッチングモジュール２０９は、類似値‘Ｖ’を０．６に設定するために画像オーバーラップ閾値を使用する。いくつかの実施形態において、スティッチングモジュール２０９は、ユーザが、前の画像を捕捉した後に、関心のある対象と平行へ方向の１つ（例えば、北、南、東又は西）においてクライアントデバイス１１５を動かす場合に、クライアントデバイス１１５の動きを含むデータを受け取る。スティッチングモジュール２０９は、関心のある対象の前に捕捉された画像と、クライアントデバイス１１５によって表示されている現在のプレビュー画像との間の動的な特徴比較に基づき、クライアントデバイス１１５の動きの方向を特定する。スティッチングモジュール２０９は、クライアントデバイス１１５の動きの方向において前に捕捉され画像と現在のプレビュー画像との間にオーバーラップが存在するかどうかを判定する。スティッチングモジュール２０９は、ユーザインターフェイスモジュール２１１に、クライアントデバイス１１５の動きの方向における特定された方向に応答して、ユーザインターフェイスでのオーバーラップについての視覚的に識別可能なインジケータを生成するように、指示する。ユーザインターフェイス上に示される、オーバーラップについての視覚的に識別可能なインジケータは、制限なしに、視覚的に識別可能な形状、サイズ、色、位置、向き、陰影、など、又はそれらの組み合わせを含んでよい。
【０１０４】
スティッチングモジュール２０９は、ユーザインターフェイス上のオーバーラップについての視覚的に識別可能なインジケータの位置を、クライアントデバイス１１５の動きの方向と結合する。スティッチングモジュール２０９は、関心のある対象の前に捕捉された画像の識別された特徴を、クライアントデバイス１１５の動きの方向において、現在のプレビュー画像と動的に比較し続ける。スティッチングモジュール２０９は、動きの方向における動的な比較を、ユーザインターフェイス上の視覚的に識別可能なインジケータの位置を変えることに転じることで、所定のオーバーラップ閾値を満足する最適なオーバーラップを達成するために如何にしてクライアントデバイス１１５を動かすべきかに関するフィードバックをユーザに提供する。例えば、前に捕捉された画像と現在のプレビュー画像との間のオーバーラップが、動きの方向における所定の画像オーバーラップ閾値（すなわち、類似値‘Ｖ’＝６０％）を満足する場合に、オーバーラップについての視覚的に識別可能なインジケータの位置は、そのような条件が満足されたことを示すようユーザインターフェイス上で変化する。オーバーラップについての視覚的に識別可能なインジケータは、例えば、円、四角、又は多角形のような幾何形状の境界領域内に移動して、条件が最適的なオーバーラップについて満足されていることを表す。いくつかの実施形態において、スティッチングモジュール２０９は許容値‘Ｔ’を使用する。許容値‘Ｔ’は、類似値‘Ｖ’ととともに、オーバーラップについての視覚的に識別可能なインジケータが範囲内、例えば、幾何形状の中にある場合を計算するために使用されてよい。いくつかの実施形態において、スティッチングモジュール２０９は、許容値‘Ｔ’を用いて、画像が捕捉され得る前にオーバーラップについての視覚的に識別可能なインジケータのどの程度が幾何形状の中にある必要があるのかに関して少しの不明りょうさを許容する。いくつかの実施形態において、スティッチングモジュール２０９は、ユーザインターフェイスモジュール２１１に、画像オーバーラップ閾値が満足されるまで、前に捕捉された画像と現在のプレビュー画像との間で起こるオーバーラップの範囲を示すようユーザインターフェイス上で進捗ステータスバーを生成するように、指示する。他の実施形態では、スティッチングモジュール２０９は、オーバーラップが画像オーバーラップ閾値を満足することに応答して画像を捕捉するようクライアントデバイス１１５へ捕捉コマンドを送る。スティッチングモジュール２０９は、いつ画像を捕捉すべきかを決定するために、相似関数とともに距離測度関数を使用する。距離測度関数は、画像Ｆ０（すなわち、Ｓ０）から画像Ｆｉ（すなわち、Ｓｉ）までの全ての類似尺度‘Ｓ’の和を表し、ｄｉｓｔ（Ｓｉ）と表されてよい。距離測度関数は、２つの画像Ｆ０及びＦｉが互いにどれくらい近いかを決定する。距離測度関数は、次の式（Ｖ−Ｔ）＜ｄｉｓｔ（Ｓｉ）＜（Ｖ＋Ｔ）が満足されるように類似尺度Ｓｉが類似値‘Ｖ’の許容値‘Ｔ’内にあるかどうか判定する。満足される場合には、スティッチングモジュール２０９は、画像を捕捉するようクライアントデバイス１１５へ捕捉コマンドを送る。距離測度関数ｄｉｓｔ（Ｓｉ）が、許容値‘Ｔ’内にあるよう近づくにつれて、距離測度関数ｄｉｓｔ（Ｓｉ）は、オーバーラップについての視覚的に識別可能なインジケータが幾何形状の境界領域内に収まるよう幾何形状により近づくことを表すために使用され得る値を生成するために使用され得る。例えば、これは、オーバーラップについての視覚的に識別可能なインジケータがクライアントデバイス１１５のユーザインターフェイス上でますます透明になることに形を変えてよい。
【０１０５】
いくつかの実施形態において、画像認識アプリケーション１０３は、画像間でほとんどチルトが起こることなしに、関心のある対象の第１の捕捉された画像の後に、次の捕捉された画像を受け取る。図１８において、画像認識アプリケーション１０３は、ユーザインターフェイスモジュール２１１に、張り合わされた画像１８１０及び個々の画像を示すためのボタン１８０３をユーザに提示するユーザインターフェイス１８００を生成するように指示する。ほとんどチルトなしで重なり合っている画像は、高解像度の直線状のパノラマ画像を生成するために、スティッチングアルゴリズムによって期待されてよい。
【０１０６】
いくつかの実施形態において、画像認識アプリケーション１０３は、向きの３軸のいずれかにおけるクライアントデバイス１１５の傾きを含むジャイロデータを（例えば、オリエンテーションセンサ２４５から）受け取る。例えば、Ｘ軸における回転の角度はピッチパラメータによって定義され、Ｚ軸における回転の角度はロールパラメータによって定義される。ジャイロデータは、クライアントデバイス１１５内に含まれるジャイロセンサのようなオリエンテーションセンサ２４５によって生成され得る。ジャイロセンサは、Ｘ軸及びＺ軸に沿った回転の角度を測定してよい。画像認識アプリケーション１０３は、Ｘ軸及びＺ軸についてはジャイロデータに基づき、Ｙ軸についてはヨー計算モジュール２１３を用いて計算上、関心のある対象を指し示したときにクライアントデバイス１１５が向きの軸の１つにおいて傾いているかどうかを判定する。ユーザインターフェイスモジュール２１１及びヨー・ユーザインターフェイスモジュール２１７は、軸の１つ以上におけるクライアントデバイス１１５の傾きに応答して、クライアントデバイス１１５のユーザインターフェイス上でチルトについての視覚的に識別可能なインジケータを生成する。ユーザインターフェイス上でのチルトについての視覚的に識別可能なインジケータの位置は、３軸のいずれかにおいてクライアントデバイス１１５と関連するチルトが存在する場合にフィードバックを通じて示すことができるように、クライアントデバイス１１５の動きと結合されてよい。
【０１０７】
図１９に示されるように、グラフィカル描写１９００は、３つの軸の夫々に沿ったチルトエラーを夫々表示する３つの異なったユーザインターフェイス１９０７、１９０９及び１９１１を集合的に表す。Ｘ軸に沿ったピッチエラー１９０１は、大きい方の同心円１９０６の中に存在する水平アイリッドインジケータ１９０８として、ユーザインターフェイス１９０７において示されてよい。ピッチエラー１９０１が増大するにつれて、大きい方の同心円１９０６のより広い部分が、水平アイリッドインジケータ１９０８によって覆われる。ピッチエラー１９０１が低減するにつれて、水平アイリッドインジケータ１９０８によって覆われる大きい方の同心円１９０６の部分は、より小さくなる。Ｙ軸に沿ったヨーエラー１９０３は、小さい方の同心円１９１２の中に存在する垂直アイリッドインジケータ１９１０として、ユーザインターフェイス１９０９において示されてよい。ヨーエラー１９０３が増大するにつれて、小さい方の同心円１９１２のより広い部分が、垂直アイリッドインジケータ１９１０によって覆われる。ヨーエラー１９０３が低減するにつれて、垂直アイリッドインジケータ１９１０によって覆われる小さい方の同心円１９１２の部分は、より小さくなる。Ｚ軸に沿ったロールエラー１９０５は、大きい方の同心円１９１６の外にあるボールインジケータ１９１３、及び矢印１９１５として、ユーザインターフェイス１９１１において示されてよい。ロールエラー１９０５が増大するにつれて、ボールインジケータ１９１３は、大きい方の同心円１９１６の外側に沿って動き、矢印１９１５は、ボールインジケータ１９１３を追跡し続ける。ロールエラー１９０５が低減するにつれて、ボールインジケータ１９１３は、大きい方の同心円１９１６の頂部の方へと大きい方の同心円１９１６の外側に沿って動き、矢印１９１５は、ボールインジケータ１９１３を追跡し続ける。これらの異なったユーザインターフェイスの３つ全てが、ユーザインターフェイスにおいて別々に、あるいは、同じユーザインターフェイスにおいて一緒に種々の組み合わせにおいて、提示されてよい。更には、異なるインターフェイス・コンポーネントが、ヨー、ピッチ及びロールのいずれかを示すために代替的に使用されてよいことが理解されるべきである。
【０１０８】
図２０の例で示されるように、グラフィカル描写２０００は、様々な程度のヨーエラーをクライアントデバイス１１５が如何にして導入するのかを表す。製品棚の画像は、画像認識アプリケーション１０３によって受け取られる。第１の画像２００１、第２の画像２００３、第３の画像２００５及び第４の画像２００７は、チルトエラーの程度が異なっており、全てが画像認識アプリケーション１０３によって受け取られる。画像２００１、２００３、２００５及び２０００７が撮影し直されないならば、スティッチングモジュール２０９が第１の画像２００１、第２の画像２００３、第３の画像２００５及び第４の画像２００７を高解像度の直線状のパノラマ画像へとつなぎ合わせる場合に、結果として得られる張り合わせ画像には様々な程度の歪みが導入される。オリエンテーションセンサ２４５、クライアントデバイス１１５にある内蔵加速度計又は他のセンサの形をとってよく、ピッチ及びロールのエラーを検出することができ、オリエンテーションセンサ２４５の出力は、画像がユーザインターフェイスモジュール２１１で提示される前に、ピッチ及びロールのエラーを補正するために使用され得る。
【０１０９】
図２１の例で示されるように、グラフィカル描写２１００は、ライン検出を実施する方法を表す。ヨー計算モジュール２１３は、棚９０３の画像を解析して、ライン２１０１のサブセットを検出する。ヨー計算モジュール２１３は、少なくとも２つの検出されたラインを必要とする。この例では、上ライン２１０３及び下ライン２１０７があれば十分であり、中央のライン２１０５は、検出されるものの、ヨー計算には不要である。ライン２１０１は、如何なる方法によっても検出されてよく、方法の一例はハフ（Hough）変換である。画像において、上ライン２１０３及び下ライン２１０７は、たとえ元の場面において２つのラインが平行であるとしても、ヨーエラーによる歪みのために非平行なラインである。ヨー計算モジュール２１３において、点Ａ２１０９でのライン２１０３及び２１０７の間の高さが検出され、点Ｂ２１１１でのライン２１０３及び２１０７の間の高さが特定される。ライン２１０３及び２１０７は、夫々のラインの開始点及び終了点を特定することと、又は夫々のラインについての点及びこう配の特定によって、パラメータ化されてよい。これより更に図２２を参照すると、ライン２１０３、２１０５及び２１０７の束は、消失点２２０１を特定するよう、画像を越えて延伸されて示されている。消失点２２０１は、消失点２２０１に基づきデスキュー変換を計算することによる画像の歪み補正のために歪み補正モジュール２１５へ送られてよい。デスキュー変換によれば、歪み補正モジュール２１５は、デスキュー変換により画像の歪み補正を実施するために画像処理を使用してよい。代替の実施形態では、消失点２２０１は、他の目的のためにデータストレージ２４３にセーブされてよい。
【０１１０】
図２３の例で示されるように、グラフィカル描写２３００は、ライン検出及びパラメータ化が計算された後に距離を計算する図を表す。クライアントデバイス１１５で、棚９０３の画像が撮影される。レンズ面２３０１は、レンズの方向に基づき特定され、点Ａ及び点Ｂは、図２２を参照して上述されたライン検出及びパラメータ化を用いて特定される。クライアントデバイス１１５の地点Ｃは、ＣとＡとの間の長さＬＣＡ２３１５を特定するために使用され得る。クライアントデバイス（地点Ｃ）は、点Ｃと点Ｂとの間の長さＬＣＢ２３１７を特定するために使用され得る。点Ｄ及び点Ｅは、各々の長さＬＤＡ２３０３及びＬＥＢ２３０５を有する。長さＬＤＡ２３０３及びＬＥＢ２３０５は、図２１の点Ａ及び点Ｂでの高さに反比例する。相対的長さＬＣＡ２３１５及びＬＣＢ２３１７は、ＬＤＡ２３０３及びＬＥＢ２３０５と同じである。ＬＣＡ２３１５の値は、ＬＣＢ２３１７を１に正規化することによって（ＬＣＢ＝１）、特定され得る。次いで、ＬＣＡ２３１５は、図２１の点Ｂの高さで点Ａの高さを割ったものに等しい（ＬＣＡ＝ＨＢ／ＨＡ）。
【０１１１】
図２４の方法で示されるように、グラフィカル描写２４００は、ヨー角を決定する一実施形態を表す。点Ｃにあるクライアントデバイス１１５から点Ａ及び点Ｂまでの長さは、図２３を参照して上述されたように特定された。それらの特定された長さによれば、長さＬＡＢが決定されてよい。角度Ａ（θＡ）２４０７は、棚９０３と、点Ｃから点Ａの間のラインとの間の角度である。角度Ｂ（θＢ）２４０９は、棚９０３と、点Ｃから点Ｂの間のラインとの間の角度である。角度Ｄ（θＤ）２４０１は、棚９０３から点Ｃへと延在する垂線２４１１と、点Ｃから点Ａまでのラインとの間の角度である。視野角（θＦＯＶ）２４０３は、点Ｃから点Ａまでのラインと、点Ｃから点Ｂまでのラインとの間の角度である。ヨー角（θｙａｗ）は、垂線２４１１と、点Ｃから、点Ａから点Ｂの間の中点へと延在する中点ライン２４１３との間の角度である。三角法を使用することによって、ヨー角（θｙａｗ）の値は決定されてよい。余弦の法則によって、点Ａから点Ｂまでの長さ（ＬＡＢ）は、式：ＬＡＢ＝ｓｑｒｔ［ＬＣＡ２＋ＬＣＢ２＋２ＬＣＡＬＣＢｃｏｓθＦＯＶ］において示されるように、長さＬＣＡ２３１５の二乗と、長さＬＣＢ２３１７の二乗と、２、ＬＣＡ２３１５、ＬＣＢ２３１７及び視野角（θＦＯＶ）２４０３の余弦を掛け合わせたものとを足し合わせて得られたものの平方根に等しい。正弦の法則によって、式：ｓｉｎθＡ／ＬＣＢ＝ｓｉｎθＦＯＶ／ＬＡＢにおいて示されるように、クライアントデバイス１１５から点Ｂまでの長さ（ＬＣＢ）によって角度Ａ（θＡ）２０４７の正弦を割ったものは、点Ａから点Ｂまでの距離（ＬＡＢ）によって視野角（θＦＯＶ）２４０３の正弦を割ったものに等しい。その式を操作することで、式θＡ＝ａｒｃｓｉｎ［（ＬＣＢ／ＬＡＢ）ｓｉｎθＦＯＶ］が得られる。それらの計算及び代入を行った後、角度Ｄ（θＤ）２４０１は、式：θＤ＝（９０°−θＡ）において示されるように、９０度から角度Ａ（θＡ）２４０７を減じたものに等しい。従って、ヨー角（θｙａｗ）２４０５は、式：θｙａｗ＝θＤ−（θＦＯＶ／２．０）において示されるように、角度Ｄ（θＤ）２４０１から、視野角（θＦＯＶ）２４０３を２で割ったものを減じて得られる結果に等しくなり得る。図２４は、ヨー角を決定する数式の一例となる実施形態を表す。明らかなように、他の三角関数及び数学的手法が、ヨー角を決定するための他の実施形態で使用されてよい。
【０１１２】
図２５Ａ乃至Ｄの例で示されるように、グラフィカル描写は、ヨー補正のための、例となるユーザインターフェイスの実施形態を表す。図２５Ａにおいて、グラフィカル描写は、ヨーエラー・フィードバックがないユーザインターフェイス２５００を表す。ユーザインターフェイス２５００は、ヨーが存在する場合に垂直アイリッドインジケータが現れ得る小さい方の同心円２５０１を表示する。小さい方の同心円２５０１は垂直アイリッドインジケータデータ２５０３を表示しないので、ユーザインターフェイス２５００ではヨーが検出されていない。
【０１１３】
図２５Ｂにおいて、ユーザインターフェイス２５０５は、小さい方の同心円２５０１の中に、クライアントデバイス１１５がＹ軸上で中心よりわずかに左方向に角度をつけられていることをユーザに示す垂直アイリッドインジケータ２５０７によって覆われた小さい部分を示すことによって、小さなヨーエラーのフィードバックを表す。ユーザが、クライアントデバイス１１５をＹ軸に沿って中心に戻すことによって、このヨーエラーを補正すると、垂直アイリッドインジケータ２５０７は減り、ユーザインターフェイスは図２５Ａに示される状態に戻る。いくつかの実施形態において、陰影は、図２５Ｂ乃至２５Ｄに表されるように右から左ではなく、左から右へ増大してよい点が理解されるべきである。更には、色、クロスハッチング、などのような、陰影以外の他の視覚的なインジケータが、ヨーエラーの量を示すために垂直アイリッドインジケータ２５０７において使用されてよい。
【０１１４】
図２５Ｃにおいて、ユーザインターフェイス２５０９は、小さい方の同心円２５０１の中に、クライアントデバイス１１５がＹ軸上で中心より左方向に角度をつけられていることをユーザに示す垂直アイリッドインジケータ２５１１によって覆われた中程度の部分を示すことによって、中程度のヨーエラーのフィードバックを示す。ユーザが、クライアントデバイス１１５をＹ軸に沿って中心に戻すことによって、このヨーエラーを補正すると、垂直アイリッドインジケータ２５１１は減り、ユーザインターフェイスは図２５Ａに示される状態に戻る。
【０１１５】
図２５Ｄにおいて、ユーザインターフェイス２５１３は、小さい方の同心円２５０１の中に、クライアントデバイス１１５がＹ軸上で中心より左方向に大幅に角度をつけられていることをユーザに示す垂直アイリッドインジケータ２５１５によって覆われた大きい部分を示すことによって、大きなヨーエラーのフィードバックを表す。ユーザが、クライアントデバイス１１５をＹ軸に沿って中心に戻すことによって、このヨーエラーを補正すると、垂直アイリッドインジケータ２５１５は減り、ユーザインターフェイスは図２５Ａに示される状態に戻る。垂直アイリッドインジケータ２５１５は、左又は右のいずれか一方の方向において、計算されたヨー角に基づき、小さい方の同心円２５０１の如何なる部分も覆ってよく、図２５Ａ乃至Ｄにおいて論じられている垂直アイリッドインジケータの３つの例に制限されない。
【０１１６】
図２６Ａ乃至２６Ｅの例で示されるように、グラフィカル描写は、画像をプレビューし、プレビューされた画像が前の画像と張り合わされる前に、そのプレビューされた画像におけるヨーエラーを表示する実施形態を表す。グラフィカル描写において、背景は、生成されるパノラマ画像における前の画像の例を表すよう張り合わされており、グラフィカルユーザインターフェイス２６０１は、前面の画像の上にヨーエラーのためのユーザインターフェイスを伴って最前面に現れている。図２６Ａにおいて、グラフィカル描写２６００は、小さい方の同心円２６０２に垂直アイリッドインジケータ２６０３が存在していない状態によって示されるように、ヨーエラーが検出されていないユーザインターフェイスを表す。例となるユーザインターフェイスは、クライアントデバイス１１５のユーザが如何なるヨーエラーもなしで張り合わせに必要な次の画像を正確に捕捉するよう次の画像を並べるのを助けるボールインジケータ２６０５を更に含む。２６０４で、ｙ軸が表示されており、その周りをクライアントデバイス１１５は回転してヨーエラーを生じさせ得る。上述されたように、いくつかの実施形態において、ヨーエラーを示す陰影は、図２６Ｂ乃至２６Ｅに表されるように右から左ではなく、左から右へ増大してよい点が理解されるべきである。更には、色、クロスハッチング、などのような、陰影以外の他の視覚的なインジケータが、ヨーエラーの量を示すために垂直アイリッドインジケータ２６０３において使用されてよい。
【０１１７】
図２６Ｂにおいて、グラフィカル描写２６０６は、小さなヨーエラーが検出されたユーザインターフェイスを表す。クライアントデバイス１１５は、Ｙ軸２６０４に沿って中心から左方向に角度をつけられており、小さい方の同心円２６０２の小さい部分を覆う垂直アイリッドインジケータ２６０９が存在する。ユーザが、Ｙ軸２６０４の中心に向かって逆方向にクライアントデバイス１１５を回転させて、ヨーエラーを取り除くと、垂直アイリッドインジケータ２６０９によって覆われる小さい方の同心円２６０２の部分は、ヨーエラーが減少していることをユーザに示すように小さくなる。
【０１１８】
図２６Ｃにおいて、グラフィカル描写２６１１は、大きなヨーエラーが検出されたユーザインターフェイスを表す。クライアントデバイス１１５は、Ｙ軸２６０４に沿って大幅に中心から左方向に角度をつけられており、小さい方の同心円２６０２の大きい部分を覆う垂直アイリッドインジケータ２６１３が存在する。ユーザが、Ｙ軸２６０４の中心に向かって逆方向にクライアントデバイス１１５を回転させて、ヨーエラーを取り除くと、垂直アイリッドインジケータ２６１３によって覆われる小さい方の同心円２６０２の部分は、ヨーエラーが減少していることをユーザに示すように小さくなる。
【０１１９】
図２６Ｄにおいて、グラフィカル描写２６１５は、小さなヨーエラーが検出されたユーザインターフェイスを表す。クライアントデバイス１１５は、Ｙ軸２６０４に沿って中心から右方向に角度をつけられており、小さい方の同心円２６０２の小さい部分を覆う垂直アイリッドインジケータ２６１７が存在する。ユーザが、Ｙ軸２６０４の中心に向かって逆方向にクライアントデバイス１１５を回転させて、ヨーエラーを取り除くと、垂直アイリッドインジケータ２６１７によって覆われる小さい方の同心円２６０２の部分は、ヨーエラーが減少していることをユーザに示すように小さくなる。
【０１２０】
図２６Ｅにおいて、グラフィカル描写２６１９は、大きなヨーエラーが検出されたユーザインターフェイスを表す。クライアントデバイス１１５は、Ｙ軸２６０４に沿って大幅に中心から右方向に角度をつけられており、小さい方の同心円２６０２の大きい部分を覆う垂直アイリッドインジケータ２６２１が存在する。ユーザが、Ｙ軸２６０４の中心に向かって逆方向にクライアントデバイス１１５を回転させて、ヨーエラーを取り除くと、垂直アイリッドインジケータ２６２１によって覆われる小さい方の同心円２６０２の部分は、ヨーエラーが減少していることをユーザに示すように小さくなる。
【０１２１】
図２７の例で示されるように、グラフィカル描写２７００は、ユーザへのフィードバックのためにピッチエラーを表示するユーザインターフェイスを表す。ユーザインターフェイスにおいて、大きい方の同心円が存在し、そこに、クライアントデバイス１１５のユーザにピッチエラーを示すよう、水平アイリッドインジケータが存在してよい。ユーザインターフェイス２７０１は、水平アイリッドインジケータ２７０５が存在せず、ユーザに、ピッチエラーが許容レベルを下回っていることを示す。ボールインジケータ２７０３も存在し、ユーザがパノラマ画像へと張り合わせるための次の画像を撮影するよう誘導する。ユーザインターフェイス２７０７の第２の例では、クライアントデバイス１１５がＸ軸から下に角度をつけられている場合に、少量のピッチエラーが検出され、大きい方の同心円の小さい部分が、ピッチエラーが存在することをクライアントデバイス１１５のユーザに示すよう水平アイリッドインジケータ２７０９によって覆われている。ユーザがＺ軸から上に角度をつけてクライアントデバイスを傾けて、ピッチエラーを低減するにつれて、水平アイリッドインジケータは、覆われている大きい方の同心円の部分を減じてよい。ユーザインターフェイス２７１１の第３の例では、クライアントデバイス１１５がＸ軸から下に角度をつけられている場合に、多量のピッチエラーが検出され、大きい方の同心円の大きい部分が、ピッチエラーが存在することをクライアントデバイス１１５のユーザに示すよう水平アイリッドインジケータ２７１３によって覆われている。ユーザがＺ軸から上に角度をつけてクライアントデバイスを傾けて、ピッチエラーを低減するにつれて、水平アイリッドインジケータは、覆われている大きい方の同心円の部分を減じてよい。ピッチエラーが逸脱するにつれて、画像の直角度は低減し、画像の部分はピッチエラーに基づき歪められる。ピッチエラーが低減されない場合には、それらの歪んだ画像は、張り合わされる場合に、歪んだパノラマ画像を生じさせる。水平アイリッドインジケータ２７０９は、Ｘ軸に沿って上又は下のいずれかの方向において、ピッチ角に基づき、大きい方の同心円の如何なる部分も覆ってよく、図２７で論じられている水平アイリッドインジケータ２７０９の例に制限されない。
【０１２２】
図２８において、グラフィカル描写２８００は、ヨー、ピッチ及びロールインジケータのためのインジケータを含み得る、例となるユーザインターフェイスを表す。垂直アイリッドインジケータ２８０１は、ヨーエラーがプレビュー画像において検出されていることをユーザに示すよう、小さい方の同心円２８０７の中に存在してよい。ユーザがヨーエラーを低減するにつれて、垂直アイリッドインジケータ２８０１が覆う小さい方の同心円２８０７の部分は、より小さくなり、ユーザがヨーエラーを増大させるにつれて、垂直アイリッドインジケータ２８０１が覆う小さい方の同心円２８０７の部分は、より大きくなる。触覚フィードバック（図示せず。）もユーザインターフェイスに組み込まれてよく、それにより、ヨーエラーが検出される場合に、クライアントデバイス１１５は、検出されたエラーを、トーン、振動、又は他の触覚的なインジケーション手段を通じてユーザに示してよい。代替的に、触覚フィードバックは、ヨーエラーが閾値を下回る場合をユーザに示して、ユーザが画像を捕捉することができることを知らせてよい。水平アイリッドインジケータ２８０５は、ピッチエラーがプレビュー画像において検出されていることをユーザに示すよう、大きい方の同心円２８０９の中に存在してよい。ユーザがピッチエラーを低減するにつれて、水平アイリッドインジケータ２８０５が覆う大きい方の同心円２８０９の部分は、より小さくなり、ユーザがピッチエラーを増大させるにつれて、水平アイリッドインジケータ２８０５が覆う大きい方の同心円２８０９の部分は、より大きくなる。触覚フィードバック（図示せず。）もユーザインターフェイスに組み込まれてよく、それにより、ピッチエラーが検出される場合に、クライアントデバイス１１５は、検出されたエラーを、トーン、振動、又は他の触覚的なインジケーション手段を通じてユーザに示してよい。代替的に、触覚フィードバックは、ピッチエラーが閾値を下回る場合をユーザに示して、ユーザが画像を捕捉することができることを知らせてよい。ボール及び矢印インジケータ２８０３は、ロールエラーを示すよう、且つ、次のプレビュー画像を捕捉するためのガイドとして、ユーザインターフェイスにおいて存在してよい。ロールエラーが増大するにつれて、ボール及び矢印インジケータ２８０３は、ロールエラーの増大を示すよう移動し、ユーザに、大きい方の同心円の頂部の位置へボール及び矢印を動かすよう警告してよい。代替的に、ボールインジケータ２８０３は、張り合わせのために一連の画像における次の画像を如何にしてアライメントすべきかのインジケータであってよい。ユーザがボールインジケータ２８０３の方へと小さい方の同心円２８０７を動かす場合に、張り合わせの次の画像に必要な画像、及びユーザが捕捉する実際の画像は、同じである。いくつかの実施形態において、水平ラインインジケータ２８１１は、ロールエラーを示すようユーザインターフェイスにおいて存在してよい。ロールエラーがある方向において増大するにつれて、水平ラインインジケータ２８１１は、小さい方の同心円２８０７の中心の周りを回転して、ロールエラーが低減されるべきことをユーザに示す。ロールエラーが低減するにつれて、水平ラインインジケータ２８１１は、図２８に示される水平位置の方へと逆に回転する。この例となるユーザインターフェイス２８００において、３つ全てのインジケータは、対象デバイスの画面の中心近くに存在する。３つ全てのインジケータを中心近くに組み入れることによって、ユーザは、パノラマ合成のために一連の画像における次の画像を捕捉するようプレビュー画像をアライメントする際に、より容易にフィードバックを受ける。ユーザがインジケータのフィードバックに基づき調整することが可能である場合に３つ全てのインジケータを組み入れることによって、ヨー、ピッチ又はロールエラーが低減された、張り合わせのための、より高い品質の画像が捕捉され、より高い品質のパノラマ画像を得ることができる。
【０１２３】
いくつかの実施形態において、スティッチングモジュール２０９は、単一の直線状のパノラマ画像を張り合わせるために、オーバーラップ情報とともに、捕捉された画像の組を認識サーバ１０１へ送る。いくつかの実施形態において、スティッチングモジュール２０９は、捕捉された画像における夫々の個々の画像の抽出された特徴を、認識のための電子データベーステーブルに格納されている特徴と比較する。スティッチングモジュール２０９は、例えば、個々の画像において製品を識別し、そのような情報を、捕捉された画像の組を単一の直線状のパノラマ画像へと張り合わせるために、オーバーラップ情報と組み合わせて使用する。
【０１２４】
カメラ姿勢におけるヨーエラーを推定するアルゴリズム及びヨー・ユーザインターフェイスの提示のためのシステム及び方法が記載されてきた。上記の記載において、説明を目的として、多くの具体的な詳細は、上記の技術の完全な理解を提供するために示されている。なお、当業者に明らかなように、技術はそれらの具体的な詳細によらずとも実施され得る。他の事例では、構造及びデバイスは、記載を不明りょうにしないように、且つ、理解の容易のために、ブロック図形式で示される。例えば、技術は、主としてソフトウェア及び特定のハードウェアを参照して先に一実施形態において記載される。なお、本発明は、データ及びコマンドを受信し、サービスを提供する如何なる周辺機器の部分としても情報を提示することができる如何なるタイプのコンピューティングシステムにも適用される。
【０１２５】
「一実施形態」又は「実施形態」との明細書中の言及は、実施形態に関連して記載される特定の機構、構造、又は特性が少なくとも１つの実施形態において含まれることを意味する。明細書中の様々な箇所における「一実施形態において」との文言の出現は、必ずしも全てが同じ実施形態に言及しているわけではない。
【０１２６】
上記の詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する動作のアルゴリズム及びシンボル表現に関して与えられている。それらのアルゴリズム的記載及び表現は、いくつかの環境下で、データ処理分野において通常の知識を有する者（すなわち、当業者）に彼らの作業の内容を伝えるよう、当業者によって使用される。アルゴリズムは、ここでは、且つ、一般的に、所望の結果をもたらすステップの自己矛盾のないシーケンスであると考えられている。ステップは、物理量の物理的操作を必要とするものである。通常、必ずしもではないが、それらの量は、記憶され、転送され、結合され、比較され、且つ、別なふうに操作されることが可能な電気的又は磁気的信号の形をとる。主に共通使用を理由として、それらの信号をビット、値、エレメント、シンボル、キャラクタ、ターム、数、又は同様のものと呼ぶことが、時々都合がよいことが知られている。
【０１２７】
なお、それら及び同様の語の全ては、適切な物理量に関連すべきであり、それらの量に適用される簡便なラベルにすぎない点が留意されるべきである。以下の議論から明らかなように特段述べられない限りは、本明細書の全体にわたって、「処理する（processing）」、「計算する（computing）」、「計算する（calculating）」、「決定する（determining）」、「表示する（displaying）」、又は同様のもののような語を用いる議論は、コンピュータシステム内のレジスタ及びメモリ内で物理（電子）量として表されているデータを操作して、コンピュータシステムのメモリ若しくはレジスタ又は他のそのような情報ストレージ、送信若しくは表示デバイス内で物理量として同様に表されている他のデータへと変換する、コンピュータシステム又は同様の電子コンピュータデバイスの動作及びプロセスに言及することが理解される。
【０１２８】
技術は、ここでは、動作を実施する装置にも関係がある。この装置は、必要とされる目的のために特に構成されてよく、あるいは、それは、コンピュータに記憶されているコンピュータプログラムによって選択的に作動又は再構成される汎用のコンピュータを有してよい。そのようなコンピュータプログラムは、制限なしに、夫々がコンピュータシステムバスへ結合されている、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ、及び磁気ディスクを含むあらゆるタイプのディスク、リード・オンリー・メモリ（ＲＯＭ；read-only  memory）、ランダム・アクセス・メモリ（ＲＡＭ；random  access  memory）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気又は光学式カード、不揮発性メモリを備えたＵＳＢキーを含むフラッシュメモリ、あるいは、電子命令を記憶するのに適したあらゆるタイプの媒体のような、コンピュータ可読記憶媒体において記憶されてよい。
【０１２９】
いくつかの実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、又はハードウェア及びソフトウェアの両方の要素を含む実施形態の形をとることができる。一実施形態はソフトウェアにおいて実施され、制限なしに、ファームウェア、常駐ソフトウェア、マイクロコード、などを含む。
【０１３０】
更には、いくつかの実施形態は、コンピュータ又はあらゆる命令実行システムによって又はそれに関連して使用されるプログラムコードを提供する、コンピュータが使用可能な又はコンピュータが読み出し可能な媒体からアクセス可能なコンピュータプログラム製品の形をとることができる。この記載のために、コンピュータが使用可能な又はコンピュータが読み出し可能な媒体は、命令実行システム、装置、又はデバイスによって又はそれに関連して使用されるプログラムを含み、記憶し、通信し、伝搬し、又は転送することができる如何なる装置であることもできる。
【０１３１】
プログラムコードを記憶及び／又は実行するのに適したデータ処理システムは、メモリ要素へ直接に又はシステムバスを通じて間接的に結合されている少なくとも１つのプロセッサを含むことができる。メモリ要素は、プログラムコードの実際の実行中に用いられるローカルメモリと、バルクストレージと、コードが実行中にバルクストレージから取り出されるべき回数を減らすために少なくとも一部のプログラムコードの一時記憶を提供するキャッシュメモリとを含むことができる。
【０１３２】
入力／出力又はＩ／Ｏデバイス（制限なしに、キーボード、ディスプレイ、ポインティングデバイス、などを含む。）は、直接に、あるいは、介在するＩ／Ｏコントローラを通じて、システムへ結合され得る。
【０１３３】
ネットワークアダプタは、データ処理システムが、介在する私的な又は公衆のネットワークを通じて他のデータ処理システム又は遠隔のプリンタ若しくは記憶デバイスへ結合されるようになることを可能にするよう、システムへ更に結合されてよい。モデム、ケーブルモデム及びイーサネット（登録商標）カードは、ネットワークアダプタの現在利用可能なタイプのほんのいくつかである。
【０１３４】
最後に、ここで与えられているアルゴリズム及び表示は、如何なる特定のコンピュータ又は他の装置にも本質的に関係がない。様々な汎用のシステムは、ここでの教示に従ってプログラムとともに使用されてよく、あるいは、より特殊化された装置を、必要とされる方法ステップを実施するよう構成することが、都合がよいことがある。様々なそれらのシステムの必要とされる構造は、以下の記載から明らかである。加えて、技術は、如何なる特定のプログラミング言語を参照しても記述されない。明らかなように、様々なプログラミング言語が、ここで記載される様々な実施形態の教示を実施するために使用されてよい。
【０１３５】
実施形態の前述の記載は、実例及び説明のために与えられてきた。包括的であること、又は明細書をまさに開示されている形態へ制限することは、意図されない。上記の教示を鑑みて、多くの変更及び変形が可能である。実施形態の適用範囲は、この詳細な説明によってではなく、むしろ本願の特許請求の範囲によって、制限されることが意図される。当業者によって理解されるように、例は、その主旨又は本質的な特性から外れることなしに、他の具体的な形態において具現されてよい。同様に、モジュール、ルーチン、機構、属性、メソッドロジ、及び他の態様の特定のネーミング及び区分は、強制的又は有意義ではなく、説明又はその特徴を実施するメカニズムは、種々の名称、区分及び／又は形態を有してよい。更には、当業者に明らかなように、本明細書のモジュール、ルーチン、機構、属性、メソッドロジ及び他の態様は、ソフトウェア、ハードウェア、ファームウェア、又はそれら３つの如何なる組み合わせとしても、実装され得る。また、本明細書のコンポーネント（その例はモジュールである。）がソフトウェアとして実装されようとも、コンポーネントは、スタンドアローンのプログラムとして、より大きいプログラムの部分として、複数の別個のプログラムとして、静的若しくは動的にリンクされたライブラリとして、カーネル・ローダブル・モジュールとして、デバイスドライバとして、及び／又はコンピュータプログラミングの分野において通常の知識を有する者に現在又は将来知られているありとあらゆる他の方法において、実装され得る。加えて、本明細書は、如何なる特定のプログラミング言語にある実施形態にも、あるいは、如何なる特定のオペレーティングシステム若しくは環境にある実施形態にも決して制限されない。然るに、本開示は、以下の特許請求の範囲で示される本明細書の適用範囲の例示であるよう意図され、制限ではない。
【０１３６】
［関連出願の相互参照］
本願は、合衆国法典第３５巻第１１９条の下で、２０１５年９月３０日付けで出願された、“Camera  Pose  Yaw  Error  Determination  and  Use  in  a  Yaw  User  Interface”と題された米国特許仮出願第６２／２３４８０４号に基づく優先権を主張するものである。なお、先の米国特許出願は、その全文を参照により本願に援用される。
【符号の説明】
【０１３７】
１００                        システム
１０１                        認識サーバ
１０３ａ，１０３ｂ            画像認識アプリケーション
１１５ａ，１１５ｎ            クライアントデバイス
２００                        コンピュータデバイス
２０１                        コントローラ
２０３                        特徴抽出モジュール
２０５                        アライメントモジュール
２０７                        ユーザガイダンスモジュール
２０９                        スティッチングモジュール
２１１                        ユーザインターフェイスモジュール
２１３                        ヨー計算モジュール
２１５                        歪み補正モジュール
２１７                        ヨー・ユーザインターフェイスモジュール
２１９                        触覚フィードバックモジュール
２３５                        プロセッサ
２３７                        メモリ
２３９                        ディスプレイデバイス
２４１                        通信ユニット
２４３                        データストレージ
２４５                        オリエンテーションセンサ
２４７                        捕捉デバイス
２４９                        出力デバイス
９０１                        ユーザ
９０３                        棚
１００１                      Ｙ軸
１００３                      Ｘ軸
１００５                      Ｚ軸
１１０１                      ｙ方向
１１０３                      ｘ方向
１１０５                      ｚ方向
１２０１                      フレーム
１２０２                      コーナーマーカ
１２０３，１３０３，１４１２  ターゲットアウトライン
１２０４                      同心円
１２０，１４０２              プレビュー画像
１３０１，１４１０            ボール
１３０９，１３１３            チルトインジケータ
１９０８，２８０５            水平アイリッドインジケータ
１９１０，２８０１            垂直アイリッドインジケータ
１９１３，２８０３            ボールインジケータ
２１０３，２１０５，２１０７  ライン
２２０１                      消失点
２８１１                      水平ラインインジケータ
【図１】
0006330879.tif 000002
【図２】
0006330879.tif 000003
【図３】
0006330879.tif 000004
【図４Ａ】
0006330879.tif 000005
【図４Ｂ】
0006330879.tif 000006
【図５Ａ】
0006330879.tif 000007
【図５Ｂ】
0006330879.tif 000008
【図６】
0006330879.tif 000009
【図７】
0006330879.tif 000010
【図８】
0006330879.tif 000011
【図９】
0006330879.tif 000012
【図１０】
0006330879.tif 000013
【図１１】
0006330879.tif 000014
【図１２】
0006330879.tif 000015
【図１３】
0006330879.tif 000016
【図１４】
0006330879.tif 000017
【図１５】
0006330879.tif 000018
【図１６】
0006330879.tif 000019
【図１７】
0006330879.tif 000020
【図１８】
0006330879.tif 000021
【図１９】
0006330879.tif 000022
【図２０】
0006330879.tif 000023
【図２１】
0006330879.tif 000024
【図２２】
0006330879.tif 000025
【図２３】
0006330879.tif 000026
【図２４】
0006330879.tif 000027
【図２５Ａ】
0006330879.tif 000028
【図２５Ｂ】
0006330879.tif 000029
【図２５Ｃ】
0006330879.tif 000030
【図２５Ｄ】
0006330879.tif 000031
【図２６Ａ】
0006330879.tif 000032
【図２６Ｂ】
0006330879.tif 000033
【図２６Ｃ】
0006330879.tif 000034
【図２６Ｄ】
0006330879.tif 000035
【図２６Ｅ】
0006330879.tif 000036
【図２７】
0006330879.tif 000037
【図２８】
0006330879.tif 000038