(57)【要約】【課題】ビデオカメラをポインティング装置として使用するときに画面上のカーソルを制御するシステムを提供すること。【解決手段】システムは、ビデオカメラをポインティング装置として使用するときに、画面上のカーソルを自動的に且つ動的に制御する。コンピュータが、画面に静的または動的コンテンツを表示する。コンピュータに接続されたビデオカメラが画面を指し示す。ビデオカメラが画面を撮影する際に、ビデオカメラによって取り込まれるフレームがコンピュータに送られる。目標画像がコンピュータによって画面上に表示され、ビデオカメラの画面カーソルの位置をマークする。ビデオカメラによって取り込まれるフレームは目標画像を含み、コンピュータは、目標画像がビデオカメラの視界の中心に留まるように、画面上の目標画像を動的に移動させる。【選択図】図１
2009048616.tif 000002
【特許請求の範囲】
【請求項１】
ビデオカメラをポインティング装置として使用するときに、画面上のカーソルを自動的に且つ動的に制御するコンピュータベースの方法であって、
コンピュータが、前記コンピュータに接続された前記画面に動的コンテンツを表示し、
前記画面を指し示し且つ前記コンピュータに接続された前記ビデオカメラが、前記画面を撮影し、
前記コンピュータが、前記ビデオカメラによって取り込まれるフレームが目標画像を含むように前記画面に前記目標画像を表示し、および
前記コンピュータが、前記ビデオカメラポインティング装置の前記画面カーソルの位置をマークする前記目標画像が前記ビデオカメラの視界の中心に留まるように前記画面上の前記目標画像を動的に移動させる
コンピュータベースの方法。
【請求項２】
前記コンピュータが、前記目標画像が検出可能のままであるように、前記目標画像の周りのディスプレイ、および前記目標画像自体のうちの１つを変更することをさらに備える、請求項１に記載のコンピュータベースの方法。
【請求項３】
前記コンピュータが、前記ビデオカメラが前記画面から遠ざかるときに前記目標画像が検出可能のままであるように、前記目標画像のサイズと不透明度を動的に調整することをさらに備える、請求項１に記載のコンピュータベースの方法。
【請求項４】
前記コンピュータが、前記目標画像を移動させるための計算で使用される推定であって、前記ビデオカメラと前記画面との間の距離を推定することをさらに備える、請求項１に記載のコンピュータベースの方法。
【請求項５】
前記コンピュータが、前記目標画像を移動させるための計算で使用される推定であって、前記ビデオカメラのヨー、ピッチ、およびロールの１つ以上に基づいて前記ビデオカメラの前記画面に対する位置を推定することをさらに備える、請求項１に記載のコンピュータベースの方法。
【請求項６】
前記ビデオカメラを前記目標画像に向けることによって前記目標画像を選択するユーザがシステムを手動で初期設定することをさらに備える、請求項１に記載のコンピュータベースの方法。
【請求項７】
前記ビデオカメラによって取り込まれるフレーム内に前記目標画像が現れるまで前記目標画像を前記画面の種々の領域に表示することによって、システムを自動的に初期設定することをさらに備える、請求項１に記載のコンピュータベースの方法。
【請求項８】
前記ビデオカメラによって取り込まれるフレーム内に現れる前記画面の第１の象限を求め、次いで、前記フレーム内に現れる前記第１の象限の第２の象限を求め、以下同様に象限サイズが前記目標画像のサイズと等しくなるまで求める再帰的関数により、前記目標画像をどこに移動させるべきか予測することによって、システムを自動的に初期設定することをさらに備える、請求項１に記載のコンピュータベースの方法。
【請求項９】
前記予測領域を指し示す前記ビデオカメラによって取り込まれる前記フレーム内に前記目標画像が現れるように前記目標画像を前記画面上の既定領域に表示することによって、システムを自動的に初期設定することをさらに備える、請求項１に記載のコンピュータベースの方法。
【請求項１０】
前記コンピュータが、１つ以上の追加画面について、前記画面が相互に対してどこに位置するか識別することをさらに備える、請求項１に記載のコンピュータベースの方法。
【請求項１１】
前記画面が相互に対してどこに位置するか識別することは、第１の画面を指し示す前記ビデオカメラが、隣接する第２の画面を指し示すように移動される場合、前記目標画像が前記第１の画面から前記第２の画面に追随すると判定することをさらに備える、請求項１０に記載のコンピュータベースの方法。
【請求項１２】
１台以上の追加のビデオカメラが、色、形状、およびテクスチャのうちの１つ以上によってそれぞれが区別される各目標画像と目標画像に関連付けられる各カーソルとを制御することをさらに備える、請求項１に記載のコンピュータベースの方法。
【請求項１３】
ビデオカメラをポインティング装置として使用するときに、画面上のカーソルを自動的に且つ動的に制御するシステムであって、
システムソフトウェアが実行されるコンピュータと、
前記コンピュータが動的コンテンツを表示するように前記コンピュータに接続された画面と、
前記画面を指し示すように前記コンピュータに接続されたビデオカメラであって、前記画面を撮影する際に前記ビデオ画面によって取り込まれるフレームが前記コンピュータに送られる、前記ビデオカメラと、
前記ビデオカメラによって取り込まれるフレームが目標画像を含み、且つ、前記目標画像が前記ビデオカメラの視界の中心に留まるように前記コンピュータが前記画面上の前記目標画像を動的に移動させるように、前記コンピュータによって前記画面上に表示される前記目標画像であって、前記ビデオカメラポインティング装置の前記画面カーソルの位置をマークする、前記目標画像と
を備えるシステム。
【請求項１４】
前記コンピュータが、前記目標画像が検出可能のままであるように、前記目標画像の周りのディスプレイ、および前記目標画像自体のうちの１つの変更をさらに備える、請求項１３に記載のシステム。
【請求項１５】
前記ビデオカメラが前記画面から遠ざかるときに前記目標画像が検出可能のままであるようにするための前記目標画像のサイズと不透明度との前記コンピュータによる動的調整をさらに備える、請求項１３に記載のシステム。
【請求項１６】
前記目標画像の移動の計算で使用される前記コンピュータによって推定される前記ビデオカメラと前記画面の間の距離であって、前記目標画像の前記移動を求める計算で使用される前記距離をさらに備える、請求項１３に記載のシステム。
【請求項１７】
前記ビデオカメラのヨー、ピッチ、およびロールのうちの１つ以上に基づいて前記コンピュータによって推定される前記ビデオカメラの前記画面に対する位置であって、前記目標画像の前記移動を求める計算で使用される前記位置をさらに備える、請求項１３に記載のシステム。
【請求項１８】
前記ビデオカメラを前記目標画像に向けることによって前記目標画像を選択するユーザによって手動で行われるシステムの初期設定をさらに備える、請求項１３に記載のシステム。
【請求項１９】
前記目標画像が前記ビデオカメラによって取り込まれるフレーム内に現れるまで前記目標画像を前記画面の種々の領域に表示することによって自動的に行われるシステムの初期設定をさらに備える、請求項１３に記載のシステム。
【請求項２０】
前記ビデオカメラによって取り込まれるフレーム内に現れる前記画面の第１の象限を求め、次いで、前記フレーム内に現れる前記第１の象限の第２の象限を求め、以下同様に象限サイズが前記目標画像のサイズと等しくなるまで求める再帰的関数により、前記目標画像をどこに移動させるべきか予測することによって自動的に行われるシステムの初期設定をさらに備える、請求項１３に記載のシステム。
【請求項２１】
前記予測領域を指し示す前記ビデオカメラによって取り込まれる前記フレーム内に前記目標画像が現れるように前記目標画像を前記画面上の予測領域に表示することによって自動的に行われるシステムの初期設定をさらに備える、請求項１３に記載のシステム。
【請求項２２】
前記コンピュータが、前記画面が相互に対してどこに位置するか識別するような１つ以上の追加画面をさらに備える、請求項１３に記載のシステム。
【請求項２３】
前記画面の相互に対する位置の識別は、第１の画面を指し示す前記ビデオカメラが、隣接する第２の画面を指し示すように移動され、前記目標画像が前記第１の画面から前記第２の画面に追随する場合に行われる、請求項２２に記載のシステム。
【請求項２４】
色、形状、およびテクスチャのうち１つ以上によって区別される各目標画像と目標画像に関連付けられる各カーソルとを制御する１台以上の追加のビデオカメラをさらに備える、請求項１３に記載のシステム。
【請求項２５】
ビデオカメラをポインティング装置として使用するときに、画面上のカーソルを自動的に且つ動的に制御する機能を果たすようコンピュータにより実行可能な命令のプログラムであって、前記機能が、
前記コンピュータが、前記コンピュータに接続された前記画面に動的コンテンツを表示するステップと、
前記画面を指し示し且つ前記コンピュータに接続された前記ビデオカメラが前記画面を撮影するステップと、
前記コンピュータが、前記ビデオカメラによって取り込まれるフレームが目標画像を含むように前記画面に前記目標画像を表示するステップと、
前記コンピュータが、前記目標画像が前記ビデオカメラの視界の中心に留まるように、前記ビデオカメラポインティング装置の前記画面カーソルの位置をマークする前記画面上の前記目標画像を動的に移動させるステップと
を備える、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビデオカメラに関し、詳細には、ビデオカメラをポインティング装置として使用するときに、画面上のカーソルを自動的に且つ動的に制御するコンピュータベースの方法、システム、およびプログラムに関する。
【背景技術】
【０００２】
ビデオカメラは、コンピュータシステムのポインティング装置として使用され得る。コンピュータシステムは、画像をコンピュータディスプレイのコンピュータ画面上に表示し、または画像を投影画面上に投影する。カメラは、コンピュータ画面に向けられ、画面上の位置を示す動くマーカまたはポインタである画面カーソルを制御する。このような機構は、例えば、カメラのユーザがプレゼンテーションを行うときなどに、人々の集まりの前でコンピュータ画面を提示するのに使用され得る。
【０００３】
カメラによって取り込まれるフレーム内のポインティング装置のカーソルを検出するために、いくつかの現在のコンピュータシステムは、連続するフレーム間でいくつかの関心点を識別し、これらの間のアフィン変換を推定し、この変換を使って或るフレームから別のフレームにワープし、次いで、これら２つのフレーム間の差の面積としてカーソルを検出する。アフィン変換とは、線形変換に続いて平行移動を行うことに等しい座標の変換である。これらのシステムは、中央処理装置（ＣＰＵ）集約的であるのみならず、画面が、例えば、ビデオ、アニメーション、ドラッグウィンドウのような動的コンテンツを示す場合には破綻を来たす。１つの解決法は、非常に高いフレームレート、すなわち、フレームの画面が可能とするものより高いフレームレートを有するカメラを使用することであろう。しかしながら、現在の７０Ｈｚ以上の画面リフレッシュでは、この解決法は非常に費用がかかる。また、この解決法は、処理が、画面とカーソルを制御するコントローラとして働くコンピュータ上で行われる場合、多くの帯域幅も必要となるだろう。
【０００４】
さらに重要なことに、これら現在のコンピュータシステムは、そのカーソルを見失いやすい。ユーザが画面から遠ざかるに従って、カメラを通して見えるカーソルのサイズは小さくなる。加えて、これらのシステムは、ユーザの画面までの距離を推定する方法を提供せず、カメラの視界が画面から外れた後でポインタを選択し（pick）、またはポインタを再初期設定するためのユーザインターフェースを提供せず、また、ユーザの画面に対する場所を推定するのに役立ち、カーソルがどのように移動すべきか予測するのに役立つ、カメラのヨー（yaw）、ピッチ（pitch）およびロール（roll）のいずれも推定しない。さらに、これらのシステムは、複数のユーザを許容しない。おそらく、これらのシステムは、追跡効率、ＣＰＵおよび帯域幅要件に関してのスケーリングが不十分である可能性が高いだろう。さらに、これらのシステムでは、単一の拡張デスクトップとして実施される複数画面という単純な例以外に、ユーザは、複数の画面にまたがってポインタを移動させることができない。
【０００５】
レーザポインタの追跡に関して、現在のシステムは、画面全体を見て、明るいレーザポインタの場所を検出しようとする固定カメラを提供する。この種の追跡は、カメラを固定の場所に設置し、システムに対して較正すること、または自己較正システムを設けることを必要とする。カメラを、遮蔽、すなわち、カメラの視界内に障害物がある可能性を防ぐように取り付ける場所を探すのが面倒な場合もある。複数のポインタは、これらが同じ色のものであるとき検出しにくい。室内の誰もがポインタを制御することができるときには、セキュリティが問題となり得る。例えば、５００人を収容する会議室では、誰でも、部屋の後部から画面上にレーザポインタを照射することができるだろう。
【０００６】
他のポインティング装置も、様々な理由で望ましいものではない。タッチ画面は不便であり、大画面でユーザの手が画面上部に届かないときには使用できないこともある。また、タッチ画面は、高価でもある。複数ユーザが入力するのは高価であり、すべてのユーザが画面に触れるために画面のところに来る必要があるため扱いにくいこともある。複数ユーザのタッチ画面使用の一例としては、タッチ画面に表示された車両設計図の周りでのブレーンストーミングセッションや、数人のユーザに適応する任意の用途のためのものがある。マウスなどのポインティング装置は、タッチ画面の場合のような、直接の対話を提供しない。マウスは、別個の装置としてポインタを動かすのに使用されるため、間接的な対話を提供する。さらに、マウスを用いた位置指示は、画面が大きいときには低速になる。ライトペンやライトガンなどのポインティング装置は、スキャンベースの、プログレッシブではない陰極線管（ＣＲＴ）画面の使用に依拠する。しかしながら、これらは、液晶ディスプレイ（ＬＣＤ）や投影画面では機能しない。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ビデオカメラをポインティング装置として使用するときに画面上のカーソルを制御する改良されたシステムを提供することは、有益であろう。
【課題を解決するための手段】
【０００８】
システムは、ビデオカメラをポインティング装置として使用するときに、画面上のカーソルを自動的に且つ動的に制御することを提供する。コンピュータが、画面に静的または動的コンテンツを表示する。コンピュータに接続されたビデオカメラが、画面を指し示す。ビデオカメラが画面を撮影する際に、ビデオカメラによって取り込まれるフレームが、コンピュータに送られる。目標画像が、コンピュータによって画面上に表示され、ビデオカメラの画面カーソルの位置をマークする。ビデオカメラによって取り込まれるフレームは目標画像を含み、コンピュータは、目標画像がビデオカメラの視界の中心に留まるように、画面上の目標画像を動的に移動させる。
【０００９】
本発明の第１の態様によれば、ビデオカメラをポインティング装置として使用するときに、画面上のカーソルを自動的に且つ動的に制御するコンピュータベースの方法であって、  コンピュータが、前記コンピュータに接続された前記画面に動的コンテンツを表示し、前記画面を指し示し且つ前記コンピュータに接続された前記ビデオカメラが、前記画面を撮影し、前記コンピュータが、前記ビデオカメラによって取り込まれるフレームが目標画像（target image）を含むように前記画面に前記目標画像を表示し、および前記コンピュータが、前記ビデオカメラポインティング装置の前記画面カーソルの位置をマークする前記目標画像が前記ビデオカメラの視界の中心に留まるように前記画面上の前記目標画像を動的に移動させることを備える方法が提供される。
【００１０】
本発明の第２の態様によれば、上記第１の態様において、前記コンピュータが、前記目標画像が検出可能のままであるように、前記目標画像の周りのディスプレイ、および前記目標画像自体のうちの１つを変更することをさらに備えてもよい。
【００１１】
本発明の第３の態様によれば、上記第１の態様において、前記コンピュータが、前記ビデオカメラが前記画面から遠ざかるときに前記目標画像が検出可能のままであるように、前記目標画像のサイズと不透明度を動的に調整することをさらに備えてもよい。
【００１２】
本発明の第４の態様によれば、上記第１の態様において、前記コンピュータが、前記目標画像を移動させるための計算で使用される推定であって、前記ビデオカメラと前記画面との間の距離を推定することをさらに備えてもよい。
【００１３】
本発明の第５の態様によれば、上記第１の態様において、前記コンピュータが、前記目標画像を移動させるための計算で使用される推定であって、前記ビデオカメラのヨー（yaw）、ピッチ（pitch）、およびロール（roll）の１つ以上に基づいて前記ビデオカメラの前記画面に対する位置を推定することをさらに備えてもよい。
【００１４】
本発明の第６の態様によれば、上記第１の態様において、前記ビデオカメラを前記目標画像に向けることによって前記目標画像を選択する（pick）ユーザがシステムを手動で初期設定することをさらに備えてもよい。
【００１５】
本発明の第７の態様によれば、上記第１の態様において、前記ビデオカメラによって取り込まれるフレーム内に前記目標画像が現れるまで前記目標画像を前記画面の種々の領域に表示することによって、システムを自動的に初期設定することをさらに備えてもよい。
【００１６】
本発明の第８の態様によれば、上記第１の態様において、前記ビデオカメラによって取り込まれるフレーム内に現れる前記画面の第１の象限を求め、次いで、前記フレーム内に現れる前記第１の象限の第２の象限を求め、以下同様に象限サイズが前記目標画像のサイズと等しくなるまで求める再帰的関数により、前記目標画像をどこに移動させるべきか予測することによって、システムを自動的に初期設定することをさらに備えてもよい。
【００１７】
本発明の第９の態様によれば、上記第１の態様において、前記予測領域を指し示す前記ビデオカメラによって取り込まれる前記フレーム内に前記目標画像が現れるように前記目標画像を前記画面上の既定領域に表示することによって、システムを自動的に初期設定することをさらに備えてもよい。
【００１８】
本発明の第１０の態様によれば、上記第１の態様において、前記コンピュータが、１つ以上の追加画面について、前記画面が相互に対してどこに位置するか識別することをさらに備えてもよい。
【００１９】
本発明の第１１の態様によれば、上記第１の態様において、前記画面が相互に対してどこに位置するか識別することは、第１の画面を指し示す前記ビデオカメラが、隣接する第２の画面を指し示すように移動される場合、前記目標画像が前記第１の画面から前記第２の画面に追随する（follow）と判定することをさらに備えてもよい。
【００２０】
本発明の第１２の態様によれば、上記第１の態様において、１台以上の追加のビデオカメラが、色、形状、およびテクスチャのうちの１つ以上によってそれぞれが区別される各目標画像と目標画像に関連付けられる各カーソルとを制御することをさらに備えてもよい。
【００２１】
本発明の第１３の態様によれば、ビデオカメラをポインティング装置として使用するときに、画面上のカーソルを自動的に且つ動的に制御するシステムであって、システムソフトウェアが実行されるコンピュータと、前記コンピュータが動的コンテンツを表示するように前記コンピュータに接続された画面と、前記画面を指し示すように前記コンピュータに接続されたビデオカメラであって、前記画面を撮影する際に前記ビデオ画面によって取り込まれるフレームが前記コンピュータに送られる、前記ビデオカメラと、前記ビデオカメラによって取り込まれるフレームが目標画像を含み、且つ、前記目標画像が前記ビデオカメラの視界の中心に留まるように前記コンピュータが前記画面上の前記目標画像を動的に移動させるように、前記コンピュータによって前記画面上に表示される前記目標画像であって、前記ビデオカメラポインティング装置の前記画面カーソルの位置をマークする、前記目標画像とを備えるシステムが提供される。
【００２２】
本発明の第１４の態様によれば、上記第１３の態様において、前記コンピュータが、前記目標画像が検出可能のままであるように、前記目標画像の周りのディスプレイ、および前記目標画像自体のうちの１つの変更をさらに備えてもよい。
【００２３】
本発明の第１５の態様によれば、上記第１３の態様において、前記ビデオカメラが前記画面から遠ざかるときに前記目標画像が検出可能のままであるようにするための前記目標画像のサイズと不透明度との前記コンピュータによる動的調整をさらに備えてもよい。
【００２４】
本発明の第１６の態様によれば、上記第１３の態様において、前記目標画像の移動の計算で使用される前記コンピュータによって推定される前記ビデオカメラと前記画面の間の距離であって、前記目標画像の前記移動を求める計算で使用される前記距離をさらに備えてもよい。
【００２５】
本発明の第１７の態様によれば、上記第１３の態様において、前記ビデオカメラのヨー、ピッチ、およびロールのうちの１つ以上に基づいて前記コンピュータによって推定される前記ビデオカメラの前記画面に対する位置であって、前記目標画像の前記移動を求める計算で使用される前記位置をさらに備えてもよい。
【００２６】
本発明の第１８の態様によれば、上記第１３の態様において、前記ビデオカメラを前記目標画像に向けることによって前記目標画像を選択するユーザによって手動で行われるシステムの初期設定をさらに備えてもよい。
【００２７】
本発明の第１９の態様によれば、上記第１３の態様において、前記目標画像が前記ビデオカメラによって取り込まれるフレーム内に現れるまで前記目標画像を前記画面の種々の領域に表示することによって自動的に行われるシステムの初期設定をさらに備えてもよい。
【００２８】
本発明の第２０の態様によれば、上記第１３の態様において、前記ビデオカメラによって取り込まれるフレーム内に現れる前記画面の第１の象限を求め、次いで、前記フレーム内に現れる前記第１の象限の第２の象限を求め、以下同様に象限サイズが前記目標画像のサイズと等しくなるまで求める再帰的関数により、前記目標画像をどこに移動させるべきか予測することによって自動的に行われるシステムの初期設定をさらに備えてもよい。
【００２９】
本発明の第２１の態様によれば、上記第１３の態様において、前記予測領域を指し示す前記ビデオカメラによって取り込まれる前記フレーム内に前記目標画像が現れるように前記目標画像を前記画面上の予測領域に表示することによって自動的に行われるシステムの初期設定をさらに備えてもよい。
【００３０】
本発明の第２２の態様によれば、上記第１３の態様において、前記コンピュータが、前記画面が相互に対してどこに位置するか識別するような１つ以上の追加画面をさらに備えてもよい。
【００３１】
本発明の第２３の態様によれば、上記第１３の態様において、前記画面の相互に対する位置の識別は、第１の画面を指し示す前記ビデオカメラが、隣接する第２の画面を指し示すように移動され、前記目標画像が前記第１の画面から前記第２の画面に追随する場合に行われてもよい。
【００３２】
本発明の第２４の態様によれば、上記第１３の態様において、色、形状、およびテクスチャのうち１つ以上によって区別される各目標画像と目標画像に関連付けられる各カーソルとを制御する１台以上の追加のビデオカメラをさらに備えてもよい。
【００３３】
本発明の第２５の態様によれば、ビデオカメラをポインティング装置として使用するときに、画面上のカーソルを自動的に且つ動的に制御する機能を果たすようコンピュータにより実行可能な命令のプログラムであって、前記機能が、前記コンピュータが、前記コンピュータに接続された前記画面に動的コンテンツを表示するステップと、前記画面を指し示し且つ前記コンピュータに接続された前記ビデオカメラが前記画面を撮影するステップと、前記コンピュータが、前記ビデオカメラによって取り込まれるフレームが目標画像を含むように前記画面に前記目標画像を表示するステップと、前記コンピュータが、前記目標画像が前記ビデオカメラの視界の中心に留まるように、前記ビデオカメラポインティング装置の前記画面カーソルの位置をマークする前記画面上の前記目標画像を動的に移動させるステップとを備える、プログラムが提供される。
【発明を実施するための最良の形態】
【００３４】
以下、各図に基づいて、本発明の好ましい実施形態を詳細に説明する。
【００３５】
本明細書では、ビデオカメラをポインティング装置として使用するときに、画面上のカーソルを自動的に且つ動的に制御することを提供するシステムについて説明する。システムは、遠くから画面上の１つ以上のポインタを制御する。システムは、固定カメラの較正または設置を必要とせずにシームレスに初期設定され、したがって、任意の画面を遠隔から容易に指し示すことが可能になる。
【００３６】
さらに、システムは、高フレームレートカメラを必要とせずに、低いＣＰＵ要件と少ない帯域幅要件で効率よくカーソルを追跡することができ、費用がかからない。システムは、ウェブカムなど極めてフレームレートの低いカメラと共に動作する。加えて、追跡は、静的および動的コンテンツを含めて表示されるコンテンツの種類を問わずに動作する。したがって、システムは、リアルタイムで動作する。
【００３７】
システムは、カーソルの追跡に失敗しない。ユーザがディスプレイから遠ざかるに従って、システムは、追跡されるカーソルが検出可能のままであるようにカーソル画像とそのサイズとを調整する。システムは、カメラの画面からの距離、ならびにカメラのヨー、ピッチおよびロールを推定することができる。システムは、カーソルを直接制御することができる。システムは、画面が大きいときに、低速になることも、不便になることも、扱いにくくなることもない。また、システムは、液晶ディスプレイ（ＬＣＤ）や投影画面とも共に動作する。
【００３８】
システムは、カーソルを選択するだけでなく、カーソルが見失われるような場合に、カーソルを初期設定し、または再初期設定することを可能にするユーザインターフェースを提供する。システムは、ユーザが複数の画面にまたがってポインタを移動させることを可能にする。システムは、複数のユーザが、１つ以上の画面上で、それぞれのカーソルを同時に制御することを可能にする。
【００３９】
対話設計
図１に、本発明の実施形態による、ビデオカメラを画面上のポインティング装置でポインティング装置として使用するシステム例を示す。カメラ１１０は、ウェブカムを含む任意の種類のカメラ、ならびにカメラを含む任意の種類の装置とすることができる。カメラ１１０は、接続１１８を介して、ＰＣと記されているコンピュータ１１５に接続されている。この例では、コンピュータ１１５のコンピュータディスプレイ１２０は、静的または動的コンテンツがその上に表示され得る画面１２５を有する。別の実施形態では、コンピュータ上に保存されるコンテンツが、投影画面上に投影され得る。ユーザ１３０、すなわち、プレゼンテーションの「発表者」は、カメラ１１０を画面１２５に向ける。実施形態によっては、ユーザはカメラを手動で向ける。実施形態によっては、ユーザは、カメラをコンピュータ上のソフトウェアを使って向ける。
【００４０】
コンピュータ１１５は、カメラ１１０が指し示している画面上の場所の画面座標を自動的に且つ動的に求める。システムは、次いで、この情報に作用する。このために、コンピュータ１１５は、画面１２５上に可視の「目標画像（target image）」１３５を提示する。目標画像１３５は、青色で塗りつぶされた円とすることができ、この青色を、円内部の横の網掛けで示す。フレーム１４０は、カメラ１１０によって見られ、取り込まれる画面上に表示される画像の部分である。カメラ１１０が画面１２５を撮影する間に、カメラによって取り込まれるフレーム１４０がコンピュータ１１５に送られる。
【００４１】
実施形態では、目標画像は、任意の色で塗りつぶしてもよく、多色としてもよい。また、目標画像は、任意の形状としてもよい。目標画像１３５は、カメラポインティング装置のカーソルの位置をマークする。以下、「目標画像」と「カーソル」という用語を交換可能に使用し得る。
【００４２】
コンピュータ１１５は、画面とカーソルを制御するコントローラとして働く。以下、コンピュータ１１５をコントローラと呼ぶ。コントローラは、ユーザ１３０がカメラ１１０を画面１２５の異なる領域に向ける際に、目標画像１３５がカメラの視界の中心に留まるように目標画像１３５を移動させる。カメラを向けている間、ユーザは、必ずしも画面の近くにいるとは限らない。事実上、ユーザは、カメラ１１０を用いて目標画像１３５の位置を制御する。カメラ上のボタンは、マウスを下げる、マウスを上げるなどのイベントを起動し、ユーザがカメラを動かすことによって画面上で描画し、あるいは画面上でオブジェクトを選択、移動することを可能にする。
【００４３】
この装置を用いて２つの動作モードが可能である。これら２つのモードは、単一カーソルモードと複数カーソルモードであり、各モードは、それぞれ単一のカメラと複数のカメラを伴う。単一カーソルモードでは、ユーザは、カーソルを制御するために、カメラを用いて目標画像を取得することができる。目標画像は、目標画像をカメラで取り込むことによって、またはカメラの視界を既知の容易に検出可能な場所、例えば、左上隅や画面の一端などに移動させることによって取得され得る。複数カーソルモードでは、複数のカメラのそれぞれが、個々のカメラが指し示している画面上の場所に描かれる個々の目標画像を有する。カメラごとに、カメラのコントローラは、カメラの目標画像をカメラから見える領域に位置決めする。実施形態によっては、１台のコントローラが、２台以上のカメラと、各カメラに対応する目標画像とを制御することができる。実施形態によっては、どちらの動作モードでも、任意に、カメラ上のモードスイッチで目標画像を隠すこともできる。
【００４４】
カメラが画面上にパンするときに、目標画像を画面の端近くの領域に再位置決めすることは、複数の画面にまたがる位置指示を可能にする自然な方法を提供する。例えば、２つの並行した隣接画面では、カメラを左画面から右画面に動かすと目標画像が追随する（follow）。また、この自然なユーザ対話は、コントローラにどの画面がどの画面の次であるかが分かるので、コントローラにとっても非常に有用である。
【００４５】
カーソルの追跡
システムは、目標画像の位置を漸増的に調整して、目標画像をカメラの視界の中心に維持する。画面に向けられたカメラについて、コントローラは、カメラの画面に対する位置の座標（Ｘ，Ｙ，Ｚ）を求める。これらの座標は、カメラの画面からの距離と、以下で詳細に論じる、カメラのヨー、ピッチ、およびロールとを推定することによって求められる。コントローラは、カメラ位置情報を使って、目標画像がカメラの視界の中心に留まるようにする。
【００４６】
図２Ａおよび２Ｂに、本発明の実施形態による、カメラ例の軸および画面例の軸が、相互に対して任意の向きにあり得ることを示す。図２Ａには、画面２２０を指し示すカメラ２１０を示し、図２Ｂには、画面２２０に向けられている同じカメラ２１０を後ろから示す。両図において、ヨー２３０は、縦軸、すなわち図２Ｂに示すｙ軸の周りのカメラの動きである。ピッチ２４０は、横軸、すなわち図２Ｂに示すｘ軸の周りのカメラの動きである。ロール２５０は、図示されていない、カメラに並行する、すなわちｚ軸の動きである。しかしながら、図２Ｂにおいて、ｚ軸は、カメラがその周りを横方向にロールする点２５０として示されている。
【００４７】
システムは、カーソルを追跡している過程で、画面とカメラの相対的姿勢を、暗黙的または明示的に補償する必要がある。画面とカメラの姿勢とは、画面とカメラの相互に対する向きである。目標画像のパターンが明確な非対称的な形状を有する場合には、カメラの目標画像に対する姿勢は、単一の観測、すなわち、カメラによって取り込まれる１フレームから求めることができる。これは、厳密に必要とされるわけではない。なぜなら、追跡システムは、目標画像がカメラの視界の中心に近づくよう移動させる必要がある画面座標内の方向を目標画像の複数の観測を使って求めることができるからである。
【００４８】
図３に、本発明の実施形態による、画面から異なる距離にある２台のカメラ例を示す。カメラと視界の挙動は、カメラの画面からの距離に応じて全く異なる。遠視野の例では、遠視野カメラ３３０、すなわちポインティング装置は、画面３２０から何らかの感知可能な距離にある。例えば、カメラ３３０は、画面自体の対角線（不図示）より大きい距離にある。ポインティング装置をレーザポインタとして使用するとき、ポインタの動きは、位置よりも角度において最も著しく変動する。特に、カメラ３３０の画面３２０に対するヨーとピッチが、カメラの画面に対する角度を決定する。同時に、画面３２０とカメラ３３０の間の大きな距離は、カメラの視界が、画面のより大きい部分を取り込むことを意味する。これは、目標画像が見えているままになる可能性をより高くするが、カメラによって取り込まれる目標画像の画素数に基づいて解像度を低減させる。
【００４９】
近視野の例では、近視野カメラ３４０、すなわちポインティング装置が、画面３２０のより近くに、どちらかというとペンのように保持される。カメラの視界は、画面３２０に対してほぼ直角に近くなる。したがって、ポインタの動きは、カメラ３４０のヨーとピッチによる角度よりも、カメラ３４０の平行移動または動きによる位置により最も著しく変動する。カメラ３４０によって取り込まれる画面の量は、より小さくなるが、より高い解像度で取り込まれる。
【００５０】
コントローラ、すなわち、画面を制御するコンピュータは、以下で論じるように、目標画像のサイズと不透明度を決定するときに、カメラの画面からの距離を考慮に入れる。
【００５１】
カーソル追跡の基本事例
カーソル追跡の基本事例では、カメラが画面の一部分を取り込む際に、カメラは、取り込まれるフレームをコントローラに送り、次いで、コントローラが、カメラからもたらされる取り込みフレームを処理する。カメラからもたらされるフレームごとに、コントローラは、画面上の目標画像を、フレームにマッチする画面の部分の中心に向けて移動させる。
【００５２】
図４は、本発明の実施形態による、コントローラによるカーソル追跡のプロセス例を示す流れ図である。プロセスはステップ４１０から開始する。ステップ４１５で、目標画像が画面上のどこか、例えば、画面の左下などに表示される。目標画像は、青い画素で表示される。ステップ４２０で、目標画像が画面の他の部分の画像から目立つように、画面上の目標画像の周辺の青い画素が別の色で置き換えられる。実施形態によっては、代替として、目標画像を目立たせるために、目標画像の周辺の画素のコントラストを、より明るくまたはより薄暗く調整してもよい。実施形態によっては、青い目標画像が画面内の青い領域の上に表示される場合、目標画像の色が変更されてもよい。コントローラは、ステップ４２５で、カメラからもたらされるフレームを取り込む（grab）。ステップ４３０で、すべての青以外の画素が、フレームから除去される。
【００５３】
ステップ４３５で、青い画素の「ブロブ（blob）」の左、上、右および下の空間が算出される。このブロブは、目標画像からの青い画素と、現在のフレームからの青い画素を含む。また、これら４つの空間を算出するために、ブロブの高さと幅も算出される。ステップ４４０で、左空間が右空間より大きい場合、コントローラは、ステップ４４５で目標画像を画面上の左方に移動させ、プロセスはステップ４６０に進む。ステップ４４０で左空間が右空間より大きくない場合で、且つ、ステップ４５０で右空間が左空間より大きい場合、コントローラは、ステップ４５５で目標画像を画面上の右方へ移動させ、プロセスはステップ４６０に進む。ステップ４５０で右空間が左空間より大きくない場合、右空間は左空間と等しい。この場合、目標画像は、画面上の右方にも左方にも移動される必要がない。
【００５４】
ステップ４６０で上空間が下空間より大きい場合、コントローラは、ステップ４６５で目標画像を画面の上方に移動させ、プロセスはステップ４８０に進む。ステップ４６０で上空間が下空間より大きくない場合で、且つ、ステップ４７０で下空間が上空間より大きい場合、制御はステップ４７５で目標画像を画面の下方に移動させ、プロセスはステップ４８０に進む。ステップ４７０で下空間が上空間より大きくない場合、上空間は下空間と等しい。この場合、目標画像は画面の上方にも下方にも移動される必要がない。ステップ４８０で処理すべき次のカメラフレームがある場合、プロセスは折り返しステップ４２５に戻る。ステップ４８０で処理すべき次のカメラフレームがない場合、プロセスはステップ４９０で終了する。
【００５５】
目標画像のサイズと不透明度の変更
ユーザが、画面を撮影している間に、カメラを画面のより近くに、または画面からより遠くに移動させる場合、システムはカメラの画面に対する場所を推定する。次いで、システムは、カメラの画面からの距離が増大し、または減少するに従って、目標画像のサイズと不透明度を適宜に調整する。この調整は、コントローラが、カメラによって取り込まれる各フレーム内の目標画像を検出する能力を改善し、目標画像をユーザにとって画面上でより見やすくする。コントローラは、カメラによって取り込まれるフレームを受け取ると、フレーム内の目標画像のサイズと不透明度に関する判定を行い、目標画像を適宜に調整する。
【００５６】
目標画像のサイズも不透明度も、画面との相対的コントラストと、室内の周囲照明とに基づいて調整され得る。目標画像のサイズまたは不透明度の増大または減少は、ユーザが何を期待するかに直接対応する。例えると、ある面をスポットライトで照らすとき、スポットライトが面から遠ざかるほどスポットのサイズは増大し、スポットライトが面に近づくほどスポットのサイズは減少する。同様に、カメラが画面から遠ざかるほど目標画像のサイズは増大し、カメラが画面に近づくほど目標画像のサイズは減少する。目標画像の不透明度とは、目標画像が可視光を通さない度合いである。目標画像のサイズの場合と同様に、カメラが画面に近づくほど目標画像の不透明度は大きくなり、カメラが画面から遠ざかるほど目標画像の不透明度は小さくなる。
【００５７】
さらに、カメラポインティング装置の制御の精度は、カメラと画面の間の距離に対応する。近い距離では、より正確さが増し、ポインタの形状はより小さくなり、ユーザは、例えば手書きするなど、ポインタを正確に制御することができる。より遠い距離では、システムは、事物をレンダリングする別の方法に自動的に切り換わることができる。例えば、部分的に遮蔽される情報の可読性を高めるために、目標画像自体を半透明にすることもできる。
【００５８】
実施形態によっては、図４のステップ４３５で検出されるブロブの高さおよび／または幅が、カメラからの現在のフレームの高さと幅の既定のパーセンテージより小さい場合、コントローラは、ブロブの高さおよび／または幅のサイズを増大させる。ブロブの高さおよび／または幅が既定のパーセンテージより大きい場合、コントローラは、ブロブの高さおよび／または幅のサイズを低減させる。各実施形態によっては、任意で、コントローラは既定にサイズに達したときに、ブロブのサイズを増大または低減させることを停止することができる。したがって、これらの実施形態では、カーソルの制御は、カメラが画面に十分に近いときにだけ使用可能とされ得る。ブロブが第２の既定のサイズより大きいためにカメラが画面から遠くなりすぎてしまう場合、コントローラは、目標画像の追跡を自動的に停止することもできる。
【００５９】
カメラの目標画像に対する回転の検出
システムは、カメラの目標画像に対する回転を検出する。コントローラは、この情報をユーザインターフェースを制御するのに使用することができる。例えば、オーディオアプリケーションにおいて、ユーザは、カメラポインティング装置を使って、例えば、音量を制御するなどのために、画面上のつまみなどのウィジェットを制御することができる。コントローラは、カメラの回転、すなわち、カメラの「ロール」の推定値に基づいて、画面上に表示されるつまみ画像を動的に回転させる。つまみ画像は、目標画像がカメラからフレーム内で回転されて見える角度の逆に回転される。
【００６０】
また、カメラの目標画像に対する回転は、例えば、別の種類のカーソル制御など、カメラの画面に対する位置を決定する際の第１のステップとして使用することもできる。例えば、ユーザは、カメラポインティング装置を使って、例えば、音量を制御するなどのために、画面上のリニアスライダなどの別のウィジェットを制御することもできる。リニアスライダの別の例としては、画像の輝度や色などの任意の連続制御、あるいは、左右または上下に反転させることのできるトグルスイッチとしてレンダリングされるチェックボックスなどの任意のスイッチが含まれる。コントローラは、カメラの左から右へ、または右から左への移動の推定値に基づき、画面上に表示されるスライダを動的に移動させる。取り込まれるフレームは、まず、目標画像の回転をチェックされる。目標画像が回転されている場合、フレームは、回転されて正規の視界に戻る。このフレームの回転は、相対的カメラ位置が回転とは無関係に求められるように、プロセスを正規化するための第１のステップである。フレームを正規の視界へ戻す回転については、以下で図５Ａ〜５Ｃと図６に関連して論じる。
【００６１】
図５Ａ〜５Ｃに、本発明の実施形態による、回転される目標画像の様々な位置例を示す。これらの図では、目標画像は、赤と青で塗りつぶされた円である。目標画像５４０の左半分は、縦の網掛けで示す赤色で塗られた赤い半円盤５４５である。目標画像５４０の右半分は、横の網掛けで示す青色で塗られた青い半円盤５５０である。実施形態によって、半円盤を、任意の２色で塗りつぶすことができる。
【００６２】
図５Ａ〜５Ｃの目標画像について、カメラから見える見え方は、図２Ｂのカメラ２１０からの見え方と同じである。画面２２０は、カメラ２１０の正面にある。図５Ａには、点２５０で示すｚ軸の周りのロールのない、カメラ２１０から見える目標画像の２つの半円盤が示されている。図５Ｂには、目標画像がフレーム内で右に回転されたように見える画面に対して左にロールされるカメラ２１０から見える目標画像の２つの半円盤５４５と５５０が示されている。カメラ２１０は、図２Ｂに点２５０で示すｚ軸の周りを左にロールされている。同様に、図５Ｃには、目標画像がフレーム内で左に回転されたように見える画面に対して右にロールされるカメラ２１０から見える目標画像の２つの半円盤５４５と５５０が示されている。カメラ２１０は、図２Ｂに点２５０で示すｚ軸の周りを右にロールされている。
【００６３】
図６は、本発明の実施形態による、カメラの目標画像に対する回転を検出するプロセス例を示す流れ図である。図６のプロセスを図５Ａ〜５Ｃに示す目標画像位置との関連で論じる。プロセスはステップ６１０から開始する。ステップ６１５で、目標画像が赤い半円盤と、右側の青い半円盤とで塗りつぶされた円として表示される。この円は、図５Ａに示す円と同じである。目標画像は、画面上のどこか、例えば、画面の左下などに表示される。ステップ６２０で、目標画像の周辺の赤い画素と青い画素が別の色で置き換えられる。ステップ６２５で、コントローラは、カメラからもたらされるフレームを取り込む。ステップ６３０で、すべての赤以外と青以外の画素がフレームから除去される。
【００６４】
ステップ６３５で、赤い「ブロブ」の中心が求められる。赤いブロブは、目標画像からの赤い画素と、現在のフレームからの赤い画素とを含む。説明のために、図５Ｂと５Ｃの赤いブロブを単に目標画像の左半分としてのみ示す。図５Ｂと５Ｃに、赤いブロブ５５５の中心が示されている。ステップ６４０で、青い「ブロブ」の中心が求められる。青いブロブは、目標画像からの青い画素と、現在のフレームからの青い画素とを含む。赤いブロブの場合と同様に、説明のために、図５Ｂと５Ｃの青いブロブも単に目標画像の右半分としてのみ示す。図５Ｂと５Ｃに、青いブロブ５６０の中心が示されている。
【００６５】
次いで、ステップ６４５で、２つの中心と水平の間の回転角が求められる。この角度５６５を求めるため、図５Ｂと５Ｃに示すように、目標画像とこの角度をなす２本の線５７０と５７５が計算される。線５７０は、赤いブロブ５５５の中心から青いブロブ５６０の中心まで延在する。線５７５は水平であり、目標画像を取り込んだフレームに対して水平な面内において赤いブロブ５５５の中心から青いブロブ５５０に向かって延在する。また、この水平線は、フレームに対して水平な面上で、青いブロブの中心から赤いブロブに向かって延在していてもよい。線５７０と線５７５は、画面上には引かれず、ステップ６４５で、回転角の計算に使用される。
【００６６】
ステップ６５０で、回転角が求められた後で、コントローラは取り込みフレームをこの回転角と同じ量だけ回転させる。例えば、図５Ｂで目標画像は、およそ−４５度回転されている。この場合、ステップ６５０でフレームもおよそ−４５度回転される。同様に、図５Ｃの例でも、目標画像はおよそ４５度回転されている。この場合、ステップ６５０でフレームもおよそ４５度回転される。フレームは、あたかもカメラが回転されなかったかのごとく、取り込みフレーム内の目標画像のさらなる解析が継続し得るように回転される。取り込みフレームを回転させて、回転されない目標画像の表示に戻すことにより、続く図７に関連する考察におけるカメラ位置の推定値は、回転を問題から除外している。次いで、プロセスは結合子１を経て図７の流れ図に接続する。
【００６７】
カメラの目標画像に対する位置の検出
また、コントローラは、カメラ２１０の画面２２０に対するヨー２３０とピッチ２４０を検出することによって、カメラの目標画像に対する位置も推定する。ヨー２３０とピッチ２４０については、前述した図２Ａで論じている。
【００６８】
図７は、本発明の実施形態による、カメラの目標画像に対する位置を検出するプロセス例を示す流れ図である。図８に、本発明の実施形態による、図７のプロセス例と共に使用される目標画像の位置例を示す。図７のプロセスについて、図８に示される目標画像と併せて論じる。プロセスは、図６からの結合子１から開始する。カメラの位置が目標画像の真正面にある場合、目標画像は、取り込みフレーム内で円に見える。そうでない場合、目標画像は楕円に見え、楕円に見えるのが一般的である。
【００６９】
ステップ７０５で、楕円の中心が、図８に示すように点Ｅにあると求められる。点Ａから点Ｃまでの線は、楕円の最長の軸すなわち主軸である。点Ｂから点Ｄまでの線は、楕円の最短の軸すなわち短軸である。線ＡＣと線ＢＤの交点が点Ｅであると求められる。ステップ７１０で、投影される目標画像円の中心が、点Ｆにあると求められる。図６では、目標画像が、縦線で区切られた赤いブロブと青いブロブとして表示されるように、必要に応じて、取り込みフレームが回転されて、回転されていない目標画像の表示に戻された。２つの半円を使った目標画像を用いると、点Ｇと点Ｈの間の縦線が、目標画像の赤い半円を青い半円から区切る境界として求められる。点Ａと点Ｃの間の概ね水平な線が、水平線として使用される。線ＧＨと線ＡＣの交点が、点Ｆにあると求められる。
【００７０】
ステップ７１５で点Ｅと点Ｆが同じ点であると判定される場合、カメラの位置は目標画像の真正面にある。したがって、ステップ７２０でカメラにはヨーもピッチなく、プロセスは、結合子２を経て図６に戻る。ステップ７１５で点Ｅと点Ｆが異なる点にあると判定される場合、ステップ７２５で点Ｉにある交点が点Ｅと点Ｆの水平と垂直の投影から求められる。次いで、カメラの目標画像に対する相対的位置がＦＩとＥＩによって与えられる。
【００７１】
ステップ７３０で点Ｉが点Ｅの下方にある場合、ステップ７３５でカメラは目標画像の下方にある。ステップ７３０で点Ｉが点Ｅの下方にない場合で、且つ、ステップ７４０で点Ｉが点Ｅの上方にある場合、ステップ７４５でカメラは目標画像の上方にある。ステップ７４０で点Ｉが点Ｅの上方にない場合、ステップ７５０でカメラにはピッチがない。ステップ７５５で点Ｆが点Ｅの左方にある場合、ステップ７６０でカメラは目標画像の左方にある。ステップ７５５で点Ｆが点Ｅの左方にない場合で、且つ、ステップ７６５で点Ｆが点Ｅの右方にある場合、ステップ７７０でカメラは目標画像の右方にある。ステップ７６５で点Ｆが点Ｅの右方にない場合、ステップ７７５でカメラにはヨーがない。次いで、プロセスは結合子２を経て図６に戻る。
【００７２】
実施形態によって、以下は、図７のプロセスの代替プロセスである。図８の目標画像について、赤と青のブロブ全体の幅と高さが求められる。ブロブ全体の幅と高さの割合が算出される。ブロブ全体の高さが幅以上である場合、デフォルトで高さと幅は等しい。したがって、カメラは、目標画像の真正面にあり、カメラのヨーもピッチもない。この場合、プロセスは図６に戻る。
【００７３】
ブロブ全体の幅が高さより小さい場合、カメラは、画面上の目標画像に対して水平に移動している。左側の赤いブロブと右側の青いブロブとの両方の画素数がカウントされる。赤いブロブ内の画素数が青いブロブ内の画素数より大きい場合、カメラは目標画像の左方にある。青いブロブ内の画素数が赤いブロブ内の画素数より大きい場合、カメラは目標画像の右方にある。そうでない場合、カメラは、水平方向には目標画像の真正面にあり、カメラのヨーはない。この場合、プロセスは図６に戻る。
【００７４】
ブロブ全体の高さが幅より小さい場合、カメラは、画面の目標画像に対して垂直に移動している。ブロブ全体が、水平方向にできるだけ半分に近くなるように分割される。上半分と下半分の画素数がカウントされる。上半部の画素数が下半分の画素数より大きい場合、カメラは目標画像の上方にある。下半分の画素数が上半分の画素数より大きい場合、カメラは目標画像の下方にある。そうでない場合、カメラは垂直方向には目標画像の真正面にあり、カメラのピッチはない。この場合、プロセスは結合子２を経て図６に戻る。
【００７５】
図６の結合子２に戻って、ステップ６５５で処理すべき次のカメラフレームがある場合、プロセスは折り返しステップ６２５に戻る。ステップ６５５で処理すべき次のカメラフレームがない場合、プロセスはステップ６９０で終了する。
【００７６】
他のカーソルの色と形状
実施形態によって、目標画像は、異なるベタ色で塗りつぶすことも、２つ以上の色で塗りつぶることもできる。図９Ａと９Ｂに示すように、追加の色を用いた目標画像を使用すれば、追跡されるべきより多くの特徴が提供されるため、３次元変換の推定がより容易になる。したがって、追加の色を用いれば、カメラの画面に対する３次元位置を推定する際に関与する未知数がより少なくなる。
【００７７】
例えば、図９Ａと９Ｂには、本発明の実施形態による４つの象限に分割された目標画像の例が示されている。図９Ｂにおいて、左上の象限は、横の網掛けで示す青色で塗りつぶされている。右上の象限は、バックスラッシュ様の斜めの網掛けで示す茶色で塗りつぶされている。左下の象限は、スラッシュ様の斜めの網掛けで示す緑で塗りつぶされている。右下の象限は、縦の網掛けで示す赤で塗りつぶされている。
【００７８】
実施形態によっては、目標画像は任意の形状またはテクスチャを有し得る。例えば、様々な色のチェッカー盤を使って、前述のパラメータを推定することもできる。ただし、目標画像での円形の使用は、ユーザにとってより自然に見え、円が常に画面上に見えるため、ユーザの注意を逸らしにくい。実施形態によっては、１つの画面または複数の画面により、複数のユーザが、それぞれ、色、形状、および／またはテクスチャによって区別される各々のカーソルを制御することができる。
【００７９】
各実施形態によっては、コントローラは、カーソルを追跡する際に、目標画像が検出可能のままであるように、目標画像自体を変更することができる。例えば、目標画像は、青で塗りつぶすことができる。カメラが画面上の青い領域に移動する場合、目標画像は青の代わりに別の色で塗りつぶすことができる。
【００８０】
画面間での目標画像の移動と画面の継ぎ合わせ
最新の会議室や、テーブルを囲んだ専門家会議などの設定では、複数の画面が使用される。各画面は、１台のコントローラによって制御される。各コントローラは、複数のカメラによって取り込まれるフレームを受け取ることができる。これらのコントローラは、何らかの方法でネットワーク接続され得る。各コントローラは、そのコントローラが制御する画面領域の周りに太い輪郭線を描き、どのコントローラが他の各画面を制御するかを知っている。
【００８１】
各コントローラは、複数の画面の相対的位置をリアルタイムで自動的に認識する。各コントローラは、以下で図１０についてより詳細に説明するように、ユーザがそのコントローラの画面を越えてカーソルを動かし、画面の輪郭線をまたぐときに、近隣の画面の位置を求める。コントローラが、どの画面がこのコントローラの画面の左方、右方、上方、および下方にあるかを登録することは非常に重要である。この情報は、各コントローラ間で共用される。この情報は、ユーザのカーソルが現在の画面を離れる場合にどの画面に行くかを各コントローラが予測することを可能にし、このことは、後に続く画面の制御にとって重要である。ユーザがカーソルを画面の端に移動させると、カーソルのコントローラは、このカーソルに関連するファイルをどのコントローラに送る必要があるかを知る。
【００８２】
図１０に、本発明の実施形態による、３台のコントローラによって制御される３つの画面例を示す。各コントローラは、そのコントローラが制御する画面領域の周りに太い輪郭線を描く。実施形態によっては、これらの輪郭線は、異なる色および／またはテクスチャである。この例では、第１のコントローラが、第１の画面１０の周りの太い輪郭線として赤を選択し、この輪郭線の赤色が縦の網掛けで示されている。第２のコントローラは、第２の画面１１の周りの太い輪郭線として青を選択し、この輪郭線の青色が横の網掛けで示されている。第３のコントローラは、第３の画面１２の周りの太い輪郭線として緑を選択し、この緑の輪郭線が、スラッシュ様の斜めの網掛けで示されている。
【００８３】
１台のコントローラは、目標画像１３を表示し制御する。この例では、赤い画面１０の第１のコントローラが目標画像１３を制御する。このコントローラだけが、カメラからもたらされるフレームを処理する。このコントローラのブロブが見えなくなると、このコントローラは他のコントローラの接続を確認し（ping）、他のコントローラが第１のコントローラからのフレームの処理を開始する。他の２台のコントローラのうちの１台がフレーム内でそのコントローラの輪郭線を検出する場合、そのコントローラがカーソルを所有し、そのコントローラの画面上に目標画像を表示し始める。副次的影響として、各コントローラはネットワーク接続されているため、目標画像の古い所有者と新しい所有者は、それらが互いに近くにあり、どちら側にリンクされているかを知る。各コントローラは、後で参照するためにこの情報を保存することができる。
【００８４】
カメラと画面の手動初期同期
実施形態によっては、単純な事例では、ユーザが手動でカメラと画面の同期を取って、目標画像の追跡を初期設定する。コントローラは、目標画像を既知の画面の場所、例えば画面の端または左下などに提示する。ユーザは、最初に、カメラをこの既知の場所に向け、コントローラが目標画像を適切なアスペクト比で検出するまで、ズームインまたはズームアウトする。目標画像のアスペクト比は、目標画像内の画素数と、カメラによって取り込まれるフレーム内の画素数との比である。例えば、５０パーセントのアスペクト比は適切である。実施形態によっては、適切なアスペクト比は、任意のパーセンテージとすることができる。このプロセスは、追跡を初期設定するのにカメラユーザが画面に近づく必要がある場合、時間がかかることもある。実施形態によっては、代替として、カメラ上のボタンを押して、目標画像をカメラから見える領域の中心に移動させることもできる。
【００８５】
カメラと画面の自動初期同期
代替の実施形態では、ユーザが、追跡を初期設定する自動モードを作動させるようコントローラに指図することができ、コントローラは、ユーザがカメラを向けている画面上の領域にカーソルを自動的に移動させる。自動初期設定の一実施形態では、コントローラは、目標画像がカメラによって検出されるまで、目標画像を画面上のあらゆる場所に素早く提示することによって、カメラの視界を見出すことができる。実施形態によっては、コントローラは、より速く追跡を初期設定し、ユーザの注意を逸らしにくくするために、目標画像をどこに移動させるべきか予測する。自動初期設定の別の実施形態では、コントローラは、目標画像を画面領域全体ではなく、既定の領域、例えば、画面の端や、画面の左下隅の上だけを移動させる。この最後の実施形態について、以下でより詳細に説明する。
【００８６】
図１１に、本発明の実施形態による、カーソルの場所を自動的に初期設定するプロセス例の流れ図を示す。コントローラは、これを画面のより小さい特定領域を漸進的に精査することによって行う。この精査は、二分探索法による。図１２Ａ〜１２Ｄに、本発明の実施形態による、カーソルを自動的に初期設定するときの画面例を示す。図１２Ａ〜１２Ｄの各画面について、図１１の流れ図と併せて論じる。
【００８７】
図１１において、プロセスはステップ２０で開始する。ステップ２２で、テスト領域が画面に等しいと設定される。なぜなら、プロセスの開始において、テスト領域は、画面全体だからである。プロセスの後の方で、画面は画面の半分のサイズに設定される。ループ上限Ｍが、画面の高さと幅に基づく２Mの目標画像初期設定精度を提供する。ステップ２４で、ループ上限Ｍが１０に設定され、これは２10または１／１０２４の目標画像初期設定精度を提供する。ループごとにテストが行われる。テストが行われるたびに、画面は水平または垂直に分割される。第１のテストは、画面を半分ずつに分割し、個々の半分が識別される。第２のテストでは、第１のテストで識別される個々の半分について、この個々の半分内の半分が識別される。したがって、テストのたびに、画面領域の高さまたは幅が２分の１に減少する。言い換えると、カメラの視界の中心であると識別される領域が、テストごとに２分の１に減少する。
【００８８】
ステップ２６でカウンタＮがゼロに設定される。ステップ２８でカウンタＮがループ上限Ｍに等しくない場合で、且つ、ステップ３０でＮは偶数である場合、ステップ４０でテスト領域の左半分が青に変わる。ステップ４２でカメラによって送られるフレームの中心に青がある場合、コントローラは、ステップ４４で新しいテスト領域を現在のテスト領域の左半分に設定し、そうでない場合、コントローラは、ステップ４６で新しいテスト領域を現在のテスト領域の右半分に設定する。ステップ４８でカウンタＮが増分され、プロセスは折り返してステップ２８に戻る。
【００８９】
ステップ３０でカウンタＮが奇数である場合、ステップ５０でテスト領域の上半分が青に変わる。ステップ５２でカメラによって送られるフレームの中心に青がある場合、コントローラは、ステップ５４で新しいテスト領域を現在のテスト領域の上半分に設定し、そうでない場合、コントローラは、ステップ５６で新しいテスト領域を現在のテスト領域の下半分に設定する。ステップ４８でカウンタＮが増分され、プロセスは折り返してステップ２８に戻る。
【００９０】
図１２Ａに、図１１のプロセスのＮ＝０のときの、第１の反復のステップ４０における画面例９０を示す。ステップ４０で、テスト領域９０の左半分９２が、領域９２に横の網掛けによって示すように青に変わる。ステップ４２でカメラによって送られるフレームの中心に青がなかった場合、新しいテスト領域が現在のテスト領域９０の右半分９３に設定される。図１２Ｂに、図１１のプロセスのＮ＝１のときの第２の反復のステップ５０における画面例９０を示す。ステップ５０で、図１２Ａに示すテスト領域９３の上半分９４が、領域９４に横の網掛けで示すように青に変わる。ステップ５２でカメラによって送られるフレームの中心に青があった場合、新しいテスト領域が現在のテスト領域９３の上半分９４に設定される。
【００９１】
図１２Ｃに、図１１のプロセスのＮ＝２のときの第３の反復のステップ４０における画面例９０を示す。ステップ４０で、図１２Ｂに示すテスト領域９４の左半分９６が、領域９６に横の網掛けで示すように青に変わる。ステップ４２でカメラによって送られるフレームの中心に青がなかった場合、新しいテスト領域が現在のテスト領域９４の左半分９６に設定される。図１２Ｄに、図１１のプロセスのＮ＝３のときの第４の反復のステップ５０における画面例９０を示す。ステップ５０で、図１２Ｃに示すテスト領域９６の上半分９８が、領域９４に横の網掛けで示すように青に変わる。ステップ５２でカメラによって送られるフレームの中心に青がなかった場合、新しいテスト領域が現在のテスト領域９６の下半分９９に設定される。図１１のプロセスの次の反復では、新しいテスト領域９９が現在のテスト領域として使用される。
【００９２】
図１１に戻り、ステップ２８でカウンタＮがＭ回の再分割後のループ上限Ｍに等しい場合、プロセスは最終チェックに進む。ステップ６０で、見つかった領域が実際にカメラの視界の中心にあることを確認するために、現在のテスト領域全体が青に変わる。ステップ６２でカメラによって送られるフレームの中心に青があった場合、ステップ６４でプロセスは成功し、ステップ７０で終了する。ステップ６２でカメラによって送られるフレームの中心に青がなかった場合、ステップ６６でプロセスは失敗し、ステップ７０で終了する。
【００９３】
図１１のプロセスは、非常に高速とすることができ、画面またはカメラの最も遅いリフレッシュレートによって制限される。典型的な状況では、カメラが、最も遅いフレッシュレートを有する。例えば、カメラは、画面の毎秒６０または７０フレームに対して、毎秒１５フレームのリフレッシュレートを有する。この比較的低いフレームレートは問題とならない。なぜなら、たとえ毎秒１５フレームであっても、画面の寸法が、前述の方法を用いて１５回２分割され得るからである。これは、２15、または画面寸法の１／３２７６８の解像度の場所推定値をもたらすはずである。この解像度は、典型的なコンピュータ画面の固有の画素解像度より一桁高く、したがって、より十分である。実際、図１１に示す少ない回数の再分割ステップでも、したがって高速なプロセスでも、許容可能な場所精度を達成するのに十分だろう。
【００９４】
実施形態によっては、例えば、カメラを追跡され得ないほど速く移動させたり、カメラを画面から外れたところに向けたりすることによって、カメラが目標画像を見失うような向け方をされた場合、目標画像は、前述の初期設定実施形態の方法の１つによって取得し直される必要がある。
【００９５】
適用シナリオ
実施形態によっては、最も簡単なシナリオでは、目標画像はマウスなどのコンピュータポインタにリンクされる。ユーザが、カメラを動かして目標画像を移動させるに従って、コントローラはコンピュータポインタを移動させる。
【００９６】
実施形態によっては、カメラの画面に対する距離が推定され得るため、コントローラもまた、ユーザの物理的運動を表示される場面に対応付ける（map）ことができる。例えば、ユーザの運動を３次元環境の制御に対応付けることができ、この場合のユーザは、目標画像である。例えば、仮想バスケットボールの試合において、仮想プレーヤに回り込もうとするユーザは、物理的に左または右に移動する必要がある。このユーザが画面に対して物理的に左または右に移動すると、コントローラは、ユーザが仮想世界内で左または右に移動したいものと理解する。
【００９７】
実施形態によっては、カメラの画面に対する距離が推定され得るため、コントローラは、音量を制御するなど、リニアスライダを制御するのに使用され得る。リニアスライダの他の例には、画像の輝度や色など任意の連続制御や、左右または上下に反転され得るトグルスイッチとしてレンダリングされるチェックボックスなどの任意のスイッチが含まれる。
【００９８】
描画アプリケーションの実施形態では、カメラの回転は、デジタルブラシの回転に対応付けされる。デジタルブラシは、画面上に表示され、カメラが回転するに従って回転する。
【００９９】
オーディオ編集アプリケーションの実施形態では、いくつかのアプリケーション「ウィジェット」はつまみであるが、非常に使いにくい。カメラは、この種類のアプリケーションのつまみを、カメラを回転させることによって制御することができる。
【０１００】
実施形態によっては、カメラからディスプレイまでの異なる距離を、異なるツールに対応付けることもできる。ユーザが画面に近いとき、画面上のポインタはペンとして示され、ユーザは、カメラを使って「インクで書く（ink）」ことができる。ユーザが画面から遠いとき、画面上のポインタはブラシとして示され、ユーザは、カメラを使って「ペンキを塗る（paint）」ことができる。さらに遠い距離では、ポインタは単に、仮想の懐中電灯を制御するだけであり、ユーザはこれを使って、例えば、プレゼンテーション中に聴衆の注意を集中させるなどのために、画面上の特定の領域を強調表示することができる。
【０１０１】
システムのハードウェア、ソフトウェアおよび構成要素
本発明の各実施形態には、従来の汎用または専用のデジタルコンピュータまたはマイクロプロセッサを使って実施され、本開示の教示に従ってプログラムされ得る、コンピュータベースの方法およびシステムが含まれ得る。本開示の教示に基づいて、適切なソフトウェアコーディングがプログラマによって容易に作成され得る。本発明の実施形態には、コンピュータにより、本明細書で提示する特徴のいずれかを実施するように実行可能な命令のプログラムが含まれ得る。
【０１０２】
本発明の実施形態には、コンピュータ可読記憶媒体などのコンピュータ可読媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータを本明細書で提示する特徴のいずれかを実施するようにプログラムするのに使用され得る命令を格納することができる。記憶媒体には、それだけに限らないが、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、光磁気ディスクを含む任意の種類のディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、フラッシュメモリ、あるいは、命令および／またはデータを格納するのに適した任意の媒体または装置が含まれ得る。本発明は、汎用／専用コンピュータやマイクロプロセッサなど、コンピュータのハードウェアを制御すると共に、これらが、人間のユーザ、または本発明の結果を利用する他の機構と対話することを可能にするソフトウェアを含み得る。このようなソフトウェアには、それだけに限らないが、デバイスドライバ、オペレーティングシステム、実行環境／コンテナ、ユーザインターフェース、およびユーザアプリケーションが含まれ得る。
【０１０３】
本発明の各実施形態は、本発明のプロセスを実施するコードを提供することを含み得る。この提供は、任意の方法でユーザにコードを提供することを含み得る。例えば、この提供は、ユーザにコードを含むデジタル信号を送信すること、ユーザに物理媒体上でコードを提供すること、あるいはコードを提供する他の任意の方法を含み得る。
【０１０４】
本発明の各実施形態は、コンピュータにおいて、本発明の各実施形態のプロセスのいずれかを実施するように実行され得るコードを送信する、コンピュータによって実施される方法を含み得る。この送信は、インターネットなどのネットワークの任意の部分を介した転送、電線、大気または宇宙空間を介した転送、あるいは他の任意の種類の送信を含み得る。この送信は、コードの送信を開始すること、またはコードを別の地域または国から任意の地域または国に渡すことを含み得る。ユーザへの送信は、送信が発信される場所を問わずに、ユーザによって任意の地域または組で受け取られる任意の送信を含み得る。
【０１０５】
本発明の各実施形態は、コンピュータにおいて、本発明の各実施形態のプロセスのいずれかを実施するように実行され得るコードを含む信号を含み得る。この信号は、インターネットなどのネットワークを介して送信することも、電線、大気または宇宙空間を介して送信することも、他の任意の種類の送信とすることもできる。信号全部が同時に送信される必要はない。この信号は、時間的にその転送の期間全体に及び得る。この信号は、現在送信中であるものの断片（snapshot）とみなされるべきではない。
【０１０６】
以上の本発明の好ましい実施形態の記述は、例示と説明のために提供するものである。網羅的であることも、本発明の開示の厳密な形に限定することも意図するものではない。当業者には、多くの改変および変形が明らかである。例えば、開示された本発明の各実施形態において行われるステップは、別の順序で行うこともでき、いくつかのステップは省略することもでき、追加ステップを加えることもできる。本発明の別の実施形態を作成することもでき、それらは、本発明および特許請求の範囲の精神と適用範囲内に含まれることを理解すべきである。各実施形態は、本発明とその実際の適用を最も適切に説明し、それによって、当業者が、様々な実施形態のために、企図される個々の用途に適する様々な変更と共に本発明を理解することができるように、選択され、記述されたものである。本発明の範囲は、添付の特許請求の範囲およびその均等物によって定義されるべきものである。
【図面の簡単な説明】
【０１０７】
【図１】本発明の実施形態による、ビデオカメラを画面上でポインティング装置として使用するシステム例を示す図である。
【図２Ａ】本発明の実施形態による、カメラ例の軸と画面例の軸が、相互に対して任意の向きにあり得ることを示す図である。
【図２Ｂ】本発明の実施形態による、カメラ例の軸と画面例の軸が、相互に対して任意の向きにあり得ることを示す図である。
【図３】本発明の実施形態による、画面から異なる距離にある２台のカメラ例を示す図である。
【図４】本発明の実施形態による、コントローラによるカーソル追跡のプロセス例を示す流れ図である。
【図５Ａ】本発明の実施形態による、回転される目標画像の様々な位置例を示す図である。
【図５Ｂ】本発明の実施形態による、回転される目標画像の様々な位置例を示す図である。
【図５Ｃ】本発明の実施形態による、回転される目標画像の様々な位置例を示す図である。
【図６】本発明の実施形態による、カメラの目標画像に対する回転を検出するプロセス例を示す流れ図である。
【図７】本発明の実施形態による、カメラの目標画像に対する位置を検出するプロセス例を示す流れ図である。
【図８】本発明の実施形態による、図７のプロセス例と共に使用される目標画像の位置例を示す図である。
【図９Ａ】本発明の実施形態による、４つの象限に分割された目標画像例を示す図である。
【図９Ｂ】本発明の実施形態による、４つの象限に分割された目標画像例を示す図である。
【図１０】本発明の実施形態による、３つのコントローラによって制御される３つの画面例を示す図である。
【図１１】本発明の実施形態による、カーソルを自動的に初期設定するプロセス例を示す流れ図である。
【図１２Ａ】本発明の実施形態による、カーソルを自動的に初期設定するときの画面例を示す図である。
【図１２Ｂ】本発明の実施形態による、カーソルを自動的に初期設定するときの画面例を示す図である。
【図１２Ｃ】本発明の実施形態による、カーソルを自動的に初期設定するときの画面例を示す図である。
【図１２Ｄ】本発明の実施形態による、カーソルを自動的に初期設定するときの画面例を示す図である。
【図１】
2009048616.tif 000003
【図２Ａ】
2009048616.tif 000004
【図２Ｂ】
2009048616.tif 000005
【図３】
2009048616.tif 000006
【図４】
2009048616.tif 000007
【図５Ａ】
2009048616.tif 000008
【図５Ｂ】
2009048616.tif 000009
【図５Ｃ】
2009048616.tif 000010
【図６】
2009048616.tif 000011
【図７】
2009048616.tif 000012
【図８】
2009048616.tif 000013
【図９Ａ】
2009048616.tif 000014
【図９Ｂ】
2009048616.tif 000015
【図１０】
2009048616.tif 000016
【図１１】
2009048616.tif 000017
【図１２Ａ】
2009048616.tif 000018
【図１２Ｂ】
2009048616.tif 000019
【図１２Ｃ】
2009048616.tif 000020
【図１２Ｄ】
2009048616.tif 000021