オプティカルフローに基づく傾きセンサー
【課題】動いているモバイルカメラの動きの様子を検出してアプリケーションへのユーザー入力を特定するための方法を提供する。
【解決手段】この方法は、装置に配置された画像センサーによって補足した画像にアクセスする段階と、捕捉した画像中に存在する静止した第1の特徴を識別する段階と、捕捉した画像中に存在する静止した第2の特徴を識別する段階と、捕捉した画像内での第1の特徴と第2の特徴との間の距離の変化に基づいて、装置の奥行き方向の動きの様子を検出する段階とを有する。第2の特徴は、第1の特徴とは異なるものであり、第1の特徴から離れた位置にある。奥行き方向は、第1の特徴および第2の特徴に対して近づいたり遠ざかったりする動きの方向である。
【解決手段】この方法は、装置に配置された画像センサーによって補足した画像にアクセスする段階と、捕捉した画像中に存在する静止した第1の特徴を識別する段階と、捕捉した画像中に存在する静止した第2の特徴を識別する段階と、捕捉した画像内での第1の特徴と第2の特徴との間の距離の変化に基づいて、装置の奥行き方向の動きの様子を検出する段階とを有する。第2の特徴は、第1の特徴とは異なるものであり、第1の特徴から離れた位置にある。奥行き方向は、第1の特徴および第2の特徴に対して近づいたり遠ざかったりする動きの方向である。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は動きの推定に関する。
【背景技術】
【0002】
デジタルカメラは画像のデジタル表現を捕捉する。デジタルカメラは、指定の期間に亘って複数の画像を捕捉するように構成されていることがある。デジタル画像を処理することは、一つの画像の特性を検出するためにその画像の各特徴を処理すること、または撮像している環境の特性または画像捕捉装置の特性を特定するために一連の画像の各特徴を処理することを含んでいることがある。オプティカルフローとして知られる処理では、画像の中の物体とその画像捕捉装置との間の相対的な動きを検出するために、一連の画像における物体の配置を比較することがある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2002−081909号公報
【特許文献2】特開2004−274402号公報
【特許文献3】特開2003−203237号公報
【発明の概要】
【課題を解決するための手段】
【0004】
本明細書で説明する一つの概略の例では、デジタルカメラから捕捉する一連の画像をデジタルカメラの動きを検出するために分析してもよく、検出した動きに基づいて装置へのユーザー入力を特定してもよい。説明する各種の実施形態は以下の特徴のうちの一つ以上を有している。例えば、カメラ付き携帯電話などの携帯娯楽装置において傾きセンサーとしてオプティカルフローを使用することなどである。疎らな特徴群のセット/疎らなフロー場を、リアルタイム実行性能を実現するために使用してもよい。非静的な場面を、フロー場の最も典型的な(すなわち最大の静止しているクラスタ)結果を見つけることによって処理してもよい。長い期間にわたって、最初の位置および/または方向を基準とした位置および/または方向を算出してもよい。カメラが固定され、ユーザーの方ではない方向を向いているカメラ付き携帯電話において前記特徴を使用してもよい。限定的な処理能力を有する装置用に実施形態/特徴を構成してもよい。
【0005】
概略の態様に係る方法は、動いているモバイルカメラから画像を捕捉することと、前記捕捉された画像に基づいて前記動いているモバイルカメラの動きの様子を検出することとを含んでいる。前記方法はまた、インタフェース装置上にアプリケーションへのユーザーインタフェースを提供することも含んでいる。前記アプリケーションへのユーザー入力を、自動的に前記検出された動きに基づいて特定する。
【0006】
前記概略の態様の実施形態は、以下の特徴の一つ以上を有してもよい。例えば、前記インタフェース装置が前記モバイルカメラに物理的に結合されている、または前記モバイルカメラを有する装置に物理的に一体化されていてもよい。前記動いているモバイルカメラが携帯電話に物理的に結合されていてもよい。
【0007】
動きの様子を検出することは、自動的に実行されてもよく、大きさと方向のうちの一つ以上を検出することを含んでもよい。動きの様子を検出することは、また、オプティカルフローを使用することを含んでもよい。
【0008】
前記動いているモバイルカメラの動きの様子を検出することは、2または3自由度の前記動いているモバイルカメラの回転量を算出することを含んでもよい。前記動いているモバイルカメラの動きの様子を検出することは、また、前記動いているモバイルカメラの平行移動量を算出することも含んでよい。
【0009】
前記動いているモバイルカメラの動きの様子を検出することは、前記動いているモバイルカメラの最初の位置に対する前記動いているモバイルカメラの移動量を算出することを含んでもよい。前記動いているモバイルカメラの前記最初の位置が、アプリケーションによって再セットされてもよい。
【0010】
前記動いているモバイルカメラの動きの様子を検出することは、前記捕捉された画像中の特徴群の動きを検出することと、前記特徴群の前記動きに基づいて前記モバイルカメラの動きを検出することとを含んでもよい。前記特徴群の前記検出された動きに基づいて、前記特徴群を、基準の現実世界のフレームに対して動いている動的特徴群のセットに分けてもよい。動的特徴群に分けることは、最大の面積をカバーする特徴群のセットを選択することと、選択されなかった特徴を無視することとを含んでもよい。動的特徴群を分けることは、また、特徴群の重要なセットと類似の方向と大きさを有していない特徴を無視することを含んでもよい。
【0011】
動きの様子を検出することは、前記捕捉された複数の画像から特徴を抽出することと、二つ以上の画像に存在している各特徴を対応付けるために画像を比較することとを含んでもよい。前の画像内の特徴の位置に対する現在の画像内のその特徴の位置の変位を算出することによって、対応付けられた特徴のフローベクトルを決定してもよい。前記各対応付けられた特徴の前記決定されたフローベクトルに基づいて前記モバイルカメラの前記動きを検出する。
【0012】
前記捕捉された画像から特徴を抽出することは、角および縁の少なくとも一つを検出することを含んでもよい。各特徴を対応付けるために画像を比較することは、最初に、画像内の前記特徴の既知の位置と、近接した別の画像内のブロックとを比較することを含んでもよい。各特徴を対応付けるために画像を比較することは、また、最初に低解像度で画像を比較し、対応が見つかったかどうかに応じてより高い解像度で画像を比較することを含んでもよい。前記フローベクトルを基に前記モバイルカメラの前記動きを決定することは、画像に依存する単位で決定された前記動きを変換することによって現実世界の単位で前記モバイルカメラの前記動きを特定することを含んでもよい。
【0013】
画像を捕捉することに、一連の画像を捕捉することが含まれていてもよい。前記動いているモバイルカメラの動きの様子を検出することは、前記一連の画像のうち第1サブセットの画像に現れている第1の特徴の動きを検出することと、前記一連の画像うち、前記第1サブセットと部分的に重複した第2サブセットの画像に現れている第2の特徴であって、前記第1の特徴との間に、前記第1の特徴が前記第2サブセットの画像の全てには現れていない場合でも、第2の特徴の動きが前記第1の特徴の動きに基づいているという固定した物理的関係を有する第2の特徴の動きを検出することとを含んでもよい。前記第1と第2の特徴の検出された動きに基づいて、前記動いているモバイルカメラの動きの様子を検出してよい。
【0014】
前記ユーザー入力が傾きセンサー機能を模倣し、アプリケーション中で物体の傾き、またはアプリケーション中でボールの動き、またはアプリケーション中で乗り物の操縦機能、またはアプリケーション中で物体の照準合わせ機能、またはアプリケーション中で物体のナビゲーション機能、またはアプリケーション中で関節を有するキャラクタの動き、または粒子シミュレーションアプリケーション中の粒子の動きを制御してもよい。前記検出された動きの大きさがしきい値の大きさよりも大きいときに前記ユーザー入力が特定されてもよい。前記アプリケーションは、ゲーム、追跡アプリケーション、セキュリティアプリケーションのうちの少なくとも一つを含んでもよい。
【0015】
別の概略の態様によれば、携帯電話が、電話にそれぞれ一体的に形成されたカメラとディスプレイとを有している。前記電話はまた、前記カメラと前記ディスプレイとに物理的にかつ通信可能に接続された処理装置を有している。前記電話は、さらに、前記処理装置に物理的にかつ通信可能に接続されたコンピュータ読み取り可能な媒体を有している。前記コンピュータ読み取り可能な媒体は、少なくとも、(1)前記カメラから捕捉された画像を受け取ることと、(2)前記受け取った画像を基に前記電話の動きの様子を検出することと、(3)アプリケーションへのユーザーインタフェースを前記ディスプレイに提供することと、(4)前記電話の前記動きの様子に基づいて前記アプリケーションへのユーザー入力を自動的に特定することと、(5)前記アプリケーションに前記ユーザー入力を提供することとを、前記処理装置に実行させるための命令を有している。
【0016】
前記概略の態様の実施形態は、様々なさらなる特徴を有していてもよい。例えば、前記コンピュータ読み取り可能な媒体は、前記処理装置の一体化された部分であってもよい。
【0017】
各種の態様、実施形態、特徴は、本願明細書で例えば一つの方法でしか記載されていない場合でも、様々な方法で実施してよい。各種態様、実施形態、特徴は、例えば方法、装置、方法を実行するための装置、プログラムまたは他の命令のセット、プログラムまたは他の命令のセットを含む装置、コンピュータ読み取り可能な媒体又は伝搬された信号などのうちの一つ以上を使用して実施してもよい。コンピュータ読み取り可能な媒体または伝搬された信号は、例えば、命令、ソフトウェア、画像、その他のデータなどを含んでいてもよい。各種の態様、実施形態、特徴には、また、例えばカメラなどのさらなるコンポーネントが含まれていてもよい。
【0018】
一つ以上の実施形態の詳細を、添付の図面と以下の記述の中で説明する。他の特徴は、以下の記述と図面と請求項から明らかとなるであろう。
【図面の簡単な説明】
【0019】
【図1】動きの様子を検出してその検出した動きに基づいてユーザーインタフェースを制御するように構成されたカメラ付き携帯電話の一例を示す図である。
【図2】カメラと、カメラの動きを定義するための軸システムの一例を示す図である。
【図3A】カメラと、X軸の周りのカメラの回転によって生成されるオプティカルフローベクトルの一例を示す図である。
【図3B】カメラと、Y軸の周りのカメラの回転によって生成されるオプティカルフローベクトルの一例を示す図である。
【図3C】カメラと、Z軸の周りのカメラの回転によって生成されるオプティカルフローベクトルの一例を示す図である。
【図4A】カメラと、X軸に沿った平行移動によって生成されるオプティカルフローベクトルの一例を示す図である。
【図4B】カメラと、Z軸に沿った平行移動によって生成されるオプティカルフローベクトルの一例を示す図である。
【図5A】下面にカメラを有する携帯電話を保持するユーザーの一例を示す図である。
【図5B】下面にカメラを有する携帯電話を保持するユーザーの一例を示す図である。
【図5C】X軸の周りにカメラを有する携帯電話を回転させる際のユーザーの手の動きの一例を示す図である。
【図5D】X軸の周りにカメラを有する携帯電話を回転させる際のユーザーの手の動きの一例を示す図である。
【図5E】Y軸の周りにカメラを有する携帯電話を回転させる際のユーザーの手の動きの一例を示す図である。
【図5F】Y軸の周りにカメラを有する携帯電話を回転させる際のユーザーの手の動きの一例を示す図である。
【図6】装置の動きの様子を検出してアプリケーションへのユーザー入力を特定するための処理の一例を示すフローチャートである。
【図7】動いているカメラの動きの様子を検出するための処理の一例を示すフローチャートである。
【図8A】着席した姿勢で、カメラ付き手持ち式装置を保持するユーザーの一例を示す図である。
【図8B】起立した姿勢で、カメラ付き手持ち式装置を保持するユーザーの一例を示す図である。
【図8C】カメラがユーザーに向けられ起立した姿勢で、カメラ付き手持ち式装置を保持するユーザーの一例を示す図である。
【発明を実施するための形態】
【0020】
動いているモバイルカメラの動きの様子を検出し、アプリケーションへのユーザー入力を特定するための幾つかの技法を提供する。一つの技法は、動いているモバイルカメラから一連の画像を捕捉し、その一連の画像中に存在する静止している特徴群を比較することを含む。特徴は、例えば画像の中の物体、画像の中の物体の一部、および/または画像の中の物体の角または縁などであってよい。動いているモバイルカメラの動きの様子を検出するために、オプティカルフロー分析を一連の画像に対して実行する。検出した動きに基づいてアプリケーションへのユーザー入力を特定する。アプリケーションは、このユーザー入力に応答し、例えばユーザーインタフェースを更新する。
【0021】
図1を参照すると、カメラ付き携帯電話100などの携帯娯楽用装置に備えられたカメラからの一連の画像のオプティカルフローを使用して、例えばゲームまたはアプリケーションを制御する手段としてのこの手持ち式装置の動きを検出するシステムが示されている。カメラ付き携帯電話100は、ユーザーがこの装置と対話できるように構成されているユーザーインタフェース110を有している。ユーザーインタフェース110は、例えば、表示インタフェース111と、キーパッド112と、マイクロフォン113と、スピーカー114とを有している。表示インタフェース111はユーザーに視覚的表示を提供する。その視覚的表示は、カメラ付き携帯電話の状態に関する情報又は、カメラ付き携帯電話上で動作するように構成されているゲームなどのアプリケーションに視覚的インタフェースを提供してよい。キーパッド112は、ユーザーがカメラ付き携帯電話へ入力するために作動させるボタンまたは押圧作動スイッチ群を有している。マイクロフォン113は、ユーザーからの音声による入力を受け付けるものであって、電話システムを用いてその音声入力を他の装置に送信するか又は、ユーザーの音声入力に基づいてユーザー入力を特定するように構成されていてもよい。スピーカー114は、ユーザーへの音声出力を生成するものであって、電話システムを介する通信の音声出力を生成するか又は、カメラ付き携帯電話の状態に関する情報を示す音声出力を生成する(例えば、ユーザー入力の受け付けを示す音を生成する)ように構成されていてもよい。プロセッサ(図示せず)は、ユーザーインタフェース110の各部分からの入力を受け付け、そのユーザー入力に基づいて機能または処理を実行し、ユーザー入力に適宜応答して表示ディスプレイ111に画像を映し、および/またはスピーカー114から音を生成するように構成されている。
【0022】
カメラ付き携帯電話100はまた、カメラ120を有している。カメラ120は、画像の焦点を合わせるためのレンズ121を有しており、レンズ121によって焦点が合わされた画像のデジタル表現を捕捉することができる。図1ではカメラ120はカメラ付き携帯電話100の上部にあってユーザーが表示インタフェース111を見ているときは、ユーザーに面するようになっているが、カメラ120は様々な場所および方向でカメラ付き携帯電話に配置されていてもよい。例えば、カメラ120は、カメラ付き携帯電話100の上部に位置し、ユーザーが表示インタフェース111を見ているときユーザーと向き合わないようになっていてもよい。カメラ120は、カメラ付き携帯電話100が動いている間、時間の経過と共に一連の画像を捕捉するように構成されていてもよい。プロセッサ(図示せず)が一連の画像を受け付けて、カメラ付き携帯電話100の動きの様子を検出するために一連の画像に対して処理を実行してもよい。プロセッサは、検出した動きに基づいて、検出したカメラ付き携帯電話100の動きに対応するアプリケーションへのユーザー入力を決定してよい。例えば、プロセッサが、ユーザーがカメラ付き携帯電話100を左に回転させたことを検出した場合、プロセッサは、ユーザーがある特定の行動を取ることを望んでいると決定してもよい。また、プロセッサが、ユーザーはカメラ付き携帯電話100を右に回転させたことを検出した場合、プロセッサは、ユーザーがある特定の行動を取ることを望んでいないと決定してもよい。他の実施形態では、プロセッサは、カメラ付き携帯電話100上で動作するゲームへのユーザー入力として、検出した動きを使用してもよい。例えば、カメラ付き携帯電話100を左に回転させると、ゲームで表示された物体を左に移動させ、カメラ付き携帯電話100を右に回転させると、ゲームで表示された物体を右に移動させる。
【0023】
カメラが動いている間に捕捉された画像に基づいてカメラの動きの様子を検出するためにカメラ付き携帯電話100のプロセッサが使用する一つの技法が、オプティカルフローとして知られている。オプティカルフローとは、一連の画像の中の特徴の見かけの相対速度を指す。一連の画像を単一のカメラで捕捉して、特別なカメラハードウェアまたはキャリブレーション無しでオプティカルフローを使用することができる。従来、オプティカルフローは、画像シーケンスの時間補間(動画でフレームを挿入すること)、三次元物体再現調査などの用途に使用される。
【0024】
カメラの動きを検出するために、プロセッサが一連の画像の中で静的特徴群を特定し比較してもよい。カメラが動く間、画像内の特徴の位置はその動きに応答して変化する。特徴の速度をフローベクトルとして表現してもよい。特徴速度のセットをフロー場と呼ぶ。速度はカメラに対して相対的なものである。他の文献では、動きベクトルと動き場という用語がよく使用される。しかし、「動きベクトル」と「動き場」という用語の使用は、画像シーケンス内の特徴の速度が直接その物体の動きに対応し、カメラは静止していると仮定されることを意味する場合がある(本目的にとっては不必要)。
【0025】
オプティカルフローはカメラに対して相対的なものであるため、カメラの動きは、カメラ視界における特徴の見かけの速度となる。特徴は静止していてもよい、つまり木のように物理的位置が変化しなくてもよい。逆に、特徴は、動的すなわち動いていてもよい(例えば車)。カメラの動きを推定するために、一連の画像内の静的特徴の見かけの動きを利用する。カメラの動きは、カメラの視界中の特徴の見かけの速度から算出することができる。また、広く分布した疎らな特徴群のセットが、カメラの動きを推定するのに十分である。
【0026】
捕捉された画像を基にしてカメラの動きの様子を検出することができる様々な動き推定技法を使用してもよいが、既存のオプティカルフローシステムは一般的に計算コストが高く、故に現在の一般消費者向け手持ち式装置には不適切である。一般消費者向け手持ち式装置は、広範囲の種類の計算を実行できる汎用プロセッサを有している。しかし、ビデオフレームごとに実行できる計算の数は限られている。
【0027】
既存のオプティカルフローシステムは一般的に、密なフロー場の生成することを試みる。カメラの動きは6自由度で表現できる(例えば、X、Y、Z軸に沿った平行移動と、X、Y、Z軸の周りの回転)。しかし、意図する用途では、動きはもっと少ない自由度で近似できる。一つの実施形態では、ある特定の自由度における動きは無視できると仮定しその自由度における動きを無視することによって、カメラの動きを近似してよい。例えば、カメラの動きは、Z軸の周りの回転とX軸、Y軸、Z軸に沿った平行移動は無視し、X軸とY軸の周りのカメラの回転を記述することによって近似してもよい。よって、プロセッサはカメラの動きを推定するために密なフロー場を生成してもよいが、広く分布した疎らな特徴群のセットがカメラの動きを推定するのに十分である。広く分布した疎らな特徴セットについて、例えば図7を参照して後述する。
【0028】
特徴群を追跡するとき、平行移動無しのカメラ視野の回転(パンすること及び傾けること)は、フローベクトルが三次元場面形状(奥行き)から独立したオプティカルフローを生成する。これについては、以下で説明する図3A〜図3Cに例示されている。カメラが回転している静止した場面では、カメラが動くにつれて特徴が他の物体によって隠蔽されたり現れたりすることはない。特徴は、カメラの視野に入ったり出たりすることで現れたり消えたりするだけである。例えば、ある人が、物体の背後に何があるのか知るためにその物体の背後を見たいとする。その人は、その物体の向こう側を見るために傾くかまたは移動する(例えば平行移動)必要があり、単に自分の目を動かす(例えば回転運動)だけでその物体の向こう側を見ることはできない。
【0029】
図2〜図4は、カメラの可能な動きと、その動きによって生成されるオプティカルフローベクトル及びオプティカルフロー場の例を示している。
【0030】
図2を参照すると、一連の画像を捕捉できるカメラ200が、カメラの動きを定義するための軸システムとの関係で示されている。特に、カメラの回転を3自由度について測定する。例えば回転を、X軸210と、Y軸220と、Z軸230に関して測定する。各軸の周りの回転の測定結果は、カメラの回転を完全に記述する可能性がある。カメラの動きの様子を定義したこの軸システムに関して説明する。次の例では、オプティカルフローベクトルは、紙面の上から見下ろすカメラ200とその紙面上の撮像物体に基づいて決定される。
【0031】
図3Aを参照すると、ベクトル310で示すようにX軸210を軸に回転するカメラ200が図示されている。静止した場面では、フローベクトルは平行でありX軸210の周りの回転と同じ大きさとなる傾向にある。カメラ200がX軸210の周りを回転することによって生成されるオプティカルフローベクトルが、オプティカルフロー場320に示されている。カメラ200がX軸210の周りをベクトル310で示す方向に回転すると、一連の画像で捕捉された静止した物体は、オプティカルフロー場320に示すオプティカルフローベクトルで示す方向に動いているように見える。具体的には、カメラ200が紙面の上方に向かって上方にX軸210の周りを回転し、同時にカメラ200が一連の画像を捕捉する場合、一連の画像内の静止した物体は、時間的に後の方に撮影された画像の中では画像の下部に近づいて現れ、その結果、紙面の下部の方を指すフローベクトルが生成される。算出されたオプティカルフロー場320に基づいて、X軸210の周りの回転を検出できる可能性がある。
【0032】
図3Bを参照すると、Y軸220の周りを回転するカメラ200が図示されている。静止した場面では、フローベクトルは平行でありY軸220の周りの回転と同じ大きさとなる傾向にある。カメラ200のY軸220の周りの回転から生成されるオプティカルフローベクトルが、オプティカルフロー場340に示されている。カメラ200がY軸220の周りをベクトル330で示す方向に回転すると、一連の画像で捕捉された静止物体は、オプティカルフロー場340に示すオプティカルフローベクトルで示す方向に動いているように見える。具体的には、カメラ200がY軸220の周りを紙面の右側に向かって回転し、同時にカメラ200が一連の画像を捕捉する場合、その一連の画像内の静止した物体は右から左へと移動するように見える。すなわち、時間的に後の方に撮影された画像の中では、その静止した物体は画像の左側に近づいて現れ、その結果、紙面の左側の方を指すフローベクトルが生成される。算出されたオプティカルフロー場340に基づいて、Y軸220の周りの回転を検出できる可能性がある。
【0033】
図3Cを参照すると、Z軸230の周りに回転するカメラ200が図示されている。静止した場面では、Z軸230の周りの回転の場合、フローベクトルはカメラ視界の中心点を中心とする円の接線方向を向き、その半径に比例する大きさを持つ傾向にある。カメラ200のZ軸230の周りの回転から生成されるオプティカルフローベクトルがオプティカルフロー場360に示されている。カメラ200がベクトル350で示す反時計回りにZ軸230の周りを回転する時、一連の画像で捕捉される静止した物体は、オプティカルフロー場360に示すオプティカルフローベクトルで示すように時計回りに動いているように見える。従って、ベクトルの略円形のオプティカルフロー場360が得られる。算出されたオプティカルフロー場360に基づいて、Z軸230の周りの回転を検出できる可能性がある。
【0034】
図4Aを参照すると、ベクトル410が示す方向にX軸210に沿って平行移動するカメラ200が図示されている。カメラの視野の平行移動は、フローベクトルが三次元場面形状(奥行き)に依存するオプティカルフローを生成する。カメラが平行移動している静止した場面では、フローベクトルの大きさはカメラ200から物体までの距離すなわち奥行きに依存し、カメラにより近い物体によって特徴が隠されたり現れたりすることがある。カメラが画像420を撮像しながらX軸方向410へ平行移動することによって生成されるオプティカルフローベクトルがオプティカルフロー場430に示されている。カメラ200がX軸方向410に沿って左へ平行移動すると、一連の画像で捕捉された静止物体(例えば、場面420における木および山)は、オプティカルフロー場430に示すオプティカルフローベクトルで示す方向に右へ移動するように見える。オプティカルフロー場430内のフローベクトルの大きさの差異によって示されるように、カメラ200に近い物体はカメラ200からより遠くの物体よりも長い距離を動くように見える。その結果、平行移動の場合、フローベクトルの長さは、撮像されている物体のカメラ200からの奥行きに依存する。例えば、木440がカメラに最も近い物体であるので、木440を表すフローベクトルは最大の大きさを持っている。算出されたオプティカルフロー場430に基づいて、X軸210に沿った平行移動を検出できる可能性がある。
【0035】
図4Bを参照すると、ベクトル450が示す方向にZ軸230に沿って平行移動するカメラ200が図示されている。Z軸方向450へのカメラの平行移動によって生成されるオプティカルフローベクトルがオプティカルフロー場460に示されている。カメラ200がZ軸方向450に沿って平行移動すると、一連の画像で捕捉された静止物体は、オプティカルフロー場460に示すオプティカルフローベクトルが示す方向に移動するように見える。具体的には、カメラがZ軸方向450に沿って撮像している物体に向かって前方に移動し、同時にカメラ200が一連の画像を捕捉する場合、一連の画像内の静止物体は画像の中心から延びる放射状の線に沿って外側に移動するように見える。従って、画像の中心から放射状に外側に向かって延びるフローベクトルのオプティカルフロー場460が得られる。算出されたオプティカルフロー場460に基づいて、Z軸230に沿った平行移動を検出できる可能性がある。
【0036】
図示はしていないが、カメラ200のY軸220に沿った平行移動によって、フローベクトルがY軸220と平行である以外は図4Aに示すものと類似のオプティカルフロー場が生成される。
【0037】
図5A〜図5Fは、ユーザーが自分の手を使って動いているモバイルカメラに与える動きの例を示している。なお、図5A及び図5Bは、その下面にカメラ520を有している携帯電話510を例示している。携帯電話510を保持するユーザーは、携帯電話510とカメラ520とのX軸の周りの回転を発生させるために、例えば自分の手首を後方530に曲げる(図5C)、または前方540に伸ばす(図5D)。自分の手首を後方530に曲げる(図5C)ユーザーの動きは、図3Aに示すオプティカルフロー場320を生成する可能性のある一方向のX軸の周りのユーザー動きの一例である。
【0038】
また、携帯電話510を保持するユーザーは、携帯電話510とカメラ520とのY軸の周りの回転を発生させるために、例えば自分の手首を時計回り550に(図5E)または反時計回り560に(図5F)ひねる。時計回り550(図5E)に自分の手首をひねるユーザーの動きは、図3Bに示すオプティカルフロー場340を生成する可能性のある一方向のY軸の周りのユーザー動きの一例である。ユーザーが、例えば図5C〜図5Fに示す動きをすることで、アプリケーションのユーザーインタフェースを制御するユーザー入力を生成する検出可能な動きをカメラに与えてもよい。
【0039】
図6は、装置の動きの様子を検出してアプリケーションへのユーザー入力を特定するための処理600を示すフローチャートである。一つの実施形態では、カメラが付いた携帯娯楽用装置(例えば、カメラ付き携帯電話100、PDA、その他のカメラが備えられたモバイル装置)のプロセッサが処理600を実行してもよく、また、携帯娯楽用装置上で動作するゲームまたはアプリケーションを制御するために、カメラ視野の回転の測定結果を使用してもよい。傾きセンサーと類似の入力を提供するために、回転の測定結果を使用してもよい。また、傾きの方向と大きさの両方を測定できるので、「アナログ」制御を行ってもよい。アナログ制御は、より細かな制御を可能にし、ゲームプレイの多くの方式にとって「デジタル」制御よりも好ましい。
【0040】
図6に示す処理600の実行において、動いているモバイルカメラが画像を捕捉する(610)。画像の捕捉(610)は、例えば、カメラが動いている間、ある時間に亘って一連の画像のデジタル表現を捕捉することを含んでもよい。
【0041】
プロセッサは、捕捉された画像に基づいてカメラの動きの様子を検出する(620)。プロセッサは、例えば、最も新しく捕捉した画像を時間的にそれより前に捕捉した画像と比較して、一連の画像中の静的特徴の位置の変化を検出しカメラの動きを推定してもよい。プロセッサは前述のオプティカルフロー処理を使用してもよい。動きの様子の検出620は、図7に関連してより詳細に説明する。
【0042】
さらに、アプリケーションへのユーザーインタフェースがインタフェース装置上に提供される(630)。ユーザーインタフェースは、モバイルカメラとは別れていてもよいし(例えば無線通信を利用する)、またはモバイルカメラを含む装置に物理的に結合されているかまたは一体化されていてもよい(例えば、カメラ付き携帯電話100に一体化された表示インタフェース111)。ユーザーインタフェースは、ユーザーが対話する可能性のあるゲームなどのアプリケーションのための視覚的表示を含んでもよい。ユーザーインタフェースはまた、ユーザー入力に応答して音声を生成するように構成されたスピーカーを含んでもよい。例えば、ユーザーインタフェースは、ある動作を起動する動きを受け付けたことを示す音声を生成するように構成されたスピーカーを含んでもよい。
【0043】
検出したカメラの動きに基づいてアプリケーションへのユーザー入力を特定する(640)。カメラの動きに対応して自動的にユーザー入力を特定してもよい。一つの実施形態では、アプリケーションが、「感度」を調節するためにカメラの動きおよび位置に係数を掛けてもよい。この係数は、ユーザーによってプログラムされるか、または選択されてもよい。「感度」は、例えばゲームの仮想環境におけるキャラクタの動きなどのユーザー入力を行うために、ユーザーがどれだけその装置を傾けるかまたは動かす必要があるかを決定する。例えば、ユーザー入力は、カメラの動きが「感度」のレベルを満たすのに十分大きいときのみに検出され特定されてもよい(つまり、小さな重要でない動きは無視されユーザー入力として特定されないことがある)。「感度」を利用する場合、現実世界での位置は通常必要なく計算されない。ここで、現実世界での位置とは、インチ、センチメートル、角度などの単位で測定された物理的世界での装置の位置を指す(例えば、25°回転され東に30センチメートル移動された装置)。仮想世界での位置とは、例えば仮想のキャラクタおよび物体を含むゲームなどの仮想環境における位置を指す(例えば、仮想環境において3ブロック移動させられた仮想キャラクタ)。「感度」を使用するときは、例えばピクセル単位で検出されたカメラの動きを「感度」係数と比較するか、または「感度」係数を掛けて、仮想環境への入力または動きを生成する。その入力または動きは仮想環境に関するものであるため、カメラの現実世界での位置は必要ではない。
【0044】
一つの例では、アプリケーションが、傾きセンサー機能を模倣するためにカメラの向きを使用してもよい。傾きセンサー機能を、ボールが転がる面の傾きをシミュレートすることを含む、ゲームにおけるボールの制御に使用してもよい。別の例では、アプリケーションが、操縦機能を模倣するためにカメラの向きを使用してもよい。操縦機能を、乗り物(例えば、自動車、オートバイ、飛行機、船、サーフボード、スノーボード、スケートボード、ホバーボード、宇宙船)を制御するのに使用してもよい。操縦機能は、操縦方向、ピッチ、ヨー、ロールのうち一つ以上の制御を含んでよい。さらに別の実施形態では、アプリケーションが、照準合わせ機能(狙いを定める)機能を模倣するためにカメラの向きを使用してもよい。照準を合わせるまたは狙いを定める機能を、仮想の武器を制御するのに使用してもよい(ライフルを向けるなど)。照準合わせ(狙いを定める)機能は通常、2自由度を含む。さらに、アプリケーションは、後述するように動く物体として分類された特徴群のサブセットを使用してもよい。このサブセットを、照準合わせ(狙いを定める)アプリケーションを補強するために使用してもよい(例えば、動く物体または特徴をターゲットとして指定し、そのゲームの目的が、動く物体または特徴が画面の中央に表示された十字線に位置するようにその装置を向けることであってもよい)。アプリケーションはまた、例えば、絶対位置決め機能を模倣するためにカメラの向きを使用してもよい。ナビゲーションの用途(例えば、店またはショッピングモールなどの環境においてユーザーをナビゲートするために現実世界環境におけるユーザーの位置を追跡する)、または迷路ゲーム(例えば、ユーザーが、現実世界で歩き回ることによって仮想迷路を歩く)において、絶対位置決め機能を使用してもよい。要求される動きは、手によって実行される動きであってもよいし、または環境においてユーザーが歩き回る動きであってもよい。
【0045】
別の実施形態では、アプリケーションが、アニメキャラクタ(例えば、ボブルヘッドやマリオネット)を制御するためにカメラの向きを使用してもよい。傾きの瞬間的な大きさおよび方向をそのキャラクタの動きに変換してもよい。キャラクタの関節で結合された各部分はシミュレートされた質量を与えられてもよい。その場合、検出された動きを与えられた各部分の動きの大きさは、その質量に反比例する。さらに、キャラクタの関節で結合された各部分は、所定の共振周波数を持つシミュレートされたばねによって相互に連結されていてもよい。
【0046】
また、アプリケーションは、粒子シミュレーションアプリケーション(例えば、スノーグローブまたはサンドアート)において粒子を制御するのにカメラの向きを使用してもよい。傾きの瞬間的な大きさおよび方向は、粒子の数および/またはそれらの運動エネルギーを決定してもよい。粒子はシミュレートされた重力によって引き寄せられてもよく、これによって粒子は仮想環境内で下に溜まる。仮想環境には画像または物体が含まれていてもよく、粒子はその物体の上に溜まる。このアプリケーションの一つの形態では、粒子は雪を表す。1つの選択肢として、アプリケーションは、電子グリーティングカード(例えばクリスマスカード)の形態で配布されてもよい。このアプリケーションの別の形態では、粒子群は様々な色で表示される(例えばサンドアート)。このアプリケーションでは、色付けされた粒子群が幾つかのパターンを形成して溜まってもよい。
【0047】
図7は、オプティカルフローを使用して動いているカメラの動きの様子を検出するための処理700を示すフローチャートである。密なフロー場アルゴリズムを使用してもよいが、カメラの動きは6自由度で表現することができ、意図するアプリケーションにおいてはより少ない自由度で近似できる。それゆえ、様々な自由度でカメラの動きを検知または推定するのに広く分布した疎らな特徴群のセットで十分であり、処理負荷を減らすために広く分布した疎らな特徴群のセットを使用してもよい。特定の実施形態では、処理負荷を減少させてリアルタイムで画像を捕捉し処理してもよい。
【0048】
一つの実施形態では、広く分布した疎らな特徴群のセットが、6自由度でカメラの動きを推定するのに十分である。疎らなオプティカルフローでは、画像中の視覚的に際立つ特徴についてのみフローベクトルが作成されてもよい。これらの特徴は、画像全体に亘って分散していてよい。広く分布した特徴群のセットでは、特徴が画像全体に亘って分布しており、画像の各領域に少なくとも一つの特徴が存在するようになっている(例えば、全ての特徴が画像の一角に塊として存在しているのとは違って)。ゆえに、画像の全領域における動きを記述するのに密フロー場は必要ではなく、特徴が広く分布していれば疎らなセットでも同じ役割を果たすことができる。
【0049】
疎らなオプティカルフローでは、広く分布した特徴群のセットが必要である場合がある。例えば、Y軸の周りの回転(図3B)をX軸に沿った平行移動(図4A)と比較してみる。特徴の分布が十分でなければ、例えば画像の下部に沿った全てのフローベクトルが同じ方向と長さを有するので、X軸に沿った平行移動がY軸の周りの回転と区別できなくなる。
【0050】
本発明の幾つかの実施形態では、6自由度よりも少ない自由度で動きを近似する。この場合、ある特定の自由度は無視できるものと仮定し無視する。自由度が減少すると広く分布した特徴群の必要性が軽減される。例えば、一つの実施形態では、X軸とY軸の周りのカメラの回転を記述し、Z軸の周りの回転とX軸、Y軸、Z軸に沿った平行移動とは無視することによってカメラの動きを近似してもよい。この仮定の下では、全ての特徴が画像の下部に沿って存在している前記の例におけるカメラの動きは、X軸に沿った平行移動は無視できるものと仮定しているので、Y軸の周りの回転の効果によるものであると考えることができる。
【0051】
処置700は特徴を抽出すること(710)を含む。動くモバイルカメラから捕捉された一連の画像を分析する際には、そのカメラで捕捉された各画像に特徴抽出処理を適用する。特徴抽出処理は、任意の一つの画像から疎らな特徴群のセットを抽出するだけでよい。求められる特徴は通常、角および縁を含む。角や縁は、装置が操作される環境の多くで通常、見つけることができる。角および縁は動的な光レベルによって影響されにくい、これは装置が戸外で操作される場合に重要であることがある。さらに、角および縁などの特徴は、画像内で検出するのに比較的計算コストが安い。角および縁を抽出する方法は公知である。
【0052】
特徴を抽出した後、処理700では、画像同士を比較して一つ以上の画像に共通な特徴を対応付ける(720)。例えば、フロー場算出処理では、現在のカメラ画像の特徴群と、前回のカメラ画像の対応する特徴群とを対応付ける。特徴を対応付けるために、現在のカメラ画像の各特徴を、前回のカメラ画像の特徴群のサブセットと比較する。このサブセットは、近接性と特徴の性質(例えば、角の向きおよびコントラスト)によって選択される。特定の実施形態では比較すべき特徴の数が少ないので、装置の計算負荷を最小にする。
【0053】
一つの実施形態では、前回のカメラ画像の特徴群の、現在の画像における位置を、前回のフロー場を使用して予測する(前回のフロー場がない最初のフレームは除く)。対応相手として可能性のあるもの全てについて、予測位置からの距離と特徴の性質の類似度と対応の特異性とによって作成されるスコアを基に、一対一の対応を選択する。スコアはスカラー値であり、信頼度を表している。一対一の対応を確認するために、可能性のあるペア群を、それらのスコアから、ペアのどちらかの特徴が関与する他の可能性のある対応関係のスコアに基づくペナルティを引き算したものに基づいてランク付けする。十分なスコア(信頼度)を有する対応相手をフロー場に追加する。スコア(信頼度)を後の使用のためにフローベクトルと共に記録する。
【0054】
他の実施形態では、計算の負荷を減らすために、特徴を対応付ける手順は、特徴の近くに位置するブロックを先ず分析するか、または最初は低解像度で特徴の対応付けを試みて対応が見つかるまでまたは最高の解像度で画像を比較するまで解像度を上げ続けることを含んでもよい。例えば、画像をデシメーションするピラミッド方法を適用してもよい。デシメーションでは、例えば画像をブロックに分割して各ブロックを代表する一つのピクセル値を生成する(例えば、ブロック内部のピクセルの平均値をとる)ことによって、画像の低解像度バージョン(ピラミッドのレベルと呼ぶ)を作成する。画像の低解像度バージョンは分析するピクセルが少なく探索する領域が小さいので、処理の負荷を減らすことが可能になる。低解像度で結果が得られたら、探索を制限するために低解像度で見つかった結果を利用して、より高い解像度で画像を分析してもよい。例えば、一つ以上の特定の低解像度領域で特徴の対応が見つかったら、それらの特定の低解像度の領域をより高い解像度で特徴を探すようにしてもよい。
【0055】
特徴を対応付けた後、処理700では各特徴のフローベクトルを決定する(730)。一つの実施形態では、現在のカメラ画像での特徴の位置の、前回のカメラ画像でのその位置に対する変位を算出することによってフローベクトルを決定する。フローベクトルのセットによってフロー場が形成される。各フローベクトルは大きさと方向を有していてよい。対応付けられたペア群は、2つの関連するカメラ画像間で特徴の位置の全体的なパスを生成する。必要があればこのパスを格納して、より長い期間に亘ってオプティカルフロー(従ってカメラの動き)を算出できる。
【0056】
環境が静的であるという保証は無く、それ自体が動いている特徴によってカメラの動きを誤って推定してしまう可能性があるので、必要があれば特徴群を分けてもよい(740)。図7において工程740が破線で囲われていることが、工程740が選択可能であることを示している。一つの実施形態では、特徴を「セット」または「クラスタ」に分割して、環境の静的要素(つまり背景)に関連するフローベクトルのセットを生成する。例えば、カメラが動くのと同じ方向に鳥が画像を横切って飛んでいる場合、鳥を表す特徴は、静的特徴と同程度の大きさの変位を示さないか、または鳥がカメラよりも速く動いている場合、反対方向への変位を示すことがある。よって、鳥を表す特徴を分離して静的特徴に注目するようにすれば、カメラの動きのより正確な検出が可能になる場合がある。
【0057】
分離の一つの例では、環境の静的部分が、いずれの単一の動的(動いている)部分よりも大きい領域を構成していると仮定する。この仮定の下では、特徴群の最も重要なセットは環境の静的要素と関連する。ここで、「最も重要な」の計数は、特徴は均等に分散されていないので、特徴の数だけではなくこのセットによってカバーされた面積を含む。カメラの回転量を、この特徴群のセットを使用して推定する。特徴を分類して、静的な背景の一部である可能性が高いのか動いている物体である可能性が高いのかを示すタグを付けてもよい。このようなタグを、後のフレームにおいて特徴の分類を更新する際のヒントとして使用してもよい。
【0058】
別の例では、Z軸の周りの回転は重要でないとし(つまり回転は、X軸およびY軸の周りのものに限定される)、またX軸、Y軸、Z軸に沿った平行移動を重要でないとすると、環境(つまり背景)の静的要素に関連する各フローベクトルは類似の方向と大きさとを有する傾向にある。例えば、図3Aおよび図3Bに示すように、X軸とY軸とだけの周りの回転は、ほぼ平行かつ同等の大きさである静的特徴のフローベクトルを生成する。動いている特徴は、静的特徴(例えば、静的特徴と判定された特徴)のフローベクトルと十分に平行ではないか、又は十分に同等の大きさではないフローベクトルを有する特徴を検出することによって、静的特徴から分けることができる。例えば、許容方向範囲(例えば、静的特徴のフローベクトルの方向から±5°)および許容大きさ範囲(例えば、静的特徴のフローベクトルの大きさから±5ピクセル)を、例えば静的特徴のフローベクトルの検出された方向および大きさに基づいて算出してもよい。ある特徴のフローベクトルの方向が許容方向範囲内でなければ、またはその大きさが許容大きさ範囲内でなければ、その特徴を動いている特徴として分離してもよい。
【0059】
計算能力が限られたシステムで使用する、動的特徴と静的特徴とに別ける好適な方法は、フローベクトルの方向と大きさの類似性を利用して最も重要な特徴群のセットを選択することである。この実施形態では、静的背景は通常、動いているいずれの物体よりも大きいので、最も重要な特徴群のセットは静的背景であると仮定される。他の実施形態では、最も重要な特徴群のセットは、既知の現実世界の基準物体であると仮定してもよい。基準物体の例は、カメラがユーザーに面する方向を向いている実施形態ではユーザーの顔である。使用した仮定にかかわらず、最も重要な特徴群のセットは、平行かつ同等の大きさを持ち画像の中の最大領域に広がり、および/または最も多い数の特徴を有する特徴群のセットを選択することによって、決定されてもよい。最も重要な特徴群のセットを決定したら、その最も重要な特徴群のセットのフローベクトルと平行ではないかまたは同じ大きさではないフローベクトルを有する特徴を取出すことによって、動いている特徴を分離してもよい。カメラの動きの追加の自由度(例えばZ軸の周りの回転)の推定は任意であり、追加の自由度を推定するかどうかは、手持ち式装置の利用できる計算能力によって決定してもよい。
【0060】
処理700は、カメラの動きを検出する(750)。カメラの動きは、一連の画像で対応付けられているが分けられていない各特徴のオプティカルフローベクトルを備えるオプティカルフロー場を使用して検出してもよい。カメラの動きを、オプティカルフローベクトルによって表されるカメラ視野内の特徴の見掛けの速度から算出してもよい。静的特徴のフローベクトルの大きさと方向はカメラの動きに関連しており、カメラの動きを推定するのに使用してもよい。
【0061】
例えば、静止した場面では、カメラの回転は以下の式によって近似できる:
Vxi=Mx+Mz*Ri*cos(Thetai)
Vyi=My+Mz*Ri*sin(Thetai)
ここで、VxiとVyiは特徴iのフローベクトルの成分を表している。
Mx、My、Mzはカメラの回転量を表している。
RiとThetaiは、極座標における画像内の特徴の位置を表し、測定値から決定される。
【0062】
十分に分布した少数の特徴があれば、未知のMx、My、Mzを推定できる。検出された回転量(つまりVxiとVyi)は、アプリケーションを制御するために直接使用できるか、またはカメラとレンズの性質が分かっていれば現実世界の単位(°)に換算できる。
【0063】
別の実施形態では、Z軸の周りの回転およびX軸、Y軸、Z軸に沿った平行移動は、ユーザーは通常Z軸の周りにカメラを回転させることはなくそしてユーザーは通常静止しているため、重要でないと仮定する。この実施形態では、静止した場面でのX軸およびY軸の周りのカメラの回転量は、単に、全ての特徴のフローベクトルの平均と推定できる。X軸およびY軸のみの周りの回転ではほぼ平行で同等の大きさのフローベクトルが生成されるため、全フローベクトルの平均が、全フローベクトルの比較を代表するものとなる。一つの例では、静止した場面でのX軸およびY軸の周りのカメラの回転量を、全ての特徴のフローベクトルの加重平均と推定してもよい。加重平均では、各フローベクトルの影響に信頼度スコアを掛け算する。結果として、高い信頼度を有するフローベクトル(例えば良好な対応関係)が、低い信頼度を有するフローベクトル(例えば劣っているかまたは疑わしい対応関係)よりも、結果に大きな影響を与える。
【0064】
処理700は、必要があればカメラの累積した動きを算出する(760)。図7において工程760が破線で囲われていることが、この工程が選択可能であることを示している。累積した動きを、カメラの検出された動きを追跡することによって算出してもよい。一連のカメラ画像の累積した動きを、最初の位置に対するこの装置の位置を検出するために算出してもよい。しかし、比較的速く画像から画像へと誤差が増大する場合がある。
【0065】
増大する誤差を低減するために、フロー場を算出する際に、特徴の全体的なパスを格納してもよい。最初の位置に対する特徴の変位を表す全体的な動きベクトルに、前述したカメラの動き技法を適用できる。これは、カメラの動きが限定的なものであって、特徴群のサブセットが追跡期間に亘ってカメラの視野内に留まる場合に特に有効であることがある。例えば、鉛筆の先端が画像の中の特徴であるとする。鉛筆の先端が画像の中に留まるような領域に亘ってカメラが動くとき、鉛筆の先端を表す特徴の元の位置を格納しておけば、その鉛筆の先端を表す特徴の現在の位置をその鉛筆の先端を表す特徴の元の位置と比較することによってカメラの累積した動きを算出してもよい。各パスは通常、多くのカメラフレームにわたるので、誤差の累積は、フレーム間で累積した動きを算出するよりも遅くなる。
【0066】
最初の画像以降、検出された全ての特徴を考えると、全体的な特徴パス群のセットに、追跡の全期間に亘って延びるパスが含まれているとは限らない。例えば、上述したように、物体(鉛筆の先端など)がカメラの視野から出てしまうこともある。しかし、全体的な特徴パス群のセットは、開始時(最初に検出された、又はカメラの視野に入った)と終了時(最後に検出された、又はカメラの視野から出た)が重なっている、分かれているが関連するパス群を含んでいる可能性が高い。(時間上)重なっているパスの組み合わせを、最初の位置に対して特徴群を累積的に位置付けするために使用できる。
【0067】
例えば、鉛筆の先端は画像の中の特徴であるが、鉛筆の消しゴムは画像の中に存在していないとする。カメラが動くと、鉛筆の先端を表す特徴が画像にわたって移動し、追跡される。その後の画像では鉛筆の消しゴムが視野に入り、鉛筆の先端と鉛筆の消しゴムの両方が画像の中で追跡された特徴となるようにカメラが動いたとする。さらにカメラが動くと、鉛筆の先端は画像から去り、鉛筆の消しゴムを表す特徴はまだ残って追跡されるとする。鉛筆の先端と鉛筆の消しゴムは同時に画像内に存在していた特徴であるので、プロセッサは、鉛筆の先端に対する鉛筆の消しゴムの相対的な位置を算出できる。よって、(1)鉛筆の消しゴムを表す特徴の現在位置と、(2)鉛筆の先端に対する鉛筆の消しゴムの相対位置と、(3)鉛筆の先端がカメラの視野から去る前の格納されたパスとを使用して、プロセッサが、消しゴムの完全なパスを決定してもよい。次に、消しゴムの完全なパスをプロセッサが使用して、カメラの累積した動きを追跡しカメラの最初の位置を特定してもよい。この技法を、鉛筆の消しゴムが画像から出るときにカメラの累積した動きを追跡し続けるために、追加の特徴で繰り返してもよい。このような関連しているが分かれている特徴パスを使用することによって、個々の特徴パスを使用するよりも、誤差の累積をかなり遅くすることができる。
【0068】
処理700を使用して、例えば、カメラの動き、カメラの最初の位置に対する相対的な位置および/またはカメラの最初の方向に対する相対的な方向を、2から6の各自由度で算出してもよい。6未満の自由度でカメラの動きを推定する際には、6自由度のうちの一つ以上の動きが固定であると仮定する。例えば、ユーザーが一つの位置で起立または着席し、Z軸の周りにこの装置を回転させないと予想される場合、2自由度(X軸およびY軸の周りの回転)が適当である可能性がある。ユーザーが一つの位置で起立または着席すると予想される場合、3自由度(3つ全ての軸の周りの回転)が適当である可能性がある。ユーザーが歩き回ることが予想される場合、6自由度(3つ全ての軸の周りの回転および3つ全ての軸に沿った平行移動)が適当である可能性がある。アプリケーションが累積した位置算出のための最初の位置を、任意の時に、または、例えばセッション、ゲーム、レベルの開始時に、またはユーザーが要求した時にリセットしてもよい。
【0069】
これらは画像に依存する単位で算出されるが、カメラレンズについての情報があれば、現実世界の単位(即ち、角度)に変換できる。画像に依存する単位は、カメラの画像のピクセルを使って表されることがあるが、現実世界の単位は、角度(回転について)と、インチまたはセンチメートル(平行移動について)で表されることがある。画像に依存する単位を現実世界の単位に変換する一つの方法は、単に、方向に、視野(つまり角度)/画像サイズ(つまりピクセル)を表す係数を掛け算する。
【0070】
図8A〜図8Cは、例えば図6で示す処理600と図7に示す処理700とを実行するように構成されたプロセッサ(図示せず)を有するカメラ付き手持ち式装置810を操作するユーザーを例示している。プロセッサは、ゲームなどの表示インタフェースを持つアプリケーションを実行するように構成されていてもよい。
【0071】
図8Aを参照すると、装置810が座っているユーザー820によって保持されている。携帯娯楽装置(例えばカメラ付き携帯電話)に備えられたカメラの場合、そのカメラの動きが、平行移動無しの純粋な回転であるとは限らない。しかし、その場面の物体がカメラから十分離れた位置にある場合、平行移動よりも回転の方が特徴のフローベクトルの大きさに大きな影響を与えるので、オプティカルフローに対する平行移動の影響はある種のアプリケーションにとっては重要ではない。図示の例では、装置810のカメラ830が、カメラから約1mの距離にある床に面している。このシナリオでは、1°のカメラ回転によって生成されるオプティカルフロー速度の大きさは、17cmのカメラ平行移動と同程度であることがある。このシナリオのユーザーは、意図的にカメラ付き携帯電話を傾けるが、数センチメートルを超えて電話を平行移動させる可能性は少ない。それゆえ、感知できるほどの誤差を生成するためにはユーザーは通常ではあり得ないほど長い距離にわたって装置を平行移動させる必要があるため、装置を回転させることによってゲームを制御するために必要な精度を求めて、平行移動の影響は無視でき、オプティカルフローは単純に回転の結果であると仮定できる。従って、ユーザー820は装置を回転させてカメラ付き手持ち式装置810で実行されるアプリケーションにユーザー入力を提供できる。
【0072】
図8Bを参照すると、装置810が起立しているユーザー840によって保持されている。この例では、ユーザー840は、床に面している装置810のカメラ830を持って比較的静止した状態で起立している。座っているユーザーと同様に、床との距離はカメラの平行移動を無視できるほど十分に遠いものであり、ユーザー840はカメラ付き手持ち式装置810を回転させてアプリケーションへユーザー入力を提供できる。
【0073】
図8Cを参照すると、カメラ付き手持ち式装置850が、起立しているユーザー860によって保持されている。この例では、カメラ付き手持ち式装置850のカメラ870はユーザーの顔に面している。カメラ870がユーザーの顔に向けられると、その顔がカメラ画像の大きな部分を占めるようになり、回転の測定値はユーザー860を基準とするので、ユーザー860は歩いたり動き回ったりしながらカメラ付き手持ち式装置850を操作できる。これは、ユーザー860が動く時、ユーザーの顔はカメラ付き手持ち式装置850に対して動かないためである。ユーザーの顔が静的背景にかわって最も重要な物体となるため、カメラ付き手持ち式装置850の動きはユーザー860を基準として測定される。このため、ユーザー860の歩行は装置の動きとして検知されず、ユーザー入力の検出には影響を及ぼさない。
【0074】
ゲームなどのアプリケーションのユーザーインタフェースを制御するためにユーザー入力を検出するというアプリケーションについて述べてきたが、これ以外のアプリケーションも可能である。具体的には、カメラが物理的に結合された装置の他の機能または特徴を制御するアプリケーションであってもよい。例えば、装置の動きが検知され、アラームが禁止になっていないときに装置の警報信号を起動する盗難防止のためのセキュリティアプリケーションを利用してもよい。また、ユーザーがカメラ付き携帯電話を自分の耳から離すように傾けた時その電話の音量を上げる音量制御アプリケーションを実現させてもよい。処理600および700と、その他の本願明細書に記載した様々な実施形態、特徴、技法は、主に、装置上で動作するオペレーティングシステムによってソフトウェアとして実行されてもよい。そのソフトウェアは、カメラからのデータと、装置に一体化されたコンピュータディスプレイ、テレビ、LCDなどの表示装置と協働する。ソフトウェアと一緒にまたはソフトウェアに代えてファームウェアおよびハードウェアを使用してもよい。
【0075】
本開示から明らかなように、本願明細書に記載された実施形態、特徴、技法と、これらの変形または組み合わせとは、例えば様々な装置上で動作するオペレーティングシステム、またはスタンドアローンのアプリケーションまたはユーティリティなどで実施されてよい。
【0076】
携帯電話、個人用デジタル補助装置(「PDA」)、その他のポータブル装置は、ユーザーインタフェースのサイズが通常は限定されていてこのような装置でユーザーインタフェースを制御することが通常は困難であるため、多数の実施形態を提供する。例えば、Blackberry装置、電子手帳、iPod装置またはその他のポータブル音楽プレイヤー、ポケットベルまたはその他の通信装置、ゲーム・通信および/またはデータ編集のための携帯またはポータブル電子装置などで実施できる。
【0077】
実施形態は、一つ以上の処理を実行するように構成された一つ以上の装置を有していてもよい。装置は、例えば、別個のまたは一体化されたハードウェア、ファームウェア、ソフトウェアを有していてもよい。これらの装置は、例えばマイクロプロセッサ、集積回路、プログラム可能な論理装置、ソフトウェアアプリケーションを内蔵する装置などの処理装置を一般的に指すプロセッサを有していてもよい。
【0078】
実施形態はまた、一つ以上の処理を実行するための命令を含むコンピュータ読み取り可能な一つ以上の媒体を有する装置において実施されてもよい。コンピュータ読み取り可能な媒体は、例えばハードディスク、コンパクトディスケット、ランダム・アクセス・メモリ(「RAM」、リード・オンリー・メモリー(「ROM」)などの記憶装置を含む。コンピュータ読み取り可能な媒体はまた、例えばフォーマットされた電磁波符号化または送信命令群を含んでいてもよい。命令群は、例えばハードウェア、ファームウェア、ソフトウェア、又は電磁波の形態であってもよい。命令群は、例えばオペレーティングシステム、アプリケーション、またはこれらの組み合わせに含まれていてもよい。プロセッサは、例えば処理を実行するように構成された装置と、処理を実行するための命令を含むコンピュータ読み取り可能な媒体を有する装置との両方であってもよい。
【0079】
実施形態はまた、ソフトウェア・オブジェクトの形態で実現されてもよい。このようなオブジェクトは、様々なアプリケーションによってアクセスされるか、または様々なアプリケーションに組み込まれてもよい。
【0080】
いくつかの実施形態を説明したが、様々な変形が可能であることは理解されよう。例えば、異なる実施形態の各要素を組み合わせたり、追加したり、修正したり、取り除いたりして他の実施形態を実現してもよい。さらに、各種の技術を使用したり、組み合わせたり、修正したりして実施形態を実現してもよい。このような技術には、例えば様々なハードウェア、ソフトウェア、ファームウェア、一体化されたコンポーネント、別個のコンポーネント、処理装置、メモリまたは記憶装置、通信装置、レンズ、フィルタ、表示装置、投射装置などが含まれる。従って、他の実施形態も添付の請求項の範囲内である。
【技術分野】
【0001】
本開示は動きの推定に関する。
【背景技術】
【0002】
デジタルカメラは画像のデジタル表現を捕捉する。デジタルカメラは、指定の期間に亘って複数の画像を捕捉するように構成されていることがある。デジタル画像を処理することは、一つの画像の特性を検出するためにその画像の各特徴を処理すること、または撮像している環境の特性または画像捕捉装置の特性を特定するために一連の画像の各特徴を処理することを含んでいることがある。オプティカルフローとして知られる処理では、画像の中の物体とその画像捕捉装置との間の相対的な動きを検出するために、一連の画像における物体の配置を比較することがある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2002−081909号公報
【特許文献2】特開2004−274402号公報
【特許文献3】特開2003−203237号公報
【発明の概要】
【課題を解決するための手段】
【0004】
本明細書で説明する一つの概略の例では、デジタルカメラから捕捉する一連の画像をデジタルカメラの動きを検出するために分析してもよく、検出した動きに基づいて装置へのユーザー入力を特定してもよい。説明する各種の実施形態は以下の特徴のうちの一つ以上を有している。例えば、カメラ付き携帯電話などの携帯娯楽装置において傾きセンサーとしてオプティカルフローを使用することなどである。疎らな特徴群のセット/疎らなフロー場を、リアルタイム実行性能を実現するために使用してもよい。非静的な場面を、フロー場の最も典型的な(すなわち最大の静止しているクラスタ)結果を見つけることによって処理してもよい。長い期間にわたって、最初の位置および/または方向を基準とした位置および/または方向を算出してもよい。カメラが固定され、ユーザーの方ではない方向を向いているカメラ付き携帯電話において前記特徴を使用してもよい。限定的な処理能力を有する装置用に実施形態/特徴を構成してもよい。
【0005】
概略の態様に係る方法は、動いているモバイルカメラから画像を捕捉することと、前記捕捉された画像に基づいて前記動いているモバイルカメラの動きの様子を検出することとを含んでいる。前記方法はまた、インタフェース装置上にアプリケーションへのユーザーインタフェースを提供することも含んでいる。前記アプリケーションへのユーザー入力を、自動的に前記検出された動きに基づいて特定する。
【0006】
前記概略の態様の実施形態は、以下の特徴の一つ以上を有してもよい。例えば、前記インタフェース装置が前記モバイルカメラに物理的に結合されている、または前記モバイルカメラを有する装置に物理的に一体化されていてもよい。前記動いているモバイルカメラが携帯電話に物理的に結合されていてもよい。
【0007】
動きの様子を検出することは、自動的に実行されてもよく、大きさと方向のうちの一つ以上を検出することを含んでもよい。動きの様子を検出することは、また、オプティカルフローを使用することを含んでもよい。
【0008】
前記動いているモバイルカメラの動きの様子を検出することは、2または3自由度の前記動いているモバイルカメラの回転量を算出することを含んでもよい。前記動いているモバイルカメラの動きの様子を検出することは、また、前記動いているモバイルカメラの平行移動量を算出することも含んでよい。
【0009】
前記動いているモバイルカメラの動きの様子を検出することは、前記動いているモバイルカメラの最初の位置に対する前記動いているモバイルカメラの移動量を算出することを含んでもよい。前記動いているモバイルカメラの前記最初の位置が、アプリケーションによって再セットされてもよい。
【0010】
前記動いているモバイルカメラの動きの様子を検出することは、前記捕捉された画像中の特徴群の動きを検出することと、前記特徴群の前記動きに基づいて前記モバイルカメラの動きを検出することとを含んでもよい。前記特徴群の前記検出された動きに基づいて、前記特徴群を、基準の現実世界のフレームに対して動いている動的特徴群のセットに分けてもよい。動的特徴群に分けることは、最大の面積をカバーする特徴群のセットを選択することと、選択されなかった特徴を無視することとを含んでもよい。動的特徴群を分けることは、また、特徴群の重要なセットと類似の方向と大きさを有していない特徴を無視することを含んでもよい。
【0011】
動きの様子を検出することは、前記捕捉された複数の画像から特徴を抽出することと、二つ以上の画像に存在している各特徴を対応付けるために画像を比較することとを含んでもよい。前の画像内の特徴の位置に対する現在の画像内のその特徴の位置の変位を算出することによって、対応付けられた特徴のフローベクトルを決定してもよい。前記各対応付けられた特徴の前記決定されたフローベクトルに基づいて前記モバイルカメラの前記動きを検出する。
【0012】
前記捕捉された画像から特徴を抽出することは、角および縁の少なくとも一つを検出することを含んでもよい。各特徴を対応付けるために画像を比較することは、最初に、画像内の前記特徴の既知の位置と、近接した別の画像内のブロックとを比較することを含んでもよい。各特徴を対応付けるために画像を比較することは、また、最初に低解像度で画像を比較し、対応が見つかったかどうかに応じてより高い解像度で画像を比較することを含んでもよい。前記フローベクトルを基に前記モバイルカメラの前記動きを決定することは、画像に依存する単位で決定された前記動きを変換することによって現実世界の単位で前記モバイルカメラの前記動きを特定することを含んでもよい。
【0013】
画像を捕捉することに、一連の画像を捕捉することが含まれていてもよい。前記動いているモバイルカメラの動きの様子を検出することは、前記一連の画像のうち第1サブセットの画像に現れている第1の特徴の動きを検出することと、前記一連の画像うち、前記第1サブセットと部分的に重複した第2サブセットの画像に現れている第2の特徴であって、前記第1の特徴との間に、前記第1の特徴が前記第2サブセットの画像の全てには現れていない場合でも、第2の特徴の動きが前記第1の特徴の動きに基づいているという固定した物理的関係を有する第2の特徴の動きを検出することとを含んでもよい。前記第1と第2の特徴の検出された動きに基づいて、前記動いているモバイルカメラの動きの様子を検出してよい。
【0014】
前記ユーザー入力が傾きセンサー機能を模倣し、アプリケーション中で物体の傾き、またはアプリケーション中でボールの動き、またはアプリケーション中で乗り物の操縦機能、またはアプリケーション中で物体の照準合わせ機能、またはアプリケーション中で物体のナビゲーション機能、またはアプリケーション中で関節を有するキャラクタの動き、または粒子シミュレーションアプリケーション中の粒子の動きを制御してもよい。前記検出された動きの大きさがしきい値の大きさよりも大きいときに前記ユーザー入力が特定されてもよい。前記アプリケーションは、ゲーム、追跡アプリケーション、セキュリティアプリケーションのうちの少なくとも一つを含んでもよい。
【0015】
別の概略の態様によれば、携帯電話が、電話にそれぞれ一体的に形成されたカメラとディスプレイとを有している。前記電話はまた、前記カメラと前記ディスプレイとに物理的にかつ通信可能に接続された処理装置を有している。前記電話は、さらに、前記処理装置に物理的にかつ通信可能に接続されたコンピュータ読み取り可能な媒体を有している。前記コンピュータ読み取り可能な媒体は、少なくとも、(1)前記カメラから捕捉された画像を受け取ることと、(2)前記受け取った画像を基に前記電話の動きの様子を検出することと、(3)アプリケーションへのユーザーインタフェースを前記ディスプレイに提供することと、(4)前記電話の前記動きの様子に基づいて前記アプリケーションへのユーザー入力を自動的に特定することと、(5)前記アプリケーションに前記ユーザー入力を提供することとを、前記処理装置に実行させるための命令を有している。
【0016】
前記概略の態様の実施形態は、様々なさらなる特徴を有していてもよい。例えば、前記コンピュータ読み取り可能な媒体は、前記処理装置の一体化された部分であってもよい。
【0017】
各種の態様、実施形態、特徴は、本願明細書で例えば一つの方法でしか記載されていない場合でも、様々な方法で実施してよい。各種態様、実施形態、特徴は、例えば方法、装置、方法を実行するための装置、プログラムまたは他の命令のセット、プログラムまたは他の命令のセットを含む装置、コンピュータ読み取り可能な媒体又は伝搬された信号などのうちの一つ以上を使用して実施してもよい。コンピュータ読み取り可能な媒体または伝搬された信号は、例えば、命令、ソフトウェア、画像、その他のデータなどを含んでいてもよい。各種の態様、実施形態、特徴には、また、例えばカメラなどのさらなるコンポーネントが含まれていてもよい。
【0018】
一つ以上の実施形態の詳細を、添付の図面と以下の記述の中で説明する。他の特徴は、以下の記述と図面と請求項から明らかとなるであろう。
【図面の簡単な説明】
【0019】
【図1】動きの様子を検出してその検出した動きに基づいてユーザーインタフェースを制御するように構成されたカメラ付き携帯電話の一例を示す図である。
【図2】カメラと、カメラの動きを定義するための軸システムの一例を示す図である。
【図3A】カメラと、X軸の周りのカメラの回転によって生成されるオプティカルフローベクトルの一例を示す図である。
【図3B】カメラと、Y軸の周りのカメラの回転によって生成されるオプティカルフローベクトルの一例を示す図である。
【図3C】カメラと、Z軸の周りのカメラの回転によって生成されるオプティカルフローベクトルの一例を示す図である。
【図4A】カメラと、X軸に沿った平行移動によって生成されるオプティカルフローベクトルの一例を示す図である。
【図4B】カメラと、Z軸に沿った平行移動によって生成されるオプティカルフローベクトルの一例を示す図である。
【図5A】下面にカメラを有する携帯電話を保持するユーザーの一例を示す図である。
【図5B】下面にカメラを有する携帯電話を保持するユーザーの一例を示す図である。
【図5C】X軸の周りにカメラを有する携帯電話を回転させる際のユーザーの手の動きの一例を示す図である。
【図5D】X軸の周りにカメラを有する携帯電話を回転させる際のユーザーの手の動きの一例を示す図である。
【図5E】Y軸の周りにカメラを有する携帯電話を回転させる際のユーザーの手の動きの一例を示す図である。
【図5F】Y軸の周りにカメラを有する携帯電話を回転させる際のユーザーの手の動きの一例を示す図である。
【図6】装置の動きの様子を検出してアプリケーションへのユーザー入力を特定するための処理の一例を示すフローチャートである。
【図7】動いているカメラの動きの様子を検出するための処理の一例を示すフローチャートである。
【図8A】着席した姿勢で、カメラ付き手持ち式装置を保持するユーザーの一例を示す図である。
【図8B】起立した姿勢で、カメラ付き手持ち式装置を保持するユーザーの一例を示す図である。
【図8C】カメラがユーザーに向けられ起立した姿勢で、カメラ付き手持ち式装置を保持するユーザーの一例を示す図である。
【発明を実施するための形態】
【0020】
動いているモバイルカメラの動きの様子を検出し、アプリケーションへのユーザー入力を特定するための幾つかの技法を提供する。一つの技法は、動いているモバイルカメラから一連の画像を捕捉し、その一連の画像中に存在する静止している特徴群を比較することを含む。特徴は、例えば画像の中の物体、画像の中の物体の一部、および/または画像の中の物体の角または縁などであってよい。動いているモバイルカメラの動きの様子を検出するために、オプティカルフロー分析を一連の画像に対して実行する。検出した動きに基づいてアプリケーションへのユーザー入力を特定する。アプリケーションは、このユーザー入力に応答し、例えばユーザーインタフェースを更新する。
【0021】
図1を参照すると、カメラ付き携帯電話100などの携帯娯楽用装置に備えられたカメラからの一連の画像のオプティカルフローを使用して、例えばゲームまたはアプリケーションを制御する手段としてのこの手持ち式装置の動きを検出するシステムが示されている。カメラ付き携帯電話100は、ユーザーがこの装置と対話できるように構成されているユーザーインタフェース110を有している。ユーザーインタフェース110は、例えば、表示インタフェース111と、キーパッド112と、マイクロフォン113と、スピーカー114とを有している。表示インタフェース111はユーザーに視覚的表示を提供する。その視覚的表示は、カメラ付き携帯電話の状態に関する情報又は、カメラ付き携帯電話上で動作するように構成されているゲームなどのアプリケーションに視覚的インタフェースを提供してよい。キーパッド112は、ユーザーがカメラ付き携帯電話へ入力するために作動させるボタンまたは押圧作動スイッチ群を有している。マイクロフォン113は、ユーザーからの音声による入力を受け付けるものであって、電話システムを用いてその音声入力を他の装置に送信するか又は、ユーザーの音声入力に基づいてユーザー入力を特定するように構成されていてもよい。スピーカー114は、ユーザーへの音声出力を生成するものであって、電話システムを介する通信の音声出力を生成するか又は、カメラ付き携帯電話の状態に関する情報を示す音声出力を生成する(例えば、ユーザー入力の受け付けを示す音を生成する)ように構成されていてもよい。プロセッサ(図示せず)は、ユーザーインタフェース110の各部分からの入力を受け付け、そのユーザー入力に基づいて機能または処理を実行し、ユーザー入力に適宜応答して表示ディスプレイ111に画像を映し、および/またはスピーカー114から音を生成するように構成されている。
【0022】
カメラ付き携帯電話100はまた、カメラ120を有している。カメラ120は、画像の焦点を合わせるためのレンズ121を有しており、レンズ121によって焦点が合わされた画像のデジタル表現を捕捉することができる。図1ではカメラ120はカメラ付き携帯電話100の上部にあってユーザーが表示インタフェース111を見ているときは、ユーザーに面するようになっているが、カメラ120は様々な場所および方向でカメラ付き携帯電話に配置されていてもよい。例えば、カメラ120は、カメラ付き携帯電話100の上部に位置し、ユーザーが表示インタフェース111を見ているときユーザーと向き合わないようになっていてもよい。カメラ120は、カメラ付き携帯電話100が動いている間、時間の経過と共に一連の画像を捕捉するように構成されていてもよい。プロセッサ(図示せず)が一連の画像を受け付けて、カメラ付き携帯電話100の動きの様子を検出するために一連の画像に対して処理を実行してもよい。プロセッサは、検出した動きに基づいて、検出したカメラ付き携帯電話100の動きに対応するアプリケーションへのユーザー入力を決定してよい。例えば、プロセッサが、ユーザーがカメラ付き携帯電話100を左に回転させたことを検出した場合、プロセッサは、ユーザーがある特定の行動を取ることを望んでいると決定してもよい。また、プロセッサが、ユーザーはカメラ付き携帯電話100を右に回転させたことを検出した場合、プロセッサは、ユーザーがある特定の行動を取ることを望んでいないと決定してもよい。他の実施形態では、プロセッサは、カメラ付き携帯電話100上で動作するゲームへのユーザー入力として、検出した動きを使用してもよい。例えば、カメラ付き携帯電話100を左に回転させると、ゲームで表示された物体を左に移動させ、カメラ付き携帯電話100を右に回転させると、ゲームで表示された物体を右に移動させる。
【0023】
カメラが動いている間に捕捉された画像に基づいてカメラの動きの様子を検出するためにカメラ付き携帯電話100のプロセッサが使用する一つの技法が、オプティカルフローとして知られている。オプティカルフローとは、一連の画像の中の特徴の見かけの相対速度を指す。一連の画像を単一のカメラで捕捉して、特別なカメラハードウェアまたはキャリブレーション無しでオプティカルフローを使用することができる。従来、オプティカルフローは、画像シーケンスの時間補間(動画でフレームを挿入すること)、三次元物体再現調査などの用途に使用される。
【0024】
カメラの動きを検出するために、プロセッサが一連の画像の中で静的特徴群を特定し比較してもよい。カメラが動く間、画像内の特徴の位置はその動きに応答して変化する。特徴の速度をフローベクトルとして表現してもよい。特徴速度のセットをフロー場と呼ぶ。速度はカメラに対して相対的なものである。他の文献では、動きベクトルと動き場という用語がよく使用される。しかし、「動きベクトル」と「動き場」という用語の使用は、画像シーケンス内の特徴の速度が直接その物体の動きに対応し、カメラは静止していると仮定されることを意味する場合がある(本目的にとっては不必要)。
【0025】
オプティカルフローはカメラに対して相対的なものであるため、カメラの動きは、カメラ視界における特徴の見かけの速度となる。特徴は静止していてもよい、つまり木のように物理的位置が変化しなくてもよい。逆に、特徴は、動的すなわち動いていてもよい(例えば車)。カメラの動きを推定するために、一連の画像内の静的特徴の見かけの動きを利用する。カメラの動きは、カメラの視界中の特徴の見かけの速度から算出することができる。また、広く分布した疎らな特徴群のセットが、カメラの動きを推定するのに十分である。
【0026】
捕捉された画像を基にしてカメラの動きの様子を検出することができる様々な動き推定技法を使用してもよいが、既存のオプティカルフローシステムは一般的に計算コストが高く、故に現在の一般消費者向け手持ち式装置には不適切である。一般消費者向け手持ち式装置は、広範囲の種類の計算を実行できる汎用プロセッサを有している。しかし、ビデオフレームごとに実行できる計算の数は限られている。
【0027】
既存のオプティカルフローシステムは一般的に、密なフロー場の生成することを試みる。カメラの動きは6自由度で表現できる(例えば、X、Y、Z軸に沿った平行移動と、X、Y、Z軸の周りの回転)。しかし、意図する用途では、動きはもっと少ない自由度で近似できる。一つの実施形態では、ある特定の自由度における動きは無視できると仮定しその自由度における動きを無視することによって、カメラの動きを近似してよい。例えば、カメラの動きは、Z軸の周りの回転とX軸、Y軸、Z軸に沿った平行移動は無視し、X軸とY軸の周りのカメラの回転を記述することによって近似してもよい。よって、プロセッサはカメラの動きを推定するために密なフロー場を生成してもよいが、広く分布した疎らな特徴群のセットがカメラの動きを推定するのに十分である。広く分布した疎らな特徴セットについて、例えば図7を参照して後述する。
【0028】
特徴群を追跡するとき、平行移動無しのカメラ視野の回転(パンすること及び傾けること)は、フローベクトルが三次元場面形状(奥行き)から独立したオプティカルフローを生成する。これについては、以下で説明する図3A〜図3Cに例示されている。カメラが回転している静止した場面では、カメラが動くにつれて特徴が他の物体によって隠蔽されたり現れたりすることはない。特徴は、カメラの視野に入ったり出たりすることで現れたり消えたりするだけである。例えば、ある人が、物体の背後に何があるのか知るためにその物体の背後を見たいとする。その人は、その物体の向こう側を見るために傾くかまたは移動する(例えば平行移動)必要があり、単に自分の目を動かす(例えば回転運動)だけでその物体の向こう側を見ることはできない。
【0029】
図2〜図4は、カメラの可能な動きと、その動きによって生成されるオプティカルフローベクトル及びオプティカルフロー場の例を示している。
【0030】
図2を参照すると、一連の画像を捕捉できるカメラ200が、カメラの動きを定義するための軸システムとの関係で示されている。特に、カメラの回転を3自由度について測定する。例えば回転を、X軸210と、Y軸220と、Z軸230に関して測定する。各軸の周りの回転の測定結果は、カメラの回転を完全に記述する可能性がある。カメラの動きの様子を定義したこの軸システムに関して説明する。次の例では、オプティカルフローベクトルは、紙面の上から見下ろすカメラ200とその紙面上の撮像物体に基づいて決定される。
【0031】
図3Aを参照すると、ベクトル310で示すようにX軸210を軸に回転するカメラ200が図示されている。静止した場面では、フローベクトルは平行でありX軸210の周りの回転と同じ大きさとなる傾向にある。カメラ200がX軸210の周りを回転することによって生成されるオプティカルフローベクトルが、オプティカルフロー場320に示されている。カメラ200がX軸210の周りをベクトル310で示す方向に回転すると、一連の画像で捕捉された静止した物体は、オプティカルフロー場320に示すオプティカルフローベクトルで示す方向に動いているように見える。具体的には、カメラ200が紙面の上方に向かって上方にX軸210の周りを回転し、同時にカメラ200が一連の画像を捕捉する場合、一連の画像内の静止した物体は、時間的に後の方に撮影された画像の中では画像の下部に近づいて現れ、その結果、紙面の下部の方を指すフローベクトルが生成される。算出されたオプティカルフロー場320に基づいて、X軸210の周りの回転を検出できる可能性がある。
【0032】
図3Bを参照すると、Y軸220の周りを回転するカメラ200が図示されている。静止した場面では、フローベクトルは平行でありY軸220の周りの回転と同じ大きさとなる傾向にある。カメラ200のY軸220の周りの回転から生成されるオプティカルフローベクトルが、オプティカルフロー場340に示されている。カメラ200がY軸220の周りをベクトル330で示す方向に回転すると、一連の画像で捕捉された静止物体は、オプティカルフロー場340に示すオプティカルフローベクトルで示す方向に動いているように見える。具体的には、カメラ200がY軸220の周りを紙面の右側に向かって回転し、同時にカメラ200が一連の画像を捕捉する場合、その一連の画像内の静止した物体は右から左へと移動するように見える。すなわち、時間的に後の方に撮影された画像の中では、その静止した物体は画像の左側に近づいて現れ、その結果、紙面の左側の方を指すフローベクトルが生成される。算出されたオプティカルフロー場340に基づいて、Y軸220の周りの回転を検出できる可能性がある。
【0033】
図3Cを参照すると、Z軸230の周りに回転するカメラ200が図示されている。静止した場面では、Z軸230の周りの回転の場合、フローベクトルはカメラ視界の中心点を中心とする円の接線方向を向き、その半径に比例する大きさを持つ傾向にある。カメラ200のZ軸230の周りの回転から生成されるオプティカルフローベクトルがオプティカルフロー場360に示されている。カメラ200がベクトル350で示す反時計回りにZ軸230の周りを回転する時、一連の画像で捕捉される静止した物体は、オプティカルフロー場360に示すオプティカルフローベクトルで示すように時計回りに動いているように見える。従って、ベクトルの略円形のオプティカルフロー場360が得られる。算出されたオプティカルフロー場360に基づいて、Z軸230の周りの回転を検出できる可能性がある。
【0034】
図4Aを参照すると、ベクトル410が示す方向にX軸210に沿って平行移動するカメラ200が図示されている。カメラの視野の平行移動は、フローベクトルが三次元場面形状(奥行き)に依存するオプティカルフローを生成する。カメラが平行移動している静止した場面では、フローベクトルの大きさはカメラ200から物体までの距離すなわち奥行きに依存し、カメラにより近い物体によって特徴が隠されたり現れたりすることがある。カメラが画像420を撮像しながらX軸方向410へ平行移動することによって生成されるオプティカルフローベクトルがオプティカルフロー場430に示されている。カメラ200がX軸方向410に沿って左へ平行移動すると、一連の画像で捕捉された静止物体(例えば、場面420における木および山)は、オプティカルフロー場430に示すオプティカルフローベクトルで示す方向に右へ移動するように見える。オプティカルフロー場430内のフローベクトルの大きさの差異によって示されるように、カメラ200に近い物体はカメラ200からより遠くの物体よりも長い距離を動くように見える。その結果、平行移動の場合、フローベクトルの長さは、撮像されている物体のカメラ200からの奥行きに依存する。例えば、木440がカメラに最も近い物体であるので、木440を表すフローベクトルは最大の大きさを持っている。算出されたオプティカルフロー場430に基づいて、X軸210に沿った平行移動を検出できる可能性がある。
【0035】
図4Bを参照すると、ベクトル450が示す方向にZ軸230に沿って平行移動するカメラ200が図示されている。Z軸方向450へのカメラの平行移動によって生成されるオプティカルフローベクトルがオプティカルフロー場460に示されている。カメラ200がZ軸方向450に沿って平行移動すると、一連の画像で捕捉された静止物体は、オプティカルフロー場460に示すオプティカルフローベクトルが示す方向に移動するように見える。具体的には、カメラがZ軸方向450に沿って撮像している物体に向かって前方に移動し、同時にカメラ200が一連の画像を捕捉する場合、一連の画像内の静止物体は画像の中心から延びる放射状の線に沿って外側に移動するように見える。従って、画像の中心から放射状に外側に向かって延びるフローベクトルのオプティカルフロー場460が得られる。算出されたオプティカルフロー場460に基づいて、Z軸230に沿った平行移動を検出できる可能性がある。
【0036】
図示はしていないが、カメラ200のY軸220に沿った平行移動によって、フローベクトルがY軸220と平行である以外は図4Aに示すものと類似のオプティカルフロー場が生成される。
【0037】
図5A〜図5Fは、ユーザーが自分の手を使って動いているモバイルカメラに与える動きの例を示している。なお、図5A及び図5Bは、その下面にカメラ520を有している携帯電話510を例示している。携帯電話510を保持するユーザーは、携帯電話510とカメラ520とのX軸の周りの回転を発生させるために、例えば自分の手首を後方530に曲げる(図5C)、または前方540に伸ばす(図5D)。自分の手首を後方530に曲げる(図5C)ユーザーの動きは、図3Aに示すオプティカルフロー場320を生成する可能性のある一方向のX軸の周りのユーザー動きの一例である。
【0038】
また、携帯電話510を保持するユーザーは、携帯電話510とカメラ520とのY軸の周りの回転を発生させるために、例えば自分の手首を時計回り550に(図5E)または反時計回り560に(図5F)ひねる。時計回り550(図5E)に自分の手首をひねるユーザーの動きは、図3Bに示すオプティカルフロー場340を生成する可能性のある一方向のY軸の周りのユーザー動きの一例である。ユーザーが、例えば図5C〜図5Fに示す動きをすることで、アプリケーションのユーザーインタフェースを制御するユーザー入力を生成する検出可能な動きをカメラに与えてもよい。
【0039】
図6は、装置の動きの様子を検出してアプリケーションへのユーザー入力を特定するための処理600を示すフローチャートである。一つの実施形態では、カメラが付いた携帯娯楽用装置(例えば、カメラ付き携帯電話100、PDA、その他のカメラが備えられたモバイル装置)のプロセッサが処理600を実行してもよく、また、携帯娯楽用装置上で動作するゲームまたはアプリケーションを制御するために、カメラ視野の回転の測定結果を使用してもよい。傾きセンサーと類似の入力を提供するために、回転の測定結果を使用してもよい。また、傾きの方向と大きさの両方を測定できるので、「アナログ」制御を行ってもよい。アナログ制御は、より細かな制御を可能にし、ゲームプレイの多くの方式にとって「デジタル」制御よりも好ましい。
【0040】
図6に示す処理600の実行において、動いているモバイルカメラが画像を捕捉する(610)。画像の捕捉(610)は、例えば、カメラが動いている間、ある時間に亘って一連の画像のデジタル表現を捕捉することを含んでもよい。
【0041】
プロセッサは、捕捉された画像に基づいてカメラの動きの様子を検出する(620)。プロセッサは、例えば、最も新しく捕捉した画像を時間的にそれより前に捕捉した画像と比較して、一連の画像中の静的特徴の位置の変化を検出しカメラの動きを推定してもよい。プロセッサは前述のオプティカルフロー処理を使用してもよい。動きの様子の検出620は、図7に関連してより詳細に説明する。
【0042】
さらに、アプリケーションへのユーザーインタフェースがインタフェース装置上に提供される(630)。ユーザーインタフェースは、モバイルカメラとは別れていてもよいし(例えば無線通信を利用する)、またはモバイルカメラを含む装置に物理的に結合されているかまたは一体化されていてもよい(例えば、カメラ付き携帯電話100に一体化された表示インタフェース111)。ユーザーインタフェースは、ユーザーが対話する可能性のあるゲームなどのアプリケーションのための視覚的表示を含んでもよい。ユーザーインタフェースはまた、ユーザー入力に応答して音声を生成するように構成されたスピーカーを含んでもよい。例えば、ユーザーインタフェースは、ある動作を起動する動きを受け付けたことを示す音声を生成するように構成されたスピーカーを含んでもよい。
【0043】
検出したカメラの動きに基づいてアプリケーションへのユーザー入力を特定する(640)。カメラの動きに対応して自動的にユーザー入力を特定してもよい。一つの実施形態では、アプリケーションが、「感度」を調節するためにカメラの動きおよび位置に係数を掛けてもよい。この係数は、ユーザーによってプログラムされるか、または選択されてもよい。「感度」は、例えばゲームの仮想環境におけるキャラクタの動きなどのユーザー入力を行うために、ユーザーがどれだけその装置を傾けるかまたは動かす必要があるかを決定する。例えば、ユーザー入力は、カメラの動きが「感度」のレベルを満たすのに十分大きいときのみに検出され特定されてもよい(つまり、小さな重要でない動きは無視されユーザー入力として特定されないことがある)。「感度」を利用する場合、現実世界での位置は通常必要なく計算されない。ここで、現実世界での位置とは、インチ、センチメートル、角度などの単位で測定された物理的世界での装置の位置を指す(例えば、25°回転され東に30センチメートル移動された装置)。仮想世界での位置とは、例えば仮想のキャラクタおよび物体を含むゲームなどの仮想環境における位置を指す(例えば、仮想環境において3ブロック移動させられた仮想キャラクタ)。「感度」を使用するときは、例えばピクセル単位で検出されたカメラの動きを「感度」係数と比較するか、または「感度」係数を掛けて、仮想環境への入力または動きを生成する。その入力または動きは仮想環境に関するものであるため、カメラの現実世界での位置は必要ではない。
【0044】
一つの例では、アプリケーションが、傾きセンサー機能を模倣するためにカメラの向きを使用してもよい。傾きセンサー機能を、ボールが転がる面の傾きをシミュレートすることを含む、ゲームにおけるボールの制御に使用してもよい。別の例では、アプリケーションが、操縦機能を模倣するためにカメラの向きを使用してもよい。操縦機能を、乗り物(例えば、自動車、オートバイ、飛行機、船、サーフボード、スノーボード、スケートボード、ホバーボード、宇宙船)を制御するのに使用してもよい。操縦機能は、操縦方向、ピッチ、ヨー、ロールのうち一つ以上の制御を含んでよい。さらに別の実施形態では、アプリケーションが、照準合わせ機能(狙いを定める)機能を模倣するためにカメラの向きを使用してもよい。照準を合わせるまたは狙いを定める機能を、仮想の武器を制御するのに使用してもよい(ライフルを向けるなど)。照準合わせ(狙いを定める)機能は通常、2自由度を含む。さらに、アプリケーションは、後述するように動く物体として分類された特徴群のサブセットを使用してもよい。このサブセットを、照準合わせ(狙いを定める)アプリケーションを補強するために使用してもよい(例えば、動く物体または特徴をターゲットとして指定し、そのゲームの目的が、動く物体または特徴が画面の中央に表示された十字線に位置するようにその装置を向けることであってもよい)。アプリケーションはまた、例えば、絶対位置決め機能を模倣するためにカメラの向きを使用してもよい。ナビゲーションの用途(例えば、店またはショッピングモールなどの環境においてユーザーをナビゲートするために現実世界環境におけるユーザーの位置を追跡する)、または迷路ゲーム(例えば、ユーザーが、現実世界で歩き回ることによって仮想迷路を歩く)において、絶対位置決め機能を使用してもよい。要求される動きは、手によって実行される動きであってもよいし、または環境においてユーザーが歩き回る動きであってもよい。
【0045】
別の実施形態では、アプリケーションが、アニメキャラクタ(例えば、ボブルヘッドやマリオネット)を制御するためにカメラの向きを使用してもよい。傾きの瞬間的な大きさおよび方向をそのキャラクタの動きに変換してもよい。キャラクタの関節で結合された各部分はシミュレートされた質量を与えられてもよい。その場合、検出された動きを与えられた各部分の動きの大きさは、その質量に反比例する。さらに、キャラクタの関節で結合された各部分は、所定の共振周波数を持つシミュレートされたばねによって相互に連結されていてもよい。
【0046】
また、アプリケーションは、粒子シミュレーションアプリケーション(例えば、スノーグローブまたはサンドアート)において粒子を制御するのにカメラの向きを使用してもよい。傾きの瞬間的な大きさおよび方向は、粒子の数および/またはそれらの運動エネルギーを決定してもよい。粒子はシミュレートされた重力によって引き寄せられてもよく、これによって粒子は仮想環境内で下に溜まる。仮想環境には画像または物体が含まれていてもよく、粒子はその物体の上に溜まる。このアプリケーションの一つの形態では、粒子は雪を表す。1つの選択肢として、アプリケーションは、電子グリーティングカード(例えばクリスマスカード)の形態で配布されてもよい。このアプリケーションの別の形態では、粒子群は様々な色で表示される(例えばサンドアート)。このアプリケーションでは、色付けされた粒子群が幾つかのパターンを形成して溜まってもよい。
【0047】
図7は、オプティカルフローを使用して動いているカメラの動きの様子を検出するための処理700を示すフローチャートである。密なフロー場アルゴリズムを使用してもよいが、カメラの動きは6自由度で表現することができ、意図するアプリケーションにおいてはより少ない自由度で近似できる。それゆえ、様々な自由度でカメラの動きを検知または推定するのに広く分布した疎らな特徴群のセットで十分であり、処理負荷を減らすために広く分布した疎らな特徴群のセットを使用してもよい。特定の実施形態では、処理負荷を減少させてリアルタイムで画像を捕捉し処理してもよい。
【0048】
一つの実施形態では、広く分布した疎らな特徴群のセットが、6自由度でカメラの動きを推定するのに十分である。疎らなオプティカルフローでは、画像中の視覚的に際立つ特徴についてのみフローベクトルが作成されてもよい。これらの特徴は、画像全体に亘って分散していてよい。広く分布した特徴群のセットでは、特徴が画像全体に亘って分布しており、画像の各領域に少なくとも一つの特徴が存在するようになっている(例えば、全ての特徴が画像の一角に塊として存在しているのとは違って)。ゆえに、画像の全領域における動きを記述するのに密フロー場は必要ではなく、特徴が広く分布していれば疎らなセットでも同じ役割を果たすことができる。
【0049】
疎らなオプティカルフローでは、広く分布した特徴群のセットが必要である場合がある。例えば、Y軸の周りの回転(図3B)をX軸に沿った平行移動(図4A)と比較してみる。特徴の分布が十分でなければ、例えば画像の下部に沿った全てのフローベクトルが同じ方向と長さを有するので、X軸に沿った平行移動がY軸の周りの回転と区別できなくなる。
【0050】
本発明の幾つかの実施形態では、6自由度よりも少ない自由度で動きを近似する。この場合、ある特定の自由度は無視できるものと仮定し無視する。自由度が減少すると広く分布した特徴群の必要性が軽減される。例えば、一つの実施形態では、X軸とY軸の周りのカメラの回転を記述し、Z軸の周りの回転とX軸、Y軸、Z軸に沿った平行移動とは無視することによってカメラの動きを近似してもよい。この仮定の下では、全ての特徴が画像の下部に沿って存在している前記の例におけるカメラの動きは、X軸に沿った平行移動は無視できるものと仮定しているので、Y軸の周りの回転の効果によるものであると考えることができる。
【0051】
処置700は特徴を抽出すること(710)を含む。動くモバイルカメラから捕捉された一連の画像を分析する際には、そのカメラで捕捉された各画像に特徴抽出処理を適用する。特徴抽出処理は、任意の一つの画像から疎らな特徴群のセットを抽出するだけでよい。求められる特徴は通常、角および縁を含む。角や縁は、装置が操作される環境の多くで通常、見つけることができる。角および縁は動的な光レベルによって影響されにくい、これは装置が戸外で操作される場合に重要であることがある。さらに、角および縁などの特徴は、画像内で検出するのに比較的計算コストが安い。角および縁を抽出する方法は公知である。
【0052】
特徴を抽出した後、処理700では、画像同士を比較して一つ以上の画像に共通な特徴を対応付ける(720)。例えば、フロー場算出処理では、現在のカメラ画像の特徴群と、前回のカメラ画像の対応する特徴群とを対応付ける。特徴を対応付けるために、現在のカメラ画像の各特徴を、前回のカメラ画像の特徴群のサブセットと比較する。このサブセットは、近接性と特徴の性質(例えば、角の向きおよびコントラスト)によって選択される。特定の実施形態では比較すべき特徴の数が少ないので、装置の計算負荷を最小にする。
【0053】
一つの実施形態では、前回のカメラ画像の特徴群の、現在の画像における位置を、前回のフロー場を使用して予測する(前回のフロー場がない最初のフレームは除く)。対応相手として可能性のあるもの全てについて、予測位置からの距離と特徴の性質の類似度と対応の特異性とによって作成されるスコアを基に、一対一の対応を選択する。スコアはスカラー値であり、信頼度を表している。一対一の対応を確認するために、可能性のあるペア群を、それらのスコアから、ペアのどちらかの特徴が関与する他の可能性のある対応関係のスコアに基づくペナルティを引き算したものに基づいてランク付けする。十分なスコア(信頼度)を有する対応相手をフロー場に追加する。スコア(信頼度)を後の使用のためにフローベクトルと共に記録する。
【0054】
他の実施形態では、計算の負荷を減らすために、特徴を対応付ける手順は、特徴の近くに位置するブロックを先ず分析するか、または最初は低解像度で特徴の対応付けを試みて対応が見つかるまでまたは最高の解像度で画像を比較するまで解像度を上げ続けることを含んでもよい。例えば、画像をデシメーションするピラミッド方法を適用してもよい。デシメーションでは、例えば画像をブロックに分割して各ブロックを代表する一つのピクセル値を生成する(例えば、ブロック内部のピクセルの平均値をとる)ことによって、画像の低解像度バージョン(ピラミッドのレベルと呼ぶ)を作成する。画像の低解像度バージョンは分析するピクセルが少なく探索する領域が小さいので、処理の負荷を減らすことが可能になる。低解像度で結果が得られたら、探索を制限するために低解像度で見つかった結果を利用して、より高い解像度で画像を分析してもよい。例えば、一つ以上の特定の低解像度領域で特徴の対応が見つかったら、それらの特定の低解像度の領域をより高い解像度で特徴を探すようにしてもよい。
【0055】
特徴を対応付けた後、処理700では各特徴のフローベクトルを決定する(730)。一つの実施形態では、現在のカメラ画像での特徴の位置の、前回のカメラ画像でのその位置に対する変位を算出することによってフローベクトルを決定する。フローベクトルのセットによってフロー場が形成される。各フローベクトルは大きさと方向を有していてよい。対応付けられたペア群は、2つの関連するカメラ画像間で特徴の位置の全体的なパスを生成する。必要があればこのパスを格納して、より長い期間に亘ってオプティカルフロー(従ってカメラの動き)を算出できる。
【0056】
環境が静的であるという保証は無く、それ自体が動いている特徴によってカメラの動きを誤って推定してしまう可能性があるので、必要があれば特徴群を分けてもよい(740)。図7において工程740が破線で囲われていることが、工程740が選択可能であることを示している。一つの実施形態では、特徴を「セット」または「クラスタ」に分割して、環境の静的要素(つまり背景)に関連するフローベクトルのセットを生成する。例えば、カメラが動くのと同じ方向に鳥が画像を横切って飛んでいる場合、鳥を表す特徴は、静的特徴と同程度の大きさの変位を示さないか、または鳥がカメラよりも速く動いている場合、反対方向への変位を示すことがある。よって、鳥を表す特徴を分離して静的特徴に注目するようにすれば、カメラの動きのより正確な検出が可能になる場合がある。
【0057】
分離の一つの例では、環境の静的部分が、いずれの単一の動的(動いている)部分よりも大きい領域を構成していると仮定する。この仮定の下では、特徴群の最も重要なセットは環境の静的要素と関連する。ここで、「最も重要な」の計数は、特徴は均等に分散されていないので、特徴の数だけではなくこのセットによってカバーされた面積を含む。カメラの回転量を、この特徴群のセットを使用して推定する。特徴を分類して、静的な背景の一部である可能性が高いのか動いている物体である可能性が高いのかを示すタグを付けてもよい。このようなタグを、後のフレームにおいて特徴の分類を更新する際のヒントとして使用してもよい。
【0058】
別の例では、Z軸の周りの回転は重要でないとし(つまり回転は、X軸およびY軸の周りのものに限定される)、またX軸、Y軸、Z軸に沿った平行移動を重要でないとすると、環境(つまり背景)の静的要素に関連する各フローベクトルは類似の方向と大きさとを有する傾向にある。例えば、図3Aおよび図3Bに示すように、X軸とY軸とだけの周りの回転は、ほぼ平行かつ同等の大きさである静的特徴のフローベクトルを生成する。動いている特徴は、静的特徴(例えば、静的特徴と判定された特徴)のフローベクトルと十分に平行ではないか、又は十分に同等の大きさではないフローベクトルを有する特徴を検出することによって、静的特徴から分けることができる。例えば、許容方向範囲(例えば、静的特徴のフローベクトルの方向から±5°)および許容大きさ範囲(例えば、静的特徴のフローベクトルの大きさから±5ピクセル)を、例えば静的特徴のフローベクトルの検出された方向および大きさに基づいて算出してもよい。ある特徴のフローベクトルの方向が許容方向範囲内でなければ、またはその大きさが許容大きさ範囲内でなければ、その特徴を動いている特徴として分離してもよい。
【0059】
計算能力が限られたシステムで使用する、動的特徴と静的特徴とに別ける好適な方法は、フローベクトルの方向と大きさの類似性を利用して最も重要な特徴群のセットを選択することである。この実施形態では、静的背景は通常、動いているいずれの物体よりも大きいので、最も重要な特徴群のセットは静的背景であると仮定される。他の実施形態では、最も重要な特徴群のセットは、既知の現実世界の基準物体であると仮定してもよい。基準物体の例は、カメラがユーザーに面する方向を向いている実施形態ではユーザーの顔である。使用した仮定にかかわらず、最も重要な特徴群のセットは、平行かつ同等の大きさを持ち画像の中の最大領域に広がり、および/または最も多い数の特徴を有する特徴群のセットを選択することによって、決定されてもよい。最も重要な特徴群のセットを決定したら、その最も重要な特徴群のセットのフローベクトルと平行ではないかまたは同じ大きさではないフローベクトルを有する特徴を取出すことによって、動いている特徴を分離してもよい。カメラの動きの追加の自由度(例えばZ軸の周りの回転)の推定は任意であり、追加の自由度を推定するかどうかは、手持ち式装置の利用できる計算能力によって決定してもよい。
【0060】
処理700は、カメラの動きを検出する(750)。カメラの動きは、一連の画像で対応付けられているが分けられていない各特徴のオプティカルフローベクトルを備えるオプティカルフロー場を使用して検出してもよい。カメラの動きを、オプティカルフローベクトルによって表されるカメラ視野内の特徴の見掛けの速度から算出してもよい。静的特徴のフローベクトルの大きさと方向はカメラの動きに関連しており、カメラの動きを推定するのに使用してもよい。
【0061】
例えば、静止した場面では、カメラの回転は以下の式によって近似できる:
Vxi=Mx+Mz*Ri*cos(Thetai)
Vyi=My+Mz*Ri*sin(Thetai)
ここで、VxiとVyiは特徴iのフローベクトルの成分を表している。
Mx、My、Mzはカメラの回転量を表している。
RiとThetaiは、極座標における画像内の特徴の位置を表し、測定値から決定される。
【0062】
十分に分布した少数の特徴があれば、未知のMx、My、Mzを推定できる。検出された回転量(つまりVxiとVyi)は、アプリケーションを制御するために直接使用できるか、またはカメラとレンズの性質が分かっていれば現実世界の単位(°)に換算できる。
【0063】
別の実施形態では、Z軸の周りの回転およびX軸、Y軸、Z軸に沿った平行移動は、ユーザーは通常Z軸の周りにカメラを回転させることはなくそしてユーザーは通常静止しているため、重要でないと仮定する。この実施形態では、静止した場面でのX軸およびY軸の周りのカメラの回転量は、単に、全ての特徴のフローベクトルの平均と推定できる。X軸およびY軸のみの周りの回転ではほぼ平行で同等の大きさのフローベクトルが生成されるため、全フローベクトルの平均が、全フローベクトルの比較を代表するものとなる。一つの例では、静止した場面でのX軸およびY軸の周りのカメラの回転量を、全ての特徴のフローベクトルの加重平均と推定してもよい。加重平均では、各フローベクトルの影響に信頼度スコアを掛け算する。結果として、高い信頼度を有するフローベクトル(例えば良好な対応関係)が、低い信頼度を有するフローベクトル(例えば劣っているかまたは疑わしい対応関係)よりも、結果に大きな影響を与える。
【0064】
処理700は、必要があればカメラの累積した動きを算出する(760)。図7において工程760が破線で囲われていることが、この工程が選択可能であることを示している。累積した動きを、カメラの検出された動きを追跡することによって算出してもよい。一連のカメラ画像の累積した動きを、最初の位置に対するこの装置の位置を検出するために算出してもよい。しかし、比較的速く画像から画像へと誤差が増大する場合がある。
【0065】
増大する誤差を低減するために、フロー場を算出する際に、特徴の全体的なパスを格納してもよい。最初の位置に対する特徴の変位を表す全体的な動きベクトルに、前述したカメラの動き技法を適用できる。これは、カメラの動きが限定的なものであって、特徴群のサブセットが追跡期間に亘ってカメラの視野内に留まる場合に特に有効であることがある。例えば、鉛筆の先端が画像の中の特徴であるとする。鉛筆の先端が画像の中に留まるような領域に亘ってカメラが動くとき、鉛筆の先端を表す特徴の元の位置を格納しておけば、その鉛筆の先端を表す特徴の現在の位置をその鉛筆の先端を表す特徴の元の位置と比較することによってカメラの累積した動きを算出してもよい。各パスは通常、多くのカメラフレームにわたるので、誤差の累積は、フレーム間で累積した動きを算出するよりも遅くなる。
【0066】
最初の画像以降、検出された全ての特徴を考えると、全体的な特徴パス群のセットに、追跡の全期間に亘って延びるパスが含まれているとは限らない。例えば、上述したように、物体(鉛筆の先端など)がカメラの視野から出てしまうこともある。しかし、全体的な特徴パス群のセットは、開始時(最初に検出された、又はカメラの視野に入った)と終了時(最後に検出された、又はカメラの視野から出た)が重なっている、分かれているが関連するパス群を含んでいる可能性が高い。(時間上)重なっているパスの組み合わせを、最初の位置に対して特徴群を累積的に位置付けするために使用できる。
【0067】
例えば、鉛筆の先端は画像の中の特徴であるが、鉛筆の消しゴムは画像の中に存在していないとする。カメラが動くと、鉛筆の先端を表す特徴が画像にわたって移動し、追跡される。その後の画像では鉛筆の消しゴムが視野に入り、鉛筆の先端と鉛筆の消しゴムの両方が画像の中で追跡された特徴となるようにカメラが動いたとする。さらにカメラが動くと、鉛筆の先端は画像から去り、鉛筆の消しゴムを表す特徴はまだ残って追跡されるとする。鉛筆の先端と鉛筆の消しゴムは同時に画像内に存在していた特徴であるので、プロセッサは、鉛筆の先端に対する鉛筆の消しゴムの相対的な位置を算出できる。よって、(1)鉛筆の消しゴムを表す特徴の現在位置と、(2)鉛筆の先端に対する鉛筆の消しゴムの相対位置と、(3)鉛筆の先端がカメラの視野から去る前の格納されたパスとを使用して、プロセッサが、消しゴムの完全なパスを決定してもよい。次に、消しゴムの完全なパスをプロセッサが使用して、カメラの累積した動きを追跡しカメラの最初の位置を特定してもよい。この技法を、鉛筆の消しゴムが画像から出るときにカメラの累積した動きを追跡し続けるために、追加の特徴で繰り返してもよい。このような関連しているが分かれている特徴パスを使用することによって、個々の特徴パスを使用するよりも、誤差の累積をかなり遅くすることができる。
【0068】
処理700を使用して、例えば、カメラの動き、カメラの最初の位置に対する相対的な位置および/またはカメラの最初の方向に対する相対的な方向を、2から6の各自由度で算出してもよい。6未満の自由度でカメラの動きを推定する際には、6自由度のうちの一つ以上の動きが固定であると仮定する。例えば、ユーザーが一つの位置で起立または着席し、Z軸の周りにこの装置を回転させないと予想される場合、2自由度(X軸およびY軸の周りの回転)が適当である可能性がある。ユーザーが一つの位置で起立または着席すると予想される場合、3自由度(3つ全ての軸の周りの回転)が適当である可能性がある。ユーザーが歩き回ることが予想される場合、6自由度(3つ全ての軸の周りの回転および3つ全ての軸に沿った平行移動)が適当である可能性がある。アプリケーションが累積した位置算出のための最初の位置を、任意の時に、または、例えばセッション、ゲーム、レベルの開始時に、またはユーザーが要求した時にリセットしてもよい。
【0069】
これらは画像に依存する単位で算出されるが、カメラレンズについての情報があれば、現実世界の単位(即ち、角度)に変換できる。画像に依存する単位は、カメラの画像のピクセルを使って表されることがあるが、現実世界の単位は、角度(回転について)と、インチまたはセンチメートル(平行移動について)で表されることがある。画像に依存する単位を現実世界の単位に変換する一つの方法は、単に、方向に、視野(つまり角度)/画像サイズ(つまりピクセル)を表す係数を掛け算する。
【0070】
図8A〜図8Cは、例えば図6で示す処理600と図7に示す処理700とを実行するように構成されたプロセッサ(図示せず)を有するカメラ付き手持ち式装置810を操作するユーザーを例示している。プロセッサは、ゲームなどの表示インタフェースを持つアプリケーションを実行するように構成されていてもよい。
【0071】
図8Aを参照すると、装置810が座っているユーザー820によって保持されている。携帯娯楽装置(例えばカメラ付き携帯電話)に備えられたカメラの場合、そのカメラの動きが、平行移動無しの純粋な回転であるとは限らない。しかし、その場面の物体がカメラから十分離れた位置にある場合、平行移動よりも回転の方が特徴のフローベクトルの大きさに大きな影響を与えるので、オプティカルフローに対する平行移動の影響はある種のアプリケーションにとっては重要ではない。図示の例では、装置810のカメラ830が、カメラから約1mの距離にある床に面している。このシナリオでは、1°のカメラ回転によって生成されるオプティカルフロー速度の大きさは、17cmのカメラ平行移動と同程度であることがある。このシナリオのユーザーは、意図的にカメラ付き携帯電話を傾けるが、数センチメートルを超えて電話を平行移動させる可能性は少ない。それゆえ、感知できるほどの誤差を生成するためにはユーザーは通常ではあり得ないほど長い距離にわたって装置を平行移動させる必要があるため、装置を回転させることによってゲームを制御するために必要な精度を求めて、平行移動の影響は無視でき、オプティカルフローは単純に回転の結果であると仮定できる。従って、ユーザー820は装置を回転させてカメラ付き手持ち式装置810で実行されるアプリケーションにユーザー入力を提供できる。
【0072】
図8Bを参照すると、装置810が起立しているユーザー840によって保持されている。この例では、ユーザー840は、床に面している装置810のカメラ830を持って比較的静止した状態で起立している。座っているユーザーと同様に、床との距離はカメラの平行移動を無視できるほど十分に遠いものであり、ユーザー840はカメラ付き手持ち式装置810を回転させてアプリケーションへユーザー入力を提供できる。
【0073】
図8Cを参照すると、カメラ付き手持ち式装置850が、起立しているユーザー860によって保持されている。この例では、カメラ付き手持ち式装置850のカメラ870はユーザーの顔に面している。カメラ870がユーザーの顔に向けられると、その顔がカメラ画像の大きな部分を占めるようになり、回転の測定値はユーザー860を基準とするので、ユーザー860は歩いたり動き回ったりしながらカメラ付き手持ち式装置850を操作できる。これは、ユーザー860が動く時、ユーザーの顔はカメラ付き手持ち式装置850に対して動かないためである。ユーザーの顔が静的背景にかわって最も重要な物体となるため、カメラ付き手持ち式装置850の動きはユーザー860を基準として測定される。このため、ユーザー860の歩行は装置の動きとして検知されず、ユーザー入力の検出には影響を及ぼさない。
【0074】
ゲームなどのアプリケーションのユーザーインタフェースを制御するためにユーザー入力を検出するというアプリケーションについて述べてきたが、これ以外のアプリケーションも可能である。具体的には、カメラが物理的に結合された装置の他の機能または特徴を制御するアプリケーションであってもよい。例えば、装置の動きが検知され、アラームが禁止になっていないときに装置の警報信号を起動する盗難防止のためのセキュリティアプリケーションを利用してもよい。また、ユーザーがカメラ付き携帯電話を自分の耳から離すように傾けた時その電話の音量を上げる音量制御アプリケーションを実現させてもよい。処理600および700と、その他の本願明細書に記載した様々な実施形態、特徴、技法は、主に、装置上で動作するオペレーティングシステムによってソフトウェアとして実行されてもよい。そのソフトウェアは、カメラからのデータと、装置に一体化されたコンピュータディスプレイ、テレビ、LCDなどの表示装置と協働する。ソフトウェアと一緒にまたはソフトウェアに代えてファームウェアおよびハードウェアを使用してもよい。
【0075】
本開示から明らかなように、本願明細書に記載された実施形態、特徴、技法と、これらの変形または組み合わせとは、例えば様々な装置上で動作するオペレーティングシステム、またはスタンドアローンのアプリケーションまたはユーティリティなどで実施されてよい。
【0076】
携帯電話、個人用デジタル補助装置(「PDA」)、その他のポータブル装置は、ユーザーインタフェースのサイズが通常は限定されていてこのような装置でユーザーインタフェースを制御することが通常は困難であるため、多数の実施形態を提供する。例えば、Blackberry装置、電子手帳、iPod装置またはその他のポータブル音楽プレイヤー、ポケットベルまたはその他の通信装置、ゲーム・通信および/またはデータ編集のための携帯またはポータブル電子装置などで実施できる。
【0077】
実施形態は、一つ以上の処理を実行するように構成された一つ以上の装置を有していてもよい。装置は、例えば、別個のまたは一体化されたハードウェア、ファームウェア、ソフトウェアを有していてもよい。これらの装置は、例えばマイクロプロセッサ、集積回路、プログラム可能な論理装置、ソフトウェアアプリケーションを内蔵する装置などの処理装置を一般的に指すプロセッサを有していてもよい。
【0078】
実施形態はまた、一つ以上の処理を実行するための命令を含むコンピュータ読み取り可能な一つ以上の媒体を有する装置において実施されてもよい。コンピュータ読み取り可能な媒体は、例えばハードディスク、コンパクトディスケット、ランダム・アクセス・メモリ(「RAM」、リード・オンリー・メモリー(「ROM」)などの記憶装置を含む。コンピュータ読み取り可能な媒体はまた、例えばフォーマットされた電磁波符号化または送信命令群を含んでいてもよい。命令群は、例えばハードウェア、ファームウェア、ソフトウェア、又は電磁波の形態であってもよい。命令群は、例えばオペレーティングシステム、アプリケーション、またはこれらの組み合わせに含まれていてもよい。プロセッサは、例えば処理を実行するように構成された装置と、処理を実行するための命令を含むコンピュータ読み取り可能な媒体を有する装置との両方であってもよい。
【0079】
実施形態はまた、ソフトウェア・オブジェクトの形態で実現されてもよい。このようなオブジェクトは、様々なアプリケーションによってアクセスされるか、または様々なアプリケーションに組み込まれてもよい。
【0080】
いくつかの実施形態を説明したが、様々な変形が可能であることは理解されよう。例えば、異なる実施形態の各要素を組み合わせたり、追加したり、修正したり、取り除いたりして他の実施形態を実現してもよい。さらに、各種の技術を使用したり、組み合わせたり、修正したりして実施形態を実現してもよい。このような技術には、例えば様々なハードウェア、ソフトウェア、ファームウェア、一体化されたコンポーネント、別個のコンポーネント、処理装置、メモリまたは記憶装置、通信装置、レンズ、フィルタ、表示装置、投射装置などが含まれる。従って、他の実施形態も添付の請求項の範囲内である。
【特許請求の範囲】
【請求項1】
装置に配置された画像センサーによって補足した画像にアクセスする段階と、
前記装置に配置された前記画像センサーによって捕捉した前記画像中に存在する静止した第1の特徴を識別する段階と、
前記装置に配置された前記画像センサーによって捕捉した前記画像中に存在する静止した第2の特徴を識別する段階と、
捕捉した前記画像内での前記第1の特徴と前記第2の特徴との間の距離の変化に基づいて、前記装置の奥行き方向の動きの様子を検出する段階と
を有し、
前記第2の特徴は、前記第1の特徴とは異なるものであり、前記第1の特徴から離れた位置にあり、
前記奥行き方向は、前記第1の特徴および前記第2の特徴に対して近づいたり遠ざかったりする移動の方向であることを特徴とする方法。
【請求項2】
検出された前記装置の前記奥行き方向の動きの様子に基づいて、アプリケーションに対するユーザー入力を特定する段階をさらに有することを特徴とする請求項1に記載の方法。
【請求項3】
前記第1の特徴が、前記画像中の第1の物体、前記画像中の前記第1の物体の任意の部分、または、前記画像中の前記第1の物体の角または縁であることを特徴とする請求項1に記載の方法。
【請求項4】
前記第1の特徴または前記第2の特徴の物理的位置が変化しないことを特徴とする請求項1に記載の方法。
【請求項5】
検出された前記装置の前記奥行き方向の動きの様子に基づいて、アプリケーションに対するユーザー入力を特定する前記段階が、
検出された前記装置の前記奥行き方向の動きに対応した態様で、ユーザーインタフェースに映される物体の移動を制御する段階を含むことを特徴とする請求項2に記載の方法。
【請求項6】
前記装置の奥行き方向の動きの様子を検出する前記段階が、
前記装置の前記奥行き方向の動きの距離を算出する段階を含み、
検出された前記装置の前記奥行き方向の動きに対応した態様で、ユーザーインタフェースに映される物体の移動を制御する前記段階が、
前記ユーザーインタフェースに映される前記物体を、算出された前記装置の前記奥行き方向の動きの前記距離に対応した前記ユーザーインタフェース内の距離だけ方向付け、回転、またはナビゲートするように制御する段階をさらに含むことを特徴とする請求項5に記載の方法。
【請求項7】
前記装置の奥行き方向の動きの様子を検出する前記段階が、
前記装置の平行移動量を算出する段階を含み、
検出された前記装置の前記奥行き方向の動きに対応した態様で、ユーザーインタフェースに映される物体の移動を制御する前記段階が、
前記ユーザーインタフェースに映される前記物体を、算出された前記装置の前記平行移動量に対応した態様で、前記ユーザーインタフェース内で方向付け、回転、またはナビゲートするように制御する段階をさらに含むことを特徴とする請求項5に記載の方法。
【請求項8】
前記アプリケーションがゲームアプリケーションであることを特徴とする請求項2に記載の方法。
【請求項9】
モバイル装置と、
前記モバイル装置に配置された画像センサーと、
少なくとも1つのプロセッサと
を具備し、
前記少なくとも1つのプロセッサは、
前記モバイル装置に配置された前記画像センサーによって補足した画像にアクセスする手順と、
前記モバイル装置に配置された前記画像センサーによって捕捉した前記画像中に存在する静止した第1の特徴を識別する手順と、
前記モバイル装置に配置された前記画像センサーによって捕捉した前記画像中に存在する静止した第2の特徴を識別する手順と、
捕捉した前記画像内での前記第1の特徴と前記第2の特徴との間の距離の変化に基づいて、前記モバイル装置の奥行き方向の動きの様子を検出する手順と
を実行するように構成され、
前記第2の特徴は、前記第1の特徴とは異なるものであり、前記第1の特徴から離れた位置にあり、
前記奥行き方向は、前記第1の特徴および前記第2の特徴に対して近づいたり遠ざかったりする移動の方向であることを特徴とするシステム。
【請求項10】
前記少なくとも1つのプロセッサが、
検出された前記モバイル装置の前記奥行き方向の動きの様子に基づいて、アプリケーションに対するユーザー入力を特定する手順をさらに実行するように構成されることを特徴とする請求項9に記載のシステム。
【請求項11】
検出された前記モバイル装置の前記奥行き方向の動きの様子に基づいて、アプリケーションに対するユーザー入力を特定する前記手順が、
検出された前記モバイル装置の前記奥行き方向の動きに対応する態様で、ユーザーインタフェースに映される物体の移動を制御する手順を含むことを特徴とする請求項10に記載のシステム。
【請求項12】
前記モバイル装置の奥行き方向の動きの様子を検出する前記手順が、
前記モバイル装置の前記奥行き方向の動きの距離を算出する手順を含み、
検出された前記モバイル装置の前記奥行き方向の動きに対応する態様で、ユーザーインタフェースに映される物体の移動を制御する前記手順が、
前記ユーザーインタフェースに映される前記物体を、算出された前記モバイル装置の前記奥行き方向の動きの前記距離に対応した前記ユーザーインタフェース内の距離だけ方向付け、回転、またはナビゲートするように制御する手順を含むことを特徴とする請求項11に記載のシステム。
【請求項13】
前記モバイル装置の奥行き方向の動きの様子を検出する前記手順が、
前記モバイル装置の平行移動量を算出する手順を含み、
検出された前記モバイル装置の前記奥行き方向の動きに対応する態様で、ユーザーインタフェースに映される物体の移動を制御する前記手順が、
前記ユーザーインタフェースに映される前記物体を、算出された前記モバイル装置の前記平行移動量に対応した態様で、前記ユーザーインタフェース内で方向付け、回転、またはナビゲートするように制御する手順を含むことを特徴とする請求項11に記載のシステム。
【請求項14】
前記アプリケーションがゲームアプリケーションであることを特徴とする請求項10に記載のシステム。
【請求項15】
画像センサーと、
少なくとも1つのプロセッサと
を具備し、
前記少なくとも1つのプロセッサは、
前記画像センサーによって補足した画像にアクセスする手順と、
前記画像センサーによって捕捉した前記画像中に存在する静止した第1の特徴を識別する手順と、
前記画像センサーによって捕捉した前記画像中に存在する静止した第2の特徴を識別する手順と、
前記画像センサーによって捕捉した前記画像内での前記第1の特徴および前記第2の特徴の位置を検出する手順と
アプリケーションに対する視覚的表示を含むユーザーインタフェースを提供する手順と、
前記画像センサーによって捕捉した前記画像内での前記第1の特徴および前記第2の特徴の検出された前記位置に基づいて、前記アプリケーションに対するユーザー入力を特定する手順と、
前記アプリケーションに対する特定された前記ユーザー入力に基づいて、前記ユーザーインタフェースを制御する手順と
を実行するように構成され、
前記第2の特徴は、前記第1の特徴とは異なるものであり、前記第1の特徴から離れた位置にあり、
前記ユーザーインタフェースは、前記画像センサーまたは該画像センサーが配置された装置とは別個に存在することを特徴とするシステム。
【請求項16】
前記少なくとも1つのプロセッサが、
無線通信を用いて、前記ユーザーインタフェースを制御する前記手順を実行するように構成されることを特徴とする請求項15に記載のシステム。
【請求項17】
前記画像センサーが、モバイル装置に配置され、
前記ユーザーインタフェースが、前記画像センサーが配置された前記モバイル装置とは別個に存在することを特徴とする請求項15に記載のシステム。
【請求項18】
前記画像センサーによって捕捉した前記画像内での前記第1の特徴および前記第2の特徴の位置を検出する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第1の特徴と前記第2の特徴との相対位置を算出する手順を含み、
前記アプリケーションに対するユーザー入力を特定する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第1の特徴と前記第2の特徴との前記相対位置に基づいて、前記アプリケーションに対するユーザー入力を特定する手順を含むことを特徴とする請求項15に記載のシステム。
【請求項19】
前記画像センサーによって捕捉した前記画像内での前記第1の特徴および前記第2の特徴の位置を検出する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第1の特徴の位置の変化および前記画像センサーによって捕捉した前記画像内での前記第2の特徴の位置の変化を検出する手順を含み、
前記アプリケーションに対するユーザー入力を特定する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第1の特徴の位置の前記変化および前記画像センサーによって捕捉した前記画像内での前記第2の特徴の位置の前記変化に基づいて、前記アプリケーションに対するユーザー入力を特定する手順を含むことを特徴とする請求項15に記載のシステム。
【請求項20】
前記アプリケーションに対するユーザー入力を特定する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第1の特徴と前記第2の特徴との間の距離の変化に基づいて、システム自身の奥行き方向の動きの様子を検出し、検出されたシステム自身の前記奥行き方向の動きの様子に基づいて、前記アプリケーションに対するユーザー入力を特定する手順を含むことを特徴とする請求項15に記載のシステム。
【請求項21】
前記ユーザーインタフェースを制御する前記手順が、
前記アプリケーションに対する特定された前記ユーザー入力に基づいて、前記ユーザーインタフェースに映される物体の移動を制御する手順を含むことを特徴とする請求項15に記載のシステム。
【請求項22】
前記アプリケーションに対するユーザー入力を特定する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第1の特徴および前記第2の特徴の検出された前記位置に基づいて、システム自身の動きの距離を算出する手順を含み、
前記アプリケーションに対する特定された前記ユーザー入力に基づいて、前記ユーザーインタフェースに映される物体の移動を制御する前記手順が、
前記ユーザーインタフェースに映される前記物体を、算出されたシステム自身の動きの前記距離に対応した前記ユーザーインタフェース内での距離だけ動くように制御する手順を含むことを特徴とする請求項21に記載のシステム。
【請求項23】
前記アプリケーションに対するユーザー入力を特定する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第1の特徴および前記第2の特徴の検出された前記位置に基づいて、システム自身の平行移動量を算出する手順を含み、
前記アプリケーションに対する特定された前記ユーザー入力に基づいて、前記ユーザーインタフェースに映される物体の移動を制御する前記手順が、
前記ユーザーインタフェースに映される前記物体を、算出されたシステム自身の前記平行移動量に対応した態様で前記ユーザーインタフェース内を動くように制御する手順を含むことを特徴とする請求項21に記載のシステム。
【請求項24】
前記ユーザーインタフェースを制御する前記手順が、
前記アプリケーションの前記ユーザーインタフェースに映されるメニューオブジェクトに基づいて、メニューナビゲーション機能を制御する手順を含むことを特徴とする請求項15に記載のシステム。
【請求項25】
前記アプリケーションがゲームアプリケーションであることを特徴とする請求項15に記載のシステム。
【請求項26】
装置に配置された画像センサーによって補足した画像にアクセスするための手段と、
前記装置に配置された前記画像センサーによって捕捉した前記画像中に存在する静止した第1の特徴を識別するための手段と、
前記装置に配置された前記画像センサーによって捕捉した前記画像中に存在する静止した第2の特徴を識別するための手段と、
捕捉した前記画像内での前記第1の特徴と前記第2の特徴との間の距離の変化に基づいて、前記装置の奥行き方向の動きの様子を検出するための手段と
を具備し、
前記第2の特徴は、前記第1の特徴とは異なるものであり、前記第1の特徴から離れた位置にあり、
前記奥行き方向は、前記第1の特徴および前記第2の特徴に対して近づいたり遠ざかったりする移動の方向であることを特徴とする装置。
【請求項27】
コンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記コンピュータプログラムは、
装置に配置された画像センサーによって補足した画像にアクセスするためのコード部と、
前記装置に配置された前記画像センサーによって捕捉した前記画像中に存在する静止した第1の特徴を識別するためのコード部と、
前記装置に配置された前記画像センサーによって捕捉した前記画像中に存在する静止した第2の特徴を識別するためのコード部と、
捕捉した前記画像内での前記第1の特徴と前記第2の特徴との間の距離の変化に基づいて、前記装置の奥行き方向の動きの様子を検出するためのコード部と
を含み、
前記第2の特徴は、前記第1の特徴とは異なるものであり、前記第1の特徴から離れた位置にあり、
前記奥行き方向は、前記第1の特徴および前記第2の特徴に対して近づいたり遠ざかったりする移動の方向であることを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項1】
装置に配置された画像センサーによって補足した画像にアクセスする段階と、
前記装置に配置された前記画像センサーによって捕捉した前記画像中に存在する静止した第1の特徴を識別する段階と、
前記装置に配置された前記画像センサーによって捕捉した前記画像中に存在する静止した第2の特徴を識別する段階と、
捕捉した前記画像内での前記第1の特徴と前記第2の特徴との間の距離の変化に基づいて、前記装置の奥行き方向の動きの様子を検出する段階と
を有し、
前記第2の特徴は、前記第1の特徴とは異なるものであり、前記第1の特徴から離れた位置にあり、
前記奥行き方向は、前記第1の特徴および前記第2の特徴に対して近づいたり遠ざかったりする移動の方向であることを特徴とする方法。
【請求項2】
検出された前記装置の前記奥行き方向の動きの様子に基づいて、アプリケーションに対するユーザー入力を特定する段階をさらに有することを特徴とする請求項1に記載の方法。
【請求項3】
前記第1の特徴が、前記画像中の第1の物体、前記画像中の前記第1の物体の任意の部分、または、前記画像中の前記第1の物体の角または縁であることを特徴とする請求項1に記載の方法。
【請求項4】
前記第1の特徴または前記第2の特徴の物理的位置が変化しないことを特徴とする請求項1に記載の方法。
【請求項5】
検出された前記装置の前記奥行き方向の動きの様子に基づいて、アプリケーションに対するユーザー入力を特定する前記段階が、
検出された前記装置の前記奥行き方向の動きに対応した態様で、ユーザーインタフェースに映される物体の移動を制御する段階を含むことを特徴とする請求項2に記載の方法。
【請求項6】
前記装置の奥行き方向の動きの様子を検出する前記段階が、
前記装置の前記奥行き方向の動きの距離を算出する段階を含み、
検出された前記装置の前記奥行き方向の動きに対応した態様で、ユーザーインタフェースに映される物体の移動を制御する前記段階が、
前記ユーザーインタフェースに映される前記物体を、算出された前記装置の前記奥行き方向の動きの前記距離に対応した前記ユーザーインタフェース内の距離だけ方向付け、回転、またはナビゲートするように制御する段階をさらに含むことを特徴とする請求項5に記載の方法。
【請求項7】
前記装置の奥行き方向の動きの様子を検出する前記段階が、
前記装置の平行移動量を算出する段階を含み、
検出された前記装置の前記奥行き方向の動きに対応した態様で、ユーザーインタフェースに映される物体の移動を制御する前記段階が、
前記ユーザーインタフェースに映される前記物体を、算出された前記装置の前記平行移動量に対応した態様で、前記ユーザーインタフェース内で方向付け、回転、またはナビゲートするように制御する段階をさらに含むことを特徴とする請求項5に記載の方法。
【請求項8】
前記アプリケーションがゲームアプリケーションであることを特徴とする請求項2に記載の方法。
【請求項9】
モバイル装置と、
前記モバイル装置に配置された画像センサーと、
少なくとも1つのプロセッサと
を具備し、
前記少なくとも1つのプロセッサは、
前記モバイル装置に配置された前記画像センサーによって補足した画像にアクセスする手順と、
前記モバイル装置に配置された前記画像センサーによって捕捉した前記画像中に存在する静止した第1の特徴を識別する手順と、
前記モバイル装置に配置された前記画像センサーによって捕捉した前記画像中に存在する静止した第2の特徴を識別する手順と、
捕捉した前記画像内での前記第1の特徴と前記第2の特徴との間の距離の変化に基づいて、前記モバイル装置の奥行き方向の動きの様子を検出する手順と
を実行するように構成され、
前記第2の特徴は、前記第1の特徴とは異なるものであり、前記第1の特徴から離れた位置にあり、
前記奥行き方向は、前記第1の特徴および前記第2の特徴に対して近づいたり遠ざかったりする移動の方向であることを特徴とするシステム。
【請求項10】
前記少なくとも1つのプロセッサが、
検出された前記モバイル装置の前記奥行き方向の動きの様子に基づいて、アプリケーションに対するユーザー入力を特定する手順をさらに実行するように構成されることを特徴とする請求項9に記載のシステム。
【請求項11】
検出された前記モバイル装置の前記奥行き方向の動きの様子に基づいて、アプリケーションに対するユーザー入力を特定する前記手順が、
検出された前記モバイル装置の前記奥行き方向の動きに対応する態様で、ユーザーインタフェースに映される物体の移動を制御する手順を含むことを特徴とする請求項10に記載のシステム。
【請求項12】
前記モバイル装置の奥行き方向の動きの様子を検出する前記手順が、
前記モバイル装置の前記奥行き方向の動きの距離を算出する手順を含み、
検出された前記モバイル装置の前記奥行き方向の動きに対応する態様で、ユーザーインタフェースに映される物体の移動を制御する前記手順が、
前記ユーザーインタフェースに映される前記物体を、算出された前記モバイル装置の前記奥行き方向の動きの前記距離に対応した前記ユーザーインタフェース内の距離だけ方向付け、回転、またはナビゲートするように制御する手順を含むことを特徴とする請求項11に記載のシステム。
【請求項13】
前記モバイル装置の奥行き方向の動きの様子を検出する前記手順が、
前記モバイル装置の平行移動量を算出する手順を含み、
検出された前記モバイル装置の前記奥行き方向の動きに対応する態様で、ユーザーインタフェースに映される物体の移動を制御する前記手順が、
前記ユーザーインタフェースに映される前記物体を、算出された前記モバイル装置の前記平行移動量に対応した態様で、前記ユーザーインタフェース内で方向付け、回転、またはナビゲートするように制御する手順を含むことを特徴とする請求項11に記載のシステム。
【請求項14】
前記アプリケーションがゲームアプリケーションであることを特徴とする請求項10に記載のシステム。
【請求項15】
画像センサーと、
少なくとも1つのプロセッサと
を具備し、
前記少なくとも1つのプロセッサは、
前記画像センサーによって補足した画像にアクセスする手順と、
前記画像センサーによって捕捉した前記画像中に存在する静止した第1の特徴を識別する手順と、
前記画像センサーによって捕捉した前記画像中に存在する静止した第2の特徴を識別する手順と、
前記画像センサーによって捕捉した前記画像内での前記第1の特徴および前記第2の特徴の位置を検出する手順と
アプリケーションに対する視覚的表示を含むユーザーインタフェースを提供する手順と、
前記画像センサーによって捕捉した前記画像内での前記第1の特徴および前記第2の特徴の検出された前記位置に基づいて、前記アプリケーションに対するユーザー入力を特定する手順と、
前記アプリケーションに対する特定された前記ユーザー入力に基づいて、前記ユーザーインタフェースを制御する手順と
を実行するように構成され、
前記第2の特徴は、前記第1の特徴とは異なるものであり、前記第1の特徴から離れた位置にあり、
前記ユーザーインタフェースは、前記画像センサーまたは該画像センサーが配置された装置とは別個に存在することを特徴とするシステム。
【請求項16】
前記少なくとも1つのプロセッサが、
無線通信を用いて、前記ユーザーインタフェースを制御する前記手順を実行するように構成されることを特徴とする請求項15に記載のシステム。
【請求項17】
前記画像センサーが、モバイル装置に配置され、
前記ユーザーインタフェースが、前記画像センサーが配置された前記モバイル装置とは別個に存在することを特徴とする請求項15に記載のシステム。
【請求項18】
前記画像センサーによって捕捉した前記画像内での前記第1の特徴および前記第2の特徴の位置を検出する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第1の特徴と前記第2の特徴との相対位置を算出する手順を含み、
前記アプリケーションに対するユーザー入力を特定する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第1の特徴と前記第2の特徴との前記相対位置に基づいて、前記アプリケーションに対するユーザー入力を特定する手順を含むことを特徴とする請求項15に記載のシステム。
【請求項19】
前記画像センサーによって捕捉した前記画像内での前記第1の特徴および前記第2の特徴の位置を検出する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第1の特徴の位置の変化および前記画像センサーによって捕捉した前記画像内での前記第2の特徴の位置の変化を検出する手順を含み、
前記アプリケーションに対するユーザー入力を特定する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第1の特徴の位置の前記変化および前記画像センサーによって捕捉した前記画像内での前記第2の特徴の位置の前記変化に基づいて、前記アプリケーションに対するユーザー入力を特定する手順を含むことを特徴とする請求項15に記載のシステム。
【請求項20】
前記アプリケーションに対するユーザー入力を特定する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第1の特徴と前記第2の特徴との間の距離の変化に基づいて、システム自身の奥行き方向の動きの様子を検出し、検出されたシステム自身の前記奥行き方向の動きの様子に基づいて、前記アプリケーションに対するユーザー入力を特定する手順を含むことを特徴とする請求項15に記載のシステム。
【請求項21】
前記ユーザーインタフェースを制御する前記手順が、
前記アプリケーションに対する特定された前記ユーザー入力に基づいて、前記ユーザーインタフェースに映される物体の移動を制御する手順を含むことを特徴とする請求項15に記載のシステム。
【請求項22】
前記アプリケーションに対するユーザー入力を特定する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第1の特徴および前記第2の特徴の検出された前記位置に基づいて、システム自身の動きの距離を算出する手順を含み、
前記アプリケーションに対する特定された前記ユーザー入力に基づいて、前記ユーザーインタフェースに映される物体の移動を制御する前記手順が、
前記ユーザーインタフェースに映される前記物体を、算出されたシステム自身の動きの前記距離に対応した前記ユーザーインタフェース内での距離だけ動くように制御する手順を含むことを特徴とする請求項21に記載のシステム。
【請求項23】
前記アプリケーションに対するユーザー入力を特定する前記手順が、
前記画像センサーによって捕捉した前記画像内での前記第1の特徴および前記第2の特徴の検出された前記位置に基づいて、システム自身の平行移動量を算出する手順を含み、
前記アプリケーションに対する特定された前記ユーザー入力に基づいて、前記ユーザーインタフェースに映される物体の移動を制御する前記手順が、
前記ユーザーインタフェースに映される前記物体を、算出されたシステム自身の前記平行移動量に対応した態様で前記ユーザーインタフェース内を動くように制御する手順を含むことを特徴とする請求項21に記載のシステム。
【請求項24】
前記ユーザーインタフェースを制御する前記手順が、
前記アプリケーションの前記ユーザーインタフェースに映されるメニューオブジェクトに基づいて、メニューナビゲーション機能を制御する手順を含むことを特徴とする請求項15に記載のシステム。
【請求項25】
前記アプリケーションがゲームアプリケーションであることを特徴とする請求項15に記載のシステム。
【請求項26】
装置に配置された画像センサーによって補足した画像にアクセスするための手段と、
前記装置に配置された前記画像センサーによって捕捉した前記画像中に存在する静止した第1の特徴を識別するための手段と、
前記装置に配置された前記画像センサーによって捕捉した前記画像中に存在する静止した第2の特徴を識別するための手段と、
捕捉した前記画像内での前記第1の特徴と前記第2の特徴との間の距離の変化に基づいて、前記装置の奥行き方向の動きの様子を検出するための手段と
を具備し、
前記第2の特徴は、前記第1の特徴とは異なるものであり、前記第1の特徴から離れた位置にあり、
前記奥行き方向は、前記第1の特徴および前記第2の特徴に対して近づいたり遠ざかったりする移動の方向であることを特徴とする装置。
【請求項27】
コンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記コンピュータプログラムは、
装置に配置された画像センサーによって補足した画像にアクセスするためのコード部と、
前記装置に配置された前記画像センサーによって捕捉した前記画像中に存在する静止した第1の特徴を識別するためのコード部と、
前記装置に配置された前記画像センサーによって捕捉した前記画像中に存在する静止した第2の特徴を識別するためのコード部と、
捕捉した前記画像内での前記第1の特徴と前記第2の特徴との間の距離の変化に基づいて、前記装置の奥行き方向の動きの様子を検出するためのコード部と
を含み、
前記第2の特徴は、前記第1の特徴とは異なるものであり、前記第1の特徴から離れた位置にあり、
前記奥行き方向は、前記第1の特徴および前記第2の特徴に対して近づいたり遠ざかったりする移動の方向であることを特徴とするコンピュータ読み取り可能な記録媒体。
【図1】
【図2】
【図3A】
【図3B】
【図3C】
【図4A】
【図4B】
【図5A】
【図5B】
【図5C】
【図5D】
【図5E】
【図5F】
【図6】
【図7】
【図8A】
【図8B】
【図8C】
【図2】
【図3A】
【図3B】
【図3C】
【図4A】
【図4B】
【図5A】
【図5B】
【図5C】
【図5D】
【図5E】
【図5F】
【図6】
【図7】
【図8A】
【図8B】
【図8C】
【公開番号】特開2012−178854(P2012−178854A)
【公開日】平成24年9月13日(2012.9.13)
【国際特許分類】
【出願番号】特願2012−96580(P2012−96580)
【出願日】平成24年4月20日(2012.4.20)
【分割の表示】特願2007−550456(P2007−550456)の分割
【原出願日】平成18年1月6日(2006.1.6)
【出願人】(507364838)クアルコム,インコーポレイテッド (446)
【Fターム(参考)】
【公開日】平成24年9月13日(2012.9.13)
【国際特許分類】
【出願日】平成24年4月20日(2012.4.20)
【分割の表示】特願2007−550456(P2007−550456)の分割
【原出願日】平成18年1月6日(2006.1.6)
【出願人】(507364838)クアルコム,インコーポレイテッド (446)
【Fターム(参考)】
[ Back to top ]