(57)【要約】【課題】ユーザの動作を入力インタフェースとして利用するゲームなどのアプリケーションにおいて、ユーザにとってより自然で使いやすいインタフェースを提供する。【解決手段】画像処理装置は、撮像装置によって撮像されたユーザの動作を反映させた画像をディスプレイ装置の画面上に表示する。領域特定部１０６は、撮像装置により撮像されたユーザの画像からユーザの顔の領域を特定する。動作検出部１０８は、特定された顔の領域の画像を用いてユーザの顔の動作を検出する。イベント実行部１１０は、顔の動作とイベントとを関連づけたテーブルを保持し、動作検出部１０８により検出された顔の動作に対応するイベントをテーブルから検索してそのイベントを実行する。動作検出部１０８は、ユーザの顔の傾きを動作として検出し、顔が傾けられた方向に応じて異なるイベントを実行する。【選択図】図３
2008015942.tif 000002
【特許請求の範囲】
【請求項１】
撮像装置により撮像されたユーザの画像から該ユーザの顔の領域を特定する領域特定機能と、
特定された顔の領域の画像を用いてユーザの顔の動作を検出する動作検出機能と、
顔の動作とイベントとを関連づけたテーブルを保持し、前記動作検出機能により検出された顔の動作に対応するイベントを前記テーブルから検索して該イベントを実行するイベント実行機能と、
をコンピュータに発揮せしめることを特徴とするユーザインタフェースプログラム。
【請求項２】
前記動作検出機能はユーザの顔の傾きを動作として検出することを特徴とする請求項１に記載のユーザインタフェースプログラム。
【請求項３】
前記動作検出機能は、検出したユーザの顔の傾きが、画面上に定義される三次元座標のいずれの軸回りのものであるかを判定し、
前記イベント実行機能は、前記動作検出機能により判定された顔の傾き軸に応じて異なるイベントを実行することを特徴とする請求項２に記載のユーザインタフェースプログラム。
【請求項４】
前記領域特定機能は、特定された顔の領域内で顔を構成するパーツの領域をさらに特定し、
前記動作検出機能で検出される顔の動作には前記パーツの動作が含まれることを特徴とする請求項１に記載のユーザインタフェースプログラム。
【請求項５】
顔の動作に応じたメニュー画面を画面上に表示させる表示機能をさらに含むことを特徴とする請求項１に記載のユーザインタフェースプログラム。
【請求項６】
前記イベント実行機能は、顔の動作に応じてメニュー画面の選択、実行、キャンセルのいずれかを指定可能とすることを特徴とする請求項１に記載のユーザインタフェースプログラム。
【請求項７】
前記イベント実行機能により実行されるイベントには、前記コンピュータで実行されるアプリケーションに対する操作指示が含まれ、前記テーブルにおいて前記操作指示と関連つけられた顔の動作の少なくとも一部は、ユーザがその操作指示を現実世界で表現するときの動作と近似する動作であることを特徴とする請求項１ないし４のいずれかに記載のユーザインタフェースプログラム。
【請求項８】
前記動作検出機能はユーザの顔の動作の繰り返し数をカウントし、
前記イベント実行機能は、前記繰り返し数に応じて異なるイベントを実行することを特徴とする請求項１ないし４のいずれかに記載のユーザインタフェースプログラム。
【請求項９】
前記動作検出機能はユーザの顔の動作の繰り返し数をカウントし、
前記イベント実行機能は、前記繰り返し数がしきい値に達したとき、前記テーブルにおいて前記顔の動作に関連つけされたイベントを実行することを特徴とする請求項１ないし４のいずれかに記載のユーザインタフェースプログラム。
【請求項１０】
前記領域特定機能は、正面、横向き、上向き、下向きの顔について基準画像を保持しており、該基準画像と前記特定された顔の領域の画像とのマッチングによって顔の向きを検出し、
前記動作検出機能は、複数時点における顔の向きの変化にしたがって前記顔の傾き軸を決定することを特徴とする請求項３に記載のユーザインタフェースプログラム。
【請求項１１】
前記動作検出機能はユーザの口の動作を検出し、
当該ユーザインタフェースプログラムが、ユーザの発する音声を認識して対応する文字を入力する音声入力機能をさらに有しているとき、音声を認識するときに前記動作検出機能により検出された口の動きを参照することを特徴とする請求項４に記載のユーザインタフェースプログラム。
【請求項１２】
前記動作検出機能は、前記顔の動作が持続している時間を計測し、計測した時間がしきい値以上になったとき前記顔の動作が実行されたものと判定することを特徴とする請求項１ないし４のいずれかに記載のユーザインタフェースプログラム。
【請求項１３】
前記イベント実行機能は、前記動作検出機能により検出された顔の動作に関連つけられるイベントがオブジェクトの画面表示であるとき、該オブジェクトを生成するオブジェクト生成機能を有し、
前記オブジェクト生成機能は、前記オブジェクトの表示形態を前記時間の経過とともに変化させることを特徴とする請求項１２に記載のユーザインタフェースプログラム。
【請求項１４】
前記動作検出機能はユーザの顔の傾き角を算出し、該傾き角がしきい値以上になったとき顔を傾けていると判定することを特徴とする請求項２または３に記載のユーザインタフェースプログラム。
【請求項１５】
前記イベント実行機能は、前記動作検出機能により検出された顔の動作に関連つけられるイベントがオブジェクトの画面表示であるとき、該オブジェクトを生成するオブジェクト生成機能を有し、
前記オブジェクト生成機能は、前記動作検出機能により算出された顔の傾き角の増大または減少とともに前記オブジェクトの表示形態を変化させることを特徴とする請求項１４に記載のユーザインタフェースプログラム。
【請求項１６】
前記撮像装置により撮像されたユーザの鏡面画像と前記オブジェクトと合成してひとつの画像を生成する画像合成機能をさらにコンピュータに発揮せしめることを特徴とする請求項１３または１５に記載のユーザインタフェースプログラム。
【請求項１７】
請求項１ないし１６のいずれかに記載のプログラムを格納することを特徴とする記録媒体。
【請求項１８】
撮像装置により撮像されたユーザの画像から該ユーザの顔の領域を特定する領域特定部と、
特定された顔の領域の画像を用いてユーザの顔の動作を検出する動作検出部と、
顔の動作とイベントとを関連づけたテーブルを保持し、前記動作検出部により検出された顔の動作に対応するイベントを前記テーブルから検索して該イベントを実行するイベント実行部と、
を備えることを特徴とするユーザインタフェース装置。
【請求項１９】
撮像装置により撮像されたユーザの画像から該ユーザの顔の領域を特定し、
特定された顔の領域の画像を用いてユーザの顔の動作を検出し、
検出された顔の動作に対応するイベントを所定のテーブルから検索し、
検索したイベントを実行することを特徴とするユーザインタフェース方法。
【請求項２０】
ユーザを撮像する撮像手段と、
撮像されたユーザの画像を映し出す表示手段と、
前記ユーザの画像からユーザの顔の領域を特定する領域特定手段と、
特定された顔の領域の画像を用いてユーザの顔の動作を検出する動作検出手段と、
顔の動作とイベントとを関連づけたテーブルを保持し、前記動作検出手段により検出された顔の動作に対応するイベントを前記テーブルから検索して該イベントを実行するイベント実行手段と、
を備えることを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザインタフェース技術に関する。
【背景技術】
【０００２】
従来から、ユーザの動作をビデオカメラなどの撮像装置を用いて撮影し、ユーザの動画像を画面に映し出して、コマンドの入力やゲームのプレイを可能にしたものが知られている（例えば、特許文献１）。このような画像処理装置では、画面上に配置されるメニュー画面やオブジェクトにユーザの動画像が画面内で接触することで、コマンドを入力することができる。つまり、ユーザの動画像そのものが入力インタフェースとして機能している。
【特許文献１】特開２００５−２１６０６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上述のようなユーザの動画像を入力インタフェースとして利用するゲームを始めとしたアプリケーションでは、アプリケーションを操作するユーザの行動を、画面上の演出などによって自然なかたちで導き出すことが重要である。日常の動作にはない不自然な動きをユーザに要求すると、アプリケーションに対するユーザの興味が失われる恐れがある。また、画面に何のインストラクションも出ていない状態では、ユーザは何をすれば所望の操作をすることができるかが分からず、アプリケーションの開始や継続ができなくなってしまう恐れもある。
【０００４】
本発明はこうした課題に鑑みてなされたものであり、その目的は、ユーザの動画像を入力インタフェースとして利用するアプリケーションにおいて、ユーザにとって自然で使いやすいインタフェースを実現するための技術を提供することにある。
【課題を解決するための手段】
【０００５】
本発明のある態様は、撮像装置により撮像されたユーザの画像から該ユーザの顔の領域を特定する領域特定機能と、特定された顔の領域の画像を用いてユーザの顔の動作を検出する動作検出機能と、顔の動作とイベントとを関連づけたテーブルを保持し、動作検出機能により検出された顔の動作に対応するイベントをテーブルから検索して該イベントを実行するイベント実行機能と、をコンピュータに発揮させるユーザインタフェースプログラムである。
【０００６】
この態様によると、顔の動きという非常に簡単かつ負荷の少ない動作でコンピュータに入力を与えることができ、ユーザにとって自然かつ使いやすい入力インタフェースを提供することができる。
なお、撮像されたユーザの画像は、ディスプレイの画面にそのまま映されてもよいし、ユーザの鏡面画像が映されてもよい。ユーザの画像は画面に映されなくてもよい。ユーザの動作と同じ動きをするキャラクタの画像を画面に表示してもよい。また、顔の領域の画像が特定できればよいので、ユーザがお面等をかぶっていてもよい。
【０００７】
「イベント」には、ゲームのコントローラやテレビのリモコンなどのボタン操作に対応する操作指示と、オブジェクトの画面表示などが含まれる。操作指示には、ヘルプの表示、キャンセル、決定、選択、メニューの表示、終了、移動方向の入力などが含まれる。
【０００８】
動作検出機能はユーザの顔の傾きを動作として検出してもよい。また、動作検出機能は、検出したユーザの顔の傾きが、画面上に定義される三次元座標のいずれの軸回りのものであるかを判定し、イベント実行機能は、動作検出機能により判定された顔の傾き軸に応じて異なるイベントを実行してもよい。顔の回転軸がｘ、ｙ、ｚのいずれの軸回りかを判定することで、顔の傾きだけで三通りの異なるイベントを実行することができる。軸に対する回転方向、つまり右回りか左回りかによって異なるイベントを実行するようにしてもよい。
【０００９】
領域特定機能は、特定された顔の領域内で顔を構成するパーツの領域をさらに特定し、動作検出機能で検出される顔の動作にはパーツの動作が含まれる。顔のパーツには、目、口、鼻、耳、眉、瞳、舌などが含まれるが、顔認識技術で特定できるパーツであればこれらに限定されない。これによると、表情を変化させるだけで様々な入力をコンピュータに対して与えることができる。また、全身の動作を伴わないため、従来のこの種のアプリケーションでは困難だった、椅子に座った状態や寝ころんだ状態での操作も実現できる。
【００１０】
イベント実行機能により実行されるイベントには、コンピュータで実行されるアプリケーションに対する操作指示が含まれてもよい。この場合、テーブルにおいて操作指示と関連つけられた顔の動作の少なくとも一部は、ユーザがその操作指示を現実世界で表現するときの動作と近似する動作であると好ましい。
【００１１】
動作検出機能はユーザの顔の動作の繰り返し数をカウントし、イベント実行機能は、繰り返し数に応じて異なるイベントを実行してもよい。また、動作検出機能は、顔の動作が持続している時間を計測し、計測した時間がしきい値以上になったとき顔の動作が実行されたものと判定してもよい。顔の動作はユーザが無意識に実行することも多いが、繰り返し数や持続時間といった条件を含めることで、誤動作の発生を抑制できる。
【００１２】
イベント実行機能は、動作検出機能により検出された顔の動作に関連つけられるイベントがオブジェクトの画面表示であるとき、該オブジェクトを生成するオブジェクト生成機能を有してもよい。オブジェクト生成機能は、オブジェクトの表示形態を時間の経過や、顔の傾き角の増大または減少とともに変化させてもよい。ここでいう表示形態には、オブジェクトの色や大きさを変化させること、移動や回転の速度を変化させることなどが含まれる。ユーザの動作に応じてオブジェクトを変化させることで、想定されている入力動作をするようにユーザを誘導することができる。
【００１３】
なお、本発明の構成要素や表現を方法、システム、コンピュータプログラム、コンピュータプログラムを格納した記録媒体などの間で相互に置換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１４】
本発明によれば、ユーザの動画像を入力インタフェースとして利用するアプリケーションにおいて、ユーザにとって自然で使いやすいインタフェースを提供することができる。
【発明を実施するための最良の形態】
【００１５】
実施の形態１．
図１は、本発明の一実施形態である画像処理装置１０を用いた画像処理システム１００の構成を示す。画像処理システム１００は、ユーザの動画像を撮像する撮像装置であるカメラ２と、画像処理装置１０と、画像を表示するためのディスプレイ装置４とから構成される。
【００１６】
画像処理装置１０は、ディスプレイ装置４に相対するユーザ６をカメラ２で撮影して得られた動画像を時系列的に連続に取り込んで鏡面動画像を生成し、鏡面動画像８をディスプレイ装置４にリアルタイムで表示させる。また、画像処理装置１０は、鏡面動画像８の他に、メニューやカーソル等のオブジェクト画像を合成してディスプレイ装置４に表示させることもできる。ユーザ６は、この鏡面動画像とオブジェクトを見ながら、画像処理装置１０により実行されるゲームやアルバム表示などのアプリケーションを操作する。ユーザが予め決められた動作をすると、ユーザの動作を反映させた画像が画面上に表示されるとともに、アプリケーションに対して何らかの指示が与えられる。
【００１７】
鏡面動画像は、カメラ２から取り込んだ動画像を画像処理装置１０で鏡面処理（画像の左右反転処理）することにより生成される。この鏡面処理によって、ユーザは鏡を見ているような感覚でアプリケーションの操作をすることができる。鏡面処理は、カメラ２の有している機能によって行われてもよい。
【００１８】
カメラ２は、ＣＣＤカメラであることが好ましいが、それ以外のアナログまたはデジタルのビデオカメラであってもよい。図示するように、カメラ２は、ディスプレイ装置４の上部に設置されることが好ましい。ディスプレイ装置４に対面したユーザの動作を撮影することで、ユーザは自らの姿を見た状態でアプリケーションを操作できるからである。
【００１９】
図２は、画像処理装置１０のハードウェア構成図である。画像処理装置１０は、ＣＰＵ１２、メインメモリ１４、ＧＰＵ１６、入出力制御装置１８、ドライブ装置２０、表示制御装置２４およびＤＭＡＣ２６を備える。これらは、バス２８を介して相互に接続される。
【００２０】
ＣＰＵ１２は、オペレーティングシステムを動作させて画像処理装置１０の全体を制御するとともに、ドライブ装置２０に装着された記録媒体５０からメインメモリ１４にプログラムやデータを読み出し、これにしたがって各種の処理を実行する。また、ＣＰＵ１２は、記録媒体５０から読み出した三次元オブジェクトデータに対して、オブジェクトの形状や動き等を表現するためのジオメトリ処理を行い、ＧＰＵ１６に渡す。
【００２１】
ＧＰＵ１６は、描画用のデータを保持しており、ＣＰＵ１２からの指令にしたがって必要な描画データを読み出してレンダリング処理を行い、図示しないフレームメモリに描画する。ＤＭＡＣ２６は、バス２８に接続された各回路を対象としてＤＭＡ転送の制御を行う。
【００２２】
ドライブ装置２０は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブル記録媒体５０を使用するドライブ装置である。以下で説明する機能を有したユーザインタフェースプログラムを格納した記録媒体５０をドライブ装置２０から読み込むことで、画像処理装置１０はユーザインタフェース装置として機能する。
【００２３】
入出力制御装置１８には、カメラ２からの画像信号が入力される。入出力制御装置１８には、ハードディスクドライブなどの外部記憶装置、ネットワークを介して外部の機器と通信を行うためのモデムやターミナルアダプタ（ＴＡ）などの通信装置、ＴＶチューナ、プリンタなどが接続されてもよい。画像処理装置１０に対してデータを入力するためのコントローラ５２が接続されてもよい。
【００２４】
表示制御装置２４にはディスプレイ装置４が接続される。表示制御装置２４は、ＧＰＵ１６によってフレームメモリに描画されたデータをディスプレイ装置４で表示できるようにするためのビデオ信号を生成する。
なお、ユーザインタフェースプログラムは、上述のように記録媒体からロードさせる代わりに、画像処理装置１０に予め組み込まれていてもよい。
【００２５】
図３は、本実施形態にかかるユーザインタフェース装置の構成を示す。これらの構成は、ＣＰＵ、メモリ、メモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウェアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
【００２６】
画像入力部１０２は、カメラ２によって撮影された動画像を１フレームずつ取り込む。入力される画像がアナログ画像の場合は、Ａ／Ｄ変換を行ってデジタル画像に変換してから取り込む。
【００２７】
画像反転部１０４は、画像入力部１０２により取り込まれた画像に対して鏡面処理を施し、鏡面動画像を生成する。
【００２８】
領域特定部１０６は、鏡面動画像を構成する各フレーム画像について、ユーザの顔に相当する領域を特定する。領域特定部１０６は、顔・パーツ検出部１２２、手検出部１２４、基準画像記憶部１２６を含む。
【００２９】
顔・パーツ検出部１２２は、基準画像記憶部１２６に格納されている顔の基準画像を取り出し、基準画像と入力された画像とのマッチングを実行して、ユーザの顔に相当する領域の画像を特定する。顔の領域が特定されると、その内部でさらに顔を構成するパーツ、例えば目、鼻、口に相当する領域を、各パーツの基準画像とのマッチングによって特定する。
【００３０】
基準画像記憶部１２６には、正面、横向き、上向き、下向きのそれぞれについての基準画像が準備されている。顔・パーツ検出部１２２は、これら基準画像のそれぞれと入力された画像とのマッチングを実行し、最もマッチするもので顔検出をすることで、ユーザの顔がいずれの向きを向いていても顔の領域を特定することが可能である。また、正面顔の状態では、両目が平行のときを中立位置として、この基準画像を傾けたものと入力画像とのマッチングを実行することで、顔の傾きの角度も検出することができる。
手検出部１２４は、画面内の所定の部分において動き検出を実行し、ユーザの手の動きを検出する。この検出は、公知の任意の技術を使用することができる。
【００３１】
動作検出部１０８は、領域特定部１０６で特定された顔の領域の画像および各種パーツの領域の画像を複数フレーム分参照して、ユーザの顔の動作およびパーツの動作を検出する。動作検出部１０８の詳細な構成は、図４を参照して後述する。
【００３２】
イベント実行部１１０は、顔の動作およびパーツの動作とイベントとを関連づけたテーブルを保持し、動作検出部１０８により検出された顔またはパーツの動作に対応するイベントをテーブルから検索してそのイベントを実行する。「イベント」には、アプリケーションに対する操作指示と、オブジェクトの画面表示が含まれる。操作指示には、ヘルプの表示、キャンセル、決定、選択、メニューの表示、終了、移動方向の入力などが含まれる。イベント実行部１１０の詳細な構成は、図４を参照して後述する。
【００３３】
画像合成部１１６は、画像反転部１０４により生成された鏡面動画像と、イベント実行部１１０により生成されたオブジェクト画像とを合成した合成画像を図示しないフレームメモリに描画する。表示制御部１１８は、画像合成部１１６により合成された画像のディスプレイ装置４への表示を制御する。
【００３４】
図２に示したハードウェア構成との関係では、画像入力部１０２は入出力制御装置１８などにより構成される。画像反転部１０４、領域特定部１０６、動作検出部１０８、イベント実行部１１０はＣＰＵ１２、メインメモリ１４、ＧＰＵ１６などにより構成される。画像合成部１１６はＧＰＵ１６により構成され、表示制御部１１８はＧＰＵ１６と表示制御装置２４により構成される。
【００３５】
図４は、動作検出部１０８およびイベント実行部１１０の詳細な構成を示す機能ブロック図である。これらの機能ブロックも、ハードウェアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できる。
【００３６】
動作検出部１０８は、顔傾き軸判定部１５０、変位量判定部１５２、パーツ動作判定部１５４および画面状態取得部１５６を含む。
顔傾き軸判定部１５０は、ユーザの顔の傾きが、画面上に定義される三次元座標のいずれの軸回りのものであるかを判定する。上述したように、領域特定部１０６は、正面、横向き、上向き、下向きの顔についてそれぞれ基準画像を保持しており、顔の領域を特定する際にいずれの向きの顔であるかについても特定することができる。したがって、顔傾き軸判定部１５０は、領域特定部１０６で特定された顔の向きを複数フレームについて取得し、この間の顔の向きの変化にしたがって顔の傾き軸を決定する。顔の傾き軸の具体例については後述する。顔の向きの変化は、目の数の変化で判定することもできる。例えば、あるフレームでは両目が映っていたが、後のフレームでは片目になっていたときは、顔を横に振ったものと判定できる。
【００３７】
変位量判定部１５２は、顔傾き軸判定部１５０により顔の傾き軸が決定された後、その軸に垂直な平面内でユーザの顔の傾けられた角度を算出する。領域特定部１０６において、入力画像内の顔が傾いている場合は基準画像を傾けたものとのマッチングにより顔領域を検出しているため、基準画像の傾き角を算出すれば、顔の傾き角を求めることができる。変位量判定部１５２は、顔の傾き角が予め定められたしきい値、例えば４０度以上になったとき、顔を傾けていると判定するようにしてもよい。また、変位量判定部１５２は、ユーザが顔を傾けている持続時間を計測してもよい。これは、顔の領域を特定するために基準画像を傾けたものを何フレームにわたって用いたかによって、算出することができる。変位量判定部１５２は、計測した時間が予めしきい値以上になったとき、顔が傾けられていると判定してもよい。さらに、変位量判定部１５２は、顔の傾きの繰り返し数をカウントしてもよい。
【００３８】
パーツ動作判定部１５４は、領域特定部１０６で特定された顔のパーツ毎の領域の画像を複数フレームについて取得し、複数フレーム間の差分に基づいてパーツ毎の動作を検出する。検出する動作は、例えば、目の開閉（瞬き）、口の開閉などである。
【００３９】
画面状態取得部１５６は、ユーザによる顔の動作や手の動作が行われているときに、ディスプレイ装置４に表示されている画面状態を取得する。ここでいう画面状態には、画面上のオブジェクトの配置や運動、ユーザの鏡面動画像の画面内での位置のことである。この画面状態を取得することによって、後述する接触判定や、特定のオブジェクトが配置されているときの顔の動作によってイベントを実行するといった制御が実現できる。
【００４０】
イベント実行部１１０は、入力条件判定部１５８、テーブル記憶部１６０、操作指示部１６２、オブジェクト生成部１１２およびオブジェクトデータ記憶部１１４を含む。
テーブル記憶部１６０は、顔傾き軸判定部１５０、変位量判定部１５２、およびパーツ動作判定部１５４で判定または検出された顔の動作と、イベントとを関連づけたテーブルを格納する。顔の動作には、顔傾き軸、顔の傾き角、パーツの動作が含まれ、イベントには、決定、キャンセルといった画像処理装置１０で実行されるアプリケーションに対する操作指示と、画面上へのオブジェクトの表示とが含まれる。テーブルに定義されている顔の動作とイベントとの組合せの例は、図８を参照して後述する。
【００４１】
入力条件判定部１５８は、顔傾き軸判定部１５０、変位量判定部１５２、およびパーツ動作判定部１５４で判定または検出された顔の動作に対応するイベントをテーブル記憶部１６０から検索し、さらにテーブルで定義されている条件を満たしているか否かを判定する。
【００４２】
オブジェクトデータ記憶部１１４は、ディスプレイ装置４の画面に表示するためのオブジェクトデータを格納する。オブジェクトデータには、メニュー画像、カーソル画像、ユーザのアクションを装飾するための画像、画像処理装置で実行されるゲームを構成するための画像などが含まれる。
【００４３】
オブジェクト生成部１１２は、オブジェクトデータ記憶部１１４からオブジェクトデータを取り込み、オブジェクト画像を生成する。オブジェクト生成部１１２は、入力条件判定部１５８においてテーブルで定義されている条件が満たされたと判定されたとき、同じくテーブルに定義されているオブジェクト画像を生成する。オブジェクト生成部１１２は、オブジェクトの表示形態を時間の経過とともに変化させたり、動作検出部１０８により算出された顔の傾き角の増大または減少とともにオブジェクトの表示形態を変化させたりもする。
操作指示部１６２は、入力条件判定部１５８においてテーブルで定義されている条件が満たされたと判定されたとき、テーブルで関連づけられている操作を実行する。
【００４４】
入力条件判定部１５８は、手とオブジェクトとの接触判定も実行する。鏡面画像の手が画面上に配置されたオブジェクトに接触したと判定すると、オブジェクトに関連つけられたイベントを実行するように、操作指示部１６２およびオブジェクト生成部１１２に指令する。
【００４５】
図５は、本実施形態にかかる顔の動作による入力インタフェースを実現するフローチャートである。
まず、画像入力部１０２によりユーザの画像が取得され、画像反転部１０４によって作成されたユーザの鏡面動画像がディスプレイ装置４に表示される（Ｓ１０）。次に、領域特定部１０６により、ユーザの顔の領域およびパーツの領域が特定される（Ｓ１２）。動作検出部１０８は、複数フレーム分の顔の領域の画像、およびパーツの領域の画像を用いて、それぞれ顔の動作とパーツの動作を検出する（Ｓ１４）。動作検出部１０８はさらに、検出した顔の動作の傾き軸および変位量を判定する（Ｓ１６）。
【００４６】
入力条件判定部１５８は、Ｓ１６で判定された顔の動作またはパーツの動作に関連づけられたイベントがテーブル記憶部１６０内のテーブルに定義されているか否かを判定する（Ｓ１８）。定義されていなければ（Ｓ１８のＮ）、このフローを終了する。定義されていれば（Ｓ１８のＹ）、Ｓ１６で検出された変位量や持続時間、繰り返し回数などの条件が、テーブルに定義されている条件を満たすか否かを判定する（Ｓ２０）。条件を満たさなければ（Ｓ２０のＮ）、このフローを終了する。条件を満たしていれば（Ｓ２０のＹ）、イベント実行部１１０はテーブルに関連づけられているイベントを実行する（Ｓ２２）。
【００４７】
図６は、図５のＳ１２における顔またはパーツの検出方法を示すフローチャートである。
まず、領域特定部１０６は、入力画像を１フレーム分取得する（Ｓ３０）。この画像に対し、ノイズを除去して特徴量を効果的に抽出するためのフィルタリング処理を行う（Ｓ３２）。続いて、基準画像記憶部１２６に格納されている顔の基準画像と入力画像とを比較するパターンマッチングを実行する（Ｓ３４）。顔の基準画像は、数十から数百の様々な人物の顔の画像を元に作成された画像であり、この基準画像との類似度が高ければ、画像内のその部分は顔である可能性が高くなる。そこで、領域特定部１０６は、入力画像のある領域について、基準画像との類似度を算出する（Ｓ３６）。多くの場合、基準画像と入力画像間では、顔の位置や大きさが異なる。そこで、入力画像と基準画像間の類似度を計算する前に、入力画像をオフセットしたり、入力画像を拡大または縮小してもよい。類似度の算出手法は種々のものがあり、任意のものを使用できる。この手法は既知であるので、詳細な説明は省略する。
【００４８】
領域特定部１０６は、類似度と予め定められたしきい値とを比較して、類似度がしきい値以上か否かを判定する（Ｓ３８）。しきい値未満であれば（Ｓ３８のＮ）、この領域は顔でないと判定されるため、Ｓ３４に戻り入力画像の他の部分について基準画像とのマッチングを継続する。Ｓ３８において類似度がしきい値以上であれば（Ｓ３８のＹ）、顔の領域が確定する（Ｓ４０）。
【００４９】
顔の領域が確定すると、続いて顔の領域の画像内で顔のパーツの領域、例えば目、鼻、口の領域を探索する。顔の領域内の一部分の画像とパーツの基準画像とを比較し（Ｓ４２）、上記と同様にして類似度を算出する（Ｓ４４）。領域特定部１０６は、パーツ毎に、類似度と予め定められたしきい値とを比較して、類似度がしきい値以上か否かを判定する（Ｓ４６）。しきい値未満であれば（Ｓ４６のＮ）、Ｓ４２に戻り、顔の領域の画像の他の部分について基準画像とのパターンマッチングを継続する。Ｓ４６において類似度がしきい値以上であれば（Ｓ４６のＹ）、パーツの領域が確定する（Ｓ４８）。パーツの領域の検出は、他の手法を用いてもよい。例えば、目と口の領域を確定した後、目と口との相対位置関係から鼻の位置を推測し、鼻の領域を確定してもよい。
以上のようにして、入力画像から、ユーザの顔の位置、大きさ、目、鼻、口などのパーツの位置を検出することができる。
【００５０】
類似度算出による顔領域の検出は公知であるため、これ以上の説明は省略する。なお、上述以外の手法によって顔の領域を特定してもよい。
【００５１】
図７（ａ）〜（ｃ）は、顔の傾き軸の例を示す模式図である。（ａ）〜（ｃ）は、ディスプレイ装置に映し出されたユーザの鏡面画像を表している。画面内の空間に三次元座標を想定する。（ａ）に示すように、ユーザが首を傾げるような動きをしたときは、ｘ軸回りの傾きと判定される。（ｂ）に示すように、ユーザが上または下を向くような動作をしたときは、ｙ軸回りの傾きと判定される。（ｃ）に示すように、ユーザが左または右を向くような動作をしたときは、ｚ軸回りの傾きと判定される。顔傾き軸の判定は、上述したように、顔の向きの変化に基づいて行う。例えば、あるフレームでの顔の向きが正面と判定され、数フレーム後の顔の向きが左顔と判定されれば、顔の傾き軸はｚ軸であると判定できる。ｘ軸、ｙ軸についても同様である。
【００５２】
図８は、テーブル記憶部に記憶される、顔の動作とイベントとを関連つけたテーブル４０の一例を示す。「動作部位」欄３０は、動作検出部１０８で動作が検出された、顔、目、口などの部位を表す。「動作内容」欄３２は、動作検出部１０８で検出された動作を示しており、動作部位が顔であれば回転の方向を、目や口であれば開閉のことである。目を「隠す」とあるのは、手などで目を覆ったために顔の領域内のあるべきところに目の画像が検出されなかった場合である。「条件」欄３４は、動作内容欄３２で示した動作内容がなされたと判定するための条件であり、入力条件判定部１５８で判定される。この条件には、変位量判定部１５２で検出される顔の傾きの角度や、動作の持続時間、動作の繰り返し数などが含まれる。
【００５３】
「オブジェクト」欄３６は、ある行の欄３０〜３４で定義された動作が満たされたときに、画面表示するべきオブジェクトを表している。オブジェクトには、図示するように「？」マーク、「ＯＫ」「使い方ガイド」などの文字列、「マル」「バツ」などの記号などのほか、表示中のオブジェクトを消去することも含まれる。「操作指示」欄３８は、ある行の欄３０〜３４で定義された動作が満たされたときに、画像処理装置で実行中のアプリケーションに対してなされるべき操作指示を表している。この操作指示には、ヘルプの表示、キャンセル、決定、選択、メニューの表示、終了、移動方向の入力などが含まれる。
一例を挙げると、テーブル４０の上から２行目を参照して、検出したユーザの顔がｘ軸回りに４０度回転したとき、オブジェクト生成部１１２は画面上にオブジェクト「？」を表示し、さらに操作指示部１６２はヘルプメニューを表示するようにアプリケーションに対して指示する。
【００５４】
なお、テーブル４０において操作指示と関連つけられた顔の動作は、ユーザがその操作指示を現実世界で表現するときの動作と近似する動作であることが好ましい。例えば、人間は分からないことがあったときには図７（ａ）のように首を傾げる動作をする。したがって、この動きをｘ軸回りの傾きと判定し、分からないことを解決するためのヘルプメニューを表示するイベントと関連づける。また、承諾をするときには図７（ｂ）のように頷く動作をするが、この動きをｙ軸回りの傾きと判定し、決定の操作指示を出すイベントと関連づける。さらに、否定するときには図７（ｃ）のように首を横に振る動作をするが、この動きをｚ軸回りの回転と判定し、キャンセルの操作指示を出すイベントと関連づける。当然であるが、動作とイベントの組合せはこれに限られるわけではなく、全く関係ないイベントや、動作と逆の意味を持つイベントと関連づけてもよい。後者であれば、逆の動作をユーザに要求することで、ゲーム性を高めることにもなりうる。
【００５５】
また、人間の身振りが表す意味は、ユーザの人種や国によって異なることもあるので、複数のテーブルを予め準備しておき、ユーザが国を選択するとそれに適したテーブルが使用されるようにしてもよい。
【００５６】
以上説明したような画像処理システムの構成のもと、本実施形態にかかる顔インタフェースを使用した画面操作の実施例をいくつか説明する。
【００５７】
実施例１．
図９（ａ）〜（ｃ）は、首を傾けるとヘルプを出現させる実施例における画面変化の一例を示す。アプリケーションの進行中に何か分からないことが出てきたときに、ユーザが顔をｘ軸回りに傾ける動作をすると（図９（ａ））、動作検出部１０８は、顔の領域の検出を通して、顔の傾き軸と傾き角を判定する。顔の傾き角がテーブルで定義されている条件に達すると、オブジェクト生成部１１２は、画面内のユーザの鏡面画像の頭の近傍に、オブジェクト「？」を表示する（図９（ｂ））。出現した「？」のオブジェクトにユーザが手で触れる動作をすると、入力条件判定部１５８により接触が判定されて、オブジェクト生成部により「使い方ガイド」の文字が画面上に表示される（図９（ｃ））。その後、ヘルプ画面が表示される。このヘルプ画面についても、顔パーツや手などの動作で操作できるようにしてもよいし、またはコントローラなどで操作可能であってもよい。
【００５８】
図１０（ａ）〜（ｃ）は、首を振るとヘルプが消える実施例における画面変化の一例を示す。「使い方ガイド」の文字が画面上に表示されている状態で（図１０（ａ））、ヘルプの必要がなくなったため、ユーザが首を振る動作をすると（図１０（ｂ））、動作検出部１０８は、顔の領域の検出を通して顔の傾き軸と傾き角を判定する。入力条件判定部１５８によって、顔を振った回数がテーブルで定義されている条件に達したと判定されると、オブジェクト生成部１１２によって、ユーザの鏡面画像の頭の近傍に表示されていた「使い方ガイド」の文字列のオブジェクトが画面の左端に向けて飛んでいき、画面から消えるような演出がなされる（図１０（ｃ））。「使い方ガイド」の文字列のオブジェクトに対して、ユーザが手で振り払う動作をしたときに、オブジェクトが画面から消えるようにしてもよい。
【００５９】
図９や図１０に示した動作は、ユーザが無意識のうちにしてしまうことがあるため、誤作動を防止するために、その動作を複数回繰り返すことで認識されるようにすることが好ましい。また、動作の繰り返し数の大小によって、異なるイベントに関連づけられていてもよい。
また、ｘ、ｙ、ｚ軸の回転にイベントを対応づけるほか、正面からの顔の向きの方向、例えば、右上、右下、左上、左下への顔の動きにそれぞれ別のイベントを割り当ててもよい。
【００６０】
実施例２．
図１１（ａ）〜（ｄ）は、動作の継続時間を判定する実施例における画面変化の一例を示す。
ユーザが、アプリケーションの進行中に何か分からないことが出てきたときに、顔をｘ軸回りに傾ける動作をすると（図１１（ａ））、動作検出部１０８は、顔の領域の検出を通して顔の傾き軸と傾き角を判定する。入力条件判定部１５８により顔の傾き角がテーブルで定義されている条件で指定されている角度以上になったと判定されると、オブジェクト生成部１１２によって、画面内のユーザの鏡面画像の頭の近傍に小さめのオブジェクト「？」が表示される（図１１（ｂ））。顔を傾けた状態を継続すると、時間に応じてオブジェクトが次第に拡大していき（図１１（ｃ））、その状態が所定の時間（例えば３秒）以上継続したと判定されると、オブジェクトが消滅してオブジェクト生成部１１２により「使い方ガイド」の文字列オブジェクトが鏡面画像の頭の近傍に表示される（図１１（ｄ））。その後、コントローラなどによる操作で項目を検索できるヘルプ画面が表示される。一旦オブジェクト「？」が出現した後、ユーザが顔を元の状態に戻すと、オブジェクトは次第に小さくなっていき、画面から消滅する。
【００６１】
誤作動を防止するために、角度で判断する要素を取り入れてもよい。例えば、ユーザが顔をｘ軸回りに傾ける動作を始めると、画面内のユーザの鏡面画像の近傍に、小さめのオブジェクト「？」が表示される。傾き角が大きくなるにつれて、オブジェクトも拡大していき、傾き角が所定の大きさ以上になると、オブジェクトが消滅して「使い方ガイド」の文字列オブジェクトが鏡面画像の頭の近傍に表示される。一旦オブジェクト「？」が出現した後、ユーザが顔の傾きを小さくすると、それに合わせてオブジェクトも小さくなり、画面から消滅する。顔の傾き角に応じてオブジェクトの表示位置をずらすようにしてもよい。また、他のメニューが先に画面に表示されていた場合、オブジェクト生成部１１２は、そのメニューにオブジェクトが重ならないようにオブジェクトの出現位置を変えてもよい。図示しないコントローラを介してオブジェクトの出現位置をユーザが指示できるように構成してもよい。
【００６２】
ユーザが顔を傾ける方向に応じてオブジェクト「？」が表示される位置を変えるようにしてもよい。例えば、オブジェクトをユーザの顔の中心軸の延長線上に表示するようにすれば、ユーザが右、左のいずれの方向に顔を傾けても頭部付近にオブジェクトが表示されるようになる。ユーザが顔を傾ける動作の速度に応じてオブジェクト「？」の表示位置を変えるようにしてもよい。
【００６３】
このように、動作の継続や大きさの要素を判定に加えることで、選択や決定などの操作指示が、ユーザの偶然の動作でなされることを防止でき、操作の確実性を高められる。また、所定の動作が検出された段階でオブジェクトを表示して、その後の動作に応じてオブジェクトの表示態様を変化させることで、ユーザは、自らの動作が正しいかまたは間違っているのかを視覚的に認識することができる。つまり、ユーザに対して現在の動作を継続するか中止するかの示唆を自然に与えることができる。
これと合わせて、図示しない音声制御部によって、オブジェクトの表示態様の変化に合わせて所定の効果音を出力するようにしてもよい。例えば、図１１の例において、オブジェクトが次第に拡大していくのに合わせて効果音の音量を増やすようにすれば、ユーザの動作が装置によって検出されていることを聴覚的にユーザに知らせることができる。
【００６４】
図１１では、ヘルプの際の動作を例として説明したが、決定やキャンセルの場合でも同様のことができる。
【００６５】
実施例３．
一般的なゲームのコントローラ機能の全てまたは一部を、顔の動作で代替するようにしてもよい。例えば、顔の回転方向、つまり上向き、下向き、左向き、右向きをコントローラの十字キーの上下左右の入力と同等とする。さらに、顔のパーツのうち、例えば右目の開閉をマルボタン（一般的な機能は「決定」）、左目の開閉のバツボタン（一般的な機能は「キャンセル」）の押下とそれぞれ対応させる。こうすることで、より複雑な操作指示を顔の動作で表現することができる。
また、顔の動作に応じたメニュー画面がディスプレイ装置に表示されるようにしてもよい。例えば、顔の向いた方向にメニュー画面を表示させてもよい。表示されたメニュー画面内に選択、実行、キャンセルなどを表すオブジェクトを表示させ、顔の動作でそれらを選択できるようにしてもよい。
【００６６】
実施の形態２．
実施例１〜３では、ユーザの鏡面画像がディスプレイ装置に映し出されていた場合を述べたが、ユーザの動作が認識さえできていれば、鏡面画像が映し出される必要はない。
【００６７】
以下、ユーザの鏡面画像を表示しない場合の実施例を述べる。
【００６８】
実施例４．
記録媒体に格納されているデジタル写真のスライドショーを実行するアプリケーションを考える。ディスプレイ装置に写真が表示されている状態で、ユーザが顔をｚ軸回りに回転させたとする。動作検出部１０８がこの動作を検出すると、イベント実行部１１０は、現在表示されている写真を顔を向けた方向に移動させ、次の写真をディスプレイ装置に表示させる。また、ディスプレイ装置に複数枚の写真が表示されている状態で、ユーザが顔をｙ軸回りに回転、つまり「頷く」ような動作をしたとする。動作検出部１０８がこの動作を検出すると、イベント実行部１１０は、複数枚の写真のうちその時点でフォーカスの当たっている写真を選択して、ディスプレイ装置の画面全体に拡大表示させる。さらに、ディスプレイ装置に写真が表示されている状態で、動作検出部１０８により目の開閉が検出されると、イベント実行部１１０はスライドショーを終了させる。
【００６９】
実施例５．
一人称視点のゲーム、つまりディスプレイ装置に相対しているユーザの視点が画面表示される態様のゲームを想定する。このようなゲームにおいて、画面に分かれ道が表示されたとき、ユーザが顔を向けた方向を動作検出部１０８により検出し、その方向の道が選択されたときの画像をイベント実行部１１０が作成して表示する。また、ユーザが下を向くと、見下ろした画像が表示され、上を向くと、空が見えるといったようにすれば、ユーザがゲームの仮想空間内にいる感覚を強めることができる。
なお、ユーザの鏡面画像を画面の片隅に映し出しておいてもよい。こうすることで、ユーザの動作が画像処理装置に認識されていることをユーザに知らしめることができる。
【００７０】
以上、本発明をいくつかの実施形態について説明した。本発明によれば、顔の動きという非常に簡単かつ負荷の少ない動作で入力を与えることができ、ユーザにとって自然かつ簡単な入力インタフェースを提供することができる。
また、何かの行動に対してすぐに反応すること、今どのような状態かをリアルタイムに明示することが、対話型のユーザインタフェースでは重要である。本発明では、ユーザの動作に応じて画面にオブジェクトが表示されるので、ユーザの動作が画像処理装置に認識されていることを伝達することができる。また、ユーザの動作に応じて画面に表示されるオブジェクトの表示形態を変化させることで、ユーザに対して、現在の動作が所望の機能を導くものか否かを視覚的に認識させ、動作の継続または中止を自然に誘導することができる。さらに、ユーザは画像と対話していく中で、無意識のうちに扱い方や遊び方を取得していくことができる。
【００７１】
以上、実施の形態をもとに本発明を説明した。これらの実施の形態は例示であり、各構成要素またはプロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００７２】
実施の形態で述べた構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、記録媒体などの間で変換したものもまた、本発明の態様として有効である。また、本明細書にフローチャートとして記載した方法は、その順序にそって時系列的に実行される処理のほか、並列的または個別に実行される処理をも含む。
【００７３】
ゲームなどのアプリケーションプログラムと、本発明のユーザインタフェースプログラムとは、同一の記録媒体によって提供されてもよいし、別の記録媒体によって提供されてもよい。本発明のユーザインタフェースプログラムは、予めゲーム装置などに組み込まれていてもよい。
【００７４】
実施の形態では、カメラによって撮影されたユーザの鏡面画像がそのままディスプレイ装置に映し出されることを説明したが、ユーザの代わりにキャラクタを映し出し、ユーザの動作に合わせて動かすようにしてもよい。キャラクタは人型であってもよいし、顔や手の動作が分かれば、動物や非生物であってもよい。単に目、鼻、口に対応するオブジェクトが映ってもよい。
この場合でも、ユーザの鏡面画像に基づいた顔、パーツの領域特定、動作の検出は常に実行されており、検出した動作に関連づけられたイベントが発生することも上述の実施形態と同様である。
【００７５】
本発明による動作検出を、音声認識の補助として使ってもよい。画像処理装置がユーザの発する音声を認識して対応する文字を入力する音声入力機能を有しているとき、ユーザの「はい」や「いいえ」と発生するときの口の動作をも考慮して、決定やキャンセルの操作指示を出すことができる。
【図面の簡単な説明】
【００７６】
【図１】本発明の一実施形態である画像処理装置を用いた画像処理システムの構成を示す図である。
【図２】画像処理装置のハードウェア構成図である。
【図３】本実施形態にかかるユーザインタフェース装置の構成を示す図である。
【図４】動作検出部およびイベント実行部の詳細な構成を示す機能ブロック図である。
【図５】本実施形態にかかる顔の動作による入力インタフェースを実現するフローチャートである。
【図６】図５のＳ１２における顔またはパーツの検出方法を示すフローチャートである。
【図７】図７（ａ）〜（ｃ）は、顔の傾き軸の例を示す模式図である。
【図８】テーブル記憶部に記憶される、顔の動作とイベントとを関連つけたテーブルの一例を示す図である。
【図９】図９（ａ）〜（ｃ）は、首を傾けるとヘルプを出現させる実施例における画面変化の一例を示す図である。
【図１０】図１０（ａ）〜（ｃ）は、首を振るとヘルプが消える実施例における画面変化の一例を示す図である。
【図１１】図１１（ａ）〜（ｃ）は、動作の継続時間を判定する実施例における画面変化の一例を示す図である。
【符号の説明】
【００７７】
２  カメラ、  ４  ディスプレイ装置、  １０  画像処理装置、  ４０  テーブル、  １０２  画像入力部、  １０４  画像反転部、  １０６  領域特定部、  １０８  動作検出部、  １１０  イベント実行部、  １１２  オブジェクト生成部、  １１４  オブジェクトデータ記憶部、  １１６  画像合成部、  １１８  表示制御部、  １２０  画像比較部、  １２２  顔・パーツ検出部、  １２４  手検出部、  １２６  基準画像記憶部、  １５０  顔傾き軸判定部、  １５２  変位量判定部、  １５４  パーツ動作判定部、  １５６  画面状態取得部、  １５８  入力条件判定部、  １６０  テーブル記憶部、  １６２  操作指示部。
【図１】
2008015942.tif 000003
【図２】
2008015942.tif 000004
【図３】
2008015942.tif 000005
【図４】
2008015942.tif 000006
【図５】
2008015942.tif 000007
【図６】
2008015942.tif 000008
【図７】
2008015942.tif 000009
【図８】
2008015942.tif 000010
【図９】
2008015942.tif 000011
【図１０】
2008015942.tif 000012
【図１１】
2008015942.tif 000013