(57)【要約】【課題】動いているモバイルカメラの動きの様子を検出してアプリケーションへのユーザー入力を特定するための方法を提供する。【解決手段】この方法は、装置に配置された画像センサーによって補足した画像にアクセスする段階と、捕捉した画像中に存在する静止した第１の特徴を識別する段階と、捕捉した画像中に存在する静止した第２の特徴を識別する段階と、捕捉した画像内での第１の特徴と第２の特徴との間の距離の変化に基づいて、装置の奥行き方向の動きの様子を検出する段階とを有する。第２の特徴は、第１の特徴とは異なるものであり、第１の特徴から離れた位置にある。奥行き方向は、第１の特徴および第２の特徴に対して近づいたり遠ざかったりする動きの方向である。【選択図】図６
2014241592.tif 000002
【特許請求の範囲】
【請求項１】
装置に配置された画像センサーによって捕捉した画像にアクセスする段階と、
前記装置に配置された前記画像センサーによって捕捉した前記画像中に存在する特徴群を識別する段階と、
識別した前記特徴群を複数の特徴セットに分ける段階と、
捕捉した前記画像内での第１の特徴と第２の特徴との間の距離の変化に基づいて、前記装置の奥行き方向の動きの様子を検出する段階と
を有し、
前記第１の特徴及び前記第２の特徴は、前記複数の特徴セットのうち、静止した特徴群からなる１つの特徴セットに含まれ、
前記静止した特徴群からなる１つの特徴セットは、捕捉した前記画像中の最大領域に広がる特徴群のセット及び／又は最も多い数の特徴を有する特徴群のセットであり、
前記第２の特徴は、前記第１の特徴とは異なるものであり、前記第１の特徴から離れた位置にあり、
前記奥行き方向は、前記第１の特徴および前記第２の特徴に対して近づいたり遠ざかったりする移動の方向であることを特徴とする方法。
【請求項２】
検出された前記装置の前記奥行き方向の動きの様子に基づいて、アプリケーションに対するユーザー入力を特定する段階をさらに有することを特徴とする請求項１に記載の方法。
【請求項３】
前記第１の特徴が、前記画像中の第１の物体、前記画像中の前記第１の物体の任意の部分、または、前記画像中の前記第１の物体の角または縁であることを特徴とする請求項１に記載の方法。
【請求項４】
前記第１の特徴または前記第２の特徴の物理的位置が変化しないことを特徴とする請求項１に記載の方法。
【請求項５】
検出された前記装置の前記奥行き方向の動きの様子に基づいて、アプリケーションに対するユーザー入力を特定する前記段階が、
検出された前記装置の前記奥行き方向の動きに対応した態様で、ユーザーインタフェースに映される物体の移動を制御する段階を含むことを特徴とする請求項２に記載の方法。
【請求項６】
前記装置の奥行き方向の動きの様子を検出する前記段階が、
前記装置の前記奥行き方向の動きの距離を算出する段階を含み、
検出された前記装置の前記奥行き方向の動きに対応した態様で、ユーザーインタフェースに映される物体の移動を制御する前記段階が、
前記ユーザーインタフェースに映される前記物体を、算出された前記装置の前記奥行き方向の動きの前記距離に対応した前記ユーザーインタフェース内の距離だけ方向付け、回転、またはナビゲートするように制御する段階をさらに含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記装置の奥行き方向の動きの様子を検出する前記段階が、
前記装置の平行移動量を算出する段階を含み、
検出された前記装置の前記奥行き方向の動きに対応した態様で、ユーザーインタフェースに映される物体の移動を制御する前記段階が、
前記ユーザーインタフェースに映される前記物体を、算出された前記装置の前記平行移動量に対応した態様で、前記ユーザーインタフェース内で方向付け、回転、またはナビゲートするように制御する段階をさらに含むことを特徴とする請求項５に記載の方法。
【請求項８】
前記アプリケーションがゲームアプリケーションであることを特徴とする請求項２に記載の方法。
【請求項９】
モバイル装置と、
前記モバイル装置に配置された画像センサーと、
少なくとも１つのプロセッサと
を具備し、
前記少なくとも１つのプロセッサは、
前記モバイル装置に配置された前記画像センサーによって捕捉した画像にアクセスする手順と、
前記モバイル装置に配置された前記画像センサーによって捕捉した前記画像中に存在する特徴群を識別する手順と、
識別した前記特徴群を複数の特徴セットに分ける手順と、
捕捉した前記画像内での第１の特徴と第２の特徴との間の距離の変化に基づいて、前記モバイル装置の奥行き方向の動きの様子を検出する手順と
を実行するように構成され、
前記第１の特徴及び前記第２の特徴は、前記複数の特徴セットのうち、静止した特徴群からなる１つの特徴セットに含まれ、
前記静止した特徴群からなる１つの特徴セットは、捕捉した前記画像中の最大領域に広がる特徴群のセット及び／又は最も多い数の特徴を有する特徴群のセットであり、
前記第２の特徴は、前記第１の特徴とは異なるものであり、前記第１の特徴から離れた位置にあり、
前記奥行き方向は、前記第１の特徴および前記第２の特徴に対して近づいたり遠ざかったりする移動の方向であることを特徴とするシステム。
【請求項１０】
前記少なくとも１つのプロセッサが、
検出された前記モバイル装置の前記奥行き方向の動きの様子に基づいて、アプリケーションに対するユーザー入力を特定する手順をさらに実行するように構成されることを特徴とする請求項９に記載のシステム。
【請求項１１】
検出された前記モバイル装置の前記奥行き方向の動きの様子に基づいて、アプリケーションに対するユーザー入力を特定する前記手順が、
検出された前記モバイル装置の前記奥行き方向の動きに対応する態様で、ユーザーインタフェースに映される物体の移動を制御する手順を含むことを特徴とする請求項１０に記載のシステム。
【請求項１２】
前記モバイル装置の奥行き方向の動きの様子を検出する前記手順が、
前記モバイル装置の前記奥行き方向の動きの距離を算出する手順を含み、
検出された前記モバイル装置の前記奥行き方向の動きに対応する態様で、ユーザーインタフェースに映される物体の移動を制御する前記手順が、
前記ユーザーインタフェースに映される前記物体を、算出された前記モバイル装置の前記奥行き方向の動きの前記距離に対応した前記ユーザーインタフェース内の距離だけ方向付け、回転、またはナビゲートするように制御する手順を含むことを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記モバイル装置の奥行き方向の動きの様子を検出する前記手順が、
前記モバイル装置の平行移動量を算出する手順を含み、
検出された前記モバイル装置の前記奥行き方向の動きに対応する態様で、ユーザーインタフェースに映される物体の移動を制御する前記手順が、
前記ユーザーインタフェースに映される前記物体を、算出された前記モバイル装置の前記平行移動量に対応した態様で、前記ユーザーインタフェース内で方向付け、回転、またはナビゲートするように制御する手順を含むことを特徴とする請求項１１に記載のシステム。
【請求項１４】
前記アプリケーションがゲームアプリケーションであることを特徴とする請求項１０に記載のシステム。
【請求項１５】
画像センサーと、
少なくとも１つのプロセッサと
を具備し、
前記少なくとも１つのプロセッサは、
前記画像センサーによって捕捉した画像にアクセスする手順と、
前記画像センサーによって捕捉した前記画像中に存在する特徴群を識別する手順と、
識別した前記特徴群を複数の特徴セットに分ける手順と、
前記画像センサーによって捕捉した前記画像内での第１の特徴および第２の特徴の位置を検出する手順と
アプリケーションに対する視覚的表示を含むユーザーインタフェースを提供する手順と、
前記画像センサーによって捕捉した前記画像内での前記第１の特徴および前記第２の特徴の検出された前記位置に基づいて、前記アプリケーションに対するユーザー入力を特定する手順と、
前記アプリケーションに対する特定された前記ユーザー入力に基づいて、前記ユーザーインタフェースを制御する手順と
を実行するように構成され、
前記第１の特徴及び前記第２の特徴は、前記複数の特徴セットのうち、静止した特徴群からなる１つの特徴セットに含まれ、
前記静止した特徴群からなる１つの特徴セットは、捕捉した前記画像中の最大領域に広がる特徴群のセット及び／又は最も多い数の特徴を有する特徴群のセットであり、
前記第２の特徴は、前記第１の特徴とは異なるものであり、前記第１の特徴から離れた位置にあり、
前記ユーザーインタフェースは、前記画像センサーまたは該画像センサーが配置された装置とは別個に存在することを特徴とするシステム。
【請求項１６】
前記少なくとも１つのプロセッサが、
無線通信を用いて、前記ユーザーインタフェースを制御する前記手順を実行するように構成されることを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記画像センサーが、モバイル装置に配置され、
前記ユーザーインタフェースが、前記画像センサーが配置された前記モバイル装置とは別個に存在することを特徴とする請求項１５に記載のシステム。
【請求項１８】
前記画像センサーによって捕捉した前記画像内での前記第１の特徴および前記第２の特徴の位置を検出する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第１の特徴と前記第２の特徴との相対位置を算出する手順を含み、
前記アプリケーションに対するユーザー入力を特定する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第１の特徴と前記第２の特徴との前記相対位置に基づいて、前記アプリケーションに対するユーザー入力を特定する手順を含むことを特徴とする請求項１５に記載のシステム。
【請求項１９】
前記画像センサーによって捕捉した前記画像内での前記第１の特徴および前記第２の特徴の位置を検出する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第１の特徴の位置の変化および前記画像センサーによって捕捉した前記画像内での前記第２の特徴の位置の変化を検出する手順を含み、
前記アプリケーションに対するユーザー入力を特定する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第１の特徴の位置の前記変化および前記画像センサーによって捕捉した前記画像内での前記第２の特徴の位置の前記変化に基づいて、前記アプリケーションに対するユーザー入力を特定する手順を含むことを特徴とする請求項１５に記載のシステム。
【請求項２０】
前記アプリケーションに対するユーザー入力を特定する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第１の特徴と前記第２の特徴との間の距離の変化に基づいて、システム自身の奥行き方向の動きの様子を検出し、検出されたシステム自身の前記奥行き方向の動きの様子に基づいて、前記アプリケーションに対するユーザー入力を特定する手順を含むことを特徴とする請求項１５に記載のシステム。
【請求項２１】
前記ユーザーインタフェースを制御する前記手順が、
前記アプリケーションに対する特定された前記ユーザー入力に基づいて、前記ユーザーインタフェースに映される物体の移動を制御する手順を含むことを特徴とする請求項１５に記載のシステム。
【請求項２２】
前記アプリケーションに対するユーザー入力を特定する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第１の特徴および前記第２の特徴の検出された前記位置に基づいて、システム自身の動きの距離を算出する手順を含み、
前記アプリケーションに対する特定された前記ユーザー入力に基づいて、前記ユーザーインタフェースに映される物体の移動を制御する前記手順が、
前記ユーザーインタフェースに映される前記物体を、算出されたシステム自身の動きの前記距離に対応した前記ユーザーインタフェース内での距離だけ動くように制御する手順を含むことを特徴とする請求項２１に記載のシステム。
【請求項２３】
前記アプリケーションに対するユーザー入力を特定する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第１の特徴および前記第２の特徴の検出された前記位置に基づいて、システム自身の平行移動量を算出する手順を含み、
前記アプリケーションに対する特定された前記ユーザー入力に基づいて、前記ユーザーインタフェースに映される物体の移動を制御する前記手順が、
前記ユーザーインタフェースに映される前記物体を、算出されたシステム自身の前記平行移動量に対応した態様で前記ユーザーインタフェース内を動くように制御する手順を含むことを特徴とする請求項２１に記載のシステム。
【請求項２４】
前記ユーザーインタフェースを制御する前記手順が、
前記アプリケーションの前記ユーザーインタフェースに映されるメニューオブジェクトに基づいて、メニューナビゲーション機能を制御する手順を含むことを特徴とする請求項１５に記載のシステム。
【請求項２５】
前記アプリケーションがゲームアプリケーションであることを特徴とする請求項１５に記載のシステム。
【請求項２６】
装置に配置された画像センサーによって捕捉した画像にアクセスするための手段と、
前記装置に配置された前記画像センサーによって捕捉した前記画像中に存在する特徴群を識別するための手段と、
識別した前記特徴群を複数の特徴セットに分けるための手段と、
捕捉した前記画像内での第１の特徴と第２の特徴との間の距離の変化に基づいて、前記装置の奥行き方向の動きの様子を検出するための手段と
を具備し、
前記第１の特徴及び前記第２の特徴は、前記複数の特徴セットのうち、静止した特徴群からなる１つの特徴セットに含まれ、
前記静止した特徴群からなる１つの特徴セットは、捕捉した前記画像中の最大領域に広がる特徴群のセット及び／又は最も多い数の特徴を有する特徴群のセットであり、
前記第２の特徴は、前記第１の特徴とは異なるものであり、前記第１の特徴から離れた位置にあり、
前記奥行き方向は、前記第１の特徴および前記第２の特徴に対して近づいたり遠ざかったりする移動の方向であることを特徴とする装置。
【請求項２７】
コンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記コンピュータプログラムは、
装置に配置された画像センサーによって捕捉した画像にアクセスするためのコード部と、
前記装置に配置された前記画像センサーによって捕捉した前記画像中に存在する特徴群を識別するためのコード部と、
識別した前記特徴群を複数の特徴セットに分けるためのコード部と、
捕捉した前記画像内での第１の特徴と第２の特徴との間の距離の変化に基づいて、前記装置の奥行き方向の動きの様子を検出するためのコード部と
を含み、
前記第１の特徴及び前記第２の特徴は、前記複数の特徴セットのうち、静止した特徴群からなる１つの特徴セットに含まれ、
前記静止した特徴群からなる１つの特徴セットは、捕捉した前記画像中の最大領域に広がる特徴群のセット及び／又は最も多い数の特徴を有する特徴群のセットであり、
前記第２の特徴は、前記第１の特徴とは異なるものであり、前記第１の特徴から離れた位置にあり、
前記奥行き方向は、前記第１の特徴および前記第２の特徴に対して近づいたり遠ざかったりする移動の方向であることを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は動きの推定に関する。
【背景技術】
【０００２】
デジタルカメラは画像のデジタル表現を捕捉する。デジタルカメラは、指定の期間に亘って複数の画像を捕捉するように構成されていることがある。デジタル画像を処理することは、一つの画像の特性を検出するためにその画像の各特徴を処理すること、または撮像している環境の特性または画像捕捉装置の特性を特定するために一連の画像の各特徴を処理することを含んでいることがある。オプティカルフローとして知られる処理では、画像の中の物体とその画像捕捉装置との間の相対的な動きを検出するために、一連の画像における物体の配置を比較することがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−０８１９０９号公報
【特許文献２】特開２００４−２７４４０２号公報
【特許文献３】特開２００３−２０３２３７号公報
【特許文献４】特開平１０−２４０４３６号公報
【特許文献５】特開２００１−２８２４４７号公報
【特許文献６】特開２００２−３５１６０３号公報
【特許文献７】特開平３−１５４５７６号公報
【発明の概要】
【課題を解決するための手段】
【０００４】
本明細書で説明する一つの概略の例では、デジタルカメラから捕捉する一連の画像をデジタルカメラの動きを検出するために分析してもよく、検出した動きに基づいて装置へのユーザー入力を特定してもよい。説明する各種の実施形態は以下の特徴のうちの一つ以上を有している。例えば、カメラ付き携帯電話などの携帯娯楽装置において傾きセンサーとしてオプティカルフローを使用することなどである。疎らな特徴群のセット／疎らなフロー場を、リアルタイム実行性能を実現するために使用してもよい。非静的な場面を、フロー場の最も典型的な（すなわち最大の静止しているクラスタ）結果を見つけることによって処理してもよい。長い期間にわたって、最初の位置および／または方向を基準とした位置および／または方向を算出してもよい。カメラが固定され、ユーザーの方ではない方向を向いているカメラ付き携帯電話において前記特徴を使用してもよい。限定的な処理能力を有する装置用に実施形態／特徴を構成してもよい。
【０００５】
概略の態様に係る方法は、動いているモバイルカメラから画像を捕捉することと、前記捕捉された画像に基づいて前記動いているモバイルカメラの動きの様子を検出することとを含んでいる。前記方法はまた、インタフェース装置上にアプリケーションへのユーザーインタフェースを提供することも含んでいる。前記アプリケーションへのユーザー入力を、自動的に前記検出された動きに基づいて特定する。
【０００６】
前記概略の態様の実施形態は、以下の特徴の一つ以上を有してもよい。例えば、前記インタフェース装置が前記モバイルカメラに物理的に結合されている、または前記モバイルカメラを有する装置に物理的に一体化されていてもよい。前記動いているモバイルカメラが携帯電話に物理的に結合されていてもよい。
【０００７】
動きの様子を検出することは、自動的に実行されてもよく、大きさと方向のうちの一つ以上を検出することを含んでもよい。動きの様子を検出することは、また、オプティカルフローを使用することを含んでもよい。
【０００８】
前記動いているモバイルカメラの動きの様子を検出することは、２または３自由度の前記動いているモバイルカメラの回転量を算出することを含んでもよい。前記動いているモバイルカメラの動きの様子を検出することは、また、前記動いているモバイルカメラの平行移動量を算出することも含んでよい。
【０００９】
前記動いているモバイルカメラの動きの様子を検出することは、前記動いているモバイルカメラの最初の位置に対する前記動いているモバイルカメラの移動量を算出することを含んでもよい。前記動いているモバイルカメラの前記最初の位置が、アプリケーションによって再セットされてもよい。
【００１０】
前記動いているモバイルカメラの動きの様子を検出することは、前記捕捉された画像中の特徴群の動きを検出することと、前記特徴群の前記動きに基づいて前記モバイルカメラの動きを検出することとを含んでもよい。前記特徴群の前記検出された動きに基づいて、前記特徴群を、基準の現実世界のフレームに対して動いている動的特徴群のセットに分けてもよい。動的特徴群に分けることは、最大の面積をカバーする特徴群のセットを選択することと、選択されなかった特徴を無視することとを含んでもよい。動的特徴群を分けることは、また、特徴群の重要なセットと類似の方向と大きさを有していない特徴を無視することを含んでもよい。
【００１１】
動きの様子を検出することは、前記捕捉された複数の画像から特徴を抽出することと、二つ以上の画像に存在している各特徴を対応付けるために画像を比較することとを含んでもよい。前の画像内の特徴の位置に対する現在の画像内のその特徴の位置の変位を算出することによって、対応付けられた特徴のフローベクトルを決定してもよい。前記各対応付けられた特徴の前記決定されたフローベクトルに基づいて前記モバイルカメラの前記動きを検出する。
【００１２】
前記捕捉された画像から特徴を抽出することは、角および縁の少なくとも一つを検出することを含んでもよい。各特徴を対応付けるために画像を比較することは、最初に、画像内の前記特徴の既知の位置と、近接した別の画像内のブロックとを比較することを含んでもよい。各特徴を対応付けるために画像を比較することは、また、最初に低解像度で画像を比較し、対応が見つかったかどうかに応じてより高い解像度で画像を比較することを含んでもよい。前記フローベクトルを基に前記モバイルカメラの前記動きを決定することは、画像に依存する単位で決定された前記動きを変換することによって現実世界の単位で前記モバイルカメラの前記動きを特定することを含んでもよい。
【００１３】
画像を捕捉することに、一連の画像を捕捉することが含まれていてもよい。前記動いているモバイルカメラの動きの様子を検出することは、前記一連の画像のうち第１サブセットの画像に現れている第１の特徴の動きを検出することと、前記一連の画像うち、前記第１サブセットと部分的に重複した第２サブセットの画像に現れている第２の特徴であって、前記第１の特徴との間に、前記第１の特徴が前記第２サブセットの画像の全てには現れていない場合でも、第２の特徴の動きが前記第１の特徴の動きに基づいているという固定した物理的関係を有する第２の特徴の動きを検出することとを含んでもよい。前記第１と第２の特徴の検出された動きに基づいて、前記動いているモバイルカメラの動きの様子を検出してよい。
【００１４】
前記ユーザー入力が傾きセンサー機能を模倣し、アプリケーション中で物体の傾き、またはアプリケーション中でボールの動き、またはアプリケーション中で乗り物の操縦機能、またはアプリケーション中で物体の照準合わせ機能、またはアプリケーション中で物体のナビゲーション機能、またはアプリケーション中で関節を有するキャラクタの動き、または粒子シミュレーションアプリケーション中の粒子の動きを制御してもよい。前記検出された動きの大きさがしきい値の大きさよりも大きいときに前記ユーザー入力が特定されてもよい。前記アプリケーションは、ゲーム、追跡アプリケーション、セキュリティアプリケーションのうちの少なくとも一つを含んでもよい。
【００１５】
別の概略の態様によれば、携帯電話が、電話にそれぞれ一体的に形成されたカメラとディスプレイとを有している。前記電話はまた、前記カメラと前記ディスプレイとに物理的にかつ通信可能に接続された処理装置を有している。前記電話は、さらに、前記処理装置に物理的にかつ通信可能に接続されたコンピュータ読み取り可能な媒体を有している。前記コンピュータ読み取り可能な媒体は、少なくとも、（１）前記カメラから捕捉された画像を受け取ることと、（２）前記受け取った画像を基に前記電話の動きの様子を検出することと、（３）アプリケーションへのユーザーインタフェースを前記ディスプレイに提供することと、（４）前記電話の前記動きの様子に基づいて前記アプリケーションへのユーザー入力を自動的に特定することと、（５）前記アプリケーションに前記ユーザー入力を提供することとを、前記処理装置に実行させるための命令を有している。
【００１６】
前記概略の態様の実施形態は、様々なさらなる特徴を有していてもよい。例えば、前記コンピュータ読み取り可能な媒体は、前記処理装置の一体化された部分であってもよい。
【００１７】
各種の態様、実施形態、特徴は、本願明細書で例えば一つの方法でしか記載されていない場合でも、様々な方法で実施してよい。各種態様、実施形態、特徴は、例えば方法、装置、方法を実行するための装置、プログラムまたは他の命令のセット、プログラムまたは他の命令のセットを含む装置、コンピュータ読み取り可能な媒体又は伝搬された信号などのうちの一つ以上を使用して実施してもよい。コンピュータ読み取り可能な媒体または伝搬された信号は、例えば、命令、ソフトウェア、画像、その他のデータなどを含んでいてもよい。各種の態様、実施形態、特徴には、また、例えばカメラなどのさらなるコンポーネントが含まれていてもよい。
【００１８】
一つ以上の実施形態の詳細を、添付の図面と以下の記述の中で説明する。他の特徴は、以下の記述と図面と請求項から明らかとなるであろう。
【図面の簡単な説明】
【００１９】
【図１】動きの様子を検出してその検出した動きに基づいてユーザーインタフェースを制御するように構成されたカメラ付き携帯電話の一例を示す図である。
【図２】カメラと、カメラの動きを定義するための軸システムの一例を示す図である。
【図３Ａ】カメラと、Ｘ軸の周りのカメラの回転によって生成されるオプティカルフローベクトルの一例を示す図である。
【図３Ｂ】カメラと、Ｙ軸の周りのカメラの回転によって生成されるオプティカルフローベクトルの一例を示す図である。
【図３Ｃ】カメラと、Ｚ軸の周りのカメラの回転によって生成されるオプティカルフローベクトルの一例を示す図である。
【図４Ａ】カメラと、Ｘ軸に沿った平行移動によって生成されるオプティカルフローベクトルの一例を示す図である。
【図４Ｂ】カメラと、Ｚ軸に沿った平行移動によって生成されるオプティカルフローベクトルの一例を示す図である。
【図５Ａ】下面にカメラを有する携帯電話を保持するユーザーの一例を示す図である。
【図５Ｂ】下面にカメラを有する携帯電話を保持するユーザーの一例を示す図である。
【図５Ｃ】Ｘ軸の周りにカメラを有する携帯電話を回転させる際のユーザーの手の動きの一例を示す図である。
【図５Ｄ】Ｘ軸の周りにカメラを有する携帯電話を回転させる際のユーザーの手の動きの一例を示す図である。
【図５Ｅ】Ｙ軸の周りにカメラを有する携帯電話を回転させる際のユーザーの手の動きの一例を示す図である。
【図５Ｆ】Ｙ軸の周りにカメラを有する携帯電話を回転させる際のユーザーの手の動きの一例を示す図である。
【図６】装置の動きの様子を検出してアプリケーションへのユーザー入力を特定するための処理の一例を示すフローチャートである。
【図７】動いているカメラの動きの様子を検出するための処理の一例を示すフローチャートである。
【図８Ａ】着席した姿勢で、カメラ付き手持ち式装置を保持するユーザーの一例を示す図である。
【図８Ｂ】起立した姿勢で、カメラ付き手持ち式装置を保持するユーザーの一例を示す図である。
【図８Ｃ】カメラがユーザーに向けられ起立した姿勢で、カメラ付き手持ち式装置を保持するユーザーの一例を示す図である。
【発明を実施するための形態】
【００２０】
動いているモバイルカメラの動きの様子を検出し、アプリケーションへのユーザー入力を特定するための幾つかの技法を提供する。一つの技法は、動いているモバイルカメラから一連の画像を捕捉し、その一連の画像中に存在する静止している特徴群を比較することを含む。特徴は、例えば画像の中の物体、画像の中の物体の一部、および／または画像の中の物体の角または縁などであってよい。動いているモバイルカメラの動きの様子を検出するために、オプティカルフロー分析を一連の画像に対して実行する。検出した動きに基づいてアプリケーションへのユーザー入力を特定する。アプリケーションは、このユーザー入力に応答し、例えばユーザーインタフェースを更新する。
【００２１】
図１を参照すると、カメラ付き携帯電話１００などの携帯娯楽用装置に備えられたカメラからの一連の画像のオプティカルフローを使用して、例えばゲームまたはアプリケーションを制御する手段としてのこの手持ち式装置の動きを検出するシステムが示されている。カメラ付き携帯電話１００は、ユーザーがこの装置と対話できるように構成されているユーザーインタフェース１１０を有している。ユーザーインタフェース１１０は、例えば、表示インタフェース１１１と、キーパッド１１２と、マイクロフォン１１３と、スピーカー１１４とを有している。表示インタフェース１１１はユーザーに視覚的表示を提供する。その視覚的表示は、カメラ付き携帯電話の状態に関する情報又は、カメラ付き携帯電話上で動作するように構成されているゲームなどのアプリケーションに視覚的インタフェースを提供してよい。キーパッド１１２は、ユーザーがカメラ付き携帯電話へ入力するために作動させるボタンまたは押圧作動スイッチ群を有している。マイクロフォン１１３は、ユーザーからの音声による入力を受け付けるものであって、電話システムを用いてその音声入力を他の装置に送信するか又は、ユーザーの音声入力に基づいてユーザー入力を特定するように構成されていてもよい。スピーカー１１４は、ユーザーへの音声出力を生成するものであって、電話システムを介する通信の音声出力を生成するか又は、カメラ付き携帯電話の状態に関する情報を示す音声出力を生成する（例えば、ユーザー入力の受け付けを示す音を生成する）ように構成されていてもよい。プロセッサ（図示せず）は、ユーザーインタフェース１１０の各部分からの入力を受け付け、そのユーザー入力に基づいて機能または処理を実行し、ユーザー入力に適宜応答して表示ディスプレイ１１１に画像を映し、および／またはスピーカー１１４から音を生成するように構成されている。
【００２２】
カメラ付き携帯電話１００はまた、カメラ１２０を有している。カメラ１２０は、画像の焦点を合わせるためのレンズ１２１を有しており、レンズ１２１によって焦点が合わされた画像のデジタル表現を捕捉することができる。図１ではカメラ１２０はカメラ付き携帯電話１００の上部にあってユーザーが表示インタフェース１１１を見ているときは、ユーザーに面するようになっているが、カメラ１２０は様々な場所および方向でカメラ付き携帯電話に配置されていてもよい。例えば、カメラ１２０は、カメラ付き携帯電話１００の上部に位置し、ユーザーが表示インタフェース１１１を見ているときユーザーと向き合わないようになっていてもよい。カメラ１２０は、カメラ付き携帯電話１００が動いている間、時間の経過と共に一連の画像を捕捉するように構成されていてもよい。プロセッサ（図示せず）が一連の画像を受け付けて、カメラ付き携帯電話１００の動きの様子を検出するために一連の画像に対して処理を実行してもよい。プロセッサは、検出した動きに基づいて、検出したカメラ付き携帯電話１００の動きに対応するアプリケーションへのユーザー入力を決定してよい。例えば、プロセッサが、ユーザーがカメラ付き携帯電話１００を左に回転させたことを検出した場合、プロセッサは、ユーザーがある特定の行動を取ることを望んでいると決定してもよい。また、プロセッサが、ユーザーはカメラ付き携帯電話１００を右に回転させたことを検出した場合、プロセッサは、ユーザーがある特定の行動を取ることを望んでいないと決定してもよい。他の実施形態では、プロセッサは、カメラ付き携帯電話１００上で動作するゲームへのユーザー入力として、検出した動きを使用してもよい。例えば、カメラ付き携帯電話１００を左に回転させると、ゲームで表示された物体を左に移動させ、カメラ付き携帯電話１００を右に回転させると、ゲームで表示された物体を右に移動させる。
【００２３】
カメラが動いている間に捕捉された画像に基づいてカメラの動きの様子を検出するためにカメラ付き携帯電話１００のプロセッサが使用する一つの技法が、オプティカルフローとして知られている。オプティカルフローとは、一連の画像の中の特徴の見かけの相対速度を指す。一連の画像を単一のカメラで捕捉して、特別なカメラハードウェアまたはキャリブレーション無しでオプティカルフローを使用することができる。従来、オプティカルフローは、画像シーケンスの時間補間（動画でフレームを挿入すること）、三次元物体再現調査などの用途に使用される。
【００２４】
カメラの動きを検出するために、プロセッサが一連の画像の中で静的特徴群を特定し比較してもよい。カメラが動く間、画像内の特徴の位置はその動きに応答して変化する。特徴の速度をフローベクトルとして表現してもよい。特徴速度のセットをフロー場と呼ぶ。速度はカメラに対して相対的なものである。他の文献では、動きベクトルと動き場という用語がよく使用される。しかし、「動きベクトル」と「動き場」という用語の使用は、画像シーケンス内の特徴の速度が直接その物体の動きに対応し、カメラは静止していると仮定されることを意味する場合がある（本目的にとっては不必要）。
【００２５】
オプティカルフローはカメラに対して相対的なものであるため、カメラの動きは、カメラ視界における特徴の見かけの速度となる。特徴は静止していてもよい、つまり木のように物理的位置が変化しなくてもよい。逆に、特徴は、動的すなわち動いていてもよい（例えば車）。カメラの動きを推定するために、一連の画像内の静的特徴の見かけの動きを利用する。カメラの動きは、カメラの視界中の特徴の見かけの速度から算出することができる。また、広く分布した疎らな特徴群のセットが、カメラの動きを推定するのに十分である。
【００２６】
捕捉された画像を基にしてカメラの動きの様子を検出することができる様々な動き推定技法を使用してもよいが、既存のオプティカルフローシステムは一般的に計算コストが高く、故に現在の一般消費者向け手持ち式装置には不適切である。一般消費者向け手持ち式装置は、広範囲の種類の計算を実行できる汎用プロセッサを有している。しかし、ビデオフレームごとに実行できる計算の数は限られている。
【００２７】
既存のオプティカルフローシステムは一般的に、密なフロー場の生成することを試みる。カメラの動きは６自由度で表現できる（例えば、Ｘ、Ｙ、Ｚ軸に沿った平行移動と、Ｘ、Ｙ、Ｚ軸の周りの回転）。しかし、意図する用途では、動きはもっと少ない自由度で近似できる。一つの実施形態では、ある特定の自由度における動きは無視できると仮定しその自由度における動きを無視することによって、カメラの動きを近似してよい。例えば、カメラの動きは、Ｚ軸の周りの回転とＸ軸、Ｙ軸、Ｚ軸に沿った平行移動は無視し、Ｘ軸とＹ軸の周りのカメラの回転を記述することによって近似してもよい。よって、プロセッサはカメラの動きを推定するために密なフロー場を生成してもよいが、広く分布した疎らな特徴群のセットがカメラの動きを推定するのに十分である。広く分布した疎らな特徴セットについて、例えば図７を参照して後述する。
【００２８】
特徴群を追跡するとき、平行移動無しのカメラ視野の回転（パンすること及び傾けること）は、フローベクトルが三次元場面形状（奥行き）から独立したオプティカルフローを生成する。これについては、以下で説明する図３Ａ〜図３Ｃに例示されている。カメラが回転している静止した場面では、カメラが動くにつれて特徴が他の物体によって隠蔽されたり現れたりすることはない。特徴は、カメラの視野に入ったり出たりすることで現れたり消えたりするだけである。例えば、ある人が、物体の背後に何があるのか知るためにその物体の背後を見たいとする。その人は、その物体の向こう側を見るために傾くかまたは移動する（例えば平行移動）必要があり、単に自分の目を動かす（例えば回転運動）だけでその物体の向こう側を見ることはできない。
【００２９】
図２〜図４は、カメラの可能な動きと、その動きによって生成されるオプティカルフローベクトル及びオプティカルフロー場の例を示している。
【００３０】
図２を参照すると、一連の画像を捕捉できるカメラ２００が、カメラの動きを定義するための軸システムとの関係で示されている。特に、カメラの回転を３自由度について測定する。例えば回転を、Ｘ軸２１０と、Ｙ軸２２０と、Ｚ軸２３０に関して測定する。各軸の周りの回転の測定結果は、カメラの回転を完全に記述する可能性がある。カメラの動きの様子を定義したこの軸システムに関して説明する。次の例では、オプティカルフローベクトルは、紙面の上から見下ろすカメラ２００とその紙面上の撮像物体に基づいて決定される。
【００３１】
図３Ａを参照すると、ベクトル３１０で示すようにＸ軸２１０を軸に回転するカメラ２００が図示されている。静止した場面では、フローベクトルは平行でありＸ軸２１０の周りの回転と同じ大きさとなる傾向にある。カメラ２００がＸ軸２１０の周りを回転することによって生成されるオプティカルフローベクトルが、オプティカルフロー場３２０に示されている。カメラ２００がＸ軸２１０の周りをベクトル３１０で示す方向に回転すると、一連の画像で捕捉された静止した物体は、オプティカルフロー場３２０に示すオプティカルフローベクトルで示す方向に動いているように見える。具体的には、カメラ２００が紙面の上方に向かって上方にＸ軸２１０の周りを回転し、同時にカメラ２００が一連の画像を捕捉する場合、一連の画像内の静止した物体は、時間的に後の方に撮影された画像の中では画像の下部に近づいて現れ、その結果、紙面の下部の方を指すフローベクトルが生成される。算出されたオプティカルフロー場３２０に基づいて、Ｘ軸２１０の周りの回転を検出できる可能性がある。
【００３２】
図３Ｂを参照すると、Ｙ軸２２０の周りを回転するカメラ２００が図示されている。静止した場面では、フローベクトルは平行でありＹ軸２２０の周りの回転と同じ大きさとなる傾向にある。カメラ２００のＹ軸２２０の周りの回転から生成されるオプティカルフローベクトルが、オプティカルフロー場３４０に示されている。カメラ２００がＹ軸２２０の周りをベクトル３３０で示す方向に回転すると、一連の画像で捕捉された静止物体は、オプティカルフロー場３４０に示すオプティカルフローベクトルで示す方向に動いているように見える。具体的には、カメラ２００がＹ軸２２０の周りを紙面の右側に向かって回転し、同時にカメラ２００が一連の画像を捕捉する場合、その一連の画像内の静止した物体は右から左へと移動するように見える。すなわち、時間的に後の方に撮影された画像の中では、その静止した物体は画像の左側に近づいて現れ、その結果、紙面の左側の方を指すフローベクトルが生成される。算出されたオプティカルフロー場３４０に基づいて、Ｙ軸２２０の周りの回転を検出できる可能性がある。
【００３３】
図３Ｃを参照すると、Ｚ軸２３０の周りに回転するカメラ２００が図示されている。静止した場面では、Ｚ軸２３０の周りの回転の場合、フローベクトルはカメラ視界の中心点を中心とする円の接線方向を向き、その半径に比例する大きさを持つ傾向にある。カメラ２００のＺ軸２３０の周りの回転から生成されるオプティカルフローベクトルがオプティカルフロー場３６０に示されている。カメラ２００がベクトル３５０で示す反時計回りにＺ軸２３０の周りを回転する時、一連の画像で捕捉される静止した物体は、オプティカルフロー場３６０に示すオプティカルフローベクトルで示すように時計回りに動いているように見える。従って、ベクトルの略円形のオプティカルフロー場３６０が得られる。算出されたオプティカルフロー場３６０に基づいて、Ｚ軸２３０の周りの回転を検出できる可能性がある。
【００３４】
図４Ａを参照すると、ベクトル４１０が示す方向にＸ軸２１０に沿って平行移動するカメラ２００が図示されている。カメラの視野の平行移動は、フローベクトルが三次元場面形状（奥行き）に依存するオプティカルフローを生成する。カメラが平行移動している静止した場面では、フローベクトルの大きさはカメラ２００から物体までの距離すなわち奥行きに依存し、カメラにより近い物体によって特徴が隠されたり現れたりすることがある。カメラが画像４２０を撮像しながらＸ軸方向４１０へ平行移動することによって生成されるオプティカルフローベクトルがオプティカルフロー場４３０に示されている。カメラ２００がＸ軸方向４１０に沿って左へ平行移動すると、一連の画像で捕捉された静止物体（例えば、場面４２０における木および山）は、オプティカルフロー場４３０に示すオプティカルフローベクトルで示す方向に右へ移動するように見える。オプティカルフロー場４３０内のフローベクトルの大きさの差異によって示されるように、カメラ２００に近い物体はカメラ２００からより遠くの物体よりも長い距離を動くように見える。その結果、平行移動の場合、フローベクトルの長さは、撮像されている物体のカメラ２００からの奥行きに依存する。例えば、木４４０がカメラに最も近い物体であるので、木４４０を表すフローベクトルは最大の大きさを持っている。算出されたオプティカルフロー場４３０に基づいて、Ｘ軸２１０に沿った平行移動を検出できる可能性がある。
【００３５】
図４Ｂを参照すると、ベクトル４５０が示す方向にＺ軸２３０に沿って平行移動するカメラ２００が図示されている。Ｚ軸方向４５０へのカメラの平行移動によって生成されるオプティカルフローベクトルがオプティカルフロー場４６０に示されている。カメラ２００がＺ軸方向４５０に沿って平行移動すると、一連の画像で捕捉された静止物体は、オプティカルフロー場４６０に示すオプティカルフローベクトルが示す方向に移動するように見える。具体的には、カメラがＺ軸方向４５０に沿って撮像している物体に向かって前方に移動し、同時にカメラ２００が一連の画像を捕捉する場合、一連の画像内の静止物体は画像の中心から延びる放射状の線に沿って外側に移動するように見える。従って、画像の中心から放射状に外側に向かって延びるフローベクトルのオプティカルフロー場４６０が得られる。算出されたオプティカルフロー場４６０に基づいて、Ｚ軸２３０に沿った平行移動を検出できる可能性がある。
【００３６】
図示はしていないが、カメラ２００のＹ軸２２０に沿った平行移動によって、フローベクトルがＹ軸２２０と平行である以外は図４Ａに示すものと類似のオプティカルフロー場が生成される。
【００３７】
図５Ａ〜図５Ｆは、ユーザーが自分の手を使って動いているモバイルカメラに与える動きの例を示している。なお、図５Ａ及び図５Ｂは、その下面にカメラ５２０を有している携帯電話５１０を例示している。携帯電話５１０を保持するユーザーは、携帯電話５１０とカメラ５２０とのＸ軸の周りの回転を発生させるために、例えば自分の手首を後方５３０に曲げる（図５Ｃ）、または前方５４０に伸ばす（図５Ｄ）。自分の手首を後方５３０に曲げる（図５Ｃ）ユーザーの動きは、図３Ａに示すオプティカルフロー場３２０を生成する可能性のある一方向のＸ軸の周りのユーザー動きの一例である。
【００３８】
また、携帯電話５１０を保持するユーザーは、携帯電話５１０とカメラ５２０とのＹ軸の周りの回転を発生させるために、例えば自分の手首を時計回り５５０に（図５Ｅ）または反時計回り５６０に（図５Ｆ）ひねる。時計回り５５０（図５Ｅ）に自分の手首をひねるユーザーの動きは、図３Ｂに示すオプティカルフロー場３４０を生成する可能性のある一方向のＹ軸の周りのユーザー動きの一例である。ユーザーが、例えば図５Ｃ〜図５Ｆに示す動きをすることで、アプリケーションのユーザーインタフェースを制御するユーザー入力を生成する検出可能な動きをカメラに与えてもよい。
【００３９】
図６は、装置の動きの様子を検出してアプリケーションへのユーザー入力を特定するための処理６００を示すフローチャートである。一つの実施形態では、カメラが付いた携帯娯楽用装置（例えば、カメラ付き携帯電話１００、ＰＤＡ、その他のカメラが備えられたモバイル装置）のプロセッサが処理６００を実行してもよく、また、携帯娯楽用装置上で動作するゲームまたはアプリケーションを制御するために、カメラ視野の回転の測定結果を使用してもよい。傾きセンサーと類似の入力を提供するために、回転の測定結果を使用してもよい。また、傾きの方向と大きさの両方を測定できるので、「アナログ」制御を行ってもよい。アナログ制御は、より細かな制御を可能にし、ゲームプレイの多くの方式にとって「デジタル」制御よりも好ましい。
【００４０】
図６に示す処理６００の実行において、動いているモバイルカメラが画像を捕捉する（６１０）。画像の捕捉（６１０）は、例えば、カメラが動いている間、ある時間に亘って一連の画像のデジタル表現を捕捉することを含んでもよい。
【００４１】
プロセッサは、捕捉された画像に基づいてカメラの動きの様子を検出する（６２０）。プロセッサは、例えば、最も新しく捕捉した画像を時間的にそれより前に捕捉した画像と比較して、一連の画像中の静的特徴の位置の変化を検出しカメラの動きを推定してもよい。プロセッサは前述のオプティカルフロー処理を使用してもよい。動きの様子の検出６２０は、図７に関連してより詳細に説明する。
【００４２】
さらに、アプリケーションへのユーザーインタフェースがインタフェース装置上に提供される（６３０）。ユーザーインタフェースは、モバイルカメラとは別れていてもよいし（例えば無線通信を利用する）、またはモバイルカメラを含む装置に物理的に結合されているかまたは一体化されていてもよい（例えば、カメラ付き携帯電話１００に一体化された表示インタフェース１１１）。ユーザーインタフェースは、ユーザーが対話する可能性のあるゲームなどのアプリケーションのための視覚的表示を含んでもよい。ユーザーインタフェースはまた、ユーザー入力に応答して音声を生成するように構成されたスピーカーを含んでもよい。例えば、ユーザーインタフェースは、ある動作を起動する動きを受け付けたことを示す音声を生成するように構成されたスピーカーを含んでもよい。
【００４３】
検出したカメラの動きに基づいてアプリケーションへのユーザー入力を特定する（６４０）。カメラの動きに対応して自動的にユーザー入力を特定してもよい。一つの実施形態では、アプリケーションが、「感度」を調節するためにカメラの動きおよび位置に係数を掛けてもよい。この係数は、ユーザーによってプログラムされるか、または選択されてもよい。「感度」は、例えばゲームの仮想環境におけるキャラクタの動きなどのユーザー入力を行うために、ユーザーがどれだけその装置を傾けるかまたは動かす必要があるかを決定する。例えば、ユーザー入力は、カメラの動きが「感度」のレベルを満たすのに十分大きいときのみに検出され特定されてもよい（つまり、小さな重要でない動きは無視されユーザー入力として特定されないことがある）。「感度」を利用する場合、現実世界での位置は通常必要なく計算されない。ここで、現実世界での位置とは、インチ、センチメートル、角度などの単位で測定された物理的世界での装置の位置を指す（例えば、２５°回転され東に３０センチメートル移動された装置）。仮想世界での位置とは、例えば仮想のキャラクタおよび物体を含むゲームなどの仮想環境における位置を指す（例えば、仮想環境において３ブロック移動させられた仮想キャラクタ）。「感度」を使用するときは、例えばピクセル単位で検出されたカメラの動きを「感度」係数と比較するか、または「感度」係数を掛けて、仮想環境への入力または動きを生成する。その入力または動きは仮想環境に関するものであるため、カメラの現実世界での位置は必要ではない。
【００４４】
一つの例では、アプリケーションが、傾きセンサー機能を模倣するためにカメラの向きを使用してもよい。傾きセンサー機能を、ボールが転がる面の傾きをシミュレートすることを含む、ゲームにおけるボールの制御に使用してもよい。別の例では、アプリケーションが、操縦機能を模倣するためにカメラの向きを使用してもよい。操縦機能を、乗り物（例えば、自動車、オートバイ、飛行機、船、サーフボード、スノーボード、スケートボード、ホバーボード、宇宙船）を制御するのに使用してもよい。操縦機能は、操縦方向、ピッチ、ヨー、ロールのうち一つ以上の制御を含んでよい。さらに別の実施形態では、アプリケーションが、照準合わせ機能（狙いを定める）機能を模倣するためにカメラの向きを使用してもよい。照準を合わせるまたは狙いを定める機能を、仮想の武器を制御するのに使用してもよい（ライフルを向けるなど）。照準合わせ（狙いを定める）機能は通常、２自由度を含む。さらに、アプリケーションは、後述するように動く物体として分類された特徴群のサブセットを使用してもよい。このサブセットを、照準合わせ（狙いを定める）アプリケーションを補強するために使用してもよい（例えば、動く物体または特徴をターゲットとして指定し、そのゲームの目的が、動く物体または特徴が画面の中央に表示された十字線に位置するようにその装置を向けることであってもよい）。アプリケーションはまた、例えば、絶対位置決め機能を模倣するためにカメラの向きを使用してもよい。ナビゲーションの用途（例えば、店またはショッピングモールなどの環境においてユーザーをナビゲートするために現実世界環境におけるユーザーの位置を追跡する）、または迷路ゲーム（例えば、ユーザーが、現実世界で歩き回ることによって仮想迷路を歩く）において、絶対位置決め機能を使用してもよい。要求される動きは、手によって実行される動きであってもよいし、または環境においてユーザーが歩き回る動きであってもよい。
【００４５】
別の実施形態では、アプリケーションが、アニメキャラクタ（例えば、ボブルヘッドやマリオネット）を制御するためにカメラの向きを使用してもよい。傾きの瞬間的な大きさおよび方向をそのキャラクタの動きに変換してもよい。キャラクタの関節で結合された各部分はシミュレートされた質量を与えられてもよい。その場合、検出された動きを与えられた各部分の動きの大きさは、その質量に反比例する。さらに、キャラクタの関節で結合された各部分は、所定の共振周波数を持つシミュレートされたばねによって相互に連結されていてもよい。
【００４６】
また、アプリケーションは、粒子シミュレーションアプリケーション（例えば、スノーグローブまたはサンドアート）において粒子を制御するのにカメラの向きを使用してもよい。傾きの瞬間的な大きさおよび方向は、粒子の数および／またはそれらの運動エネルギーを決定してもよい。粒子はシミュレートされた重力によって引き寄せられてもよく、これによって粒子は仮想環境内で下に溜まる。仮想環境には画像または物体が含まれていてもよく、粒子はその物体の上に溜まる。このアプリケーションの一つの形態では、粒子は雪を表す。１つの選択肢として、アプリケーションは、電子グリーティングカード（例えばクリスマスカード）の形態で配布されてもよい。このアプリケーションの別の形態では、粒子群は様々な色で表示される（例えばサンドアート）。このアプリケーションでは、色付けされた粒子群が幾つかのパターンを形成して溜まってもよい。
【００４７】
図７は、オプティカルフローを使用して動いているカメラの動きの様子を検出するための処理７００を示すフローチャートである。密なフロー場アルゴリズムを使用してもよいが、カメラの動きは６自由度で表現することができ、意図するアプリケーションにおいてはより少ない自由度で近似できる。それゆえ、様々な自由度でカメラの動きを検知または推定するのに広く分布した疎らな特徴群のセットで十分であり、処理負荷を減らすために広く分布した疎らな特徴群のセットを使用してもよい。特定の実施形態では、処理負荷を減少させてリアルタイムで画像を捕捉し処理してもよい。
【００４８】
一つの実施形態では、広く分布した疎らな特徴群のセットが、６自由度でカメラの動きを推定するのに十分である。疎らなオプティカルフローでは、画像中の視覚的に際立つ特徴についてのみフローベクトルが作成されてもよい。これらの特徴は、画像全体に亘って分散していてよい。広く分布した特徴群のセットでは、特徴が画像全体に亘って分布しており、画像の各領域に少なくとも一つの特徴が存在するようになっている（例えば、全ての特徴が画像の一角に塊として存在しているのとは違って）。ゆえに、画像の全領域における動きを記述するのに密フロー場は必要ではなく、特徴が広く分布していれば疎らなセットでも同じ役割を果たすことができる。
【００４９】
疎らなオプティカルフローでは、広く分布した特徴群のセットが必要である場合がある。例えば、Ｙ軸の周りの回転（図３Ｂ）をＸ軸に沿った平行移動（図４Ａ）と比較してみる。特徴の分布が十分でなければ、例えば画像の下部に沿った全てのフローベクトルが同じ方向と長さを有するので、Ｘ軸に沿った平行移動がＹ軸の周りの回転と区別できなくなる。
【００５０】
本発明の幾つかの実施形態では、６自由度よりも少ない自由度で動きを近似する。この場合、ある特定の自由度は無視できるものと仮定し無視する。自由度が減少すると広く分布した特徴群の必要性が軽減される。例えば、一つの実施形態では、Ｘ軸とＹ軸の周りのカメラの回転を記述し、Ｚ軸の周りの回転とＸ軸、Ｙ軸、Ｚ軸に沿った平行移動とは無視することによってカメラの動きを近似してもよい。この仮定の下では、全ての特徴が画像の下部に沿って存在している前記の例におけるカメラの動きは、Ｘ軸に沿った平行移動は無視できるものと仮定しているので、Ｙ軸の周りの回転の効果によるものであると考えることができる。
【００５１】
処置７００は特徴を抽出すること（７１０）を含む。動くモバイルカメラから捕捉された一連の画像を分析する際には、そのカメラで捕捉された各画像に特徴抽出処理を適用する。特徴抽出処理は、任意の一つの画像から疎らな特徴群のセットを抽出するだけでよい。求められる特徴は通常、角および縁を含む。角や縁は、装置が操作される環境の多くで通常、見つけることができる。角および縁は動的な光レベルによって影響されにくい、これは装置が戸外で操作される場合に重要であることがある。さらに、角および縁などの特徴は、画像内で検出するのに比較的計算コストが安い。角および縁を抽出する方法は公知である。
【００５２】
特徴を抽出した後、処理７００では、画像同士を比較して一つ以上の画像に共通な特徴を対応付ける（７２０）。例えば、フロー場算出処理では、現在のカメラ画像の特徴群と、前回のカメラ画像の対応する特徴群とを対応付ける。特徴を対応付けるために、現在のカメラ画像の各特徴を、前回のカメラ画像の特徴群のサブセットと比較する。このサブセットは、近接性と特徴の性質（例えば、角の向きおよびコントラスト）によって選択される。特定の実施形態では比較すべき特徴の数が少ないので、装置の計算負荷を最小にする。
【００５３】
一つの実施形態では、前回のカメラ画像の特徴群の、現在の画像における位置を、前回のフロー場を使用して予測する（前回のフロー場がない最初のフレームは除く）。対応相手として可能性のあるもの全てについて、予測位置からの距離と特徴の性質の類似度と対応の特異性とによって作成されるスコアを基に、一対一の対応を選択する。スコアはスカラー値であり、信頼度を表している。一対一の対応を確認するために、可能性のあるペア群を、それらのスコアから、ペアのどちらかの特徴が関与する他の可能性のある対応関係のスコアに基づくペナルティを引き算したものに基づいてランク付けする。十分なスコア（信頼度）を有する対応相手をフロー場に追加する。スコア（信頼度）を後の使用のためにフローベクトルと共に記録する。
【００５４】
他の実施形態では、計算の負荷を減らすために、特徴を対応付ける手順は、特徴の近くに位置するブロックを先ず分析するか、または最初は低解像度で特徴の対応付けを試みて対応が見つかるまでまたは最高の解像度で画像を比較するまで解像度を上げ続けることを含んでもよい。例えば、画像をデシメーションするピラミッド方法を適用してもよい。デシメーションでは、例えば画像をブロックに分割して各ブロックを代表する一つのピクセル値を生成する（例えば、ブロック内部のピクセルの平均値をとる）ことによって、画像の低解像度バージョン（ピラミッドのレベルと呼ぶ）を作成する。画像の低解像度バージョンは分析するピクセルが少なく探索する領域が小さいので、処理の負荷を減らすことが可能になる。低解像度で結果が得られたら、探索を制限するために低解像度で見つかった結果を利用して、より高い解像度で画像を分析してもよい。例えば、一つ以上の特定の低解像度領域で特徴の対応が見つかったら、それらの特定の低解像度の領域をより高い解像度で特徴を探すようにしてもよい。
【００５５】
特徴を対応付けた後、処理７００では各特徴のフローベクトルを決定する（７３０）。一つの実施形態では、現在のカメラ画像での特徴の位置の、前回のカメラ画像でのその位置に対する変位を算出することによってフローベクトルを決定する。フローベクトルのセットによってフロー場が形成される。各フローベクトルは大きさと方向を有していてよい。対応付けられたペア群は、２つの関連するカメラ画像間で特徴の位置の全体的なパスを生成する。必要があればこのパスを格納して、より長い期間に亘ってオプティカルフロー（従ってカメラの動き）を算出できる。
【００５６】
環境が静的であるという保証は無く、それ自体が動いている特徴によってカメラの動きを誤って推定してしまう可能性があるので、必要があれば特徴群を分けてもよい（７４０）。図７において工程７４０が破線で囲われていることが、工程７４０が選択可能であることを示している。一つの実施形態では、特徴を「セット」または「クラスタ」に分割して、環境の静的要素（つまり背景）に関連するフローベクトルのセットを生成する。例えば、カメラが動くのと同じ方向に鳥が画像を横切って飛んでいる場合、鳥を表す特徴は、静的特徴と同程度の大きさの変位を示さないか、または鳥がカメラよりも速く動いている場合、反対方向への変位を示すことがある。よって、鳥を表す特徴を分離して静的特徴に注目するようにすれば、カメラの動きのより正確な検出が可能になる場合がある。
【００５７】
分離の一つの例では、環境の静的部分が、いずれの単一の動的（動いている）部分よりも大きい領域を構成していると仮定する。この仮定の下では、特徴群の最も重要なセットは環境の静的要素と関連する。ここで、「最も重要な」の計数は、特徴は均等に分散されていないので、特徴の数だけではなくこのセットによってカバーされた面積を含む。カメラの回転量を、この特徴群のセットを使用して推定する。特徴を分類して、静的な背景の一部である可能性が高いのか動いている物体である可能性が高いのかを示すタグを付けてもよい。このようなタグを、後のフレームにおいて特徴の分類を更新する際のヒントとして使用してもよい。
【００５８】
別の例では、Ｚ軸の周りの回転は重要でないとし（つまり回転は、Ｘ軸およびＹ軸の周りのものに限定される）、またＸ軸、Ｙ軸、Ｚ軸に沿った平行移動を重要でないとすると、環境（つまり背景）の静的要素に関連する各フローベクトルは類似の方向と大きさとを有する傾向にある。例えば、図３Ａおよび図３Ｂに示すように、Ｘ軸とＹ軸とだけの周りの回転は、ほぼ平行かつ同等の大きさである静的特徴のフローベクトルを生成する。動いている特徴は、静的特徴（例えば、静的特徴と判定された特徴）のフローベクトルと十分に平行ではないか、又は十分に同等の大きさではないフローベクトルを有する特徴を検出することによって、静的特徴から分けることができる。例えば、許容方向範囲（例えば、静的特徴のフローベクトルの方向から±５°）および許容大きさ範囲（例えば、静的特徴のフローベクトルの大きさから±５ピクセル）を、例えば静的特徴のフローベクトルの検出された方向および大きさに基づいて算出してもよい。ある特徴のフローベクトルの方向が許容方向範囲内でなければ、またはその大きさが許容大きさ範囲内でなければ、その特徴を動いている特徴として分離してもよい。
【００５９】
計算能力が限られたシステムで使用する、動的特徴と静的特徴とに別ける好適な方法は、フローベクトルの方向と大きさの類似性を利用して最も重要な特徴群のセットを選択することである。この実施形態では、静的背景は通常、動いているいずれの物体よりも大きいので、最も重要な特徴群のセットは静的背景であると仮定される。他の実施形態では、最も重要な特徴群のセットは、既知の現実世界の基準物体であると仮定してもよい。基準物体の例は、カメラがユーザーに面する方向を向いている実施形態ではユーザーの顔である。使用した仮定にかかわらず、最も重要な特徴群のセットは、平行かつ同等の大きさを持ち画像の中の最大領域に広がり、および／または最も多い数の特徴を有する特徴群のセットを選択することによって、決定されてもよい。最も重要な特徴群のセットを決定したら、その最も重要な特徴群のセットのフローベクトルと平行ではないかまたは同じ大きさではないフローベクトルを有する特徴を取出すことによって、動いている特徴を分離してもよい。カメラの動きの追加の自由度（例えばＺ軸の周りの回転）の推定は任意であり、追加の自由度を推定するかどうかは、手持ち式装置の利用できる計算能力によって決定してもよい。
【００６０】
処理７００は、カメラの動きを検出する（７５０）。カメラの動きは、一連の画像で対応付けられているが分けられていない各特徴のオプティカルフローベクトルを備えるオプティカルフロー場を使用して検出してもよい。カメラの動きを、オプティカルフローベクトルによって表されるカメラ視野内の特徴の見掛けの速度から算出してもよい。静的特徴のフローベクトルの大きさと方向はカメラの動きに関連しており、カメラの動きを推定するのに使用してもよい。
【００６１】
例えば、静止した場面では、カメラの回転は以下の式によって近似できる：
Vxi=Mx+Mz*Ri*cos(Thetai)
Vyi=My+Mz*Ri*sin(Thetai)
ここで、ＶｘｉとＶｙｉは特徴ｉのフローベクトルの成分を表している。
Ｍｘ、Ｍｙ、Ｍｚはカメラの回転量を表している。
ＲｉとThetaiは、極座標における画像内の特徴の位置を表し、測定値から決定される。
【００６２】
十分に分布した少数の特徴があれば、未知のＭｘ、Ｍｙ、Ｍｚを推定できる。検出された回転量（つまりＶｘｉとＶｙｉ）は、アプリケーションを制御するために直接使用できるか、またはカメラとレンズの性質が分かっていれば現実世界の単位（°）に換算できる。
【００６３】
別の実施形態では、Ｚ軸の周りの回転およびＸ軸、Ｙ軸、Ｚ軸に沿った平行移動は、ユーザーは通常Ｚ軸の周りにカメラを回転させることはなくそしてユーザーは通常静止しているため、重要でないと仮定する。この実施形態では、静止した場面でのＸ軸およびＹ軸の周りのカメラの回転量は、単に、全ての特徴のフローベクトルの平均と推定できる。Ｘ軸およびＹ軸のみの周りの回転ではほぼ平行で同等の大きさのフローベクトルが生成されるため、全フローベクトルの平均が、全フローベクトルの比較を代表するものとなる。一つの例では、静止した場面でのＸ軸およびＹ軸の周りのカメラの回転量を、全ての特徴のフローベクトルの加重平均と推定してもよい。加重平均では、各フローベクトルの影響に信頼度スコアを掛け算する。結果として、高い信頼度を有するフローベクトル（例えば良好な対応関係）が、低い信頼度を有するフローベクトル（例えば劣っているかまたは疑わしい対応関係）よりも、結果に大きな影響を与える。
【００６４】
処理７００は、必要があればカメラの累積した動きを算出する（７６０）。図７において工程７６０が破線で囲われていることが、この工程が選択可能であることを示している。累積した動きを、カメラの検出された動きを追跡することによって算出してもよい。一連のカメラ画像の累積した動きを、最初の位置に対するこの装置の位置を検出するために算出してもよい。しかし、比較的速く画像から画像へと誤差が増大する場合がある。
【００６５】
増大する誤差を低減するために、フロー場を算出する際に、特徴の全体的なパスを格納してもよい。最初の位置に対する特徴の変位を表す全体的な動きベクトルに、前述したカメラの動き技法を適用できる。これは、カメラの動きが限定的なものであって、特徴群のサブセットが追跡期間に亘ってカメラの視野内に留まる場合に特に有効であることがある。例えば、鉛筆の先端が画像の中の特徴であるとする。鉛筆の先端が画像の中に留まるような領域に亘ってカメラが動くとき、鉛筆の先端を表す特徴の元の位置を格納しておけば、その鉛筆の先端を表す特徴の現在の位置をその鉛筆の先端を表す特徴の元の位置と比較することによってカメラの累積した動きを算出してもよい。各パスは通常、多くのカメラフレームにわたるので、誤差の累積は、フレーム間で累積した動きを算出するよりも遅くなる。
【００６６】
最初の画像以降、検出された全ての特徴を考えると、全体的な特徴パス群のセットに、追跡の全期間に亘って延びるパスが含まれているとは限らない。例えば、上述したように、物体（鉛筆の先端など）がカメラの視野から出てしまうこともある。しかし、全体的な特徴パス群のセットは、開始時（最初に検出された、又はカメラの視野に入った）と終了時（最後に検出された、又はカメラの視野から出た）が重なっている、分かれているが関連するパス群を含んでいる可能性が高い。（時間上）重なっているパスの組み合わせを、最初の位置に対して特徴群を累積的に位置付けするために使用できる。
【００６７】
例えば、鉛筆の先端は画像の中の特徴であるが、鉛筆の消しゴムは画像の中に存在していないとする。カメラが動くと、鉛筆の先端を表す特徴が画像にわたって移動し、追跡される。その後の画像では鉛筆の消しゴムが視野に入り、鉛筆の先端と鉛筆の消しゴムの両方が画像の中で追跡された特徴となるようにカメラが動いたとする。さらにカメラが動くと、鉛筆の先端は画像から去り、鉛筆の消しゴムを表す特徴はまだ残って追跡されるとする。鉛筆の先端と鉛筆の消しゴムは同時に画像内に存在していた特徴であるので、プロセッサは、鉛筆の先端に対する鉛筆の消しゴムの相対的な位置を算出できる。よって、（１）鉛筆の消しゴムを表す特徴の現在位置と、（２）鉛筆の先端に対する鉛筆の消しゴムの相対位置と、（３）鉛筆の先端がカメラの視野から去る前の格納されたパスとを使用して、プロセッサが、消しゴムの完全なパスを決定してもよい。次に、消しゴムの完全なパスをプロセッサが使用して、カメラの累積した動きを追跡しカメラの最初の位置を特定してもよい。この技法を、鉛筆の消しゴムが画像から出るときにカメラの累積した動きを追跡し続けるために、追加の特徴で繰り返してもよい。このような関連しているが分かれている特徴パスを使用することによって、個々の特徴パスを使用するよりも、誤差の累積をかなり遅くすることができる。
【００６８】
処理７００を使用して、例えば、カメラの動き、カメラの最初の位置に対する相対的な位置および／またはカメラの最初の方向に対する相対的な方向を、２から６の各自由度で算出してもよい。６未満の自由度でカメラの動きを推定する際には、６自由度のうちの一つ以上の動きが固定であると仮定する。例えば、ユーザーが一つの位置で起立または着席し、Ｚ軸の周りにこの装置を回転させないと予想される場合、２自由度（Ｘ軸およびＹ軸の周りの回転）が適当である可能性がある。ユーザーが一つの位置で起立または着席すると予想される場合、３自由度（３つ全ての軸の周りの回転）が適当である可能性がある。ユーザーが歩き回ることが予想される場合、６自由度（３つ全ての軸の周りの回転および３つ全ての軸に沿った平行移動）が適当である可能性がある。アプリケーションが累積した位置算出のための最初の位置を、任意の時に、または、例えばセッション、ゲーム、レベルの開始時に、またはユーザーが要求した時にリセットしてもよい。
【００６９】
これらは画像に依存する単位で算出されるが、カメラレンズについての情報があれば、現実世界の単位（即ち、角度）に変換できる。画像に依存する単位は、カメラの画像のピクセルを使って表されることがあるが、現実世界の単位は、角度（回転について）と、インチまたはセンチメートル（平行移動について）で表されることがある。画像に依存する単位を現実世界の単位に変換する一つの方法は、単に、方向に、視野（つまり角度）／画像サイズ（つまりピクセル）を表す係数を掛け算する。
【００７０】
図８Ａ〜図８Ｃは、例えば図６で示す処理６００と図７に示す処理７００とを実行するように構成されたプロセッサ（図示せず）を有するカメラ付き手持ち式装置８１０を操作するユーザーを例示している。プロセッサは、ゲームなどの表示インタフェースを持つアプリケーションを実行するように構成されていてもよい。
【００７１】
図８Ａを参照すると、装置８１０が座っているユーザー８２０によって保持されている。携帯娯楽装置（例えばカメラ付き携帯電話）に備えられたカメラの場合、そのカメラの動きが、平行移動無しの純粋な回転であるとは限らない。しかし、その場面の物体がカメラから十分離れた位置にある場合、平行移動よりも回転の方が特徴のフローベクトルの大きさに大きな影響を与えるので、オプティカルフローに対する平行移動の影響はある種のアプリケーションにとっては重要ではない。図示の例では、装置８１０のカメラ８３０が、カメラから約１ｍの距離にある床に面している。このシナリオでは、１°のカメラ回転によって生成されるオプティカルフロー速度の大きさは、１７ｃｍのカメラ平行移動と同程度であることがある。このシナリオのユーザーは、意図的にカメラ付き携帯電話を傾けるが、数センチメートルを超えて電話を平行移動させる可能性は少ない。それゆえ、感知できるほどの誤差を生成するためにはユーザーは通常ではあり得ないほど長い距離にわたって装置を平行移動させる必要があるため、装置を回転させることによってゲームを制御するために必要な精度を求めて、平行移動の影響は無視でき、オプティカルフローは単純に回転の結果であると仮定できる。従って、ユーザー８２０は装置を回転させてカメラ付き手持ち式装置８１０で実行されるアプリケーションにユーザー入力を提供できる。
【００７２】
図８Ｂを参照すると、装置８１０が起立しているユーザー８４０によって保持されている。この例では、ユーザー８４０は、床に面している装置８１０のカメラ８３０を持って比較的静止した状態で起立している。座っているユーザーと同様に、床との距離はカメラの平行移動を無視できるほど十分に遠いものであり、ユーザー８４０はカメラ付き手持ち式装置８１０を回転させてアプリケーションへユーザー入力を提供できる。
【００７３】
図８Ｃを参照すると、カメラ付き手持ち式装置８５０が、起立しているユーザー８６０によって保持されている。この例では、カメラ付き手持ち式装置８５０のカメラ８７０はユーザーの顔に面している。カメラ８７０がユーザーの顔に向けられると、その顔がカメラ画像の大きな部分を占めるようになり、回転の測定値はユーザー８６０を基準とするので、ユーザー８６０は歩いたり動き回ったりしながらカメラ付き手持ち式装置８５０を操作できる。これは、ユーザー８６０が動く時、ユーザーの顔はカメラ付き手持ち式装置８５０に対して動かないためである。ユーザーの顔が静的背景にかわって最も重要な物体となるため、カメラ付き手持ち式装置８５０の動きはユーザー８６０を基準として測定される。このため、ユーザー８６０の歩行は装置の動きとして検知されず、ユーザー入力の検出には影響を及ぼさない。
【００７４】
ゲームなどのアプリケーションのユーザーインタフェースを制御するためにユーザー入力を検出するというアプリケーションについて述べてきたが、これ以外のアプリケーションも可能である。具体的には、カメラが物理的に結合された装置の他の機能または特徴を制御するアプリケーションであってもよい。例えば、装置の動きが検知され、アラームが禁止になっていないときに装置の警報信号を起動する盗難防止のためのセキュリティアプリケーションを利用してもよい。また、ユーザーがカメラ付き携帯電話を自分の耳から離すように傾けた時その電話の音量を上げる音量制御アプリケーションを実現させてもよい。処理６００および７００と、その他の本願明細書に記載した様々な実施形態、特徴、技法は、主に、装置上で動作するオペレーティングシステムによってソフトウェアとして実行されてもよい。そのソフトウェアは、カメラからのデータと、装置に一体化されたコンピュータディスプレイ、テレビ、ＬＣＤなどの表示装置と協働する。ソフトウェアと一緒にまたはソフトウェアに代えてファームウェアおよびハードウェアを使用してもよい。
【００７５】
本開示から明らかなように、本願明細書に記載された実施形態、特徴、技法と、これらの変形または組み合わせとは、例えば様々な装置上で動作するオペレーティングシステム、またはスタンドアローンのアプリケーションまたはユーティリティなどで実施されてよい。
【００７６】
携帯電話、個人用デジタル補助装置（「ＰＤＡ」）、その他のポータブル装置は、ユーザーインタフェースのサイズが通常は限定されていてこのような装置でユーザーインタフェースを制御することが通常は困難であるため、多数の実施形態を提供する。例えば、Blackberry装置、電子手帳、iPod装置またはその他のポータブル音楽プレイヤー、ポケットベルまたはその他の通信装置、ゲーム・通信および／またはデータ編集のための携帯またはポータブル電子装置などで実施できる。
【００７７】
実施形態は、一つ以上の処理を実行するように構成された一つ以上の装置を有していてもよい。装置は、例えば、別個のまたは一体化されたハードウェア、ファームウェア、ソフトウェアを有していてもよい。これらの装置は、例えばマイクロプロセッサ、集積回路、プログラム可能な論理装置、ソフトウェアアプリケーションを内蔵する装置などの処理装置を一般的に指すプロセッサを有していてもよい。
【００７８】
実施形態はまた、一つ以上の処理を実行するための命令を含むコンピュータ読み取り可能な一つ以上の媒体を有する装置において実施されてもよい。コンピュータ読み取り可能な媒体は、例えばハードディスク、コンパクトディスケット、ランダム・アクセス・メモリ（「ＲＡＭ」、リード・オンリー・メモリー（「ＲＯＭ」）などの記憶装置を含む。コンピュータ読み取り可能な媒体はまた、例えばフォーマットされた電磁波符号化または送信命令群を含んでいてもよい。命令群は、例えばハードウェア、ファームウェア、ソフトウェア、又は電磁波の形態であってもよい。命令群は、例えばオペレーティングシステム、アプリケーション、またはこれらの組み合わせに含まれていてもよい。プロセッサは、例えば処理を実行するように構成された装置と、処理を実行するための命令を含むコンピュータ読み取り可能な媒体を有する装置との両方であってもよい。
【００７９】
実施形態はまた、ソフトウェア・オブジェクトの形態で実現されてもよい。このようなオブジェクトは、様々なアプリケーションによってアクセスされるか、または様々なアプリケーションに組み込まれてもよい。
【００８０】
いくつかの実施形態を説明したが、様々な変形が可能であることは理解されよう。例えば、異なる実施形態の各要素を組み合わせたり、追加したり、修正したり、取り除いたりして他の実施形態を実現してもよい。さらに、各種の技術を使用したり、組み合わせたり、修正したりして実施形態を実現してもよい。このような技術には、例えば様々なハードウェア、ソフトウェア、ファームウェア、一体化されたコンポーネント、別個のコンポーネント、処理装置、メモリまたは記憶装置、通信装置、レンズ、フィルタ、表示装置、投射装置などが含まれる。従って、他の実施形態も添付の請求項の範囲内である。
【図１】
2014241592.tif 000003
【図２】
2014241592.tif 000004
【図３Ａ】
2014241592.tif 000005
【図３Ｂ】
2014241592.tif 000006
【図３Ｃ】
2014241592.tif 000007
【図４Ａ】
2014241592.tif 000008
【図４Ｂ】
2014241592.tif 000009
【図５Ａ】
2014241592.tif 000010
【図５Ｂ】
2014241592.tif 000011
【図５Ｃ】
2014241592.tif 000012
【図５Ｄ】
2014241592.tif 000013
【図５Ｅ】
2014241592.tif 000014
【図５Ｆ】
2014241592.tif 000015
【図６】
2014241592.tif 000016
【図７】
2014241592.tif 000017
【図８Ａ】
2014241592.tif 000018
【図８Ｂ】
2014241592.tif 000019
【図８Ｃ】
2014241592.tif 000020