データ処理の制御
ビデオカメラから連続する画像を受信するよう構成されるデータ処理装置であって、該データ処理装置の制御機能と対応づけられている画像領域内の選択されたポイントについて画像間動作を検出するための手段と、該画像間動作について画像領域において検出が行われた場合に制御機能を実行するための手段と、を備え、該検出手段は、m個の連続する一群の画像に亘る画像領域内のポイントについて累積的画像間動作を検出することによって、画像間動作を検出するよう構成され、ここでmは少なくとも3であることを特徴とするデータ処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータ処理の制御に関する。特殊な例として、ビデオゲーム処理操作の制御に関連するが、本発明はより一般的に他の種類のデータ処理にも適用するものである。
【背景技術】
【0002】
従来のビデオゲーム機において、ユーザーは、ビデオモニターまたはテレビ画面上のゲームを見て、手持ち式のキーパッドまたはジョイスティックを使用してゲームの操作を制御する。ソニー(Sony、登録商標)プレイステーション(PlayStation、登録商標)2等のゲーム機については、手持ち式コントローラが、2本のジョイスティックと数個のユーザー操作キーを提供するものがあり、これは、ゲーム内でイベントが生じた場合、ユーザーに対し触覚性のフィードバックを提供するための振動エレメントを伴う。
【0003】
これらのゲーム機は、ビデオカメラを利用できることはすでに提案されている。これによって、ユーザーの画像をゲームシナリオの中に出現させることが可能となり、あるいは、空中で「ワンド」を振る等のユーザーのアクションを、ゲーム内のキャラクターが対応するアクションをするように変換できる。
【発明の開示】
【発明が解決しようとする課題】
【0004】
この構成において不都合な点は、ゲーム機能間で切り換えを行う場合、さらに一般的にゲーム機の操作を制御する場合、手持ち式のコントローラを操作しなければならないということである。
【0005】
制御について今まで出された提案は、一般的にユーザーが特殊な手袋をはめるようにするもので、特に、取り込まれた画像内で手袋をした手により検知を行うという特徴を有するものである。映画「マイノリティ・レポート」の中で、フィクションの例示が見られる。
【課題を解決するための手段】
【0006】
本発明のさまざまな各態様および特徴は、添付の請求の範囲において定義される。従属クレームによる特徴は、必要に応じて独立クレームの特徴と組み合わせることが可能であり、ただ単にクレーム内で明確に列記されている特徴だけではない。
【0007】
本発明の第一の態様は、ビデオカメラから連続した画像を受信するよう構成されたデータ処理装置を提供する。当該装置は、
データ処理装置の制御機能と対応づけられている画像領域内の選択されたポイントについて画像間動作を検出するための手段と、
該画像間動作について画像領域において検出が行われた場合、制御を実行するための手段と、を備え、
該検出手段は、m個の連続する一群の画像に亘る画像領域内のポイントについて累積的画像間動作を検出することによって画像間動作を検出するよう構成され、ここでmは少なくとも3であることを特徴とする。
【0008】
本発明の別の態様は、次のステップから成るデータ処理方法を提供する。すなわち、
ビデオカメラから、連続した取り込まれた画像を受信するステップと、
データ処理装置の制御機能と対応づけられている画像領域内にある、選択されたポイントについて画像間動作を検出するステップと、
画像間動作が画像領域において検出された場合に制御機能を実行するステップと、を備え、
該検出ステップは、m個の連続する一群の画像に亘る画像領域内のポイントについて累積的画像間動作を検出することによって、画像間動作を検出するよう構成され、ここでmは少なくとも3であることを特徴とする。
【0009】
本発明の別の態様は、上記の方法を実行するためのプログラムコードを有するコンピュータ・ソフトウェアを提供する。当該コンピュータ・ソフトウェアは、伝送媒体または記憶媒体等の準備媒体により提供されることが好ましい。
【0010】
本発明のさらなる個々の態様および特徴は、添付の請求の範囲において定義される。明示されない場合であっても、従属クレームの特徴は、さまざまに異なる独立クレームに対して適用される。
【発明を実施するための最良の形態】
【0011】
以下、例証のみを目的として、添付の図面を参照しながら本発明の実施例について説明する。
【0012】
図1は、プレイステーション2の全体的なシステムアーキテクチャを概略的に示すものである。システム・ユニット10は、システム・ユニットに接続可能なさまざまな周辺デバイスを備える。
【0013】
システム・ユニット10は、エモーション・エンジン100と、グラフィックス・シンセサイザ200と、ダイナミック・ランダム・アクセス・メモリ(DRAM)を有するサウンドプロセッサ・ユニット300と、読み出し専用メモリ(ROM)400と、コンパクトディスク(CD)およびデジタル多用途ディスク(DVD)リーダ450と、ランバス・ダイナミックランダムアクセスメモリ(RDRAM)ユニット500と、専用RAM750を有する入出力プロセッサ(IOP)700とを備える。(任意の)外付けハードディスクドライブ(HDD)800を接続する場合もある。
【0014】
入出力プロセッサ700は、2本のユニバーサル・シリアル・バス(USB)ポート715およびiLinkまたはIEEE1394ポート(iLinkは、株式会社ソニーがIEEE1394標準を実現したもの)を有する。IOP700は、USB、iLink、およびゲームコントローラのデータトラフィックのすべてを取り扱う。例えば、ユーザーがゲームをしているときに、IOP700はゲームコントローラからデータを受信し、このデータをエモーション・エンジン100へと送りだし、エモーション・エンジンは、それに従ってゲームの現在の状況を更新する。IOP700は、迅速なデータ転送速度を容易に実現するダイレクト・メモリ・アクセス(DMA)アーキテクチャを有する。DMAは、CPUを通過させずにメインメモリからデバイスへデータ転送を行う。USBインターフェースは、オープンホスト・コントローラ・インターフェース(OHCI)と互換性があり、1.5Mbpsから12Mbpsまでのデータ転送速度を処理できる。これらのインターフェースが装備されているということは、つまり、プレイステーション2は、ビデオカセット、レコーダー(VCRs)、デジタルカメラ、セットトップボックス、プリンタ、キーボード、マウスおよびジョイスティック等の周辺デバイスと潜在的に互換性があることを意味する。
【0015】
通常、USBポート715に接続している周辺デバイスとのデータ通信が円滑に行われるように、デバイスドライバ等の適切なソフトウェアを備えなければならない。デバイスドライバ技術は大変によく知られているので、ここで詳細は記載しないが、当業者であれば、ここに記載する実施例において、デバイスドライバまたは類似のソフトウェア・インターフェースが必要であると認識していることはいうまでもない。
【0016】
本実施例において、対応するマイクロフォン735とLEDインジケータ740が装備されたビデオカメラ730がUSBポートに接続されている。様々なタイプのビデオカメラを使用できるが、ビデオカメラ735として特にふさわしいタイプは、いわゆる「ウェブカム」である。すなわちこれは、単一の電荷結合素子(CCD)エレメントに基づく中分解能カメラであって、基本ハードウェアをベースとするリアルタイムデータ圧縮およびエンコーディング構成を含んでいるので、圧縮ビデオオーディオデータが、例えば画像内部をベースとするMPEG(モーション・ピクチャ・エキスパート・グループ)標準等の適切なフォーマットでカメラ730からUSBポート715へと送信され、プレイステーション2システム・ユニット10においてデコーディングされる。カメラLEDインジケータ740は、システム・ユニット10とのUSBデータ接続を介して制御データを受信し、このような制御データに応答して点灯するように構成される。
【0017】
USBポートとは別の、2本の他のポート705、710は、ゲーム関連の情報を格納するための専用不揮発性RAMメモリーカード720、手持ち式ゲームコントローラ725、または、例えばダンス・マット等の手持ち式コントローラに似たようなデバイス(図示せず)の接続を可能とする専用ソケットである。
【0018】
エモーション・エンジン100は、128ビット中央演算処理装置(CPU)であり、特にゲームアプリケーション用の三次元(3D)グラフィックスを効果的にシミュレーションするために設計されたものである。エモーション・エンジンの構成要素は、データバス、キャッシュメモリ、およびレジスタを含み、いずれも128ビットである。これによって、大容量マルチメディアデータの迅速な処理を容易にする。これと比較すると、従来のPCは、基本64ビットのデータ構造を有する。プレイステーション2の浮動小数点演算性能は、6.2GFLOPsである。エモーション・エンジンはまた、MPEG2デコーダ回路を備え、3DグラフィックスデータとDVDデータの同時処理を可能にする。エモーション・エンジンは、数学的変換およびトランスレーションを含む幾何学的計算を実行し、更に、例えば2つのオブジェクト間の摩擦の算出などのシミュレーションオブジェクトの物理的過程に関連する計算を行う。これによって、その次にグラフィックス・シンセサイザ200によって利用される画像レンダリングコマンドのシーケンスを作成される。画像レンダリングコマンドは、表示リスト形式で出力される。表示リストとは、描画コマンドのシーケンスであり、グラフィックス・シンセサイザに対して、どの初期グラフィックオブジェクト(例えば、点、線、三角形、スプライトなど)を画面上に描くか、および、どの座標に描くかを指示する。このように、典型的な表示リストは、頂点を描くためのコマンド、ポリゴン面に陰影をつけたり、ビットマップを描いたりする等のコマンドを含む。エモーション・エンジン100は、非同期で複数の表示リストを作成できる。
【0019】
グラフィックス・シンセサイザ200は、エモーション・エンジン100により作成された表示リストのレンダリングを行うビデオ・アクセラレータである。グラフィックス・シンセサイザ200は、複数の表示リストを処理し、追跡記録し、管理するグラフィックス・インターフェースユニット(GIF)を含む。グラフィックス・シンセサイザ200のレンダリング機能は、選択肢となるいくつかの標準出力画像フォーマット、すなわちNTSC/PAL、高精細度デジタルテレビ、およびVESAをサポートする画像データを作成できる。一般に、グラフィックス・システムのレンダリング能力は、それぞれがグラフィックス・プロセッサ内に位置するピクセルエンジンとビデオメモリの間のメモリ帯域幅により定められる。従来のグラフィックス・システムは、外付けのビデオ・ランダム・アクセス・メモリ(VRAM)を使用しており、これはオフチップバスを介してピクセルロジックに接続されるので、有効な帯域幅を制限する傾向にある。しかしながら、プレイステーション2のグラフィックス・シンセサイザ200は、単一の高性能チップ上のピクセルロジックおよびビデオメモリを提供し、これによって、毎秒38.4ギガバイトという比較的大きいメモリアクセス帯域幅を可能にする。グラフィックス・シンセサイザは、理論的に、毎秒7500万ポリゴンの最高描画容量を達成することが可能である。テクスチャ、ライティング、およびトランスペアレンシー等のあらゆるエフェクトを用いた場合であっても、毎秒2000万ポリゴンの持続速度で連続して描画することが可能である。従って、グラフィックス・シンセサイザ200は、フィルム品質の画像を描画することができる。
【0020】
サウンドプロセッサ・ユニット(SPU)300は、事実上、本システムのサウンドカードであり、デジタル多用途ディスク(DVDs)に使用されるサウンドフォーマットであるデジタル・シアター・サラウンド(DTS、登録商標)サウンドやAC−3(ドルビーデジタルとしても知られる)のような3Dデジタルサウンドを認識できる。
【0021】
対応するスピーカー構成310を伴ったビデオモニターあるいはテレビ等のディスプレイおよびサウンド出力装置305は、グラフィックス・シンセサイザ200およびサウンドプロセッッサ・ユニット300に接続され、ビデオ信号およびオーディオ信号を受信する。
【0022】
エモーション・エンジン100をサポートするメインメモリは、ランバス(Rambus)社製のRDRAM(ランバス・ダイナミック・ランダムアクセスメモリ)モジュール500である。このRDRAMメモリー・サブシステムは、RAM、RAMコントローラ、およびRAMをエモーション・エンジン100に接続するバスを備える。
【0023】
図2は、図1のエモーション・エンジン100のアーキテクチャを概略的に示したものである。エモーション・エンジン100は、浮動小数点ユニット(FPU)104と、中央演算処理装置(CPU)コア102と、ベクトルユニット・ゼロ(VU0)106と、ベクトルユニット・ワン(VU1)108と、グラフィックス・インターフェース・ユニット(GIF)110と、割り込みコントローラ(INTC)112と、タイマーユニット114と、ダイレクト・メモリ・アクセス・コントローラ116と、画像データ処理ユニット(IPU)116と、ダイナミック・ランダム・アクセスメモリ・コントローラ(DRAMC)120と、サブバスインターフェース(SIF)122と、を備え、これらの構成要素の全ては、128ビット・メインバス124を介して接続される。
【0024】
CPUコア102は、300MHzでクロック制御される128ビットプロセッサである。CPUコアは、DRAMC120を介して、メインメモリの32MBにアクセスする。CPUコア102の命令セットは、さらにマルチメディア命令を追加したMIPS IV RISC命令のいくつかを有するMIPS III RISCに基づくものである。MIPS IIIおよびIVは、MIPSテクノロジー社が所有する縮小命令セットコンピュータ(RISC)命令セットアーキテクチャである。標準の命令は、64ビットのツーウェイ・スーパースカラであり、これは、二つの命令を同時に実行できることを意味する。一方、マルチメディア命令は、二本のパイプラインを介した128ビット命令を使用する。CPUコア102は、16KBの命令キャッシュ、8KBのデータキャッシュ、および、CPUによるダイレクトプライベート使用のために確保されるキャッシュの一部である16KBのスクラッチパッドRAMを備える。
【0025】
FPU104は、CPUコア102用の第一コプロセッサとしての機能を果たす。ベクトルユニット106は、第二のコプロセッサとして機能する。FPU104は、浮動小数点積和演算器(FMAC)および浮動小数点除算演算器(FDIV)を備える。FMACおよびFDIVはどちらも32ビット値で演算を行うので、演算が128ビット値(4つの32ビット値から成る)で実行されると、4つのすべての部分において、並行して演算を実行できる。
【0026】
ベクトルユニット106および108は、数値演算を実行するものであって、ベクトル方程式の乗算および加算で数値を求める場合に極めて高速に行うことができる、基本的に専門FPUである。これらは、加算と乗算演算のための浮動小数点積和演算器(FMAC)、および除算と平方根演算のための浮動小数点除算演算器(FDIV)を使用する。また、これらは、マイクロプログラムを格納するための内蔵メモリを有し、ベクトル・インターフェース・ユニット(VIFs)を介して、システムの残りの部分とのインターフェースをとる。ベクトルユニット・ゼロ106は、専用128ビットバス124を介してCPUコア102に対するコプロセッサとして機能することが可能であり、従って、これは基本的に第二の専門FPUである。一方、ベクトルユニット・ワン108は、グラフィックス・シンセサイザ200への専用バスを有するので、それによって、完全に分離したプロセッサであると考えられる。二台のベクトルユニットを搭載することによって、ソフトウェア開発者は、CPUの異なる部分間で作業を切り分けることが可能となり、これらのベクトルユニットはシリアルまたはパラレル接続のいずれかで使用できる。
【0027】
ベクトルユニット・ゼロ106は、四つのFMACSと、一つのFDIVを備える。これは、コプロセッサ接続を介してCPUコア102に接続している。また、データ用ベクトルユニットメモリ4Kbと、命令用マイクロメモリ4Kbを有する。ベクトルユニット・ゼロ106は、表示用画像に関連する物理計算を行うために有用である。これは主に、CPUコア102と共に非パターン化幾何学処理を実行する。
【0028】
ベクトルユニット・ワン108は、五つのFMACSと二つのFDIVとを備える。これは、GIFユニット110へのダイレクトパスは有するが、CPUコア102へのダイレクトパスを有しない。また、データ用ベクトルユニットメモリ16Kbと、命令用マイクロメモリ16Kbを有する。ベクトルユニット・ワン108は、変換を実行する際に有用である。これは、主にパターン化された幾何学処理を実行して、作成された表示リストをGIF110に直接出力する。
【0029】
GIF110は、グラフィックス・シンセサイザ200に対するインタフェースユニットである。表示リストパケットの最初のタグ指定に従って、データを変換し、相互に複数の転送を調整しながら、描画コマンドをグラフィックス・シンセサイザ200に転送する。割り込みコントローラ(INTC)112は、DMAC116を除いた周辺デバイスからの割り込みを調整する役割を果たす。
【0030】
タイマーユニット114は、16ビットカウンタを有する四つの独立したタイマーから成る。このタイマーは、バスクロック(1/16または1/256間隔)によって、または外部クロックを介して駆動される。DMAC116は、メインメモリおよび周辺処理装置間の、または、メインメモリおよびスクラッチパッドメモリ間のデータ転送を行う。同時に、メインバス124を調整する。DMAC116のパフォーマンス最適化は、エモーション・エンジン性能を向上させる鍵となる方法である。画像処理装置(IPU)118は、圧縮された動画およびテクスチャ画像を展開するために用いる画像データプロセッサである。これは、I−PICTUREマクロブロック・デコーディング、カラースペース変換、およびベクトル量子化を実行する。最後に、サブバスインターフェース(SIF)122は、IOP700に対するインタフェースユニットである。サウンドチップおよび記憶装置等の入出力装置を制御するために、サブバスインターフェースは、それ自体のメモリおよびバスを有する。
【0031】
図3は、グラフィックス・シンセサイザ200の構成を概略的に示したものである。グラフィックス・シンセサイザは、ホストインターフェース202、セットアップ・ラスタライズユニット204、ピクセルパイプライン206、メモリインターフェース208、フレームページ・バッファ214およびテクスチャページ・バッファ216を含むローカルメモリ212、およびビデオコンバータ210を備える。
【0032】
ホストインターフェース202は、ホストとデータのやりとりを行う(エモーション・エンジン100のCPUコア102の場合)。ホストからの描画データおよびバッファデータは双方とも、このインターフェースを通過する。ホストインターフェース202からの出力は、グラフィックス・シンセサイザ200に供給される。このグラフィックス・シンセサイザ200は、グラフィックスを展開し、エモーション・エンジン100から受け取った頂点情報に基づいてピクセルを描画し、各ピクセルの、RGBA値、深度値(例えばZ値)、テクスチャ値およびフォグ値等の情報を算出する。RGBA値は、赤、緑、青(RGB)のカラー構成要素を特定し、Α(アルファ)構成要素は画像オブジェクトの不透明性を表す。アルファ値は、完全に透明から完全に不透明まで変化させることができる。ピクセルデータは、ピクセルパイプライン206に供給され、ここで、テクスチャマッピング、フォギングおよびアルファブレンディング等の処理を行い、算出されたピクセル情報に基づいて最終的な描画のカラーを決定する。
【0033】
ピクセルパイプライン206は、16個のピクセルエンジンPE1、PE2、・・・PE16を備え、最大16ピクセルを同時に処理できる。ピクセルパイプライン206は、32ビットカラーおよび32ビットZバッファで、150MHzで動作する。メモリインターフェース208は、ローカル・グラフィックス・シンセサイザ・メモリ212からデータを読み込み、かつ、書き込みを行う。ピクセル操作の終了時には、メモリに対して描画ピクセル値(RGBAおよびZ)を書き込み、メモリからフレームバッファ214のピクセル値を読み込む。フレームバッファ214から読み込まれるこれらのピクセル値は、ピクセルテストまたはアルファブレンディングのために使用される。メモリインターフェース208はまた、ローカルメモリ212から、フレームバッファの現在の内容に対するRGBA値を読み込む。ローカルメモリ212は、グラフィックス・シンセサイザ200に内蔵される32Mビット(4MB)のメモリである。これは、フレームバッファ214、テクスチャバッファ216および32ビットZバッファ215で構成できる。フレームバッファ214は、カラー情報のようなピクセルデータが格納されるビデオメモリの部分である。
【0034】
グラフィックス・シンセサイザは、視覚的な細部を三次元ジオメトリに加えるために、二次元から三次元へのテクスチャマッピング処理を使用する。各テクスチャは、三次元画像オブジェクトの周囲に巻きつけられ、伸ばされ、そして曲げられて、三次元のグラフィック効果を与える。テクスチャバッファは、画像オブジェクトに対するテクスチャ情報を格納するために使用される。Zバッファ215(別名、深度バッファ)は、ピクセルについての深度情報を格納するために利用できるメモリである。画像は、グラフィックスプリミティブまたはポリゴンとして知られる基本構成ブロックにより構築される。ポリゴンが、Zバッファリングを使って描かれる場合、各ピクセルの深度値は、Zバッファに格納される対応する値と比較される。Zバッファに格納される値が新しいピクセル値の深度以上の場合、このピクセルが可視であると決定され、その結果、そのピクセルは描画されることとなって、Zバッファは新しいピクセル深度により更新される。しかしながら、Zバッファ深度値が新しいピクセル深度値よりも小さい場合、新しいピクセル値はすでに描画されたものの後ろ側にあって、描かれることはない。
【0035】
ローカルメモリ212は、フレームバッファとZバッファとにアクセスするための1024ビットの読み込みポートおよび1024ピットの書き込みポート、およびテクスチャ読込み用の512ビットのポートを有する。ビデオコンバータ210は、ある特定の出力フォーマットにおいて、フレームメモリの内容を表示するよう機能する。
【0036】
図4および図5により、いくつかの異なるユーザーインターフェース(UI)制御について説明する。
【0037】
図4は、概略的にダイヤル制御を示したものである。
【0038】
図4における長方形のアウトラインは、カメラ730によって取り込まれ、ディスプレイ305上に表示されている画像の外縁を概略的に表すものである。動作中、カメラ730によって、取り込まれる連続した画像またはフレームは、エモーション・エンジン100によって、グラフィックス・シンセサイザ200に渡され、グラフィックス・シンセサイザのビデオ出力のすべてあるいは一部に対する背景として表示される。
【0039】
本実施例では、カメラ730は、ユーザー1000の方へ向けられている。
【0040】
ダイヤル制御1010は、(グラフィックス・シンセサイザによって、)背景取り込み画像上に重畳される。このダイヤル制御は、ポインタ1020がその中で表示される円形ボーダー1015を備える。ポインタは、ゲームまたはゲーム機の変数に対応づけてもよい。その結果、(例えば)時計回りにポインタを動かすことにより変数を増やし、逆に、反時計回りにポインタを動かすことにより変数を減少させる。このような方法で、ダイヤル制御は、ポテンショメータのような機械的回転制御の操作をシミュレーションすることができる。ポインタができる動きは、点線で示される。ユーザーがポインタをどのように動作させるかについては後述する。
【0041】
ダイヤル制御を操作するために、ユーザーは、ボーダー1015内の少なくとも一部に手を置く。そして、ユーザーの手の動きが、ポインタ1020の軸(回転中心)1030を基準として検出される。この動きがどのように検出されるかについては後述するが、このような検出によって次のような効果がある。すなわち、もしボーダー1015内のユーザーの手の全体の動きが中心1030を基準として時計回り方向であると検出された場合、ポインタは、それに対応して時計回りに動かされる(そして、ゲームまたはゲーム機の変数は増加する)。もしボーダー1015内のユーザーの手の全体の動きが中心1030を基準として反時計回り方向であると検出された場合、ポインタは、それに対応して反時計回りに動かされる(そして、ゲームまたはゲーム機の変数は減少する)。ポインタの動きまたは回転は、手の動きと同じあるいは比例するよう構成できる。また、仮想の「エンドストップ」を備えることもできる。それによって、特定の方向への連続した手の動きが、ポインタの連続した回転につながることなく、エンドストップの一方に到達したときにポインタの回転が止まるようにする。
【0042】
任意に、円形ボーダー1015の中で適切な動きが検出されない場合、ダイヤルをロックする(動きを抑制する)ことができ、それによって、偶発的に調整されてしまうことを防ぐ。このダイヤルは、色を変えることによって、そのロック状況を示唆できる。
【0043】
ゲームまたはゲーム機の変数は、ただちに変更することができる。または、このような変更は、ユーザーがポインタの回転を止めるまで、あるいはボーダー1015内部から手を引き出すまで保留できる。ダイヤル制御を容易にしている機構については、後述する。
【0044】
図5は、スクロール制御に関して概略的に示したものである。
【0045】
図4に似たような方法で、スクロールアイコン1050は、カメラ730から取り込まれたユーザー1000の画像上に重畳される。本実施例では、このスクロールアイコンは垂直にスクロールように構成されるが、もちろん、適切な方向であればどの方向にスクロールさせてもよい(または実際には、例えばスクロールアイコンがたくさん並んでいる場合は複数の方向でもよい)。このアイコンは、いつでも、現在見えているものを超えて拡張可能である。エンドレスなルーレット式フォーマットに構成するのが好ましいが、単純なライン構造に構成することも可能である。
【0046】
ここでの基本概念は、一般的な垂直方向の手の動きによって、(または、非垂直方向な手の動きの垂直成分によって)、アイコンを上下にスクロールさせることができるということである。前述の通り、アイコンのスクロール動作は、ユーザーの手の垂直な動作と等しくすることが可能であり、そうでなければ、このような動作に比例する、または、依存するものであるようにできる。この垂直動作は、アイコンを囲んでいる画像の領域1060内で検出できる。
【0047】
検出領域1060は他の選択肢も可能である。ユーザーが、ある特定の方向にアイコンを垂直方向にスクロールさせる動きを開始し、領域1060から手を引き出しながら、垂直方向に手を動かし続けることができる。このアイコンは、エンドレスに、または、減衰(減速)するように、垂直にスクロールし続けることができる。ユーザーは、領域1060の中に、静止している手または動いている手を再び入れることによって、この連続した動きを止める(逆転させるあるいは強化する)ことができる。
【0048】
選択ボックス1070を説明する。一般的にこれは、ディスプレイ内で静止しており、所望のアイコンが選択ボックス内に入るまでアイコンを上下させることにより、アイコンの一つを選択できる。従って、もしアイコンが(例えば)ゲームオプションまたは音楽トラックを表わす場合は、ユーザーが、ボックス1070内にアイコンを配置することによって、ゲームオプションを実行する、または音楽トラックを再生させることが可能である。
【0049】
スクロール制御を容易にする機構について後述する。
【0050】
再び図4を参照すると、ダイヤル制御の変形として、ホイール制御がある。ホイール制御は、ダイヤル制御と同様の方法で動作する。しかし、ホイールの動きは、ユーザーがホイールボーダー1015によって囲まれている領域内で動作を開始し、ホイールボーダー1015から手を引き出しながら手を動かし続けることによって、ホイールを回転させることができる点において、スクロール制御に類似している。このアクションの間、手の動きが一貫している場合、ホイールは、あたかも自身の運動量で動くように、エンドレスにまたは減衰(減速)するようにスピンし続ける。ユーザーは、必要に応じて、ホイールボーダー1015により囲まれている領域内に、静止した手または動いている手を再度入れることによって、この継続している動きを停止(逆転または強化)させることができる。
【0051】
このホイール制御は、例えば、垂直スクロールアイテムが円形状をなしているホイール上に示されたオプションから選択を行うために、またはアクションを行う際にゲームキャラクターが使用するエネルギーレベルを表わすために、使用してもよい。
【0052】
任意に、ホイールは常にロックを外した状態にしておくことが可能であり、それによって、ホイールボーダー1015内で検出されたどんな動きでも、潜在的にスピンを誘発するようにすることができる。
【0053】
ホイール制御を容易にしている機構については、後述する。
【0054】
図6は、ソフトウェア命令下で動作するエモーション・エンジン100により実行されるユーザー制御検出機構を示すブロック図である。説明を簡略化するため、この図はオブジェクト指向プログラムのためのオブジェクトクラスを示すものであり、ここでクラスは、データとそのデータ上で動作可能な関数とを備える。例えば、Imageクラス10は、画像内の各ピクセルの幅、高さ、カラーチャンネルの数、およびそのカラー等の情報を含むことが可能である。また、Imageクラス10は、このデータに作用する関数をたくさん有することができる。例えば、GetNumPixels()、GetPixelColour(int x、int y)、およびSetPixelColour(int x、int y、Colour RGB)はそれぞれ、画像サイズの数値を決め、所定の座標上にあるピクセルのカラー値を取得し、所定の座標におけるピクセルのカラー値を設定することを表す。
【0055】
従って、以下の説明において、あるクラスがある特性または情報を有すると言われる場合、それはそのクラス内のデータについて言及しているのであり、一方、そのクラスがそのような情報に作用していると言われるときは、そのクラス内の関数に関連する、と理解される。
【0056】
図6において、要約すると、エモーション・エンジン100等のデータ処理装置に取り付けられたビデオカメラ730が、画像(すなわち、Imageクラス10に属するデータ)を作成する。ImageHistoryクラス20は、最終のJ個の画像を格納する。DifferenceMetricクラス30は、現在およびそれより以前の画像を保持し、それらを処理して、連続画像がどこで異なっているか、またどの程度異なるかを示す画像を作成する。これらの差分画像は、閾値とされDifferenceHistoryクラス40に格納される。OpticalFlowクラス50における関数は、ImageHistoryクラス20内の画像を分析して、一つの画像から次の画像まで追跡するための有効で認識可能なポイントを見つけ出す。任意に、OpticalFlowクラス50における関数は、DifferenceHistoryクラス40を使って、この処理を検証し処理速度を上げることができる。PointHistoryクラス60は、OpticalFlowクラス50の関数により識別されたポイントのリストと、ImageHistoryクラス20内の各画像のどこにそれらのポイントが位置するかを格納する。
【0057】
次に、MotionModelクラス70は、これらのポイントのペアの間で位置変更に相当する動きをモデル化する。現在およびその前の画像に対する移動ポイントについてその前後位置のリストを作り、それらの位置から規定どおりに、トランスレーション、スケールおよび回転モデルを作成する。任意に、MotionConstraintクラス80は、算出されたオブジェクトの動き・位置を取り込み、ユーザーインターフェース(UI)制御の所望の動きに従って、それを制限する(例えば、廃棄トランスレーション)。
【0058】
UserlnterfaceControl(UlControl)クラス90は、PointHistoryクラス60内の位置を取り込み、MotionModelクラス70に対してそれらを供給し、それから結果として生じる動作を取り入れて、MotionConstraintsクラス80から、一般的に一つまたは複数の制約を適用する。
【0059】
これによって、この制約された動作は、個々のUI制御の動きを表す。
【0060】
ここで、本発明の実施例のための、これらのクラスの詳細について説明する。
【0061】
Imageクラス(10)は、画像のサイズ(幅と高さ)、カラーチャンネルごとに可能な輝度値の数、およびカラーチャンネルの数を保持する。画像のサイズは、カメラの解像度(例えば320×240または640×480)に依存することが多い。しかし、制御が画面の小さな領域でのみ行われる場合、任意にこの小さな領域が画像として扱われ、元画像の残りは廃棄してもよい。
【0062】
一般的に使用される画像についての三つの主要なタイプは、以下のものである。
【0063】
i.カラー画像(3カラーチャンネル、各チャネルに対して256輝度値)
ii.グレースケール画像(256輝度値を伴った1カラーチャンネル)
iii.バイナリ画像(2輝度値を伴った1カラーチャンネル−白黒)
ビデオカメラ730は、ある程度固定したフレームレート(例えば毎秒30、60、または120フレーム)で、カラー画像を作成する。これらは、ImageHistory 20に渡される前に、グレースケール画像に変換される。
【0064】
ImageHistoryクラス20は、上記のようにカメラから取り込まれる最終のJ 個のグレースケール画像を格納する。新規画像が追加される毎に、最も古いものは保管画像の端から落とされる。例えば、Jは、3から14あるいはそれ以上の場合もある。
【0065】
DifferenceMetricクラス30は、二つの画像間の差分を算出して、それを閾値とする関数を提供する。この関数は、入力として二つのカラー画像(例えば、現在およびそれ以前の画像)を取り込む。各ピクセルに対し、各カラーチャンネルにおける差分が合計され、結果として生じる値によってグレースケール画像を作成される。その後、この画像は、スリーポイント・ガウシアンブラー・コンボリューションフィルター(three point Gaussian blur convolution filter)を用いて滑らかにされ、ある程度のトレランスが与えられる。最後に、この画像は閾値とされ、画像のどの部分が十分な量の変化があったかを示すバイナリ画像を生成する。この差分閾値がどのように選択されるかについては、ノイズ校正に関連して後で開示する。
【0066】
このように、DifferenceMetricクラス30は、差分データを作成するよう動作可能であり、二つの連続する画像の間のピクセル値における差分に比例する一連の値を備え、この後、差分データを滑らかにするよう動作可能である。
【0067】
さらに、DifferenceMetricクラス30は、算出された差分閾値レベルで、差分データに閾値を適用するように動作可能で、結果として生じるバイナリ差分データを出力する。
【0068】
DifferenceHistoryクラス40は、一連のN−1バイナリ画像を提供する。それぞれの画像が、DifferenceMetricクラス30から取得した、ImageHistory内の二つの連続する画像間の差分を維持する。ImageHistoryクラス20と同様に、新規な画像が加えられるたびに、格納されたもののうち最も古いものは廃棄される。
【0069】
さらに、これはまた「累積的な差分画像」を維持する。DifferenceHistory内の個々の画像のいずれかが白いピクセルを有する場合、これは白いピクセルを有するバイナリ画像である。従って、これはDifferenceHistoryクラス40内の個々の画像の論理和関数とみなすことが可能である。もちろん、「黒」および「白」として表現するのは、ただ単に本説明を明確化するためである。実際には、このデータはピクセル位置ごとに1ビットとして格納されてもよく、あるいは、記憶装置内の効率性により他のフォーマットで格納することも可能である。目的は、ピクセル位置に対して検出動作をマップすることにある。
【0070】
例えば、別の静的な場面において、ある人が挨拶の際に手を振った場合、その累積する差分画像は、一般的にその人の肘を原点とする弓形に類似するものであり、ウェーブの範囲に相当する円弧の範囲を定める。
【0071】
このように、DifferenceHistoryクラス40は、一連の画像に対するバイナリ差分データを組み合わせるよう動作可能であり、算出差分閾値を超えた連続画像間の差分を示した一連の画像全体に亘るすべての点を示す累積バイナリ差分画像を作成する。
【0072】
OpticalFlowクラス50は、特徴ポイントとして作用する最新画像内のポイントを見つけ出し、ImageHistoryクラス20内の3つ以上の画像を通じてそれらのポイントを逆向きに追跡する。
【0073】
本発明の実施例において、ポイント追跡は、Lucas-Kanade ポイントトラッカに基づいている。これは1981年に開発され、Lucas, B., and Kanade, T., 「An Iterative Image Registration Technique with an Application to Stereo Vision」、第7回人工知能国際合同会議 7 (IJCAI)の声明書、674〜679ページにおいて公開されている。
【0074】
現在の画像、およびその前の画像の、二つの画像を与えられ、Lucas-Kanadeトラッカは、以下を行う。
【0075】
1.画像内の各ピクセルと対応づけられている固有値を分析することによって容易に認識可能な、現在の画像上の一セットの位置を定める。
【0076】
2.前の画像内で、これらのポイントに最も近く一致するものを見つける。
【0077】
3.見つけた場合、画像上で識別可能なポイントについての、前のおよび現在の位置を示す、一セットの位置のペアを出力する。
【0078】
このように、OpticalFlowクラス50は、現在の画像内で選択されたポイントとの対応関係に基づいて、前の画像内のポイントを選択するよう動作可能である。
【0079】
例示されているポイントは、画像内での形状の端部を表わすものであるか、または、このような形状の凹頂点を表わすポイントである。手を例にとると、特徴ポイントは、指の先端、および隣り合う指の間の頂点で識別される。
【0080】
図7乃至図9は、Lucas-Kanadeポイントトラッカにおける特徴ポイントの検出を概略的に示したものである。
【0081】
図7は、制御画像領域内のユーザーの手について取り込まれた画像を表わしていると仮定する。従って、図7の範囲は、取り込まれた画像全体の一部にしか過ぎず、これは(例えば)ボーダー1015または領域1060内にある部分である。
【0082】
上記に説明したように特徴ポイント2100が検出される。以下の説明を明瞭にするために、一つの特徴ポイント、つまり、ユーザーの親指先端の位置のポイント2110だけを考慮するが、同様の説明がすべての検出特徴ポイントに適用可能である。
【0083】
Lucas-Kanadeのトラッキング処理を連続して使用することにより、特徴ポイント2110は、それぞれ対応する図8と図9の特徴ポイント2110’と2110”と相関する。これによって、図8と図9において概略的に示されているように、図示されているような事前の親指位置によって、手の動きが表わされることになる。
【0084】
しかしながら、Lucas-Kanadeトラッカは、多くの問題に陥りやすい。特に、画像内の自己相似性により(例えばタイル張りや草木など)、無関係なポイントが画像間で相関して表れてしまう可能性があり、偽の見かけだけの動きを作り出してしまう。さらに、画像ノイズによる見かけ上のポイントの動きと、真の動き(小さい動きや遅い動き)は区別することができない。もし詳細なUI制御を実現することが望ましいのであれば、このような区別が特に重大になってくる。これらの問題点について以下に詳述する。
【0085】
問題点1:
例えば、壁、天井、または床のタイルの線に沿ったタイル間の接合は、全て非常に類似して見える。一つのフレームから次のフレームへのカメラ画像における、わずかなノイズまたはブレにより、次の画像において、一つの接合点が、そのライン上のどこか別の接合点に似て見えてしまうことがある。結果的に、画像ノイズによって、Lucas-Kanadeトラッカのステップ2におけるポイントマッチが、フレーム間で異なるタイル接合点を対応づけてしまうことになり、見かけ上の動きを生じさせてしまう可能性がある。似たような問題は、壁紙や縞模様のTシャツなどの繰り返し模様の場合に起こりうる。
【0086】
問題点2:
問題点1と同様に、タイルやプリントの繰り返し模様などのように完全に類似するものではないとしても、草木などのような自己相似性オブジェクトは十分に類似性があるので、以下の例示シナリオにおいて問題を生じ得る。ユーザーが手を上げて室内用鉢植えの前に立っており、植物の最上部は覆い隠され、下部の枝が見えるようになっている。例えば指先と葉の集まりに該当する画像内のポイントを識別する。その後、ユーザーが手の位置を低くして、植物の下方の枝を覆い隠し、最上部の枝が見えるようにする。Lucas-Kanadeトラッカは、下方に動く手の中のポイントを追跡するが、植物の下半分において識別されたオリジナルポイントがないので、見えるようになった植物の上半分において、類似ポイントを見つけ出そうとする。そのため、これを上向きの動きと解釈して、感知されたユーザーの動きを効率よく打ち消してしまう。
【0087】
問題点3:
ここで、図10(a)と図10(b)を参照する。これらの図は、あるポイントが6枚の連続したフレーム上をどのように移動するように見えるかを示す例である。図10(a)は、このシーンでは静止しているポイントであるが、カメラ画像内のノイズのために移動しているように見える。このポイントは遠くへの動きはなく、恐らく1または2ピクセル分の動きである。図10(b)は、直線上を移動しているポイントを示す。この場合、ノイズによって、ポイントが少しだけ進路から逸脱しているように見える。これらの図から、単に、ポイントが二つのフレーム間で移動した距離についての閾値だけでは、ポイントが本当に静止しているかどうかを判断するには不十分であるということが明らかである。二つの連続するフレーム間において、静止ポイントが、移動ポイントの見え方に相当する距離を移動するように見える。ポイントの本当の動きの速度が遅くなるにつれ、あるいはカメラのフレームレートが増すにつれ、この問題は悪化する。
【0088】
これらの問題をすべて考慮し、本発明の実施例では、Lucas-Kanadeトラッカに対する一連の改良をOptical Flowクラス50内に組み込むこととした。
【0089】
第一に、問題点1と2に記載されたような自己相似ラインに対する誤ったマッチングと、自己相似オブジェクトに亘るポイントの出現を減らすための技術としてリバースマッチングがある。トラッカは、現在のフレーム内でトラックすべき良い点を見つけ、その位置をその前のフレーム内で決めると仮定する。前のフレーム内のこのポイントをあたかも追跡に適した特徴を有しているととらえ、現在のフレームにおいて、そのポイントの位置を決めようとすることによって、この位置を確認できる(すなわち、逆時間での追跡)。トラッキング・アルゴリズムによって、その現在のフレーム内のポイントが(例えば)そのポイントがあるべき場所のピクセル内、または他の閾値距離内であると分かった場合、有効なポイントのペアであるとみなされる。そうでなければこのポイントは廃棄される。
【0090】
このように、この技術は、画像フレーム間の自己類似性によるトラッキングエラーにより(特に、ノイズを画像化するような変動が入り込んだ場合)、画像フレーム間で相互交換できる見込みがなくなるため、フレームペアの中で反対方向に適用されると一貫性がなくなる可能性があるという事実を利用するものである。従って、この技術によって、このような誤った追跡の大部分が除去される。
【0091】
このように、OpticalFlowクラス50は、もともと現在の画像内で選択された点に対応する、先行する画像内のポイントとの対応に基づいて、現在の画像内のテストポイントを選択し、現在の画像内でもともと選択されたポイントとテストポイントが実質的に一致しないポイントのペアを廃棄するよう動作することができる。
【0092】
第二に、図11をさらに参照すると、差分イメージングは、二重の効果をもたらす技術である。その主目的は、マッチングをするためのなんらかの試みがなされる前に移動をしなかったポイントを取り除くことによって、マッチング処理を高速化することにあるが、逆マッチングを行う前に、誤ってマッチしたいくつかのポイントを取り除くという第二の利点もある。
【0093】
図11に示される差分画像は、前述したように、画像ペアを得るためにDifferenceMetricクラス30によって作成され、画像内のポイントは以下のように取り除かれるか、あるいは維持される。
【0094】
i.差分画像の黒い(静止)部分にある、現在の画像からのポイントは即座に取り除かれる。
【0095】
ii.差分画像の白い(稼働)部分にある、現在の画像からのポイントは、前の画像に対して追跡される。もし前の画像でのこのポイントが、差分画像の黒い部分にある場合、そのポイントは取り除かれる。
【0096】
iii.一方、もし前の画像でのポイントもまた差分画像の白い部分にある場合は、逆マッチングが適用され、ポイントのペアの妥当性が確認される。
【0097】
このように、OpticalFlowクラス50は、先行する画像においてポイントを選択する前に、差分画像での均等位置が、算出された差分閾値レベルを下回る差分を示している現在の画像内のポイントを廃棄するよう動作することができる。
【0098】
上記に代えてまたはそれに加えて、OpticalFlowクラス50は、先行する画像におけるポイントとの一致に基づいて現在の画像でのテストポイントの選択を行う前に、差分画像における均等位置が、算出閾値レベルを下回る差分を示している先行する画像でのポイントを廃棄するように動作することも可能である。
【0099】
前述のように、DifferenceMetricクラス30は、ポイントが移動したかどうか決めるために可変の閾値を適用する。これは、もし画像の中で非常に大きい動きがあると思われる場合は、(ユーザーによって、あるいは現行のゲームコンテキストを考慮しながら自動的に)この閾値を上げることが可能であり、それによって、システムが些細な移動に対してそれほど敏感にならないようにするだけでなく、逆マッチングがそれ自体で取り除くことができる数よりもっと多くの誤った結果を取り除くことができる。
【0100】
差分画像を算出することと、この画像を参照してポイントの状況を算出することは、ポイントマッチングと逆マッチングを行う場合と比較して、非常に高速であり、従って、全体のトラッキング精度を改善するだけでなく、かなりコンピューティング資源を節約できる。
【0101】
任意に、想定されているまたはこれまでに算出された、画像フレームレートとユーザー動作の一般的なスピードについての知識を考慮して、さらに、UI制御を囲む領域の外にあるポイントを自動的に取り除くことが可能である。UI制御を囲む領域とは、典型的な移動により一つ、二つのフレームによりカバーする距離に相当するが、フレーム数は多いことが望まれる。これによって、画像のどこか別の場所にある真の動きであって無関係な動きを無視しながら、トラッキングするためのUI制御への移動ポイントを検出することが可能になる。
【0102】
第三に、マルチフレーム移動ポイント分析を使用して、上記に概説した第三の問題点に対処し、本当に移動しているポイントと、ノイズの微小震動を示している静止ポイントとを区別する。
【0103】
図12(a)および図12(b)を参照すると、ノイズ微小震動のランダムな性質は、静止ポイントの動きが全体に亘る方向に向くわけではないということを意味していることがわかる。従って、移動をしているポイントは結果的に、元の場所からかなり離れたところへ移動して測定可能となり、一方、対照的に、ただランダムに動いているポイントは同じ場所にとどまる傾向がある。
【0104】
これらの二つの結果を区別するために、一般的に、ImageHistoryクラス20内にある数多くの画像を考慮する(少なくとも3つ、一般的には10から20)。最初に、現在の画像内で見つけられるトラッキングポイントを正常なものとして先行する画像内で位置を決める。しかし、先行する画像内のそれらの各位置は、追跡すべきポイントとされ、さらにその前の画像等の中で探し出される。フレームレートがどのくらい速いか、動きがどれくらい遅いと予想されるかによって、このポイントは必要とされる限り逆に追跡することが可能であるが、ImageHistoryクラス20内のメモリ制限や、(各フレームの追加に従い直線的に増加する)処理時間の制限に左右される。
【0105】
このポイントの履歴を分析し、最後のR個のフレームの間に、いずれかのポイントがある閾値(例えば、円1101により表された閾値)よりも遠くへ離れたかどうかを判断し、それに従い、このポイントは、静止ポイントよりむしろ移動ポイントであると判断する。一般的に、Rは経験的に決定されるものであるか、あるいは、ビデオキャプチャフレームレートの関数である。計算負荷を減らすため、任意に、あるポイントが一旦、移動ポイントであると判断されたとき(すなわち、関係する画像数に亘って閾値となる画像間動作を超えた場合)は、さらなるフレームを使ってこれ以上逆トラッキングをする必要はない。
【0106】
本当に移動しているピクセルにより見込まれる移動量に対する閾値は、もちろん、数Rおよびビデオフレームレートにより変動する。この閾値は、より高いR値に対して概して高くなり、より低いフレームレートに対しても概して高くなる。
【0107】
このように、OpticalFlowクラス50は、ImageHistoryクラス20に格納される先行する画像に対して動きを検出するため、ポイントのペアを再帰的に取得し、これらのポイントのペアによる累積した最終的な動きを、距離閾値と比較し、意図的な動きを画像ノイズから区別するよう動作可能である。
【0108】
この技術の付加的な利点は、以前に移動していたが現在は止まっているポイントを、一度も移動しなかった点から区別して拾い上げることもできるということである。任意に、これらのポイントは、例えば、もし現在のフレームよりも前に、ポイントが静止しているフレーム数が所定のフレーム数より少ない場合は、差分画像化技術のもとでの排除の対象から外される場合もある。
【0109】
任意に、この技術によって、移動しているポイントおよび静止しているポイントが、ディスプレイ305上で異なるように描き、移動しているポイントについては、辿ってきた経路を示すことができる。これは、例えば、指導モードにおいて、どのようにして制御が行われるかについてユーザーに対して有益なフィードバックを与えることができるので、ユーザーはより速く使い方を学ぶことができる。
【0110】
上記したトラッキング方法は、誤ったポイントのペアを取り除いて演算を軽減するために、差分画像化技術を用いるのが好ましいので、DifferenceHistoryクラス40は、ImageHistoryクラス20内の画像に対応する差分画像を格納する。
【0111】
特に、「累積した」差分画像の黒の領域で開始するポイントは、最終のJ個の画像内ではいかなるポイントにおいても動いていないことが保証される。このように、差分画像での解決を使用する場合、累積的差分の中にある任意の黒いポイントは、マルチフレーム移動ポイント分析から除外することが可能である。というのは、それらが全体の画像履歴にわたって静止しているであろうことは周知だからである。このように、画像履歴の中で前回の画像から再帰的にポイントのペアを取得する前に、累積した差分データを使用して、連続した画像間で、算出された差分閾値レベルを超えるには十分な差分がなかったような点を廃棄する。
【0112】
PointHistoryクラス60は、追跡するのによいと識別されたポイントの最終J個の画像全体での位置を維持する(すなわち、ある程度の時間、意図的な動きを示したと判断された点を格納する)。以下で説明するように、これらのポイントのうちの少なくともいくつかは、UI制御とユーザーのインタラクションを分析するために使用される。
【0113】
MotionModelクラス70は、剛性体の動作をモデル化するための関数を備えるクラスである。通例は、一連の事前事後のポイントのペアがとられ、この事前ポイントと事後ポイントを最もよくマップする動作が算出される。一般的に、この動作モデルからの出力は4つの値であり、それらは、X方向移動量(Xトランスレーション)、Y方向移動量(Yトランスレーション)、スケール、および、ある原点を中心とする回転(ローテーション)である。
【0114】
本発明の実施例において、ポイントのペアは、現在および先行する画像から取り出される。別の実施例において、より滑らかな動作モデルを作成するために、さらに古い画像からのポイントペアが使用されるが、使用される画像数およびカメラフレームレートによって、この履歴データはUI制御のレスポンスの中に残像の出現を作り出してしまう場合もある。
【0115】
これをモデル化するための方法はたくさんあるが、一般的に、このモデルを描写し、前後のポイントをマップする一連の数式が使用される。この数式は、回転量、トランスレーション量およびスケール量を描写する多くの未知数を含む。観察されたポイントからこれらの未知数を予測するために、ポイントのペアに対して最小二乗誤差式解法が使用される。
【0116】
本発明の実施例において、この数式の解法は、ハウスホルダーの直交化最小二乗法(Householder Orthogonalization least squares method)と呼ばれ、例えば、Gene H. Golub and Charles F Van loan "Matrix Computations", 第三版 (ISBN: 0801854148)に記載されている。
【0117】
MotionModelクラス70は、後述のように、多くの動作モデル(またはサブクラス)を含む。
【0118】
RotScaleTransModel関数は、ボディが、回転、拡大縮小(スケール)、およびX方向またはY方向の並進移動(トランスレーション)が可能であると仮定する。これらの動作が測定されるときに基準とする原点の位置は必ず与えられなければならない。
【0119】
主計算の前に、原点位置は、各ポイントの位置から減算される。
【0120】
ポイントについての修正された現在およびそれより以前の位置は以下のように与えられると仮定する。
【0121】
xCurrentkは、第k番目のポイントの現在のx座標
yCurrentkは、第k番目のポイントの現在のy座標
xPrevkは、第k番目のポイントの前回のx座標
yPrevkは、第k番目のポイントの前回のy座標
これらのポイントの集合体から、以下の未知数を予測する必要がある。
【0122】
スケール:ボディのサイズが増えた量
Θ: ボディの回転角
transX:トランスレーションにおけるXコンポーネント
transY:トランスレーションにおけるYコンポーネント
このモデルにおいて、現在のポイントがどのようにして前のポイントから導き出されたかを表す数式は、次のようになる。
【0123】
【数1】
【0124】
それぞれのポイントペアはすべてこのような二つの数式をもたらす。この目的は、式の集合体におけるエラーを最小限にするスケール、Θ、transXおよびtransYを見出すことである。
【0125】
この数式は、マトリックス/ベクトル方程式として再公式化される。
【0126】
【数2】
【0127】
n個のポイントに対し、マトリックスは2n列を有する。ハウスホルダー直交化アルゴリズムは、このマトリックス式に対して最小誤差解(M、N、PおよびQ)を見出すために使用され、ここで、M = scale.sinΘ、N = scale.cosΘ、P = transX、およびQ = transYである。
【0128】
このようにして、一旦、M、N、P、およびQの値が得られると、スケール、Θ、transX、およびtransYに対する値が以下のように算出される。以前に開示されたポイントペア式から以下が確認される。
【0129】
【数3】
【0130】
これは、次を意味する。
【0131】
【数4】
【0132】
ここで、Θのすべての値に対して
【0133】
【数5】
【0134】
である。従って、
【0135】
【数6】
【0136】
である。それによって、
【0137】
【数7】
【0138】
これを、第二のポイントペア式に代入すると、
【0139】
【数8】
【0140】
をもたらし、一方、transX = PおよびtransY = Qである。
【0141】
RotScaleModel関数は、RotScaleTransModelと同様の方法で機能し、ボディが枢着点で固定されると仮定する。これによって、この点を中心に拡大縮小し、回転させることができるが、並進移動値は常にゼロである。
【0142】
結果的に、ポイントペアの数式は、すでに与えられている式とは若干異なる。
【0143】
【数9】
【0144】
また、この等式は、マトリックス/ベクトル式として再公式化され、
【0145】
【数10】
【0146】
前回と同様に解かれて、スケールとΘを得る。
【0147】
RotScaleTransModelおよびRotScaleModel関数に代えて、あるいはこれに加えて、画像内のポイントはラインとして接合することが可能であり、あるいは、これらのポイントを横切るエッジについてエッジ検出を行うことが可能である(例えば、指の周りなど)。結果として生じるラインは、いわゆるラドン変換を用いて相対角度の変化を決定するために使用することができ、これによって、変換の投影角度が、画像内のライン角度と一致する場合のピークレスポンス(あるいは分布)が得られる。この技術は、回転データを得るために用いることができる。
【0148】
同様に、一つのフレームから次のフレームまで、ラインにより表される物体のサイズは固定しているとみなすことができる。従って、ラドン変換の投射角に沿ってラインを測定することによって、スケールの変化およびそれによる距離の変化を決定できる。
【0149】
TransModel関数は、ボディが単に移動することはできても、回転あるいは拡大縮小することができないと仮定する。よって、このモデルは、全てのポイントの平均動作をとり、適宜、transXおよびtransYを設定する。
【0150】
【数11】
【0151】
MotionConstraintsクラス80は、多くの制約をモデル化する関数を備える。すでに開示された動作モデルを使って、概念上のボディのために、とりわけ次のようなプロパティを決定できる。
【0152】
つまり、位置、向き、スケール、速度、角速度およびスケーリング速度である。
【0153】
制約関数は、これらのプロパティの値を取り込み、ある程度の制約に従うようにそれらの値を修正する。このようなボディは、すぐに作用するような制約をいくつか有することが可能である。
【0154】
考えられる制約関数のいくつかの例について以下に記載する。
【0155】
LinearConstraint関数は、ボディが、直線に沿って存在するように位置を固定する。また、この線の方向の速度成分によって速度を置き換えることも可能である。
【0156】
RangeConstraint関数は、ボディのプロパティのいずれに対しても上限値と下限値を設定する。例えば、この関数は以下のために使用することが可能である。
【0157】
- 有限長のスクロールバーを作る。
【0158】
- ダイヤルが半分だけ回るようにする。
【0159】
- 並進移動(トランスレーション)をゼロに固定する(それによって本体はその位置で枢軸回転する)。
【0160】
- ボディがほぼ最大速度を維持することを確実にする。
【0161】
尚、並進移動をゼロに固定するための制約を使用してRotScaleTransModel関数を使用することと、制約なしでRotScaleModel関数を使用することは等しくない。前者においては、並進移動はモデル化された後、捨ててしまう。後者において、モデル化は、(RotScaleModel関数によって、できる限り最良であると解釈される並進移動の存在している状態で)単に回転およびスケールをモデル化することのみに向けられている。
【0162】
UIControlクラス90は、PointHistoryクラス60、MotionModelクラス70、およびMotionConstraintsクラス80の間を調整して、UI制御の、位置、向き、スケール、速度、角速度、スケール速度(スケール変化率)、および形(円、細長い形、正方形等一定を維持するもの)のためのデータを管理できる。
【0163】
UIControlクラス90は、PointHistoryクラス60を調べて、現在移動しているポイントのみを考慮する。その後、UIControlの形状(例えば、図4において、外側境界線1015)の外側に現在位置があるものはすべて除外する。
【0164】
このようなポイントが十分にある場合、PointHistoryクラス60内の移動ポイントについての現在と以前の位置のみを取り、これらをMotionModelクラス70に渡して、このフレームペアに対して変換を行う。
【0165】
UI制御の速度、角速度、およびスケール速度は、このフレームに対する変換に一致するよう設定される。これらのプロパティ(位置、向き、およびスケールも同様に)は、この修正制御のために存在するMotionConstraintsクラス80内の制約のいずれかの対象となる。このように修正されたプロパティは、ユーザー入力として機能するために利用可能になる。
【0166】
任意に、これらの修正されたプロパティに対してエラー値を算出できる。このエラー値は、修正された速度、角速度およびスケール速度を使用して、最後のフレーム内のすべてのポイントを変換し、それらのポイントが終了する場所と、現在のフレーム内で観察された場所との差分を見ることにより算出される。この差分はその後スケール変更されるので、このエラーは、移動をした各ポイントに対する総距離の一部となる。この値のログをとって、すべてのポイントからのすべてのエラーの合計をポイントの数で割る。これによって、動作の大きさや、いくつのポイントが観察されたかということとは無関係なエラー値が得られ、ユーザーの動きがどの程度うまく制約内にとどまっているのかという表示をすることができる。このような表示は、例えば、ユーザーにフィードバックを与える場合に使うことができる。一例として、もしユーザーがあまりに速くスクロール制御を動かそうとしている場合、赤く点灯するようにしてもよい。
【0167】
任意に、エラー値は、検出された動きのエラーの程度が低くUI制御の動作制約にしっかりと適合しているかどうかによって、UI制御のロックを制御する際に利用することもできる。この構成により可能なのは、例えば、人がダイヤル制御を「通過して」歩くときに、ダイヤル制御はロックしたままにできる。というのは、動きの推移成分に比べると回転成分が非常に低いので、結果的に高いエラーになるからである。逆に、もし人が一つの手ではなく二つの手を使っても、もし、あたかもハンドルを操作するように両手を一緒に回転させた場合は、ダイヤル制御のロックを解除するために有効な動作となる。
【0168】
制御の中で、ユーザーのインタラクションであると解釈するような移動ポイントが十分にない場合(例えば、ユーザーの手がUI制御の境界線を離れている場合)、速度(必要に応じて、ダイレクトの速度、角速度および/またはスカラー速度)を均等に維持できるので運動量をモデル化する、あるいは、ゆるやかに減速する(摩擦をモデル化する)、あるいは、ゼロを設定する(簡単であるがしっかりとした制御をモデル化する)、という三つの選択肢がある。
【0169】
ここで、上で例示されたUI制御に特有なUIControlクラス90の作用の構成を詳述する。
【0170】
再び図5を参照すると、スクロール制御は、TransModelMotion関数を使用して実行され、(この場合では)垂直なラインに動きを拘束するためにLinearConstraint関数を使用する。また任意に、(有限長のスクロール制御が要求される場合は)ラインに沿って範囲を制限できる。もし十分な移動ポイントが見つからない場合、速度はゆっくりと減速するままにしておき、運動量とある程度の摩擦を伴ったスクロールバーをモデル化する。
【0171】
スクロール制御はまた、前に開示された差分画像化技術を使うことにより、オプティカルフロー計算の効率を改善することができる。非常に大きくて速いユーザーの動きが予想されるときは、差分画像化閾値を適切に上昇させることが可能である。差分画像化技術は、このUI制御にとって特に有益である。というのは、この技術は比較的範囲が広いので、それに比例して、外部からのポイントをより多く含んでいることが期待されるからである。
【0172】
再び図4を参照すると、ダイヤル制御は、RotScaleTrans関数を使用して実行され、RangeConstraint関数を使用して、速度ゼロおよびスケール速度ゼロの場合を有するように制限する。ダイヤル制御はまた、その動きから算出したエラー値を使って、ユーザーが好適な回転動作を行ったかどうかを判断する。そのような動作が行われなかった場合、ダイヤル制御はロックする。同様に、移動ポイントが十分にない場合、ダイヤル制御はロックする。
【0173】
任意に、このダイヤル制御は、OpticalFlowケース50関数の効率化を行うため、差分バッファを使用しない。その理由は、差分バッファは、あまり感度が高くないので、ダイヤル制御を操作しているときに生じる非常にゆっくりで微細な動きを拾い上げることができないからである(後で開示するようなノイズ校正に依存する)。しかし、ダイヤル制御の領域は、スクロール制御よりもかなり小さいので、計算負荷に対するインパクトも同様に小さい。
【0174】
ホイール制御は、ダイヤル制御と同様の方法で実行されるが、ロックは全くかけない。これによって、ホイール内で算出された動作はすべて回転動作として解釈されることが可能となり、ホイール内で十分な移動ポイントが見つからない場合は、ホイールはスピンを続ける(あるいは減速する)。
【0175】
ダイヤル制御についての他の変形としては、スケールダイヤルがある。これは、RotScaleTrans関数が、ダイヤルの原点から離れる移動ポイントのトランスレーションを、ダイヤルを表示すべきスケールを示すと解釈することを利用する。従って、上記のダイヤル制御とは異なり、RotScaleTrans関数がスカラー速度を制限せず、その代わりに、ダイヤルが速度ゼロと角速度ゼロの場合を有するように制限する。従って、スケールダイヤルは、ユーザーが手を開閉するのに従って、拡大したり縮小したりする。一般的に、スケールダイヤルは、通常のダイヤル制御と同じようにロックする。
【0176】
角速度ゼロに対する制約もまた取り除かれる場合は、ダイヤルの回転とスケール変更を同時に行うことができる。従って、例えば、回転をステレオバランスに関連づける一方、スケールをゲーム機により演奏される音のボリュームに関連付けることが可能である。
【0177】
RangeConstraint関数は、例えば、スケールダイヤルが小さくなりすぎて明確に見ることができなくなることを避けるために、あるいは、動作分析のために十分なポイントが含まれるように、最大およびまたは最小スケールを制限することが可能である。スケールホイールも、同様に実現可能である。
【0178】
上記の動作と制約を使用した制御についての他の組み合わせは、当業者にとっては明らかなことである。また、スケールダイヤルと同じように、ポイントのトランスレーションに対し長さが依存するようなバー等、他のUIフォームファクタも同様に当業者にとって明らかである。
【0179】
同じように、インタラクションの他のモードにおいては、グラフィック制御を表示しない場合もある。例えば、RotScaleTransModelおよびRotScaleModelは、ビデオカメラに向かってパンチをする拳のスケールの変化を、ボクシングゲームでの入力として作用するように解釈できる。このシナリオにおいては、全体画像は「透明な」制御領域であって、その領域内のユーザーの動きは適宜解釈される。
【0180】
このタイプのインタラクションは、制御の表面的な見かけにより示される。例えば、ダイヤル制御は、予期される通りダイヤルで示され、片手でダイヤルを調節するように自然にユーザーを促す。対照的に、このダイヤルをステアリングホイールによって表すことも可能であり、これは両手でのアプローチを促す。ダイヤルのグラフィックスは、線画または画像に似たものでよく、透明な領域を伴っても伴わなくてもよい。グラフィックとのインタラクションの際、グラフィックと一致している取り込み画像内の移動領域は、重畳され、あるいはアルファブレンドされ、ユーザーはその行為についてよりよいフィードバックを受けられるようにする。
【0181】
同様に、UI制御が、状況に応じて動作を起動し、変化させ、あるいは、動作を取得することはいうまでもない。例えば、スクロール制御は、多くのダイヤルを含む多くのアイコンを表示することが可能である。これらのアイコンが「アクティブな」領域にスクロールして入ると、同じグラフィックを使った実際のダイヤル制御(またはその変形)に継ぎ目なく入れ替わる。ユーザーは、スクロール制御が多くの選択可能なダイヤル制御を格納しているということを経験する。他の例では、UI制御は、アクティブ領域内にスクロールするときのみ並進移動可能とすることにより、「好みの」または「ショートカットとなる」制御を選択し、画面上に常駐させるためにスクロールバーから引き出すことができる。
【0182】
図13は、ビデオカメラが装着あるいは接続されたソニー(商標登録)プレイステーション・ポータブル(商標登録)ビデオゲーム装置(PSP)についての本発明の実施例を示したものである。PSPにより使用されている「クロスメディアバー」ナビゲーションシステムが例示されており、これは、カテゴリアイコンの横列1310を備える。そのうちの一つであるセッティング1315がアクティブ領域に位置し、設定に関連するサブカテゴリの縦列1320が表示されるようにする。これらのサブカテゴリの中で、現在は「ネットワーク更新」が反転表示されている。
【0183】
カテゴリアイコンの横列は、上記のスクロール制御を使って制御され、このカテゴリアイコンの一つに関連するサブカテゴリの縦列が表示されると、これも同様にスクロール制御を使って制御される。両者の違いは、動作モデルに適用された横のトランスレーション制限内にあるか、縦のトランスレーション制限内にあるかということである。同様に、反転表示されるカテゴリの値またはプロパティを変更することも可能であり、例えば、上記のダイヤル制御を使って、オン/オフのために左に回したり右に回したり、あるいは該当する場合には連続値を設定する。
【0184】
これらの制御間のインタラクションは、起動、変更(例えば、ロックとロック解除)、または所望の結果を得るために適切な動作の取得をすることにより管理できる。例えば、縦方向スクロール制御あるいはダイヤル制御のいずれかが使用されているとき、現在のカテゴリアイコンにより占有されるアクティブ領域において、横方向の動きが検出されるまで、この横方向スクロールの制御をロックすることができる。これによって、例えば、ユーザーがサブカテゴリの設定を調整している間に、うっかり主要動作がカテゴリを変更してしまうことを防止し、他の制御を調整中は、ユーザーによって具体的に再開が行われるまで横方向スクロールバーはロックするという経験をユーザーに与える。これとは別のインタラクションスキームにおいて、他のUI制御が動きを検出したとき、横方向スクロール制御はただロックするようにする。その結果、横方向スクロール制御はレスポンスの優先度が最も低い。縦方向スクロール制御は、次の優先度レベルを有し、現在反転表示されているサブカテゴリのためのダイヤル制御が最も高い優先度を有する。
【0185】
ここで図14を参照すると、ユーザー制御検出の方法は、
S10 画像を取り込むステップと、
S20 ImageHistoryクラス20に画像を格納するステップと、
S30 現在とそれより前の画像の間の差分に従って画像を作成するステップと、
S40 DifferenceHistoryクラス40に差分画像の閾値型を格納するステップと、
S50 ImageHistoryクラス20に格納されている画像を分析し、ある画像から次の画像へと追跡するための有効なポイントを見出すステップと、
S60 これらのポイントをPointsHistoryクラス60内に格納するステップと、
S70 現在およびそれより前のフレームにおいて選択されたポイントの動きをモデル化するステップと、
S80 UI制御に適する動作制約を適用するステップと、
S90 制約された動作をユーザー入力として解釈するステップと、を備える。
【0186】
ここで開示されるユーザー制御検出機構の実施例の作用に相当する、上記方法のさらに別の実施例は、本発明の範囲の想定内であることはいうまでもない。
【0187】
図15は、ノイズ校正方法を説明するフローチャートである。すでに開示されているように、入力されたグレースケール画像をバイナリ画像に変えるために閾値をDifferenceMetricクラス30内に設定することが必要とされる。ノイズ校正方法は、カメラ画像から効果的にノイズを取り除く一方で、好ましくは、できる限り低くすることできる閾値を見出すように設計される。また、暗騒音をサンプリングするためにユーザーがそのシーンから外に出ることなく達成できるものであることが好ましい。
【0188】
この方法は、DifferenceMetricクラス30を校正するためにOpticalFlowクラス50の関数を使用する。これによって、OpticalFlowクラス50が動きとみなすものとDifferenceMetricクラス30が動きとみなすものの間に、好適な対応関係があることを保証する。
【0189】
この方法は、以下のステップを備える。
【0190】
S1.移動ポイントを決定するために、全体の画像領域に亘って最終のJ個のフレームに対してOpticalFlowクラス50の計算を行うステップ。この計算を支援するためにDifferenceMetricクラス30は使用しない。
【0191】
S2.PointHistory 60からのすべての移動ポイントを識別して、それらを廃棄するステップ。
【0192】
S3.残っている各静止ポイントに対し、その位置におけるもっとも最近の、閾値差分画像でない画像を見て、その値を記録するステップ。これによって、静止している画像にあるポイントから一組の差分値が求められる。
【0193】
S4.統計学的に有意であるように充分な値を得るために、いくつかのフレームに対してステップ1から3を繰り返すステップ。
【0194】
S5.これらの静止差分値を、ゼロを中心とする正規分布としてモデル化し、変動量を算出するステップ。
【0195】
S6.この変動量にある程度適切な値(例えば3)を乗じ、それを差分距離閾値に対する基礎として使用するステップ。3という値は、静止ポイントは閾値の要因にはならないという99.7%の信頼度を示している。
【0196】
別の実施例において、多くの連続したフレームに亘って、各ピクセルに対する差分値のヒストグラムを作成することによって、ノイズが校正される。これは、カメラノイズが常に存在し、かつレベルが同じぐらいなので、ヒストグラムでのピークを形成することが予想されるということを利用するものであり、これに対して、画像における実際の動きはランダムなものであり、広く分散する差分値を有する。結果的に、最小から最大まで差分値を見た場合に、ヒストグラムで発生する最初の明瞭なピークが平均ノイズ値であり、そこに閾値を設定する。
【0197】
いずれかの実施例によるノイズ校正を行う場合であっても、このときのシーンの照度が均一であることが好ましい。従って、好ましい実施例においては、テレビディスプレイによる輝度とカラー出力は校正の間は大きく変動すべきではない。主な目的は、テレビ画面による環境での照度における急激な変化によってシャドーが急速に変化し、それによって、見かけ上の動きが生じるのを回避するためである。これとは対照的に、ここで記載されている方法を通常に実行している間は、テレビまたは他の環境要因からの照度変化による見かけ上の動きに対して、各画像をトラッキングするための候補ポイントを評価することによって、有効に耐性を提供することができる。
【0198】
任意に、ランダムなカメラノイズを抑制するために、ノイズ低減法を使用することも可能であり、それによって、意図的な動きを区別する。カメラノイズのランダム性とは、空間または時間での平均化によって、効果的なノイズレベルを減らすことを意味する。しかしながら、(各ピクセルに対してn×nピクセル領域に亘る)空間での平均化は、小さいながらも真の動きに対する感度を減少させる一方で、(連続した画像に亘る)時間での平均化は、ゆっくりであっても真の動きに対する感度を減少させる。このように、これらの技術の適用性は、ビデオカメラのフレームレートまたは解像度にそれぞれ依存するものであり、またユーザーがインタラクションを行うと考えられる制御のタイプにも依存する。差分の閾値化をする前に、どのポイントにおいても平均化を適用できることはいうまでもない。オリジナルの画像から最良の結果が得られるとしても、これはグレースケール差分画像に対する単一平均化に比べると、(赤、緑、青値に対する)三回の平均化が必要であり、したがって、品質と計算負荷に関するこれらの比較値は、アプリケーションに依存する。
【0199】
ソフトウェアにより制御されたデータ処理装置によって、少なくとも部分的であっても、上記のような本発明の実施例が実行される限りは、このようなソフトウェアを提供するコンピュータプログラムと、このようなコンピュータプログラムが格納される記憶装置または伝送媒体が、本発明の態様として認識されることはいうまでもない。
【図面の簡単な説明】
【0200】
【図1】図1は、プレイステーション2の全体的なシステムアーキテクチャを概略的に示す。
【図2】図2は、エモーション・エンジンのアーキテクチャを概略的に示す。
【図3】図3は、グラフィックス・シンセサイザの構成を概略的に示す。
【図4】図4は、ダイヤル制御を概略的に示す。
【図5】図5は、スクロール制御を概略的に示す。
【図6】図6は、ユーザー制御検出機構のブロック図である。
【図7】図7は、特徴点の比較について概略的に示す。
【図8】図8は、特徴点の比較について概略的に示す。
【図9】図9は、特徴点の比較について概略的に示す。
【図10】図10は、動作タイプを区別する際の問題点を示す。
【図11】図11は、2つの画像間の閾値差分を示す。
【図12】図12は、動作のタイプを区別するための手段を示す。
【図13】図13は、ソニー(登録商標)PSP(登録商標)のナビゲーションシステムに対するユーザー制御検知機構の適用を例示する。
【図14】図14は、ユーザー制御検出の方法を示すフローチャートである。
【図15】図15は、ノイズ校正の方法を示すフローチャートである。
【技術分野】
【0001】
本発明はデータ処理の制御に関する。特殊な例として、ビデオゲーム処理操作の制御に関連するが、本発明はより一般的に他の種類のデータ処理にも適用するものである。
【背景技術】
【0002】
従来のビデオゲーム機において、ユーザーは、ビデオモニターまたはテレビ画面上のゲームを見て、手持ち式のキーパッドまたはジョイスティックを使用してゲームの操作を制御する。ソニー(Sony、登録商標)プレイステーション(PlayStation、登録商標)2等のゲーム機については、手持ち式コントローラが、2本のジョイスティックと数個のユーザー操作キーを提供するものがあり、これは、ゲーム内でイベントが生じた場合、ユーザーに対し触覚性のフィードバックを提供するための振動エレメントを伴う。
【0003】
これらのゲーム機は、ビデオカメラを利用できることはすでに提案されている。これによって、ユーザーの画像をゲームシナリオの中に出現させることが可能となり、あるいは、空中で「ワンド」を振る等のユーザーのアクションを、ゲーム内のキャラクターが対応するアクションをするように変換できる。
【発明の開示】
【発明が解決しようとする課題】
【0004】
この構成において不都合な点は、ゲーム機能間で切り換えを行う場合、さらに一般的にゲーム機の操作を制御する場合、手持ち式のコントローラを操作しなければならないということである。
【0005】
制御について今まで出された提案は、一般的にユーザーが特殊な手袋をはめるようにするもので、特に、取り込まれた画像内で手袋をした手により検知を行うという特徴を有するものである。映画「マイノリティ・レポート」の中で、フィクションの例示が見られる。
【課題を解決するための手段】
【0006】
本発明のさまざまな各態様および特徴は、添付の請求の範囲において定義される。従属クレームによる特徴は、必要に応じて独立クレームの特徴と組み合わせることが可能であり、ただ単にクレーム内で明確に列記されている特徴だけではない。
【0007】
本発明の第一の態様は、ビデオカメラから連続した画像を受信するよう構成されたデータ処理装置を提供する。当該装置は、
データ処理装置の制御機能と対応づけられている画像領域内の選択されたポイントについて画像間動作を検出するための手段と、
該画像間動作について画像領域において検出が行われた場合、制御を実行するための手段と、を備え、
該検出手段は、m個の連続する一群の画像に亘る画像領域内のポイントについて累積的画像間動作を検出することによって画像間動作を検出するよう構成され、ここでmは少なくとも3であることを特徴とする。
【0008】
本発明の別の態様は、次のステップから成るデータ処理方法を提供する。すなわち、
ビデオカメラから、連続した取り込まれた画像を受信するステップと、
データ処理装置の制御機能と対応づけられている画像領域内にある、選択されたポイントについて画像間動作を検出するステップと、
画像間動作が画像領域において検出された場合に制御機能を実行するステップと、を備え、
該検出ステップは、m個の連続する一群の画像に亘る画像領域内のポイントについて累積的画像間動作を検出することによって、画像間動作を検出するよう構成され、ここでmは少なくとも3であることを特徴とする。
【0009】
本発明の別の態様は、上記の方法を実行するためのプログラムコードを有するコンピュータ・ソフトウェアを提供する。当該コンピュータ・ソフトウェアは、伝送媒体または記憶媒体等の準備媒体により提供されることが好ましい。
【0010】
本発明のさらなる個々の態様および特徴は、添付の請求の範囲において定義される。明示されない場合であっても、従属クレームの特徴は、さまざまに異なる独立クレームに対して適用される。
【発明を実施するための最良の形態】
【0011】
以下、例証のみを目的として、添付の図面を参照しながら本発明の実施例について説明する。
【0012】
図1は、プレイステーション2の全体的なシステムアーキテクチャを概略的に示すものである。システム・ユニット10は、システム・ユニットに接続可能なさまざまな周辺デバイスを備える。
【0013】
システム・ユニット10は、エモーション・エンジン100と、グラフィックス・シンセサイザ200と、ダイナミック・ランダム・アクセス・メモリ(DRAM)を有するサウンドプロセッサ・ユニット300と、読み出し専用メモリ(ROM)400と、コンパクトディスク(CD)およびデジタル多用途ディスク(DVD)リーダ450と、ランバス・ダイナミックランダムアクセスメモリ(RDRAM)ユニット500と、専用RAM750を有する入出力プロセッサ(IOP)700とを備える。(任意の)外付けハードディスクドライブ(HDD)800を接続する場合もある。
【0014】
入出力プロセッサ700は、2本のユニバーサル・シリアル・バス(USB)ポート715およびiLinkまたはIEEE1394ポート(iLinkは、株式会社ソニーがIEEE1394標準を実現したもの)を有する。IOP700は、USB、iLink、およびゲームコントローラのデータトラフィックのすべてを取り扱う。例えば、ユーザーがゲームをしているときに、IOP700はゲームコントローラからデータを受信し、このデータをエモーション・エンジン100へと送りだし、エモーション・エンジンは、それに従ってゲームの現在の状況を更新する。IOP700は、迅速なデータ転送速度を容易に実現するダイレクト・メモリ・アクセス(DMA)アーキテクチャを有する。DMAは、CPUを通過させずにメインメモリからデバイスへデータ転送を行う。USBインターフェースは、オープンホスト・コントローラ・インターフェース(OHCI)と互換性があり、1.5Mbpsから12Mbpsまでのデータ転送速度を処理できる。これらのインターフェースが装備されているということは、つまり、プレイステーション2は、ビデオカセット、レコーダー(VCRs)、デジタルカメラ、セットトップボックス、プリンタ、キーボード、マウスおよびジョイスティック等の周辺デバイスと潜在的に互換性があることを意味する。
【0015】
通常、USBポート715に接続している周辺デバイスとのデータ通信が円滑に行われるように、デバイスドライバ等の適切なソフトウェアを備えなければならない。デバイスドライバ技術は大変によく知られているので、ここで詳細は記載しないが、当業者であれば、ここに記載する実施例において、デバイスドライバまたは類似のソフトウェア・インターフェースが必要であると認識していることはいうまでもない。
【0016】
本実施例において、対応するマイクロフォン735とLEDインジケータ740が装備されたビデオカメラ730がUSBポートに接続されている。様々なタイプのビデオカメラを使用できるが、ビデオカメラ735として特にふさわしいタイプは、いわゆる「ウェブカム」である。すなわちこれは、単一の電荷結合素子(CCD)エレメントに基づく中分解能カメラであって、基本ハードウェアをベースとするリアルタイムデータ圧縮およびエンコーディング構成を含んでいるので、圧縮ビデオオーディオデータが、例えば画像内部をベースとするMPEG(モーション・ピクチャ・エキスパート・グループ)標準等の適切なフォーマットでカメラ730からUSBポート715へと送信され、プレイステーション2システム・ユニット10においてデコーディングされる。カメラLEDインジケータ740は、システム・ユニット10とのUSBデータ接続を介して制御データを受信し、このような制御データに応答して点灯するように構成される。
【0017】
USBポートとは別の、2本の他のポート705、710は、ゲーム関連の情報を格納するための専用不揮発性RAMメモリーカード720、手持ち式ゲームコントローラ725、または、例えばダンス・マット等の手持ち式コントローラに似たようなデバイス(図示せず)の接続を可能とする専用ソケットである。
【0018】
エモーション・エンジン100は、128ビット中央演算処理装置(CPU)であり、特にゲームアプリケーション用の三次元(3D)グラフィックスを効果的にシミュレーションするために設計されたものである。エモーション・エンジンの構成要素は、データバス、キャッシュメモリ、およびレジスタを含み、いずれも128ビットである。これによって、大容量マルチメディアデータの迅速な処理を容易にする。これと比較すると、従来のPCは、基本64ビットのデータ構造を有する。プレイステーション2の浮動小数点演算性能は、6.2GFLOPsである。エモーション・エンジンはまた、MPEG2デコーダ回路を備え、3DグラフィックスデータとDVDデータの同時処理を可能にする。エモーション・エンジンは、数学的変換およびトランスレーションを含む幾何学的計算を実行し、更に、例えば2つのオブジェクト間の摩擦の算出などのシミュレーションオブジェクトの物理的過程に関連する計算を行う。これによって、その次にグラフィックス・シンセサイザ200によって利用される画像レンダリングコマンドのシーケンスを作成される。画像レンダリングコマンドは、表示リスト形式で出力される。表示リストとは、描画コマンドのシーケンスであり、グラフィックス・シンセサイザに対して、どの初期グラフィックオブジェクト(例えば、点、線、三角形、スプライトなど)を画面上に描くか、および、どの座標に描くかを指示する。このように、典型的な表示リストは、頂点を描くためのコマンド、ポリゴン面に陰影をつけたり、ビットマップを描いたりする等のコマンドを含む。エモーション・エンジン100は、非同期で複数の表示リストを作成できる。
【0019】
グラフィックス・シンセサイザ200は、エモーション・エンジン100により作成された表示リストのレンダリングを行うビデオ・アクセラレータである。グラフィックス・シンセサイザ200は、複数の表示リストを処理し、追跡記録し、管理するグラフィックス・インターフェースユニット(GIF)を含む。グラフィックス・シンセサイザ200のレンダリング機能は、選択肢となるいくつかの標準出力画像フォーマット、すなわちNTSC/PAL、高精細度デジタルテレビ、およびVESAをサポートする画像データを作成できる。一般に、グラフィックス・システムのレンダリング能力は、それぞれがグラフィックス・プロセッサ内に位置するピクセルエンジンとビデオメモリの間のメモリ帯域幅により定められる。従来のグラフィックス・システムは、外付けのビデオ・ランダム・アクセス・メモリ(VRAM)を使用しており、これはオフチップバスを介してピクセルロジックに接続されるので、有効な帯域幅を制限する傾向にある。しかしながら、プレイステーション2のグラフィックス・シンセサイザ200は、単一の高性能チップ上のピクセルロジックおよびビデオメモリを提供し、これによって、毎秒38.4ギガバイトという比較的大きいメモリアクセス帯域幅を可能にする。グラフィックス・シンセサイザは、理論的に、毎秒7500万ポリゴンの最高描画容量を達成することが可能である。テクスチャ、ライティング、およびトランスペアレンシー等のあらゆるエフェクトを用いた場合であっても、毎秒2000万ポリゴンの持続速度で連続して描画することが可能である。従って、グラフィックス・シンセサイザ200は、フィルム品質の画像を描画することができる。
【0020】
サウンドプロセッサ・ユニット(SPU)300は、事実上、本システムのサウンドカードであり、デジタル多用途ディスク(DVDs)に使用されるサウンドフォーマットであるデジタル・シアター・サラウンド(DTS、登録商標)サウンドやAC−3(ドルビーデジタルとしても知られる)のような3Dデジタルサウンドを認識できる。
【0021】
対応するスピーカー構成310を伴ったビデオモニターあるいはテレビ等のディスプレイおよびサウンド出力装置305は、グラフィックス・シンセサイザ200およびサウンドプロセッッサ・ユニット300に接続され、ビデオ信号およびオーディオ信号を受信する。
【0022】
エモーション・エンジン100をサポートするメインメモリは、ランバス(Rambus)社製のRDRAM(ランバス・ダイナミック・ランダムアクセスメモリ)モジュール500である。このRDRAMメモリー・サブシステムは、RAM、RAMコントローラ、およびRAMをエモーション・エンジン100に接続するバスを備える。
【0023】
図2は、図1のエモーション・エンジン100のアーキテクチャを概略的に示したものである。エモーション・エンジン100は、浮動小数点ユニット(FPU)104と、中央演算処理装置(CPU)コア102と、ベクトルユニット・ゼロ(VU0)106と、ベクトルユニット・ワン(VU1)108と、グラフィックス・インターフェース・ユニット(GIF)110と、割り込みコントローラ(INTC)112と、タイマーユニット114と、ダイレクト・メモリ・アクセス・コントローラ116と、画像データ処理ユニット(IPU)116と、ダイナミック・ランダム・アクセスメモリ・コントローラ(DRAMC)120と、サブバスインターフェース(SIF)122と、を備え、これらの構成要素の全ては、128ビット・メインバス124を介して接続される。
【0024】
CPUコア102は、300MHzでクロック制御される128ビットプロセッサである。CPUコアは、DRAMC120を介して、メインメモリの32MBにアクセスする。CPUコア102の命令セットは、さらにマルチメディア命令を追加したMIPS IV RISC命令のいくつかを有するMIPS III RISCに基づくものである。MIPS IIIおよびIVは、MIPSテクノロジー社が所有する縮小命令セットコンピュータ(RISC)命令セットアーキテクチャである。標準の命令は、64ビットのツーウェイ・スーパースカラであり、これは、二つの命令を同時に実行できることを意味する。一方、マルチメディア命令は、二本のパイプラインを介した128ビット命令を使用する。CPUコア102は、16KBの命令キャッシュ、8KBのデータキャッシュ、および、CPUによるダイレクトプライベート使用のために確保されるキャッシュの一部である16KBのスクラッチパッドRAMを備える。
【0025】
FPU104は、CPUコア102用の第一コプロセッサとしての機能を果たす。ベクトルユニット106は、第二のコプロセッサとして機能する。FPU104は、浮動小数点積和演算器(FMAC)および浮動小数点除算演算器(FDIV)を備える。FMACおよびFDIVはどちらも32ビット値で演算を行うので、演算が128ビット値(4つの32ビット値から成る)で実行されると、4つのすべての部分において、並行して演算を実行できる。
【0026】
ベクトルユニット106および108は、数値演算を実行するものであって、ベクトル方程式の乗算および加算で数値を求める場合に極めて高速に行うことができる、基本的に専門FPUである。これらは、加算と乗算演算のための浮動小数点積和演算器(FMAC)、および除算と平方根演算のための浮動小数点除算演算器(FDIV)を使用する。また、これらは、マイクロプログラムを格納するための内蔵メモリを有し、ベクトル・インターフェース・ユニット(VIFs)を介して、システムの残りの部分とのインターフェースをとる。ベクトルユニット・ゼロ106は、専用128ビットバス124を介してCPUコア102に対するコプロセッサとして機能することが可能であり、従って、これは基本的に第二の専門FPUである。一方、ベクトルユニット・ワン108は、グラフィックス・シンセサイザ200への専用バスを有するので、それによって、完全に分離したプロセッサであると考えられる。二台のベクトルユニットを搭載することによって、ソフトウェア開発者は、CPUの異なる部分間で作業を切り分けることが可能となり、これらのベクトルユニットはシリアルまたはパラレル接続のいずれかで使用できる。
【0027】
ベクトルユニット・ゼロ106は、四つのFMACSと、一つのFDIVを備える。これは、コプロセッサ接続を介してCPUコア102に接続している。また、データ用ベクトルユニットメモリ4Kbと、命令用マイクロメモリ4Kbを有する。ベクトルユニット・ゼロ106は、表示用画像に関連する物理計算を行うために有用である。これは主に、CPUコア102と共に非パターン化幾何学処理を実行する。
【0028】
ベクトルユニット・ワン108は、五つのFMACSと二つのFDIVとを備える。これは、GIFユニット110へのダイレクトパスは有するが、CPUコア102へのダイレクトパスを有しない。また、データ用ベクトルユニットメモリ16Kbと、命令用マイクロメモリ16Kbを有する。ベクトルユニット・ワン108は、変換を実行する際に有用である。これは、主にパターン化された幾何学処理を実行して、作成された表示リストをGIF110に直接出力する。
【0029】
GIF110は、グラフィックス・シンセサイザ200に対するインタフェースユニットである。表示リストパケットの最初のタグ指定に従って、データを変換し、相互に複数の転送を調整しながら、描画コマンドをグラフィックス・シンセサイザ200に転送する。割り込みコントローラ(INTC)112は、DMAC116を除いた周辺デバイスからの割り込みを調整する役割を果たす。
【0030】
タイマーユニット114は、16ビットカウンタを有する四つの独立したタイマーから成る。このタイマーは、バスクロック(1/16または1/256間隔)によって、または外部クロックを介して駆動される。DMAC116は、メインメモリおよび周辺処理装置間の、または、メインメモリおよびスクラッチパッドメモリ間のデータ転送を行う。同時に、メインバス124を調整する。DMAC116のパフォーマンス最適化は、エモーション・エンジン性能を向上させる鍵となる方法である。画像処理装置(IPU)118は、圧縮された動画およびテクスチャ画像を展開するために用いる画像データプロセッサである。これは、I−PICTUREマクロブロック・デコーディング、カラースペース変換、およびベクトル量子化を実行する。最後に、サブバスインターフェース(SIF)122は、IOP700に対するインタフェースユニットである。サウンドチップおよび記憶装置等の入出力装置を制御するために、サブバスインターフェースは、それ自体のメモリおよびバスを有する。
【0031】
図3は、グラフィックス・シンセサイザ200の構成を概略的に示したものである。グラフィックス・シンセサイザは、ホストインターフェース202、セットアップ・ラスタライズユニット204、ピクセルパイプライン206、メモリインターフェース208、フレームページ・バッファ214およびテクスチャページ・バッファ216を含むローカルメモリ212、およびビデオコンバータ210を備える。
【0032】
ホストインターフェース202は、ホストとデータのやりとりを行う(エモーション・エンジン100のCPUコア102の場合)。ホストからの描画データおよびバッファデータは双方とも、このインターフェースを通過する。ホストインターフェース202からの出力は、グラフィックス・シンセサイザ200に供給される。このグラフィックス・シンセサイザ200は、グラフィックスを展開し、エモーション・エンジン100から受け取った頂点情報に基づいてピクセルを描画し、各ピクセルの、RGBA値、深度値(例えばZ値)、テクスチャ値およびフォグ値等の情報を算出する。RGBA値は、赤、緑、青(RGB)のカラー構成要素を特定し、Α(アルファ)構成要素は画像オブジェクトの不透明性を表す。アルファ値は、完全に透明から完全に不透明まで変化させることができる。ピクセルデータは、ピクセルパイプライン206に供給され、ここで、テクスチャマッピング、フォギングおよびアルファブレンディング等の処理を行い、算出されたピクセル情報に基づいて最終的な描画のカラーを決定する。
【0033】
ピクセルパイプライン206は、16個のピクセルエンジンPE1、PE2、・・・PE16を備え、最大16ピクセルを同時に処理できる。ピクセルパイプライン206は、32ビットカラーおよび32ビットZバッファで、150MHzで動作する。メモリインターフェース208は、ローカル・グラフィックス・シンセサイザ・メモリ212からデータを読み込み、かつ、書き込みを行う。ピクセル操作の終了時には、メモリに対して描画ピクセル値(RGBAおよびZ)を書き込み、メモリからフレームバッファ214のピクセル値を読み込む。フレームバッファ214から読み込まれるこれらのピクセル値は、ピクセルテストまたはアルファブレンディングのために使用される。メモリインターフェース208はまた、ローカルメモリ212から、フレームバッファの現在の内容に対するRGBA値を読み込む。ローカルメモリ212は、グラフィックス・シンセサイザ200に内蔵される32Mビット(4MB)のメモリである。これは、フレームバッファ214、テクスチャバッファ216および32ビットZバッファ215で構成できる。フレームバッファ214は、カラー情報のようなピクセルデータが格納されるビデオメモリの部分である。
【0034】
グラフィックス・シンセサイザは、視覚的な細部を三次元ジオメトリに加えるために、二次元から三次元へのテクスチャマッピング処理を使用する。各テクスチャは、三次元画像オブジェクトの周囲に巻きつけられ、伸ばされ、そして曲げられて、三次元のグラフィック効果を与える。テクスチャバッファは、画像オブジェクトに対するテクスチャ情報を格納するために使用される。Zバッファ215(別名、深度バッファ)は、ピクセルについての深度情報を格納するために利用できるメモリである。画像は、グラフィックスプリミティブまたはポリゴンとして知られる基本構成ブロックにより構築される。ポリゴンが、Zバッファリングを使って描かれる場合、各ピクセルの深度値は、Zバッファに格納される対応する値と比較される。Zバッファに格納される値が新しいピクセル値の深度以上の場合、このピクセルが可視であると決定され、その結果、そのピクセルは描画されることとなって、Zバッファは新しいピクセル深度により更新される。しかしながら、Zバッファ深度値が新しいピクセル深度値よりも小さい場合、新しいピクセル値はすでに描画されたものの後ろ側にあって、描かれることはない。
【0035】
ローカルメモリ212は、フレームバッファとZバッファとにアクセスするための1024ビットの読み込みポートおよび1024ピットの書き込みポート、およびテクスチャ読込み用の512ビットのポートを有する。ビデオコンバータ210は、ある特定の出力フォーマットにおいて、フレームメモリの内容を表示するよう機能する。
【0036】
図4および図5により、いくつかの異なるユーザーインターフェース(UI)制御について説明する。
【0037】
図4は、概略的にダイヤル制御を示したものである。
【0038】
図4における長方形のアウトラインは、カメラ730によって取り込まれ、ディスプレイ305上に表示されている画像の外縁を概略的に表すものである。動作中、カメラ730によって、取り込まれる連続した画像またはフレームは、エモーション・エンジン100によって、グラフィックス・シンセサイザ200に渡され、グラフィックス・シンセサイザのビデオ出力のすべてあるいは一部に対する背景として表示される。
【0039】
本実施例では、カメラ730は、ユーザー1000の方へ向けられている。
【0040】
ダイヤル制御1010は、(グラフィックス・シンセサイザによって、)背景取り込み画像上に重畳される。このダイヤル制御は、ポインタ1020がその中で表示される円形ボーダー1015を備える。ポインタは、ゲームまたはゲーム機の変数に対応づけてもよい。その結果、(例えば)時計回りにポインタを動かすことにより変数を増やし、逆に、反時計回りにポインタを動かすことにより変数を減少させる。このような方法で、ダイヤル制御は、ポテンショメータのような機械的回転制御の操作をシミュレーションすることができる。ポインタができる動きは、点線で示される。ユーザーがポインタをどのように動作させるかについては後述する。
【0041】
ダイヤル制御を操作するために、ユーザーは、ボーダー1015内の少なくとも一部に手を置く。そして、ユーザーの手の動きが、ポインタ1020の軸(回転中心)1030を基準として検出される。この動きがどのように検出されるかについては後述するが、このような検出によって次のような効果がある。すなわち、もしボーダー1015内のユーザーの手の全体の動きが中心1030を基準として時計回り方向であると検出された場合、ポインタは、それに対応して時計回りに動かされる(そして、ゲームまたはゲーム機の変数は増加する)。もしボーダー1015内のユーザーの手の全体の動きが中心1030を基準として反時計回り方向であると検出された場合、ポインタは、それに対応して反時計回りに動かされる(そして、ゲームまたはゲーム機の変数は減少する)。ポインタの動きまたは回転は、手の動きと同じあるいは比例するよう構成できる。また、仮想の「エンドストップ」を備えることもできる。それによって、特定の方向への連続した手の動きが、ポインタの連続した回転につながることなく、エンドストップの一方に到達したときにポインタの回転が止まるようにする。
【0042】
任意に、円形ボーダー1015の中で適切な動きが検出されない場合、ダイヤルをロックする(動きを抑制する)ことができ、それによって、偶発的に調整されてしまうことを防ぐ。このダイヤルは、色を変えることによって、そのロック状況を示唆できる。
【0043】
ゲームまたはゲーム機の変数は、ただちに変更することができる。または、このような変更は、ユーザーがポインタの回転を止めるまで、あるいはボーダー1015内部から手を引き出すまで保留できる。ダイヤル制御を容易にしている機構については、後述する。
【0044】
図5は、スクロール制御に関して概略的に示したものである。
【0045】
図4に似たような方法で、スクロールアイコン1050は、カメラ730から取り込まれたユーザー1000の画像上に重畳される。本実施例では、このスクロールアイコンは垂直にスクロールように構成されるが、もちろん、適切な方向であればどの方向にスクロールさせてもよい(または実際には、例えばスクロールアイコンがたくさん並んでいる場合は複数の方向でもよい)。このアイコンは、いつでも、現在見えているものを超えて拡張可能である。エンドレスなルーレット式フォーマットに構成するのが好ましいが、単純なライン構造に構成することも可能である。
【0046】
ここでの基本概念は、一般的な垂直方向の手の動きによって、(または、非垂直方向な手の動きの垂直成分によって)、アイコンを上下にスクロールさせることができるということである。前述の通り、アイコンのスクロール動作は、ユーザーの手の垂直な動作と等しくすることが可能であり、そうでなければ、このような動作に比例する、または、依存するものであるようにできる。この垂直動作は、アイコンを囲んでいる画像の領域1060内で検出できる。
【0047】
検出領域1060は他の選択肢も可能である。ユーザーが、ある特定の方向にアイコンを垂直方向にスクロールさせる動きを開始し、領域1060から手を引き出しながら、垂直方向に手を動かし続けることができる。このアイコンは、エンドレスに、または、減衰(減速)するように、垂直にスクロールし続けることができる。ユーザーは、領域1060の中に、静止している手または動いている手を再び入れることによって、この連続した動きを止める(逆転させるあるいは強化する)ことができる。
【0048】
選択ボックス1070を説明する。一般的にこれは、ディスプレイ内で静止しており、所望のアイコンが選択ボックス内に入るまでアイコンを上下させることにより、アイコンの一つを選択できる。従って、もしアイコンが(例えば)ゲームオプションまたは音楽トラックを表わす場合は、ユーザーが、ボックス1070内にアイコンを配置することによって、ゲームオプションを実行する、または音楽トラックを再生させることが可能である。
【0049】
スクロール制御を容易にする機構について後述する。
【0050】
再び図4を参照すると、ダイヤル制御の変形として、ホイール制御がある。ホイール制御は、ダイヤル制御と同様の方法で動作する。しかし、ホイールの動きは、ユーザーがホイールボーダー1015によって囲まれている領域内で動作を開始し、ホイールボーダー1015から手を引き出しながら手を動かし続けることによって、ホイールを回転させることができる点において、スクロール制御に類似している。このアクションの間、手の動きが一貫している場合、ホイールは、あたかも自身の運動量で動くように、エンドレスにまたは減衰(減速)するようにスピンし続ける。ユーザーは、必要に応じて、ホイールボーダー1015により囲まれている領域内に、静止した手または動いている手を再度入れることによって、この継続している動きを停止(逆転または強化)させることができる。
【0051】
このホイール制御は、例えば、垂直スクロールアイテムが円形状をなしているホイール上に示されたオプションから選択を行うために、またはアクションを行う際にゲームキャラクターが使用するエネルギーレベルを表わすために、使用してもよい。
【0052】
任意に、ホイールは常にロックを外した状態にしておくことが可能であり、それによって、ホイールボーダー1015内で検出されたどんな動きでも、潜在的にスピンを誘発するようにすることができる。
【0053】
ホイール制御を容易にしている機構については、後述する。
【0054】
図6は、ソフトウェア命令下で動作するエモーション・エンジン100により実行されるユーザー制御検出機構を示すブロック図である。説明を簡略化するため、この図はオブジェクト指向プログラムのためのオブジェクトクラスを示すものであり、ここでクラスは、データとそのデータ上で動作可能な関数とを備える。例えば、Imageクラス10は、画像内の各ピクセルの幅、高さ、カラーチャンネルの数、およびそのカラー等の情報を含むことが可能である。また、Imageクラス10は、このデータに作用する関数をたくさん有することができる。例えば、GetNumPixels()、GetPixelColour(int x、int y)、およびSetPixelColour(int x、int y、Colour RGB)はそれぞれ、画像サイズの数値を決め、所定の座標上にあるピクセルのカラー値を取得し、所定の座標におけるピクセルのカラー値を設定することを表す。
【0055】
従って、以下の説明において、あるクラスがある特性または情報を有すると言われる場合、それはそのクラス内のデータについて言及しているのであり、一方、そのクラスがそのような情報に作用していると言われるときは、そのクラス内の関数に関連する、と理解される。
【0056】
図6において、要約すると、エモーション・エンジン100等のデータ処理装置に取り付けられたビデオカメラ730が、画像(すなわち、Imageクラス10に属するデータ)を作成する。ImageHistoryクラス20は、最終のJ個の画像を格納する。DifferenceMetricクラス30は、現在およびそれより以前の画像を保持し、それらを処理して、連続画像がどこで異なっているか、またどの程度異なるかを示す画像を作成する。これらの差分画像は、閾値とされDifferenceHistoryクラス40に格納される。OpticalFlowクラス50における関数は、ImageHistoryクラス20内の画像を分析して、一つの画像から次の画像まで追跡するための有効で認識可能なポイントを見つけ出す。任意に、OpticalFlowクラス50における関数は、DifferenceHistoryクラス40を使って、この処理を検証し処理速度を上げることができる。PointHistoryクラス60は、OpticalFlowクラス50の関数により識別されたポイントのリストと、ImageHistoryクラス20内の各画像のどこにそれらのポイントが位置するかを格納する。
【0057】
次に、MotionModelクラス70は、これらのポイントのペアの間で位置変更に相当する動きをモデル化する。現在およびその前の画像に対する移動ポイントについてその前後位置のリストを作り、それらの位置から規定どおりに、トランスレーション、スケールおよび回転モデルを作成する。任意に、MotionConstraintクラス80は、算出されたオブジェクトの動き・位置を取り込み、ユーザーインターフェース(UI)制御の所望の動きに従って、それを制限する(例えば、廃棄トランスレーション)。
【0058】
UserlnterfaceControl(UlControl)クラス90は、PointHistoryクラス60内の位置を取り込み、MotionModelクラス70に対してそれらを供給し、それから結果として生じる動作を取り入れて、MotionConstraintsクラス80から、一般的に一つまたは複数の制約を適用する。
【0059】
これによって、この制約された動作は、個々のUI制御の動きを表す。
【0060】
ここで、本発明の実施例のための、これらのクラスの詳細について説明する。
【0061】
Imageクラス(10)は、画像のサイズ(幅と高さ)、カラーチャンネルごとに可能な輝度値の数、およびカラーチャンネルの数を保持する。画像のサイズは、カメラの解像度(例えば320×240または640×480)に依存することが多い。しかし、制御が画面の小さな領域でのみ行われる場合、任意にこの小さな領域が画像として扱われ、元画像の残りは廃棄してもよい。
【0062】
一般的に使用される画像についての三つの主要なタイプは、以下のものである。
【0063】
i.カラー画像(3カラーチャンネル、各チャネルに対して256輝度値)
ii.グレースケール画像(256輝度値を伴った1カラーチャンネル)
iii.バイナリ画像(2輝度値を伴った1カラーチャンネル−白黒)
ビデオカメラ730は、ある程度固定したフレームレート(例えば毎秒30、60、または120フレーム)で、カラー画像を作成する。これらは、ImageHistory 20に渡される前に、グレースケール画像に変換される。
【0064】
ImageHistoryクラス20は、上記のようにカメラから取り込まれる最終のJ 個のグレースケール画像を格納する。新規画像が追加される毎に、最も古いものは保管画像の端から落とされる。例えば、Jは、3から14あるいはそれ以上の場合もある。
【0065】
DifferenceMetricクラス30は、二つの画像間の差分を算出して、それを閾値とする関数を提供する。この関数は、入力として二つのカラー画像(例えば、現在およびそれ以前の画像)を取り込む。各ピクセルに対し、各カラーチャンネルにおける差分が合計され、結果として生じる値によってグレースケール画像を作成される。その後、この画像は、スリーポイント・ガウシアンブラー・コンボリューションフィルター(three point Gaussian blur convolution filter)を用いて滑らかにされ、ある程度のトレランスが与えられる。最後に、この画像は閾値とされ、画像のどの部分が十分な量の変化があったかを示すバイナリ画像を生成する。この差分閾値がどのように選択されるかについては、ノイズ校正に関連して後で開示する。
【0066】
このように、DifferenceMetricクラス30は、差分データを作成するよう動作可能であり、二つの連続する画像の間のピクセル値における差分に比例する一連の値を備え、この後、差分データを滑らかにするよう動作可能である。
【0067】
さらに、DifferenceMetricクラス30は、算出された差分閾値レベルで、差分データに閾値を適用するように動作可能で、結果として生じるバイナリ差分データを出力する。
【0068】
DifferenceHistoryクラス40は、一連のN−1バイナリ画像を提供する。それぞれの画像が、DifferenceMetricクラス30から取得した、ImageHistory内の二つの連続する画像間の差分を維持する。ImageHistoryクラス20と同様に、新規な画像が加えられるたびに、格納されたもののうち最も古いものは廃棄される。
【0069】
さらに、これはまた「累積的な差分画像」を維持する。DifferenceHistory内の個々の画像のいずれかが白いピクセルを有する場合、これは白いピクセルを有するバイナリ画像である。従って、これはDifferenceHistoryクラス40内の個々の画像の論理和関数とみなすことが可能である。もちろん、「黒」および「白」として表現するのは、ただ単に本説明を明確化するためである。実際には、このデータはピクセル位置ごとに1ビットとして格納されてもよく、あるいは、記憶装置内の効率性により他のフォーマットで格納することも可能である。目的は、ピクセル位置に対して検出動作をマップすることにある。
【0070】
例えば、別の静的な場面において、ある人が挨拶の際に手を振った場合、その累積する差分画像は、一般的にその人の肘を原点とする弓形に類似するものであり、ウェーブの範囲に相当する円弧の範囲を定める。
【0071】
このように、DifferenceHistoryクラス40は、一連の画像に対するバイナリ差分データを組み合わせるよう動作可能であり、算出差分閾値を超えた連続画像間の差分を示した一連の画像全体に亘るすべての点を示す累積バイナリ差分画像を作成する。
【0072】
OpticalFlowクラス50は、特徴ポイントとして作用する最新画像内のポイントを見つけ出し、ImageHistoryクラス20内の3つ以上の画像を通じてそれらのポイントを逆向きに追跡する。
【0073】
本発明の実施例において、ポイント追跡は、Lucas-Kanade ポイントトラッカに基づいている。これは1981年に開発され、Lucas, B., and Kanade, T., 「An Iterative Image Registration Technique with an Application to Stereo Vision」、第7回人工知能国際合同会議 7 (IJCAI)の声明書、674〜679ページにおいて公開されている。
【0074】
現在の画像、およびその前の画像の、二つの画像を与えられ、Lucas-Kanadeトラッカは、以下を行う。
【0075】
1.画像内の各ピクセルと対応づけられている固有値を分析することによって容易に認識可能な、現在の画像上の一セットの位置を定める。
【0076】
2.前の画像内で、これらのポイントに最も近く一致するものを見つける。
【0077】
3.見つけた場合、画像上で識別可能なポイントについての、前のおよび現在の位置を示す、一セットの位置のペアを出力する。
【0078】
このように、OpticalFlowクラス50は、現在の画像内で選択されたポイントとの対応関係に基づいて、前の画像内のポイントを選択するよう動作可能である。
【0079】
例示されているポイントは、画像内での形状の端部を表わすものであるか、または、このような形状の凹頂点を表わすポイントである。手を例にとると、特徴ポイントは、指の先端、および隣り合う指の間の頂点で識別される。
【0080】
図7乃至図9は、Lucas-Kanadeポイントトラッカにおける特徴ポイントの検出を概略的に示したものである。
【0081】
図7は、制御画像領域内のユーザーの手について取り込まれた画像を表わしていると仮定する。従って、図7の範囲は、取り込まれた画像全体の一部にしか過ぎず、これは(例えば)ボーダー1015または領域1060内にある部分である。
【0082】
上記に説明したように特徴ポイント2100が検出される。以下の説明を明瞭にするために、一つの特徴ポイント、つまり、ユーザーの親指先端の位置のポイント2110だけを考慮するが、同様の説明がすべての検出特徴ポイントに適用可能である。
【0083】
Lucas-Kanadeのトラッキング処理を連続して使用することにより、特徴ポイント2110は、それぞれ対応する図8と図9の特徴ポイント2110’と2110”と相関する。これによって、図8と図9において概略的に示されているように、図示されているような事前の親指位置によって、手の動きが表わされることになる。
【0084】
しかしながら、Lucas-Kanadeトラッカは、多くの問題に陥りやすい。特に、画像内の自己相似性により(例えばタイル張りや草木など)、無関係なポイントが画像間で相関して表れてしまう可能性があり、偽の見かけだけの動きを作り出してしまう。さらに、画像ノイズによる見かけ上のポイントの動きと、真の動き(小さい動きや遅い動き)は区別することができない。もし詳細なUI制御を実現することが望ましいのであれば、このような区別が特に重大になってくる。これらの問題点について以下に詳述する。
【0085】
問題点1:
例えば、壁、天井、または床のタイルの線に沿ったタイル間の接合は、全て非常に類似して見える。一つのフレームから次のフレームへのカメラ画像における、わずかなノイズまたはブレにより、次の画像において、一つの接合点が、そのライン上のどこか別の接合点に似て見えてしまうことがある。結果的に、画像ノイズによって、Lucas-Kanadeトラッカのステップ2におけるポイントマッチが、フレーム間で異なるタイル接合点を対応づけてしまうことになり、見かけ上の動きを生じさせてしまう可能性がある。似たような問題は、壁紙や縞模様のTシャツなどの繰り返し模様の場合に起こりうる。
【0086】
問題点2:
問題点1と同様に、タイルやプリントの繰り返し模様などのように完全に類似するものではないとしても、草木などのような自己相似性オブジェクトは十分に類似性があるので、以下の例示シナリオにおいて問題を生じ得る。ユーザーが手を上げて室内用鉢植えの前に立っており、植物の最上部は覆い隠され、下部の枝が見えるようになっている。例えば指先と葉の集まりに該当する画像内のポイントを識別する。その後、ユーザーが手の位置を低くして、植物の下方の枝を覆い隠し、最上部の枝が見えるようにする。Lucas-Kanadeトラッカは、下方に動く手の中のポイントを追跡するが、植物の下半分において識別されたオリジナルポイントがないので、見えるようになった植物の上半分において、類似ポイントを見つけ出そうとする。そのため、これを上向きの動きと解釈して、感知されたユーザーの動きを効率よく打ち消してしまう。
【0087】
問題点3:
ここで、図10(a)と図10(b)を参照する。これらの図は、あるポイントが6枚の連続したフレーム上をどのように移動するように見えるかを示す例である。図10(a)は、このシーンでは静止しているポイントであるが、カメラ画像内のノイズのために移動しているように見える。このポイントは遠くへの動きはなく、恐らく1または2ピクセル分の動きである。図10(b)は、直線上を移動しているポイントを示す。この場合、ノイズによって、ポイントが少しだけ進路から逸脱しているように見える。これらの図から、単に、ポイントが二つのフレーム間で移動した距離についての閾値だけでは、ポイントが本当に静止しているかどうかを判断するには不十分であるということが明らかである。二つの連続するフレーム間において、静止ポイントが、移動ポイントの見え方に相当する距離を移動するように見える。ポイントの本当の動きの速度が遅くなるにつれ、あるいはカメラのフレームレートが増すにつれ、この問題は悪化する。
【0088】
これらの問題をすべて考慮し、本発明の実施例では、Lucas-Kanadeトラッカに対する一連の改良をOptical Flowクラス50内に組み込むこととした。
【0089】
第一に、問題点1と2に記載されたような自己相似ラインに対する誤ったマッチングと、自己相似オブジェクトに亘るポイントの出現を減らすための技術としてリバースマッチングがある。トラッカは、現在のフレーム内でトラックすべき良い点を見つけ、その位置をその前のフレーム内で決めると仮定する。前のフレーム内のこのポイントをあたかも追跡に適した特徴を有しているととらえ、現在のフレームにおいて、そのポイントの位置を決めようとすることによって、この位置を確認できる(すなわち、逆時間での追跡)。トラッキング・アルゴリズムによって、その現在のフレーム内のポイントが(例えば)そのポイントがあるべき場所のピクセル内、または他の閾値距離内であると分かった場合、有効なポイントのペアであるとみなされる。そうでなければこのポイントは廃棄される。
【0090】
このように、この技術は、画像フレーム間の自己類似性によるトラッキングエラーにより(特に、ノイズを画像化するような変動が入り込んだ場合)、画像フレーム間で相互交換できる見込みがなくなるため、フレームペアの中で反対方向に適用されると一貫性がなくなる可能性があるという事実を利用するものである。従って、この技術によって、このような誤った追跡の大部分が除去される。
【0091】
このように、OpticalFlowクラス50は、もともと現在の画像内で選択された点に対応する、先行する画像内のポイントとの対応に基づいて、現在の画像内のテストポイントを選択し、現在の画像内でもともと選択されたポイントとテストポイントが実質的に一致しないポイントのペアを廃棄するよう動作することができる。
【0092】
第二に、図11をさらに参照すると、差分イメージングは、二重の効果をもたらす技術である。その主目的は、マッチングをするためのなんらかの試みがなされる前に移動をしなかったポイントを取り除くことによって、マッチング処理を高速化することにあるが、逆マッチングを行う前に、誤ってマッチしたいくつかのポイントを取り除くという第二の利点もある。
【0093】
図11に示される差分画像は、前述したように、画像ペアを得るためにDifferenceMetricクラス30によって作成され、画像内のポイントは以下のように取り除かれるか、あるいは維持される。
【0094】
i.差分画像の黒い(静止)部分にある、現在の画像からのポイントは即座に取り除かれる。
【0095】
ii.差分画像の白い(稼働)部分にある、現在の画像からのポイントは、前の画像に対して追跡される。もし前の画像でのこのポイントが、差分画像の黒い部分にある場合、そのポイントは取り除かれる。
【0096】
iii.一方、もし前の画像でのポイントもまた差分画像の白い部分にある場合は、逆マッチングが適用され、ポイントのペアの妥当性が確認される。
【0097】
このように、OpticalFlowクラス50は、先行する画像においてポイントを選択する前に、差分画像での均等位置が、算出された差分閾値レベルを下回る差分を示している現在の画像内のポイントを廃棄するよう動作することができる。
【0098】
上記に代えてまたはそれに加えて、OpticalFlowクラス50は、先行する画像におけるポイントとの一致に基づいて現在の画像でのテストポイントの選択を行う前に、差分画像における均等位置が、算出閾値レベルを下回る差分を示している先行する画像でのポイントを廃棄するように動作することも可能である。
【0099】
前述のように、DifferenceMetricクラス30は、ポイントが移動したかどうか決めるために可変の閾値を適用する。これは、もし画像の中で非常に大きい動きがあると思われる場合は、(ユーザーによって、あるいは現行のゲームコンテキストを考慮しながら自動的に)この閾値を上げることが可能であり、それによって、システムが些細な移動に対してそれほど敏感にならないようにするだけでなく、逆マッチングがそれ自体で取り除くことができる数よりもっと多くの誤った結果を取り除くことができる。
【0100】
差分画像を算出することと、この画像を参照してポイントの状況を算出することは、ポイントマッチングと逆マッチングを行う場合と比較して、非常に高速であり、従って、全体のトラッキング精度を改善するだけでなく、かなりコンピューティング資源を節約できる。
【0101】
任意に、想定されているまたはこれまでに算出された、画像フレームレートとユーザー動作の一般的なスピードについての知識を考慮して、さらに、UI制御を囲む領域の外にあるポイントを自動的に取り除くことが可能である。UI制御を囲む領域とは、典型的な移動により一つ、二つのフレームによりカバーする距離に相当するが、フレーム数は多いことが望まれる。これによって、画像のどこか別の場所にある真の動きであって無関係な動きを無視しながら、トラッキングするためのUI制御への移動ポイントを検出することが可能になる。
【0102】
第三に、マルチフレーム移動ポイント分析を使用して、上記に概説した第三の問題点に対処し、本当に移動しているポイントと、ノイズの微小震動を示している静止ポイントとを区別する。
【0103】
図12(a)および図12(b)を参照すると、ノイズ微小震動のランダムな性質は、静止ポイントの動きが全体に亘る方向に向くわけではないということを意味していることがわかる。従って、移動をしているポイントは結果的に、元の場所からかなり離れたところへ移動して測定可能となり、一方、対照的に、ただランダムに動いているポイントは同じ場所にとどまる傾向がある。
【0104】
これらの二つの結果を区別するために、一般的に、ImageHistoryクラス20内にある数多くの画像を考慮する(少なくとも3つ、一般的には10から20)。最初に、現在の画像内で見つけられるトラッキングポイントを正常なものとして先行する画像内で位置を決める。しかし、先行する画像内のそれらの各位置は、追跡すべきポイントとされ、さらにその前の画像等の中で探し出される。フレームレートがどのくらい速いか、動きがどれくらい遅いと予想されるかによって、このポイントは必要とされる限り逆に追跡することが可能であるが、ImageHistoryクラス20内のメモリ制限や、(各フレームの追加に従い直線的に増加する)処理時間の制限に左右される。
【0105】
このポイントの履歴を分析し、最後のR個のフレームの間に、いずれかのポイントがある閾値(例えば、円1101により表された閾値)よりも遠くへ離れたかどうかを判断し、それに従い、このポイントは、静止ポイントよりむしろ移動ポイントであると判断する。一般的に、Rは経験的に決定されるものであるか、あるいは、ビデオキャプチャフレームレートの関数である。計算負荷を減らすため、任意に、あるポイントが一旦、移動ポイントであると判断されたとき(すなわち、関係する画像数に亘って閾値となる画像間動作を超えた場合)は、さらなるフレームを使ってこれ以上逆トラッキングをする必要はない。
【0106】
本当に移動しているピクセルにより見込まれる移動量に対する閾値は、もちろん、数Rおよびビデオフレームレートにより変動する。この閾値は、より高いR値に対して概して高くなり、より低いフレームレートに対しても概して高くなる。
【0107】
このように、OpticalFlowクラス50は、ImageHistoryクラス20に格納される先行する画像に対して動きを検出するため、ポイントのペアを再帰的に取得し、これらのポイントのペアによる累積した最終的な動きを、距離閾値と比較し、意図的な動きを画像ノイズから区別するよう動作可能である。
【0108】
この技術の付加的な利点は、以前に移動していたが現在は止まっているポイントを、一度も移動しなかった点から区別して拾い上げることもできるということである。任意に、これらのポイントは、例えば、もし現在のフレームよりも前に、ポイントが静止しているフレーム数が所定のフレーム数より少ない場合は、差分画像化技術のもとでの排除の対象から外される場合もある。
【0109】
任意に、この技術によって、移動しているポイントおよび静止しているポイントが、ディスプレイ305上で異なるように描き、移動しているポイントについては、辿ってきた経路を示すことができる。これは、例えば、指導モードにおいて、どのようにして制御が行われるかについてユーザーに対して有益なフィードバックを与えることができるので、ユーザーはより速く使い方を学ぶことができる。
【0110】
上記したトラッキング方法は、誤ったポイントのペアを取り除いて演算を軽減するために、差分画像化技術を用いるのが好ましいので、DifferenceHistoryクラス40は、ImageHistoryクラス20内の画像に対応する差分画像を格納する。
【0111】
特に、「累積した」差分画像の黒の領域で開始するポイントは、最終のJ個の画像内ではいかなるポイントにおいても動いていないことが保証される。このように、差分画像での解決を使用する場合、累積的差分の中にある任意の黒いポイントは、マルチフレーム移動ポイント分析から除外することが可能である。というのは、それらが全体の画像履歴にわたって静止しているであろうことは周知だからである。このように、画像履歴の中で前回の画像から再帰的にポイントのペアを取得する前に、累積した差分データを使用して、連続した画像間で、算出された差分閾値レベルを超えるには十分な差分がなかったような点を廃棄する。
【0112】
PointHistoryクラス60は、追跡するのによいと識別されたポイントの最終J個の画像全体での位置を維持する(すなわち、ある程度の時間、意図的な動きを示したと判断された点を格納する)。以下で説明するように、これらのポイントのうちの少なくともいくつかは、UI制御とユーザーのインタラクションを分析するために使用される。
【0113】
MotionModelクラス70は、剛性体の動作をモデル化するための関数を備えるクラスである。通例は、一連の事前事後のポイントのペアがとられ、この事前ポイントと事後ポイントを最もよくマップする動作が算出される。一般的に、この動作モデルからの出力は4つの値であり、それらは、X方向移動量(Xトランスレーション)、Y方向移動量(Yトランスレーション)、スケール、および、ある原点を中心とする回転(ローテーション)である。
【0114】
本発明の実施例において、ポイントのペアは、現在および先行する画像から取り出される。別の実施例において、より滑らかな動作モデルを作成するために、さらに古い画像からのポイントペアが使用されるが、使用される画像数およびカメラフレームレートによって、この履歴データはUI制御のレスポンスの中に残像の出現を作り出してしまう場合もある。
【0115】
これをモデル化するための方法はたくさんあるが、一般的に、このモデルを描写し、前後のポイントをマップする一連の数式が使用される。この数式は、回転量、トランスレーション量およびスケール量を描写する多くの未知数を含む。観察されたポイントからこれらの未知数を予測するために、ポイントのペアに対して最小二乗誤差式解法が使用される。
【0116】
本発明の実施例において、この数式の解法は、ハウスホルダーの直交化最小二乗法(Householder Orthogonalization least squares method)と呼ばれ、例えば、Gene H. Golub and Charles F Van loan "Matrix Computations", 第三版 (ISBN: 0801854148)に記載されている。
【0117】
MotionModelクラス70は、後述のように、多くの動作モデル(またはサブクラス)を含む。
【0118】
RotScaleTransModel関数は、ボディが、回転、拡大縮小(スケール)、およびX方向またはY方向の並進移動(トランスレーション)が可能であると仮定する。これらの動作が測定されるときに基準とする原点の位置は必ず与えられなければならない。
【0119】
主計算の前に、原点位置は、各ポイントの位置から減算される。
【0120】
ポイントについての修正された現在およびそれより以前の位置は以下のように与えられると仮定する。
【0121】
xCurrentkは、第k番目のポイントの現在のx座標
yCurrentkは、第k番目のポイントの現在のy座標
xPrevkは、第k番目のポイントの前回のx座標
yPrevkは、第k番目のポイントの前回のy座標
これらのポイントの集合体から、以下の未知数を予測する必要がある。
【0122】
スケール:ボディのサイズが増えた量
Θ: ボディの回転角
transX:トランスレーションにおけるXコンポーネント
transY:トランスレーションにおけるYコンポーネント
このモデルにおいて、現在のポイントがどのようにして前のポイントから導き出されたかを表す数式は、次のようになる。
【0123】
【数1】
【0124】
それぞれのポイントペアはすべてこのような二つの数式をもたらす。この目的は、式の集合体におけるエラーを最小限にするスケール、Θ、transXおよびtransYを見出すことである。
【0125】
この数式は、マトリックス/ベクトル方程式として再公式化される。
【0126】
【数2】
【0127】
n個のポイントに対し、マトリックスは2n列を有する。ハウスホルダー直交化アルゴリズムは、このマトリックス式に対して最小誤差解(M、N、PおよびQ)を見出すために使用され、ここで、M = scale.sinΘ、N = scale.cosΘ、P = transX、およびQ = transYである。
【0128】
このようにして、一旦、M、N、P、およびQの値が得られると、スケール、Θ、transX、およびtransYに対する値が以下のように算出される。以前に開示されたポイントペア式から以下が確認される。
【0129】
【数3】
【0130】
これは、次を意味する。
【0131】
【数4】
【0132】
ここで、Θのすべての値に対して
【0133】
【数5】
【0134】
である。従って、
【0135】
【数6】
【0136】
である。それによって、
【0137】
【数7】
【0138】
これを、第二のポイントペア式に代入すると、
【0139】
【数8】
【0140】
をもたらし、一方、transX = PおよびtransY = Qである。
【0141】
RotScaleModel関数は、RotScaleTransModelと同様の方法で機能し、ボディが枢着点で固定されると仮定する。これによって、この点を中心に拡大縮小し、回転させることができるが、並進移動値は常にゼロである。
【0142】
結果的に、ポイントペアの数式は、すでに与えられている式とは若干異なる。
【0143】
【数9】
【0144】
また、この等式は、マトリックス/ベクトル式として再公式化され、
【0145】
【数10】
【0146】
前回と同様に解かれて、スケールとΘを得る。
【0147】
RotScaleTransModelおよびRotScaleModel関数に代えて、あるいはこれに加えて、画像内のポイントはラインとして接合することが可能であり、あるいは、これらのポイントを横切るエッジについてエッジ検出を行うことが可能である(例えば、指の周りなど)。結果として生じるラインは、いわゆるラドン変換を用いて相対角度の変化を決定するために使用することができ、これによって、変換の投影角度が、画像内のライン角度と一致する場合のピークレスポンス(あるいは分布)が得られる。この技術は、回転データを得るために用いることができる。
【0148】
同様に、一つのフレームから次のフレームまで、ラインにより表される物体のサイズは固定しているとみなすことができる。従って、ラドン変換の投射角に沿ってラインを測定することによって、スケールの変化およびそれによる距離の変化を決定できる。
【0149】
TransModel関数は、ボディが単に移動することはできても、回転あるいは拡大縮小することができないと仮定する。よって、このモデルは、全てのポイントの平均動作をとり、適宜、transXおよびtransYを設定する。
【0150】
【数11】
【0151】
MotionConstraintsクラス80は、多くの制約をモデル化する関数を備える。すでに開示された動作モデルを使って、概念上のボディのために、とりわけ次のようなプロパティを決定できる。
【0152】
つまり、位置、向き、スケール、速度、角速度およびスケーリング速度である。
【0153】
制約関数は、これらのプロパティの値を取り込み、ある程度の制約に従うようにそれらの値を修正する。このようなボディは、すぐに作用するような制約をいくつか有することが可能である。
【0154】
考えられる制約関数のいくつかの例について以下に記載する。
【0155】
LinearConstraint関数は、ボディが、直線に沿って存在するように位置を固定する。また、この線の方向の速度成分によって速度を置き換えることも可能である。
【0156】
RangeConstraint関数は、ボディのプロパティのいずれに対しても上限値と下限値を設定する。例えば、この関数は以下のために使用することが可能である。
【0157】
- 有限長のスクロールバーを作る。
【0158】
- ダイヤルが半分だけ回るようにする。
【0159】
- 並進移動(トランスレーション)をゼロに固定する(それによって本体はその位置で枢軸回転する)。
【0160】
- ボディがほぼ最大速度を維持することを確実にする。
【0161】
尚、並進移動をゼロに固定するための制約を使用してRotScaleTransModel関数を使用することと、制約なしでRotScaleModel関数を使用することは等しくない。前者においては、並進移動はモデル化された後、捨ててしまう。後者において、モデル化は、(RotScaleModel関数によって、できる限り最良であると解釈される並進移動の存在している状態で)単に回転およびスケールをモデル化することのみに向けられている。
【0162】
UIControlクラス90は、PointHistoryクラス60、MotionModelクラス70、およびMotionConstraintsクラス80の間を調整して、UI制御の、位置、向き、スケール、速度、角速度、スケール速度(スケール変化率)、および形(円、細長い形、正方形等一定を維持するもの)のためのデータを管理できる。
【0163】
UIControlクラス90は、PointHistoryクラス60を調べて、現在移動しているポイントのみを考慮する。その後、UIControlの形状(例えば、図4において、外側境界線1015)の外側に現在位置があるものはすべて除外する。
【0164】
このようなポイントが十分にある場合、PointHistoryクラス60内の移動ポイントについての現在と以前の位置のみを取り、これらをMotionModelクラス70に渡して、このフレームペアに対して変換を行う。
【0165】
UI制御の速度、角速度、およびスケール速度は、このフレームに対する変換に一致するよう設定される。これらのプロパティ(位置、向き、およびスケールも同様に)は、この修正制御のために存在するMotionConstraintsクラス80内の制約のいずれかの対象となる。このように修正されたプロパティは、ユーザー入力として機能するために利用可能になる。
【0166】
任意に、これらの修正されたプロパティに対してエラー値を算出できる。このエラー値は、修正された速度、角速度およびスケール速度を使用して、最後のフレーム内のすべてのポイントを変換し、それらのポイントが終了する場所と、現在のフレーム内で観察された場所との差分を見ることにより算出される。この差分はその後スケール変更されるので、このエラーは、移動をした各ポイントに対する総距離の一部となる。この値のログをとって、すべてのポイントからのすべてのエラーの合計をポイントの数で割る。これによって、動作の大きさや、いくつのポイントが観察されたかということとは無関係なエラー値が得られ、ユーザーの動きがどの程度うまく制約内にとどまっているのかという表示をすることができる。このような表示は、例えば、ユーザーにフィードバックを与える場合に使うことができる。一例として、もしユーザーがあまりに速くスクロール制御を動かそうとしている場合、赤く点灯するようにしてもよい。
【0167】
任意に、エラー値は、検出された動きのエラーの程度が低くUI制御の動作制約にしっかりと適合しているかどうかによって、UI制御のロックを制御する際に利用することもできる。この構成により可能なのは、例えば、人がダイヤル制御を「通過して」歩くときに、ダイヤル制御はロックしたままにできる。というのは、動きの推移成分に比べると回転成分が非常に低いので、結果的に高いエラーになるからである。逆に、もし人が一つの手ではなく二つの手を使っても、もし、あたかもハンドルを操作するように両手を一緒に回転させた場合は、ダイヤル制御のロックを解除するために有効な動作となる。
【0168】
制御の中で、ユーザーのインタラクションであると解釈するような移動ポイントが十分にない場合(例えば、ユーザーの手がUI制御の境界線を離れている場合)、速度(必要に応じて、ダイレクトの速度、角速度および/またはスカラー速度)を均等に維持できるので運動量をモデル化する、あるいは、ゆるやかに減速する(摩擦をモデル化する)、あるいは、ゼロを設定する(簡単であるがしっかりとした制御をモデル化する)、という三つの選択肢がある。
【0169】
ここで、上で例示されたUI制御に特有なUIControlクラス90の作用の構成を詳述する。
【0170】
再び図5を参照すると、スクロール制御は、TransModelMotion関数を使用して実行され、(この場合では)垂直なラインに動きを拘束するためにLinearConstraint関数を使用する。また任意に、(有限長のスクロール制御が要求される場合は)ラインに沿って範囲を制限できる。もし十分な移動ポイントが見つからない場合、速度はゆっくりと減速するままにしておき、運動量とある程度の摩擦を伴ったスクロールバーをモデル化する。
【0171】
スクロール制御はまた、前に開示された差分画像化技術を使うことにより、オプティカルフロー計算の効率を改善することができる。非常に大きくて速いユーザーの動きが予想されるときは、差分画像化閾値を適切に上昇させることが可能である。差分画像化技術は、このUI制御にとって特に有益である。というのは、この技術は比較的範囲が広いので、それに比例して、外部からのポイントをより多く含んでいることが期待されるからである。
【0172】
再び図4を参照すると、ダイヤル制御は、RotScaleTrans関数を使用して実行され、RangeConstraint関数を使用して、速度ゼロおよびスケール速度ゼロの場合を有するように制限する。ダイヤル制御はまた、その動きから算出したエラー値を使って、ユーザーが好適な回転動作を行ったかどうかを判断する。そのような動作が行われなかった場合、ダイヤル制御はロックする。同様に、移動ポイントが十分にない場合、ダイヤル制御はロックする。
【0173】
任意に、このダイヤル制御は、OpticalFlowケース50関数の効率化を行うため、差分バッファを使用しない。その理由は、差分バッファは、あまり感度が高くないので、ダイヤル制御を操作しているときに生じる非常にゆっくりで微細な動きを拾い上げることができないからである(後で開示するようなノイズ校正に依存する)。しかし、ダイヤル制御の領域は、スクロール制御よりもかなり小さいので、計算負荷に対するインパクトも同様に小さい。
【0174】
ホイール制御は、ダイヤル制御と同様の方法で実行されるが、ロックは全くかけない。これによって、ホイール内で算出された動作はすべて回転動作として解釈されることが可能となり、ホイール内で十分な移動ポイントが見つからない場合は、ホイールはスピンを続ける(あるいは減速する)。
【0175】
ダイヤル制御についての他の変形としては、スケールダイヤルがある。これは、RotScaleTrans関数が、ダイヤルの原点から離れる移動ポイントのトランスレーションを、ダイヤルを表示すべきスケールを示すと解釈することを利用する。従って、上記のダイヤル制御とは異なり、RotScaleTrans関数がスカラー速度を制限せず、その代わりに、ダイヤルが速度ゼロと角速度ゼロの場合を有するように制限する。従って、スケールダイヤルは、ユーザーが手を開閉するのに従って、拡大したり縮小したりする。一般的に、スケールダイヤルは、通常のダイヤル制御と同じようにロックする。
【0176】
角速度ゼロに対する制約もまた取り除かれる場合は、ダイヤルの回転とスケール変更を同時に行うことができる。従って、例えば、回転をステレオバランスに関連づける一方、スケールをゲーム機により演奏される音のボリュームに関連付けることが可能である。
【0177】
RangeConstraint関数は、例えば、スケールダイヤルが小さくなりすぎて明確に見ることができなくなることを避けるために、あるいは、動作分析のために十分なポイントが含まれるように、最大およびまたは最小スケールを制限することが可能である。スケールホイールも、同様に実現可能である。
【0178】
上記の動作と制約を使用した制御についての他の組み合わせは、当業者にとっては明らかなことである。また、スケールダイヤルと同じように、ポイントのトランスレーションに対し長さが依存するようなバー等、他のUIフォームファクタも同様に当業者にとって明らかである。
【0179】
同じように、インタラクションの他のモードにおいては、グラフィック制御を表示しない場合もある。例えば、RotScaleTransModelおよびRotScaleModelは、ビデオカメラに向かってパンチをする拳のスケールの変化を、ボクシングゲームでの入力として作用するように解釈できる。このシナリオにおいては、全体画像は「透明な」制御領域であって、その領域内のユーザーの動きは適宜解釈される。
【0180】
このタイプのインタラクションは、制御の表面的な見かけにより示される。例えば、ダイヤル制御は、予期される通りダイヤルで示され、片手でダイヤルを調節するように自然にユーザーを促す。対照的に、このダイヤルをステアリングホイールによって表すことも可能であり、これは両手でのアプローチを促す。ダイヤルのグラフィックスは、線画または画像に似たものでよく、透明な領域を伴っても伴わなくてもよい。グラフィックとのインタラクションの際、グラフィックと一致している取り込み画像内の移動領域は、重畳され、あるいはアルファブレンドされ、ユーザーはその行為についてよりよいフィードバックを受けられるようにする。
【0181】
同様に、UI制御が、状況に応じて動作を起動し、変化させ、あるいは、動作を取得することはいうまでもない。例えば、スクロール制御は、多くのダイヤルを含む多くのアイコンを表示することが可能である。これらのアイコンが「アクティブな」領域にスクロールして入ると、同じグラフィックを使った実際のダイヤル制御(またはその変形)に継ぎ目なく入れ替わる。ユーザーは、スクロール制御が多くの選択可能なダイヤル制御を格納しているということを経験する。他の例では、UI制御は、アクティブ領域内にスクロールするときのみ並進移動可能とすることにより、「好みの」または「ショートカットとなる」制御を選択し、画面上に常駐させるためにスクロールバーから引き出すことができる。
【0182】
図13は、ビデオカメラが装着あるいは接続されたソニー(商標登録)プレイステーション・ポータブル(商標登録)ビデオゲーム装置(PSP)についての本発明の実施例を示したものである。PSPにより使用されている「クロスメディアバー」ナビゲーションシステムが例示されており、これは、カテゴリアイコンの横列1310を備える。そのうちの一つであるセッティング1315がアクティブ領域に位置し、設定に関連するサブカテゴリの縦列1320が表示されるようにする。これらのサブカテゴリの中で、現在は「ネットワーク更新」が反転表示されている。
【0183】
カテゴリアイコンの横列は、上記のスクロール制御を使って制御され、このカテゴリアイコンの一つに関連するサブカテゴリの縦列が表示されると、これも同様にスクロール制御を使って制御される。両者の違いは、動作モデルに適用された横のトランスレーション制限内にあるか、縦のトランスレーション制限内にあるかということである。同様に、反転表示されるカテゴリの値またはプロパティを変更することも可能であり、例えば、上記のダイヤル制御を使って、オン/オフのために左に回したり右に回したり、あるいは該当する場合には連続値を設定する。
【0184】
これらの制御間のインタラクションは、起動、変更(例えば、ロックとロック解除)、または所望の結果を得るために適切な動作の取得をすることにより管理できる。例えば、縦方向スクロール制御あるいはダイヤル制御のいずれかが使用されているとき、現在のカテゴリアイコンにより占有されるアクティブ領域において、横方向の動きが検出されるまで、この横方向スクロールの制御をロックすることができる。これによって、例えば、ユーザーがサブカテゴリの設定を調整している間に、うっかり主要動作がカテゴリを変更してしまうことを防止し、他の制御を調整中は、ユーザーによって具体的に再開が行われるまで横方向スクロールバーはロックするという経験をユーザーに与える。これとは別のインタラクションスキームにおいて、他のUI制御が動きを検出したとき、横方向スクロール制御はただロックするようにする。その結果、横方向スクロール制御はレスポンスの優先度が最も低い。縦方向スクロール制御は、次の優先度レベルを有し、現在反転表示されているサブカテゴリのためのダイヤル制御が最も高い優先度を有する。
【0185】
ここで図14を参照すると、ユーザー制御検出の方法は、
S10 画像を取り込むステップと、
S20 ImageHistoryクラス20に画像を格納するステップと、
S30 現在とそれより前の画像の間の差分に従って画像を作成するステップと、
S40 DifferenceHistoryクラス40に差分画像の閾値型を格納するステップと、
S50 ImageHistoryクラス20に格納されている画像を分析し、ある画像から次の画像へと追跡するための有効なポイントを見出すステップと、
S60 これらのポイントをPointsHistoryクラス60内に格納するステップと、
S70 現在およびそれより前のフレームにおいて選択されたポイントの動きをモデル化するステップと、
S80 UI制御に適する動作制約を適用するステップと、
S90 制約された動作をユーザー入力として解釈するステップと、を備える。
【0186】
ここで開示されるユーザー制御検出機構の実施例の作用に相当する、上記方法のさらに別の実施例は、本発明の範囲の想定内であることはいうまでもない。
【0187】
図15は、ノイズ校正方法を説明するフローチャートである。すでに開示されているように、入力されたグレースケール画像をバイナリ画像に変えるために閾値をDifferenceMetricクラス30内に設定することが必要とされる。ノイズ校正方法は、カメラ画像から効果的にノイズを取り除く一方で、好ましくは、できる限り低くすることできる閾値を見出すように設計される。また、暗騒音をサンプリングするためにユーザーがそのシーンから外に出ることなく達成できるものであることが好ましい。
【0188】
この方法は、DifferenceMetricクラス30を校正するためにOpticalFlowクラス50の関数を使用する。これによって、OpticalFlowクラス50が動きとみなすものとDifferenceMetricクラス30が動きとみなすものの間に、好適な対応関係があることを保証する。
【0189】
この方法は、以下のステップを備える。
【0190】
S1.移動ポイントを決定するために、全体の画像領域に亘って最終のJ個のフレームに対してOpticalFlowクラス50の計算を行うステップ。この計算を支援するためにDifferenceMetricクラス30は使用しない。
【0191】
S2.PointHistory 60からのすべての移動ポイントを識別して、それらを廃棄するステップ。
【0192】
S3.残っている各静止ポイントに対し、その位置におけるもっとも最近の、閾値差分画像でない画像を見て、その値を記録するステップ。これによって、静止している画像にあるポイントから一組の差分値が求められる。
【0193】
S4.統計学的に有意であるように充分な値を得るために、いくつかのフレームに対してステップ1から3を繰り返すステップ。
【0194】
S5.これらの静止差分値を、ゼロを中心とする正規分布としてモデル化し、変動量を算出するステップ。
【0195】
S6.この変動量にある程度適切な値(例えば3)を乗じ、それを差分距離閾値に対する基礎として使用するステップ。3という値は、静止ポイントは閾値の要因にはならないという99.7%の信頼度を示している。
【0196】
別の実施例において、多くの連続したフレームに亘って、各ピクセルに対する差分値のヒストグラムを作成することによって、ノイズが校正される。これは、カメラノイズが常に存在し、かつレベルが同じぐらいなので、ヒストグラムでのピークを形成することが予想されるということを利用するものであり、これに対して、画像における実際の動きはランダムなものであり、広く分散する差分値を有する。結果的に、最小から最大まで差分値を見た場合に、ヒストグラムで発生する最初の明瞭なピークが平均ノイズ値であり、そこに閾値を設定する。
【0197】
いずれかの実施例によるノイズ校正を行う場合であっても、このときのシーンの照度が均一であることが好ましい。従って、好ましい実施例においては、テレビディスプレイによる輝度とカラー出力は校正の間は大きく変動すべきではない。主な目的は、テレビ画面による環境での照度における急激な変化によってシャドーが急速に変化し、それによって、見かけ上の動きが生じるのを回避するためである。これとは対照的に、ここで記載されている方法を通常に実行している間は、テレビまたは他の環境要因からの照度変化による見かけ上の動きに対して、各画像をトラッキングするための候補ポイントを評価することによって、有効に耐性を提供することができる。
【0198】
任意に、ランダムなカメラノイズを抑制するために、ノイズ低減法を使用することも可能であり、それによって、意図的な動きを区別する。カメラノイズのランダム性とは、空間または時間での平均化によって、効果的なノイズレベルを減らすことを意味する。しかしながら、(各ピクセルに対してn×nピクセル領域に亘る)空間での平均化は、小さいながらも真の動きに対する感度を減少させる一方で、(連続した画像に亘る)時間での平均化は、ゆっくりであっても真の動きに対する感度を減少させる。このように、これらの技術の適用性は、ビデオカメラのフレームレートまたは解像度にそれぞれ依存するものであり、またユーザーがインタラクションを行うと考えられる制御のタイプにも依存する。差分の閾値化をする前に、どのポイントにおいても平均化を適用できることはいうまでもない。オリジナルの画像から最良の結果が得られるとしても、これはグレースケール差分画像に対する単一平均化に比べると、(赤、緑、青値に対する)三回の平均化が必要であり、したがって、品質と計算負荷に関するこれらの比較値は、アプリケーションに依存する。
【0199】
ソフトウェアにより制御されたデータ処理装置によって、少なくとも部分的であっても、上記のような本発明の実施例が実行される限りは、このようなソフトウェアを提供するコンピュータプログラムと、このようなコンピュータプログラムが格納される記憶装置または伝送媒体が、本発明の態様として認識されることはいうまでもない。
【図面の簡単な説明】
【0200】
【図1】図1は、プレイステーション2の全体的なシステムアーキテクチャを概略的に示す。
【図2】図2は、エモーション・エンジンのアーキテクチャを概略的に示す。
【図3】図3は、グラフィックス・シンセサイザの構成を概略的に示す。
【図4】図4は、ダイヤル制御を概略的に示す。
【図5】図5は、スクロール制御を概略的に示す。
【図6】図6は、ユーザー制御検出機構のブロック図である。
【図7】図7は、特徴点の比較について概略的に示す。
【図8】図8は、特徴点の比較について概略的に示す。
【図9】図9は、特徴点の比較について概略的に示す。
【図10】図10は、動作タイプを区別する際の問題点を示す。
【図11】図11は、2つの画像間の閾値差分を示す。
【図12】図12は、動作のタイプを区別するための手段を示す。
【図13】図13は、ソニー(登録商標)PSP(登録商標)のナビゲーションシステムに対するユーザー制御検知機構の適用を例示する。
【図14】図14は、ユーザー制御検出の方法を示すフローチャートである。
【図15】図15は、ノイズ校正の方法を示すフローチャートである。
【特許請求の範囲】
【請求項1】
ビデオカメラから連続する画像を受信するよう構成されるデータ処理装置であって、
該データ処理装置の制御機能と対応づけられている画像領域内の選択されたポイントについて画像間動作を検出するための手段と、
該画像間動作について画像領域において検出が行われた場合に制御機能を実行するための手段と、を備え、
該検出手段は、m個の連続する一群の画像に亘る画像領域内のポイントについて累積的画像間動作を検出することによって、画像間動作を検出するよう構成され、ここでmは少なくとも3であることを特徴とするデータ処理装置。
【請求項2】
請求項1に記載の装置であって、
前記連続する画像を供給するためのビデオカメラを備えることを特徴とするデータ処理装置。
【請求項3】
前記各項のいずれか一つに記載の装置であって、
ビデオディスプレイと、
該ビデオディスプレイ上に移動可能なユーザー制御を表示するための手段と、を備える装置であって、
前記制御機能は、少なくとも該移動可能なユーザー制御の移動を含むことを特徴とする装置。
【請求項4】
請求項3に記載の装置であって、
前記移動可能なユーザー制御は、前記検出手段によって検出された画像間動作の程度に依存する量だけ動かされることを特徴とする装置。
【請求項5】
前記各項のいずれか一つに記載の装置は、差分測定手段を備え、
該差分測定手段は、
二つの連続する画像間のピクセル値における差分に比例する、一連の値を備える差分データを作成し、
その後、該差分データを平滑化するよう動作可能であることを特徴とする装置。
【請求項6】
請求項5に記載の装置であって、
前記差分測定装置はさらに、異なる閾値レベルで差分データに対して閾値を適用し、結果として生じるバイナリ差分データを出力するよう動作可能であることを特徴とする装置。
【請求項7】
請求項6に記載の装置は、差分データ記憶手段を備え、
該差分データ記憶手段は、連続する画像間で差分閾値を超える差分を示した、一連の画像に亘るすべてのポイントを示す累積的バイナリ差分画像を作成するために、一連の画像に対するバイナリ差分データを組み合わせるよう動作可能であることを特徴とする装置。
【請求項8】
請求項6または請求項7に記載の装置であって、
i.空間的平均化、および
ii.時間的平均化
のうちの一つまたは両方の処理を適用することによって、前記ビデオカメラから受信した画像データを処理する手段を備えることを特徴とする装置。
【請求項9】
前記各項のいずれか一つに記載の装置であって、
前記画像間動作を検出する手段は、現在の画像において選択されるポイントとの対応関係に基づいて先行する画像におけるポイントを選択し、動作を検出するために結果として生じるポイントのペアを分析するよう動作可能であることを特徴とする装置。
【請求項10】
請求項9に記載の装置であって、
前記画像間動作を検出するための手段は、現在の画像においてもともと選択されたポイントに一致する、先行する画像内のポイントとの対応関係に基づいて、現在の画像内でテストポイントを選択し、そのテストポイントが現在の画像においてもともと選択されたポイントと実質的に一致しないポイントのペアを廃棄するよう動作可能であることを特徴とする装置。
【請求項11】
請求項6に従属する請求項9または請求項10のいずれかに記載の装置であって、
前記画像間動作を検出するための手段は、先行する画像においてポイントを選択する前に、差分画像での均等位置が、差分閾値レベルを下回る差を示している現在の画像内のポイントを廃棄するよう動作可能であることを特徴とする装置。
【請求項12】
請求項6に従属する請求項9乃至請求項11のいずれか一つに記載の装置であって、
前記画像間動作を検出するための手段は、先行する画像内のポイントとの対応関係に基づいて現在の画像においてテストポイントを選択する前に、差分画像での均等位置が、差分閾値レベルを下回る差を示している先行する画像内のポイントを廃棄するよう動作可能であることを特徴とする装置。
【請求項13】
前記各項のいずれか一つに記載の装置であって、
前記差分測定手段は、静止しているということが見出された選択ポイントの差分値における変動量に基づいて、連続する画像間の差分閾値を算出するよう動作可能であることを特徴とする装置。
【請求項14】
請求項1乃至請求項12のいずれか一つに記載の装置であって、
前記差分測定手段は、連続する画像間の差分閾値を算出するよう動作可能であって、該算出は、二つ以上の連続する画像内のピクセルについての差分値のヒストグラムに基づくものであり、ヒストグラムの末端にある低い差分値から見て最初に遭遇するヒストグラムピークを、それより上に差分閾値を設定すべき平均カメラノイズであると識別することを特徴とする装置。
【請求項15】
請求項9乃至請求項14のいずれか一つに記載の装置であって、
前記差分測定手段は、画像履歴記憶装置に格納されたn個の先行する画像について動作を検出するためのポイントのペアを再帰的に取得し、これらのポイントのペアの累積した最終的な動作を距離閾値と比較し、意図的な動きを画像ノイズから区別するよう動作可能であることを特徴とする装置。
【請求項16】
請求項15に記載の装置であって、
nは、3以上であることを特徴とする装置。
【請求項17】
請求項15または請求項16のいずれかに記載の装置であって、
前記画像間動作を検出するための手段は、画像履歴にある先行する画像から再帰的にポイントのペアを取得する前に、連続する画像間に差分閾値レベルを超えるのに十分な差分がないということが生じたポイントを廃棄するために、累積的差分画像を使用するよう動作可能であることを特徴とする装置。
【請求項18】
請求項15乃至請求項17のいずれか一つに記載の装置であって、
意図的な動きを示したと検出されたポイントを格納するためのポイント履歴記憶手段を備えることを特徴とする装置。
【請求項19】
請求項18に記載の装置であって、
ユーザーに対して検出された動作についての情報を供給するために、ポイント履歴から引き出されたデータを、グラフィカルに表示するための手段を備えることを特徴とする装置。
【請求項20】
請求項15乃至請求項19のいずれか一つに記載の装置であって、
意図的な動きを示したと判断された、現在の画像および先行する画像に対するポイントのペアにおける、
i.トランスレーション
ii.ローテーション
iii.スケール
のいずれか、またはすべてに対する変更について決定するよう動作可能である動作モデル化手段を備えることを特徴とする装置。
【請求項21】
請求項20に記載の装置であって、
現在の画像および先行する画像よりも古い、いくつかのまたはすべての格納された画像に対するポイントペアは、前記動作モデル化手段によって使用されることを特徴とする装置。
【請求項22】
請求項20または請求項21に記載の装置であって、
所望の動きに一致するように、モデル化された動作を制約するよう動作可能な動作制約手段を備えることを特徴とする装置。
【請求項23】
請求項20乃至請求項22のいずれか一つに記載の装置であって、
前記モデル化された動作に従って、少なくとも最初の表示アイテムを更新するための表示手段を備えることを特徴とする装置。
【請求項24】
請求項23記載の装置であって、
前記表示アイテムまたは各表示アイテムは、ユーザーインターフェース制御を表わすことを特徴とする装置。
【請求項25】
請求項24記載の装置であって、
前記ユーザーインターフェース制御は、
i.ホイール制御
ii.ダイヤル制御
iii.スクロール制御
iv.スケール制御
のいずれか一つであることを特徴とする装置。
【請求項26】
請求項25に記載の装置であって、
前記ホイール制御とダイヤル制御は、スケール変更が可能であることを特徴とする装置。
【請求項27】
請求項22乃至請求項26のいずれか一つに記載の装置であって、
制約のあるモデル化された動作から、ユーザーが逸脱したと判断されると、この逸脱が閾値を超えている場合は、ユーザーインターフェース制御がロックされることを特徴とする装置。
【請求項28】
請求項20乃至請求項27のいずれか一つに記載の装置であって、
前記モデル化された動作は、前記装置に対するユーザー入力として解釈されることを特徴とする装置。
【請求項29】
前記各項のいずれか一つに記載の装置であって、前記データ処理装置はゲーム機であることを特徴とする装置。
【請求項30】
データ処理方法であって、
ビデオカメラから連続して取り込んだ画像を受信するステップと、
データ処理装置の制御機能と対応づけられている画像領域内の選択されたポイントについて画像間動作を検出するステップと、
前記画像領域において該画像間動作が検出された場合に制御機能を実行するステップと、を備え、
該検出ステップは、m個の連続する一群の画像に亘る前記画像領域内のポイントについて累積的画像間動作を検出することによって、画像間動作を検出するよう構成され、ここでmは少なくとも3であることを特徴とするデータ処理方法。
【請求項31】
コンピュータ・ソフトウェアであって、
コンピュータにロードされると、コンピュータが請求項1乃至請求項29のいずれか一つに記載のデータ処理装置として動作できるようになるプログラムコードを有することを特徴とするソフトウェア。
【請求項32】
コンピュータ・ソフトウェアであって、
請求項30に記載の方法を実行するためのプログラムコードを有することを特徴とするコンピュータ・ソフトウェア。
【請求項33】
請求項31または請求項32に記載のソフトウェアを提供するための提供媒体。
【請求項34】
請求項37に記載の媒体であって、前記媒体は、伝送媒体であることを特徴とする媒体。
【請求項35】
請求項37に記載の媒体であって、前記媒体は、記憶媒体であることを特徴とする媒体。
【請求項1】
ビデオカメラから連続する画像を受信するよう構成されるデータ処理装置であって、
該データ処理装置の制御機能と対応づけられている画像領域内の選択されたポイントについて画像間動作を検出するための手段と、
該画像間動作について画像領域において検出が行われた場合に制御機能を実行するための手段と、を備え、
該検出手段は、m個の連続する一群の画像に亘る画像領域内のポイントについて累積的画像間動作を検出することによって、画像間動作を検出するよう構成され、ここでmは少なくとも3であることを特徴とするデータ処理装置。
【請求項2】
請求項1に記載の装置であって、
前記連続する画像を供給するためのビデオカメラを備えることを特徴とするデータ処理装置。
【請求項3】
前記各項のいずれか一つに記載の装置であって、
ビデオディスプレイと、
該ビデオディスプレイ上に移動可能なユーザー制御を表示するための手段と、を備える装置であって、
前記制御機能は、少なくとも該移動可能なユーザー制御の移動を含むことを特徴とする装置。
【請求項4】
請求項3に記載の装置であって、
前記移動可能なユーザー制御は、前記検出手段によって検出された画像間動作の程度に依存する量だけ動かされることを特徴とする装置。
【請求項5】
前記各項のいずれか一つに記載の装置は、差分測定手段を備え、
該差分測定手段は、
二つの連続する画像間のピクセル値における差分に比例する、一連の値を備える差分データを作成し、
その後、該差分データを平滑化するよう動作可能であることを特徴とする装置。
【請求項6】
請求項5に記載の装置であって、
前記差分測定装置はさらに、異なる閾値レベルで差分データに対して閾値を適用し、結果として生じるバイナリ差分データを出力するよう動作可能であることを特徴とする装置。
【請求項7】
請求項6に記載の装置は、差分データ記憶手段を備え、
該差分データ記憶手段は、連続する画像間で差分閾値を超える差分を示した、一連の画像に亘るすべてのポイントを示す累積的バイナリ差分画像を作成するために、一連の画像に対するバイナリ差分データを組み合わせるよう動作可能であることを特徴とする装置。
【請求項8】
請求項6または請求項7に記載の装置であって、
i.空間的平均化、および
ii.時間的平均化
のうちの一つまたは両方の処理を適用することによって、前記ビデオカメラから受信した画像データを処理する手段を備えることを特徴とする装置。
【請求項9】
前記各項のいずれか一つに記載の装置であって、
前記画像間動作を検出する手段は、現在の画像において選択されるポイントとの対応関係に基づいて先行する画像におけるポイントを選択し、動作を検出するために結果として生じるポイントのペアを分析するよう動作可能であることを特徴とする装置。
【請求項10】
請求項9に記載の装置であって、
前記画像間動作を検出するための手段は、現在の画像においてもともと選択されたポイントに一致する、先行する画像内のポイントとの対応関係に基づいて、現在の画像内でテストポイントを選択し、そのテストポイントが現在の画像においてもともと選択されたポイントと実質的に一致しないポイントのペアを廃棄するよう動作可能であることを特徴とする装置。
【請求項11】
請求項6に従属する請求項9または請求項10のいずれかに記載の装置であって、
前記画像間動作を検出するための手段は、先行する画像においてポイントを選択する前に、差分画像での均等位置が、差分閾値レベルを下回る差を示している現在の画像内のポイントを廃棄するよう動作可能であることを特徴とする装置。
【請求項12】
請求項6に従属する請求項9乃至請求項11のいずれか一つに記載の装置であって、
前記画像間動作を検出するための手段は、先行する画像内のポイントとの対応関係に基づいて現在の画像においてテストポイントを選択する前に、差分画像での均等位置が、差分閾値レベルを下回る差を示している先行する画像内のポイントを廃棄するよう動作可能であることを特徴とする装置。
【請求項13】
前記各項のいずれか一つに記載の装置であって、
前記差分測定手段は、静止しているということが見出された選択ポイントの差分値における変動量に基づいて、連続する画像間の差分閾値を算出するよう動作可能であることを特徴とする装置。
【請求項14】
請求項1乃至請求項12のいずれか一つに記載の装置であって、
前記差分測定手段は、連続する画像間の差分閾値を算出するよう動作可能であって、該算出は、二つ以上の連続する画像内のピクセルについての差分値のヒストグラムに基づくものであり、ヒストグラムの末端にある低い差分値から見て最初に遭遇するヒストグラムピークを、それより上に差分閾値を設定すべき平均カメラノイズであると識別することを特徴とする装置。
【請求項15】
請求項9乃至請求項14のいずれか一つに記載の装置であって、
前記差分測定手段は、画像履歴記憶装置に格納されたn個の先行する画像について動作を検出するためのポイントのペアを再帰的に取得し、これらのポイントのペアの累積した最終的な動作を距離閾値と比較し、意図的な動きを画像ノイズから区別するよう動作可能であることを特徴とする装置。
【請求項16】
請求項15に記載の装置であって、
nは、3以上であることを特徴とする装置。
【請求項17】
請求項15または請求項16のいずれかに記載の装置であって、
前記画像間動作を検出するための手段は、画像履歴にある先行する画像から再帰的にポイントのペアを取得する前に、連続する画像間に差分閾値レベルを超えるのに十分な差分がないということが生じたポイントを廃棄するために、累積的差分画像を使用するよう動作可能であることを特徴とする装置。
【請求項18】
請求項15乃至請求項17のいずれか一つに記載の装置であって、
意図的な動きを示したと検出されたポイントを格納するためのポイント履歴記憶手段を備えることを特徴とする装置。
【請求項19】
請求項18に記載の装置であって、
ユーザーに対して検出された動作についての情報を供給するために、ポイント履歴から引き出されたデータを、グラフィカルに表示するための手段を備えることを特徴とする装置。
【請求項20】
請求項15乃至請求項19のいずれか一つに記載の装置であって、
意図的な動きを示したと判断された、現在の画像および先行する画像に対するポイントのペアにおける、
i.トランスレーション
ii.ローテーション
iii.スケール
のいずれか、またはすべてに対する変更について決定するよう動作可能である動作モデル化手段を備えることを特徴とする装置。
【請求項21】
請求項20に記載の装置であって、
現在の画像および先行する画像よりも古い、いくつかのまたはすべての格納された画像に対するポイントペアは、前記動作モデル化手段によって使用されることを特徴とする装置。
【請求項22】
請求項20または請求項21に記載の装置であって、
所望の動きに一致するように、モデル化された動作を制約するよう動作可能な動作制約手段を備えることを特徴とする装置。
【請求項23】
請求項20乃至請求項22のいずれか一つに記載の装置であって、
前記モデル化された動作に従って、少なくとも最初の表示アイテムを更新するための表示手段を備えることを特徴とする装置。
【請求項24】
請求項23記載の装置であって、
前記表示アイテムまたは各表示アイテムは、ユーザーインターフェース制御を表わすことを特徴とする装置。
【請求項25】
請求項24記載の装置であって、
前記ユーザーインターフェース制御は、
i.ホイール制御
ii.ダイヤル制御
iii.スクロール制御
iv.スケール制御
のいずれか一つであることを特徴とする装置。
【請求項26】
請求項25に記載の装置であって、
前記ホイール制御とダイヤル制御は、スケール変更が可能であることを特徴とする装置。
【請求項27】
請求項22乃至請求項26のいずれか一つに記載の装置であって、
制約のあるモデル化された動作から、ユーザーが逸脱したと判断されると、この逸脱が閾値を超えている場合は、ユーザーインターフェース制御がロックされることを特徴とする装置。
【請求項28】
請求項20乃至請求項27のいずれか一つに記載の装置であって、
前記モデル化された動作は、前記装置に対するユーザー入力として解釈されることを特徴とする装置。
【請求項29】
前記各項のいずれか一つに記載の装置であって、前記データ処理装置はゲーム機であることを特徴とする装置。
【請求項30】
データ処理方法であって、
ビデオカメラから連続して取り込んだ画像を受信するステップと、
データ処理装置の制御機能と対応づけられている画像領域内の選択されたポイントについて画像間動作を検出するステップと、
前記画像領域において該画像間動作が検出された場合に制御機能を実行するステップと、を備え、
該検出ステップは、m個の連続する一群の画像に亘る前記画像領域内のポイントについて累積的画像間動作を検出することによって、画像間動作を検出するよう構成され、ここでmは少なくとも3であることを特徴とするデータ処理方法。
【請求項31】
コンピュータ・ソフトウェアであって、
コンピュータにロードされると、コンピュータが請求項1乃至請求項29のいずれか一つに記載のデータ処理装置として動作できるようになるプログラムコードを有することを特徴とするソフトウェア。
【請求項32】
コンピュータ・ソフトウェアであって、
請求項30に記載の方法を実行するためのプログラムコードを有することを特徴とするコンピュータ・ソフトウェア。
【請求項33】
請求項31または請求項32に記載のソフトウェアを提供するための提供媒体。
【請求項34】
請求項37に記載の媒体であって、前記媒体は、伝送媒体であることを特徴とする媒体。
【請求項35】
請求項37に記載の媒体であって、前記媒体は、記憶媒体であることを特徴とする媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公表番号】特表2009−537924(P2009−537924A)
【公表日】平成21年10月29日(2009.10.29)
【国際特許分類】
【出願番号】特願2009−511564(P2009−511564)
【出願日】平成19年5月17日(2007.5.17)
【国際出願番号】PCT/GB2007/001813
【国際公開番号】WO2007/135378
【国際公開日】平成19年11月29日(2007.11.29)
【出願人】(502070679)ソニー コンピュータ エンタテインメント ヨーロッパ リミテッド (40)
【Fターム(参考)】
【公表日】平成21年10月29日(2009.10.29)
【国際特許分類】
【出願日】平成19年5月17日(2007.5.17)
【国際出願番号】PCT/GB2007/001813
【国際公開番号】WO2007/135378
【国際公開日】平成19年11月29日(2007.11.29)
【出願人】(502070679)ソニー コンピュータ エンタテインメント ヨーロッパ リミテッド (40)
【Fターム(参考)】
[ Back to top ]