(57)【特許請求の範囲】
【請求項１】
互いに異なる位置に配置された複数の光源と、
所定の周期ごとに、前記複数の光源のうちの第１の光源がユーザの眼を照明している間に前記ユーザの眼を撮影した第１の画像と、前記複数の光源のうちの第２の光源が前記ユーザの眼を照明している間に前記ユーザの眼を撮影した第２の画像を生成する撮像部と、
前記所定の周期ごとに、前記複数の光源のうちの第１の光源と第２の光源を切り替えて点灯させ、前記第１の画像及び前記第２の画像のうちの一方から、前記第１の光源及び前記第２の光源のうちの一方による角膜反射像と前記ユーザの瞳孔重心とを検出できるか否か判定し、前記角膜反射像及び前記瞳孔重心を検出した場合、当該瞳孔重心と当該角膜反射像との位置関係に応じて前記ユーザの視線方向を検出し、一方、前記角膜反射像または前記瞳孔重心の何れかを検出できない場合、前記第１の画像及び前記第２の画像のうちの他方の画像から前記瞳孔重心及び前記角膜反射像を検出し、前記瞳孔重心と前記角膜反射像との位置関係に応じて前記ユーザの視線方向を検出する制御部と、
を有する視線検出装置。
【請求項２】
前記第１の光源は前記第２の光源よりも前記撮像部に近く、
前記制御部は、前記第１の画像から前記瞳孔重心及び前記角膜反射像を検出できるか否か判定し、前記角膜反射像または前記瞳孔重心の何れかを検出できない場合に前記第２の画像から前記瞳孔重心及び前記角膜反射像を検出する、請求項１に記載の視線検出装置。
【請求項３】
前記制御部は、前記角膜反射像と前記瞳孔重心との位置関係と前記視線方向との対応を表す参照テーブルを参照することにより前記視線方向を検出し、かつ
前記制御部は、前記第１の画像及び前記第２の画像の少なくとも何れかについて前記角膜反射像または前記瞳孔重心の何れかを検出できない場合、前記参照テーブルを更新するキャリブレーションの実行頻度を、前記第１及び第２の画像の両方について前記角膜反射像及び前記瞳孔重心を検出できる場合の前記キャリブレーションの実行頻度よりも高く設定する、請求項１に記載の視線検出装置。
【請求項４】
前記制御部は、前記キャリブレーションにおいて、前記第１の画像について前記角膜反射像または前記瞳孔重心の何れかを検出できない場合、当該キャリブレーション以降の各所定の周期において、前記第１の画像よりも先に前記第２の画像から前記瞳孔重心及び前記角膜反射像を検出できるか否か判定し、一方、前記キャリブレーションにおいて、前記第２の画像について前記角膜反射像または前記瞳孔重心の何れかを検出できない場合、当該キャリブレーション以降の各所定の周期において、前記第２の画像よりも先に前記第１の画像から前記瞳孔重心及び前記角膜反射像を検出できるか否か判定する、請求項３に記載の視線検出装置。
【請求項５】
表示部と、
前記表示部の周囲の互いに異なる位置に配置された複数の光源と、
所定の周期ごとに、前記複数の光源のうちの第１の光源がユーザの眼を照明している間に前記ユーザの眼を撮影した第１の画像と、前記複数の光源のうちの第２の光源が前記ユーザの眼を照明している間に前記ユーザの眼を撮影した第２の画像を生成する撮像部と、
前記所定の周期ごとに、前記複数の光源のうちの第１の光源と第２の光源を切り替えて点灯させ、前記第１の画像及び前記第２の画像のうちの一方から、前記第１の光源及び前記第２の光源のうちの一方による角膜反射像と前記ユーザの瞳孔重心とを検出できるか否か判定し、前記角膜反射像及び前記瞳孔重心を検出できる場合、当該瞳孔重心と当該角膜反射像との位置関係に応じて前記ユーザが前記表示部上で注視している注視位置を検出し、一方、前記角膜反射像または前記瞳孔重心の何れかを検出できない場合、前記第１の画像及び前記第２の画像のうちの他方の画像から前記瞳孔重心及び前記角膜反射像を検出し、前記瞳孔重心と前記角膜反射像との位置関係に応じて前記注視位置を検出する制御部と、
前記注視位置と関連付けられた処理を実行するアプリケーション実行部と、
を有する携帯端末。
【請求項６】
前記第１の光源は前記第２の光源よりも前記撮像部に近く、
前記制御部は、前記第１の画像から前記瞳孔重心及び前記角膜反射像を検出できるか否か判定し、前記角膜反射像または前記瞳孔重心の何れかを検出できない場合に前記第２の画像から前記瞳孔重心及び前記角膜反射像を検出する、請求項５に記載の携帯端末。
【請求項７】
前記制御部は、前記角膜反射像と前記瞳孔重心との位置関係と前記視線方向との対応を表す参照テーブルを参照することにより前記視線方向を検出し、かつ
前記制御部は、前記第１の画像及び前記第２の画像の少なくとも何れかについて前記角膜反射像または前記瞳孔重心の何れかを検出できない場合、前記参照テーブルを更新するキャリブレーションの実行頻度を、前記第１及び第２の画像の両方について前記角膜反射像及び前記瞳孔重心を検出できる場合の前記キャリブレーションの実行頻度よりも高く設定する、請求項５に記載の携帯端末。
【請求項８】
コンピュータが、
所定の周期ごとに、互いに異なる位置に配置された複数の光源のうちの第１の光源と第２の光源を切り替えて点灯させ、
前記所定の周期ごとに、前記第１の光源がユーザの眼を照明している間に撮像部が前記ユーザの眼を撮影した第１の画像と、前記第２の光源が前記ユーザの眼を照明している間に前記撮像部が前記ユーザの眼を撮影した第２の画像を取得し、
前記所定の周期ごとに、前記第１の画像及び前記第２の画像のうちの一方から、前記第１の光源及び前記第２の光源のうちの一方による角膜反射像と前記ユーザの瞳孔重心とを検出できるか否か判定し、
前記角膜反射像及び前記瞳孔重心を検出した場合、当該瞳孔重心と当該角膜反射像との位置関係に応じて前記ユーザの視線方向を検出し、一方、前記角膜反射像または前記瞳孔重心の何れかを検出できない場合、前記第１の画像及び前記第２の画像のうちの他方から前記瞳孔重心及び前記角膜反射像を検出し、前記瞳孔重心と前記角膜反射像との位置関係に応じて前記ユーザの視線方向を検出する、
ことを含む視線検出方法。
【請求項９】
前記第１の光源は前記第２の光源よりも前記撮像部に近く、
前記角膜反射像と前記瞳孔重心とを検出できるか否か判定することは、前記第１の画像から前記瞳孔重心及び前記角膜反射像を検出できるか否か判定し、前記角膜反射像または前記瞳孔重心の何れかを検出できない場合に前記第２の画像から前記瞳孔重心及び前記角膜反射像を検出することを含む、請求項８に記載の視線検出方法。
【請求項１０】
前記視線方向を検出することは、前記角膜反射像と前記瞳孔重心との位置関係と前記視線方向との対応を表す参照テーブルを参照することにより前記視線方向を検出することを含み、
前記コンピュータは、前記第１の画像及び前記第２の画像の少なくとも何れかについて前記角膜反射像または前記瞳孔重心の何れかを検出できない場合、前記参照テーブルを更新するキャリブレーションの実行頻度を、前記第１及び第２の画像の両方について前記角膜反射像及び前記瞳孔重心を検出できる場合の前記キャリブレーションの実行頻度よりも高く設定することをさらに含む、請求項８に記載の視線検出方法。
【請求項１１】
所定の周期ごとに、互いに異なる位置に配置された複数の光源のうちの第１の光源と第２の光源を切り替えて点灯させ、
前記所定の周期ごとに、前記第１の光源がユーザの眼を照明している間に撮像部が前記ユーザの眼を撮影した第１の画像と、前記第２の光源が前記ユーザの眼を照明している間に前記撮像部が前記ユーザの眼を撮影した第２の画像を取得し、
前記所定の周期ごとに、前記第１の画像及び前記第２の画像のうちの一方から、前記第１の光源及び前記第２の光源のうちの一方による角膜反射像と前記ユーザの瞳孔重心とを検出できるか否か判定し、
前記角膜反射像及び前記瞳孔重心を検出した場合、当該瞳孔重心と当該角膜反射像との位置関係に応じて前記ユーザの視線方向を検出し、一方、前記角膜反射像または前記瞳孔重心の何れかを検出できない場合、前記第１の画像及び前記第２の画像のうちの他方の画像から前記瞳孔重心及び前記角膜反射像を検出し、前記瞳孔重心と前記角膜反射像との位置関係に応じて前記ユーザの視線方向を検出する、
ことをコンピュータに実行させる視線検出用コンピュータプログラム。
【請求項１２】
前記第１の光源は前記第２の光源よりも前記撮像部に近く、
前記角膜反射像と前記瞳孔重心とを検出できるか否か判定することは、前記第１の画像から前記瞳孔重心及び前記角膜反射像を検出できるか否か判定し、前記角膜反射像または前記瞳孔重心の何れかを検出できない場合に前記第２の画像から前記瞳孔重心及び前記角膜反射像を検出することを含む、請求項１１に記載の視線検出用コンピュータプログラム。
【請求項１３】
前記視線方向を検出することは、前記角膜反射像と前記瞳孔重心との位置関係と前記視線方向との対応を表す参照テーブルを参照することにより前記視線方向を検出することを含み、
前記第１の画像及び前記第２の画像の少なくとも何れかについて前記角膜反射像または前記瞳孔重心の何れかを検出できない場合、前記参照テーブルを更新するキャリブレーションの実行頻度を、前記第１及び第２の画像の両方について前記角膜反射像及び前記瞳孔重心を検出できる場合の前記キャリブレーションの実行頻度よりも高く設定することをさらにコンピュータに実行させる、請求項１１に記載の視線検出用コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、角膜反射像を検出することにより視線方向を検出する視線検出装置、視線検出方法及び視線検出用コンピュータプログラムならびにそのような視線検出装置を用いた携帯端末に関する。
【背景技術】
【０００２】
従来より、ユーザの眼を撮影した画像を解析することにより光源の角膜反射像（プルキンエ像）を検出することで、ユーザの視線方向を検出する視線検出装置が開発されている。
このような視線検出装置は、プルキンエ像を検出できなければ、視線方向を検出することができない。例えば、ユーザが眼鏡を掛けている場合、視線検出装置は、光源からの照明光が眼鏡レンズにより反射された像とプルキンエ像が重なって、プルキンエ像を検出できないことがある。そこで、視線検出装置がユーザの眼を撮影した画像上でプルキンエ像を検出できなければ、撮影条件または画像取得条件を変更して再度ユーザの眼を撮影し、再撮影された画像上でプルキンエ像を検出する技術が提案されている（例えば、特許文献１〜４を参照）。例えば、このような公知技術の一例では、視線検出装置は複数の照明光源を有し、そのうちの何れかの光源を点灯させた状態でユーザの眼を撮影する。そして視線検出装置は、その撮影画像上でプルキンエ像を検出できない場合、他の光源を点灯させた状態でユーザの眼を再度撮影し、その再撮影された画像上でプルキンエ像を検出する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−１３８３６７号公報
【特許文献２】特開２００５−２９６３８３号公報
【特許文献３】特開２００３−３３９６４２号公報
【特許文献４】特表２００１−５２４７０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、視線検出装置が、プルキンエ像の検出処理を行い、その検出に失敗してからユーザの眼を再撮影すると、プルキンエ像が検出できるまでにタイムラグが生じてしまう。そして最初の撮影時から再撮影時までの間にユーザが眼を動かすと、視線検出装置は、最初の撮影時におけるユーザの視線方向を検出できなくなってしまう。
【０００５】
そこで本明細書は、光源のプルキンエ像の検出に失敗してから、光源のプルキンエ像を検出できるまでのタイムラグを短縮できる視線検出装置及び視線検出方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
一つの実施形態によれば、視線検出装置が提供される。この視線検出装置は、互いに異なる位置に配置された複数の光源と、所定の周期ごとに、複数の光源のうちの第１の光源がユーザの眼を照明している間にユーザの眼を撮影した第１の画像と、複数の光源のうちの第２の光源がユーザの眼を照明している間にユーザの眼を撮影した第２の画像を生成する撮像部と、所定の周期ごとに、第１の画像及び第２の画像のうちの一方から、第１の光源及び第２の光源のうちの一方による角膜反射像とユーザの瞳孔重心とを検出できるか否か判定し、角膜反射像及び瞳孔重心を検出した場合、その瞳孔重心と角膜反射像との位置関係に応じてユーザの視線方向を検出し、一方、角膜反射像または瞳孔重心の何れかを検出できない場合、第１の画像及び第２の画像のうちの他方から瞳孔重心及び角膜反射像を検出し、瞳孔重心と角膜反射像との位置関係に応じてユーザの視線方向を検出する制御部とを有する。
【０００７】
また他の実施形態によれば、携帯端末が提供される。この携帯端末は、表示部と、表示部の周囲の互いに異なる位置に配置された複数の光源と、所定の周期ごとに、複数の光源のうちの第１の光源がユーザの眼を照明している間にユーザの眼を撮影した第１の画像と、複数の光源のうちの第２の光源がユーザの眼を照明している間にユーザの眼を撮影した第２の画像を生成する撮像部と、所定の周期ごとに、第１の画像及び第２の画像のうちの一方から、第１の光源及び第２の光源のうちの一方による角膜反射像とユーザの瞳孔重心とを検出できるか否か判定し、角膜反射像及び瞳孔重心を検出できる場合、その瞳孔重心と角膜反射像との位置関係に応じてユーザが表示部上で注視している注視位置を検出し、一方、角膜反射像または瞳孔重心の何れかを検出できない場合、第１の画像及び第２の画像のうちの他方から瞳孔重心及び角膜反射像を検出し、瞳孔重心と角膜反射像との位置関係に応じて注視位置を検出する制御部と、注視位置と関連付けられた処理を実行するアプリケーション実行部とを有する。
【０００８】
さらに他の実施形態によれば、視線検出方法が提供される。この視線検出方法は、所定の周期ごとに、互いに異なる位置に配置された複数の光源のうちの第１の光源がユーザの眼を照明している間にユーザの眼を撮影した第１の画像と、複数の光源のうちの第２の光源がユーザの眼を照明している間にユーザの眼を撮影した第２の画像を取得し、所定の周期ごとに、第１の画像及び第２の画像のうちの一方から、第１の光源及び第２の光源のうちの一方による角膜反射像とユーザの瞳孔重心とを検出できるか否か判定し、角膜反射像及び瞳孔重心を検出した場合、その瞳孔重心と角膜反射像との位置関係に応じてユーザの視線方向を検出し、一方、角膜反射像または瞳孔重心の何れかを検出できない場合、第１の画像及び第２の画像のうちの他方から瞳孔重心及び角膜反射像を検出し、瞳孔重心と角膜反射像との位置関係に応じてユーザの視線方向を検出することを含む。
【０００９】
本発明の目的及び利点は、請求項において特に指摘されたエレメント及び組み合わせにより実現され、かつ達成される。
上記の一般的な記述及び下記の詳細な記述の何れも、例示的かつ説明的なものであり、請求項のように、本発明を限定するものではないことを理解されたい。
【発明の効果】
【００１０】
本明細書に開示された視線検出装置及び視線検出方法は、光源のプルキンエ像の検出に失敗してから、光源のプルキンエ像を検出できるまでのタイムラグを短縮できる。
【図面の簡単な説明】
【００１１】
【図１】一つの実施形態による視線検出装置を搭載した携帯端末のハードウェア構成図である。
【図２】携帯端末の概略正面図である。
【図３】光源のプルキンエ像と眼鏡レンズで反射された光源の像とが写った画像の一例を示す図である。
【図４】視線検出装置の制御部の機能ブロック図である。
【図５】参照テーブルの一例を示す図である。
【図６】キャリブレーション処理の動作フローチャートを示す図である。
【図７】視線検出処理の動作フローチャートを示す図である。
【発明を実施するための形態】
【００１２】
以下、図を参照しつつ、一つの実施形態による、視線検出装置について説明する。
この視線検出装置は、異なる位置に配置された複数の光源を有し、一定の周期ごとに、各光源のうち点灯する光源を変えつつ複数回ユーザの眼を撮影することで、眼を照明する光源が異なる複数の画像を生成する。そしてこの視線検出装置は、一定の周期ごとに生成された複数の画像に対して順次プルキンエ像及び瞳孔の重心を検出し、プルキンエ像及び瞳孔の重心が検出された画像を用いてユーザの視線を検出する。このように、この視線検出装置は、プルキンエ像または瞳孔の重心の検出に失敗してからユーザの眼を再撮影するのではなく、予めユーザの眼を照明する光源が異なる複数の画像を取得しているので、最初に解析した画像上でプルキンエ像または瞳孔の重心の検出に失敗した場合でも、ユーザの視線方向が検出できるまでのタイムラグを短縮できる。
【００１３】
図１は、一つの実施形態による視線検出装置を搭載した携帯端末のハードウェア構成図である。携帯端末１は、ユーザインターフェース２と、メモリ３と、制御部４と、筺体５と、視線検出装置１０とを有するコンピュータである。なお、携帯端末１は、例えば、携帯電話機または携帯情報端末である。さらに携帯端末１は、携帯端末１を他の機器に接続するための通信インターフェース回路（図示せず）を有していてもよい。なお、図１は、携帯端末１が有する構成要素を説明するための図であり、携帯端末１の各構成要素の実際の配置を表した図ではないことに留意されたい。
【００１４】
ユーザインターフェース２は、例えば、タッチパネルディスプレイを有する。そしてユーザインターフェース２は、筺体５の正面において、ユーザインターフェース２の表示画面が、筺体５の正面に対向するユーザを向くように配置される。そしてユーザインターフェース２は、例えば、様々なアイコンを制御部４からの制御信号に応じて表示する。またユーザインターフェース２は、表示されたアイコンの位置にユーザが触れた場合に、その位置に応じた操作信号を生成し、その操作信号を制御部４へ出力する。
なお、ユーザインターフェース２は、液晶ディスプレイといった表示装置と、キーパッドなどの複数の操作スイッチを有していてもよい。
【００１５】
メモリ３は、例えば、読み書き可能な不揮発性の半導体メモリを有する。そしてメモリ３は、制御部４上で実行される各種のアプリケーションプログラム及び各種のデータを記憶する。またメモリ３は、ユーザインターフェース２の表示画面に表示中のアイコンの領域を表す情報を記憶する。
【００１６】
さらに、メモリ３は、視線検出装置１０の記憶部としても機能する。そしてメモリ３は、例えば、プルキンエ像の重心に対する瞳孔重心の相対的な位置とユーザが注視する位置との関係を表す参照テーブルなど、ユーザが注視する位置を検出するために利用される各種のデータを記憶する。また、メモリ３は、キャリブレーション処理の実行時において使用される、ユーザが眼鏡を装着しているか否かを表す眼鏡装着フラグを記憶する。さらに、メモリ３は、視線検出処理を実行するプログラムを記憶する。
なお、視線検出装置１０の記憶部として機能するメモリ回路は、メモリ３とは別個に携帯端末１に実装されてもよい。
【００１７】
視線検出装置１０は、ユーザインターフェース２の表示画面上でユーザが注視している位置、すなわち、ユーザの視線方向を求める。そして視線検出装置１０は、ユーザが注視している位置を表す情報を制御部４が実行中のアプリケーションプログラムに渡す。なお、視線検出装置１０の詳細については後述する。
【００１８】
制御部４は、一つまたは複数のプロセッサ及びその周辺回路を有する。そして制御部４は、携帯端末１の各部と信号線を介して接続されており、携帯端末１全体を制御する。例えば、制御部４は、ユーザインターフェース２から受け取った操作信号と実行中のアプリケーションプログラムに応じた処理を実行する。
また制御部４は、視線検出装置１０の制御部としても機能する。なお、視線検出装置１０の制御部としての機能及び動作に関しては後述する。
さらに、制御部４は、アプリケーション実行部の一例であり、例えば、視線検出装置１０により求められた、ユーザが注視している位置とメモリ３に記憶されているユーザインターフェース２の表示画面上の各アイコンの表示領域とを比較する。そして制御部４は、ユーザが注視している位置と何れかのアイコンの表示領域とが重なっている場合、そのアイコンに応じた処理を実行する。例えば、表示画面に現在地に近いホテルを表すアイコンが表示されており、各アイコンには、ホテルの詳細情報を表示画面の下方に表示する処理が関連付けられているとする。
この場合、ユーザが注視する位置が何れかのアイコンの表示領域と重なっていれば、制御部４は、ユーザインターフェース２に、そのアイコンに関連するホテルの詳細情報を表示画面の下方に表示させる。本実施形態では、視線検出装置１０が一定の周期ごとに眼を照明する光源が異なる複数の画像に基づいてユーザが注視する位置を検出するので、制御部４は、ユーザが注視している位置を各周期において知ることができる。そのため、ユーザが注視するアイコンを次々に変えても、制御部４は、ユーザが注視したアイコンに関連付けられた情報を確実に表示させることができる。
【００１９】
視線検出装置１０は、ユーザの視線を検出するために、４個の光源１１−１〜１１−４と、カメラ１２と、メモリ３と、制御部４とを有する。
光源１１−１〜１１−４は、携帯端末１を操作するユーザの眼及びその周囲を照明する。そのため、各光源１１−１〜１１−４は、例えば、少なくとも一つの赤外発光ダイオードと、制御部４からの制御信号に応じて、赤外発光ダイオードに図示しない電源からの電力を供給する駆動回路とを有する。そして各光源１１−１〜１１−４は、制御部４から光源を点灯させる制御信号を受信している間、照明光を発する。
なお、視線検出装置１０が有する光源の数は、４個に限られない。視線検出装置１０は、互いに異なる位置に配置された２個以上の光源を有すればよい。
【００２０】
カメラ１２は、撮像部の一例であり、ユーザの眼が写った画像を生成する。そのために、カメラ１２は、光源１１−１〜１１−４の光に感度を持つ２次元状に配列された固体撮像素子を有するイメージセンサと、そのイメージセンサ上にユーザの眼の像を結像する撮像光学系を有する。カメラ１２は、虹彩による反射像及び光源１１−１〜１１−４以外の光源からの光の角膜反射像が検出されることを抑制するために、イメージセンサと撮像光学系の間に、可視光カットフィルタをさらに有してもよい。
また、画像が光源１１−１〜１１−４のプルキンエ像を識別できる程度の解像度を有するように、カメラ１２のイメージセンサの画素数は、例えば、100万、200万、あるいは400万とすることができる。またイメージセンサにより生成される画像はカラー画像であり、画素ごとに赤色(R)、緑色(G)及び青色(B)の３色の成分を持つ。各色成分は、例えば、0〜255の何れかの値をとり、色成分値が大きいほど、その色の輝度が高い。あるいは、イメージセンサにより生成される画像は、光の強度が強いほど各画素の輝度が高くなるモノクロ画像であってもよい。
カメラ１２は、制御部４から撮影指示信号を受け取ると、光源１１−１〜１１−４の何れかが点灯している間に撮影することにより、点灯している光源により照明されたユーザの少なくとも一方の眼、好ましくは両方の眼が写った画像を生成する。そしてカメラ１２は、画像を生成する度に、生成した画像を制御部４へ出力する。
【００２１】
図２は、携帯端末１の概略正面図である。本実施形態では、図２に示されるように、携帯端末１のユーザインターフェース２の表示画面２ａの上端に近接してカメラ１２が配置される。このカメラ１２は、表示画面２ａに対向するユーザの顔を撮影できるように向けられる。なお、表示画面２ａは、ユーザが注視する可能性がある注視領域の一例である。
各光源１１−１〜１１−４は、表示画面２ａに対向するユーザの顔を照明できるように、ユーザインターフェース２の外周に沿って配置される。また、ユーザが眼鏡を掛けている場合に、光源１１−１〜１１−４の少なくとも一つの眼鏡レンズによる反射像とユーザの角膜による反射像とがカメラ１２の像面で重複しないように、各光源１１−１〜１１−４は、互いに異なる位置に配置される。例えば、光源１１−１〜１１−４のうちの少なくとも二つの間隔が、ユーザが携帯端末１を操作する際のユーザと表示画面２ａ間の距離においてその二つの光源の眼鏡レンズによる反射像間の距離が瞳孔の直径よりも大きくなるように設定される。例えば、光源１１−１と光源１１−２間の距離は、50mm以上に設定されることが好ましい。この例では、光源１１−１は、ユーザインターフェース２の上側に配置される。また光源１１−２〜１１−４は、それぞれ、ユーザインターフェース２の下側、左側、右側に配置される。
【００２２】
一般に、眼鏡レンズのユーザと対向しない側の表面は凸状に形成されるが、その曲率半径は、角膜の曲率半径よりも非常に大きい。すなわち、カメラ１２にとって、眼鏡レンズと角膜の両方とも、凸面鏡として機能するが、角膜の光学パワーの絶対値の方が、眼鏡レンズの光学パワーの絶対値よりも強い。したがって、光源の位置が変化すると、角膜による光源の反射像の位置変化量は、眼鏡レンズによる光源の反射像の位置変化量よりも小さい。そのため、ある光源の眼鏡レンズによる反射像と角膜による反射像がカメラ１２の像面で重なる場合、他の位置にある光源の眼鏡レンズによる反射像と角膜による反射像は、カメラ１２の像面では異なる位置になる。
したがって、互いに異なる位置に配置された複数の光源１１−１〜１１−４のうちの点灯する光源を変えることで、視線検出装置１は、光源１１からの照明光の眼鏡レンズによる反射像とその照明光のプルキンエ像とをカメラ１２の像面上で異なる位置に分離できる。
【００２３】
図３は、光源のプルキンエ像と眼鏡レンズで反射された光源の像とが写った画像の一例を示す図である。図３に示された画像３００では、上下方向に並んだ二つの光源により照明されたユーザの眼が写っている。画像３００上の輝点３０１、３０２は、それぞれ、二つの光源のプルキンエ像である。一方、輝点３１１、３１２は、それぞれ、眼鏡レンズの表面で反射された二つの光源の反射像である。眼鏡レンズによる反射像は明るいので、その反射像と光源のプルキンエ像が重なると、視線検出装置１０がそのプルキンエ像を検出するのは困難である。しかし、輝点３１１と輝点３１２の間隔は、輝点３０１と３０２間の間隔よりも非常に大きい。したがって、上側の光源または下側の光源の何れか一方に関して、光源のプルキンエ像と眼鏡レンズによる反射像が重なる場合には、他方の光源については、光源のプルキンエ像と眼鏡レンズによる反射像が重ならないことが分かる。
【００２４】
また各光源１１−１〜１１−４とカメラ１２とを結ぶ線が、表示画面２ａの中心から外れるように各光源１１−１〜１１−４及びカメラ１２は配置されることが好ましい。このように各光源とカメラ１２を配置することにより、表示画面２ａに対して正対しているユーザが眼鏡を掛けていても、眼鏡レンズで反射された光源の光はカメラ１２と異なる方向へ向かう可能性が高くなる。そのため、視線検出装置１０は、ユーザが眼鏡を掛けている場合でも、光源のプルキンエ像及び瞳孔の重心と眼鏡レンズによる光源の像とが重なる可能性を低減できる。
【００２５】
制御部４は、上述したように、携帯端末１の制御部でもあり、視線検出装置１０の各部と信号線を通じて接続されている。そして制御部４は、視線検出装置１０の各部へ信号線を通じて制御信号を送信することで視線検出装置１０の各部を制御する。
また制御部４は、ユーザが注視している位置の情報を用いるアプリケーションが携帯端末１で実行されている間、ユーザが注視している位置を求める視線方向検出処理を実行する。また、制御部４は、携帯端末１の起動時、あるいは上記のようなアプリケーションの起動時など、特定のタイミングにおいて、光源のプルキンエ像と瞳孔重心との相対的な位置関係とユーザが注視している位置との関係を求めるキャリブレーション処理を実行する。
【００２６】
図４は、制御部４の視線検出処理に関する機能ブロック図である。制御部４は、光源制御部２１と、カメラ制御部２２と、顔検出部２３と、プルキンエ像検出部２４と、視線検出部２５と、キャリブレーション部２６とを有する。
光源制御部２１、カメラ制御部２２、顔検出部２３、プルキンエ像検出部２４、視線検出部２５及びキャリブレーション部２６は、制御部４が有するプロセッサ上で実行されるコンピュータプログラムにより実現される機能モジュールである。
あるいは、光源制御部２１、カメラ制御部２２、顔検出部２３、プルキンエ像検出部２４、視線検出部２５及びキャリブレーション部２６は、それぞれ、制御部４が有するプロセッサとは別個の回路として形成されてもよい。あるいは光源制御部２１、カメラ制御部２２、顔検出部２３、プルキンエ像検出部２４、視線検出部２５及びキャリブレーション部２６は、その各部に対応する回路が集積された一つの集積回路として、制御部４が有するプロセッサとは別個に携帯端末１に実装されてもよい。この場合、その集積回路は、メモリ３とは別個に、参照テーブルなどを記憶して、視線検出装置１０が有する記憶部として機能する記憶回路を含んでいてもよい。
【００２７】
光源制御部２１は、光源１１−１〜１１−４のそれぞれについて点灯するタイミングを制御する。そして光源制御部２１は、視線検出処理の実行中において、点灯する光源が一定の周期で切り替わるように各光源へ制御信号を送信する。例えば、光源制御部２１は、一定周期ごとに、点灯する光源が、１１−１→１１−２→１１−３→１１−４の順序で切り替わるように各光源へ制御信号を送信してもよい。
また光源制御部２１は、同時に２個以上の光源が点灯するように各光源へ制御信号を送信してもよい。同時に複数の光源が点灯すると、プルキンエ像にも点灯している複数の光源の像が含まれるので、視線検出装置１０は、画像上での輝点の配置パターンが、実際に点灯している光源の配置パターンと一致するか否か調べることができる。そのため、視線検出装置１０は、室内灯または太陽など、他の光源の像と視線検出装置１０が有する光源の像とを識別し易くなる。
【００２８】
例えば、光源制御部２１は、一定周期ごとに、点灯する光源が、（１１−１、１１−３）→（１１−２、１１−４）の順序で切り替わるように各光源へ制御信号を送信してもよい。あるいは、光源制御部２１は、一定周期ごとに、点灯する光源が、（１１−１、１１−３）→（１１−２、１１−４）→（１１−１、１１−４）→（１１−２、１１−３）の順序で切り替わるように各光源へ制御信号を送信してもよい。
また一定周期は、例えば、ユーザの視線の移動に追随して必要な操作が実行されるように決定される。例えば、一定周期は、50ミリ秒〜100ミリ秒に設定される。
また光源制御部２１は、キャリブレーション処理の実行中において、１回の周期における光源の点灯順序に従って、各光源を順次点灯させる。
光源制御部２１は、点灯させる光源を切り替える度に、その旨をカメラ制御部２２へ通知する。
【００２９】
カメラ制御部２２は、視線検出処理またはキャリブレーション処理の実行中において、カメラ１２が撮影するタイミングを制御する。カメラ制御部２２は、光源制御部２１から点灯させる光源を切り替えることを通知されると、カメラ１２に対して撮影を実行させる撮影指示信号を送信する。そしてカメラ制御部２２は、カメラ１２から画像を受け取ると、その画像を一旦メモリ３に記憶させる。
したがって、カメラ制御部２２は、光源１１−１〜１１−４の点灯パターンが一巡する一定周期ごとに、カメラ１２から複数の画像を受け取る。例えば、上記のように、光源１１−１〜１１−４が一定周期内で１個ずつ点灯する場合、カメラ制御部２２は、各光源が点灯している間に撮影された４枚の画像を受け取る。また、光源１１−１〜１１−４が、一定周期内で２個ずつ、２通りのパターンで点灯する場合、カメラ制御部２２は、それぞれの点灯パターンで光源が点灯している間に撮影された２枚の画像を受け取る。
【００３０】
顔検出部２３は、視線検出処理またはキャリブレーション処理の実行中において、画像上でユーザの眼が写っている可能性のある領域を特定するために、カメラ１２から受け取った画像上で、ユーザの顔が写っている領域を検出する。
本実施形態では、撮影時において、ユーザの顔は光源１１−１〜１１−４からの赤外光で照明されており、赤外光に対する肌の反射率は比較的高い（例えば、肌の反射率は近赤外の波長域で数10%）ので、画像上で顔の肌の部分が写っている画素の輝度は高い。一方、画像上で髪の毛またはユーザの背後の領域は赤外光に対する反射率が低いかまたは光源から遠いため、髪の毛またはユーザの背後の領域が写っている画素の輝度は、相対的に低くなる。
そこで、顔検出部２３は、画像の各画素の値がRGB表色系により表されているカラー画像である場合、各画素の値をYUV表色系により表される値に変換する。そして顔検出部２３は、各画素の輝度成分（Y成分）の値が所定の閾値以上の画素を、顔が写っている可能性がある顔領域候補画素として抽出する。なお、画像の各画素の値が輝度を表すモノクロ画像である場合、顔検出部２３は、各画素の値を所定の閾値と比較する。所定の閾値は、例えば、画像上の輝度成分の最大値に0.8を乗じた値に設定される。
【００３１】
また、ユーザの視線に応じて携帯端末１の操作が実行される場合、ユーザの顔は、携帯端末１の正面を向いており、かつ、携帯端末１の正面から略数十cm離れた位置にあると想定される。そのため、画像上でユーザの顔が占める領域は比較的大きく、かつ、画像上で顔が占める領域の大きさもある程度推定される。
そこで顔検出部２３は、顔領域候補画素に対してラベリング処理を行って、互いに隣接している顔領域候補画素の集合を顔候補領域とする。そして顔検出部２３は、顔候補領域の大きさがユーザの顔の大きさに相当する基準範囲に含まれているか否か判定する。顔候補領域の大きさがユーザの顔の大きさに相当する基準範囲に含まれていれば、顔検出部２３はその顔候補領域をユーザの顔が写っている顔領域と判定する。
なお、顔候補領域の大きさは、例えば、顔候補領域の水平方向の最大幅の画素数で表される。この場合、基準範囲は、例えば、画像の水平方向画素数の1/4以上〜2/3以下に設定される。あるいは、顔候補領域の大きさは、例えば、顔候補領域に含まれる画素数で表されてもよい。この場合、基準範囲は、例えば、画像全体の画素数の1/16以上〜4/9以下に設定される。
【００３２】
顔検出部２３は、顔候補領域の大きさだけでなく、顔候補領域の形状も、顔候補領域を顔領域と判定するための判定条件に加えてもよい。人の顔は、一般に略楕円形状を有している。そこで顔検出部２３は、例えば、顔候補領域の大きさが上記の基準範囲に含まれ、かつ、顔候補領域の円形度が、一般的な顔の輪郭に相当する所定の閾値以上である場合に顔候補領域を顔領域としてもよい。なお顔検出部２３は、顔候補領域の輪郭上に位置する画素の合計を顔候補領域の周囲長として求め、顔候補領域内の総画素数に4πを乗じた値を周囲長の２乗で除することにより円形度を算出できる。
【００３３】
あるいは、顔検出部２３は、顔候補領域の輪郭上の各画素の座標を楕円方程式に当てはめて最小二乗法を適用することにより、顔候補領域を楕円近似してもよい。そして顔検出部２３は、その楕円の長軸と短軸の比が一般的な顔の長軸と短軸の比の範囲に含まれる場合に、顔候補領域を顔領域としてもよい。なお、顔検出部２３は、楕円近似により顔候補領域の形状を評価する場合、画像の各画素の輝度成分に対して近傍画素間演算を行ってエッジに相当するエッジ画素を検出してもよい。この場合、顔検出部２３は、エッジ画素を例えばラベリング処理を用いて連結し、一定の長さ以上に連結されたエッジ画素を顔候補領域の輪郭とする。
【００３４】
なお、顔検出部２３は、画像上に写っている顔の領域を検出する他の様々な方法の何れかに従って顔領域を検出してもよい。例えば、顔検出部２３は、顔候補領域と一般的な顔の形状に相当するテンプレートとの間でテンプレートマッチングを行って、顔候補領域とテンプレートとの一致度を算出し、その一致度が所定値以上である場合に、顔候補領域を顔領域と判定してもよい。
【００３５】
顔検出部２３は、顔領域を抽出できると、顔領域を表す情報を生成する。例えば、顔領域を表す情報は、画像と同一のサイズを有し、かつ顔領域内の画素と顔領域外の画素とが異なる画素値を持つ２値画像とすることができる。
そして顔検出部２３は、顔領域を表す情報をプルキンエ像検出部２４へ渡す。
【００３６】
プルキンエ像検出部２４は、視線検出処理またはキャリブレーション処理の実行中において、顔領域内でユーザの眼が写っている領域を検出し、眼が写っている領域内でプルキンエ像を検出する。
眼に相当する画素の輝度は、眼の周囲に相当する画素の輝度と大きく異なる。そこでプルキンエ像検出部２４は、顔領域内の各画素に対して、例えば、Sobelフィルタを用いて垂直方向の近傍画素間差分演算を行って垂直方向に輝度が変化するエッジ画素を検出する。そしてプルキンエ像検出部２４は、例えば、エッジ画素が略水平方向に眼の大きさに相当する所定数以上連結された２本のエッジ線で囲まれた領域を眼の領域とする。
あるいは、プルキンエ像検出部２４は、画像上の眼の像を表すテンプレートと、顔領域とのテンプレートマッチングにより、顔領域内でテンプレートに最も一致する領域を検出し、その検出した領域を眼の領域としてもよい。
【００３７】
さらに、プルキンエ像検出部２４は、眼の領域内で瞳孔が写っている領域を検出する。本実施形態では、プルキンエ像検出部２４は、瞳孔に相当するテンプレートと眼の領域との間でテンプレートマッチングを行い、眼の領域内でテンプレートとの一致度が最も高くなる領域を検出する。そしてプルキンエ像検出部２４は、一致度の最高値が所定の一致度閾値よりも高い場合、その検出した領域に瞳孔が写っていると判定する。なお、テンプレートは、瞳孔の大きさに応じて複数準備されてもよい。この場合、プルキンエ像検出部２４は、各テンプレートと眼の領域とのテンプレートマッチングをそれぞれ実行し、一致度の最高値を求める。そして一致度の最高値が一致度閾値よりも高い場合、プルキンエ像検出部２４は、一致度の最高値に対応するテンプレートと重なった領域に瞳孔が写っていると判定する。なお、一致度は、例えば、テンプレートとそのテンプレートと重なった領域との正規化相互相関値として算出される。また一致度閾値は、例えば、0.7または0.8に設定される。
【００３８】
また瞳孔が写っている領域の輝度は、その周囲の領域の輝度よりも低く、瞳孔は略円形である。そこでプルキンエ像検出部２４は、眼の領域内で、同心円状に半径の異なる２本のリングを設定する。そしてプルキンエ像検出部２４は、外側のリングに相当する画素の輝度の平均値から内側の画素の輝度の平均値を引いた差分値が所定の閾値よりも大きい場合、その内側のリングで囲まれた領域を瞳孔領域としてもよい。またプルキンエ像検出部２４は、内側のリングで囲まれた領域の平均輝度値が所定の閾値以下であることを、瞳孔領域として検出する条件に加えてもよい。この場合、所定の閾値は、例えば、眼の領域内の最大輝度値と最小輝度値の差の10％〜20％を、最小輝度値に加えた値に設定される。
プルキンエ像検出部２４は、瞳孔領域の検出に成功した場合、瞳孔領域に含まれる各画素の水平方向座標値の平均値及び垂直方向座標値の平均値を、瞳孔領域の重心の座標として算出する。一方、プルキンエ像検出部２４は、瞳孔領域の検出に失敗した場合、制御部４へその旨を表す信号を返す。
【００３９】
またプルキンエ像検出部２４は、眼の領域内で光源１１−１〜１１−４のプルキンエ像を検出する。光源１１−１〜１１−４のプルキンエ像が写っている領域の輝度は、その周囲の領域の輝度よりも高く、その輝度値は略飽和している（すなわち、輝度値が、画素値が取り得る輝度の値の略最高値となっている）。また、光源１１−１〜１１−４のプルキンエ像が写っている領域の形状は、各光源の発光面の形状と略一致する。そこでプルキンエ像検出部２４は、眼の領域内で、光源の発光面の輪郭形状と略一致する形状を持ち、かつ、大きさが異なるとともに中心が一致する２本のリングを設定する。そしてプルキンエ像検出部２４は、内側のリングに相当する画素の輝度の平均値である内部輝度平均値から外側の画素の輝度の平均値を引いた差分値が所定の差分閾値よりも大きく、かつ内側輝度平均値が所定の輝度閾値よりも高い場合、その内側のリングで囲まれた領域を光源１１−１〜１１−４のプルキンエ像とする。なお、差分閾値は、例えば、眼の領域内の近傍画素間の差分値の平均値とすることができる。また所定の輝度閾値は、例えば、眼の領域内での輝度値の最高値の80%とすることができる。
なお、プルキンエ像検出部２４は、画像上で瞳孔が写っている領域を検出する他の様々な方法の何れかを用いて、瞳孔が写っている領域を検出してもよい。同様に、プルキンエ像検出部２４は、画像上で光源のプルキンエ像が写っている領域を検出する他の様々な方法の何れかを用いて、光源のプルキンエ像が写っている領域を検出してもよい。
【００４０】
プルキンエ像検出部２４は、光源１１−１〜１１−４の何れかのプルキンエ像の検出に成功した場合、光源に含まれる各画素の水平方向座標値の平均値及び垂直方向座標値の平均値を、プルキンエ像の重心の座標として算出する。一方、プルキンエ像検出部２４は、光源のプルキンエ像の検出に失敗した場合、制御部４へその旨を表す信号を返す。
プルキンエ像検出部２４は、キャリブレーション処理の実行時の場合、プルキンエ像の重心及び瞳孔重心をキャリブレーション部２６へ通知する。一方、プルキンエ像検出部２４は、視線検出処理の実行時には、プルキンエ像の重心及び瞳孔重心を視線検出部２５へ通知する。
【００４１】
視線検出部２５は、視線検出処理の実行中において、プルキンエ像の重心及び瞳孔重心に基づいて、ユーザが、ユーザインターフェース２の表示画面２ａ上で注視している位置、すなわち、ユーザの視線方向を検出する。なお、以下では、便宜上、ユーザが表示画面２ａ上で注視している位置を単に注視位置と呼ぶ。
【００４２】
角膜の表面は略球形であるため、視線方向によらず、光源のプルキンエ像の位置はほぼ一定となる。一方、瞳孔重心は、ユーザの視線方向に応じて移動する。そのため、視線検出部２５は、プルキンエ像の重心を基準とする瞳孔重心の相対的な位置を求めることにより、ユーザの視線方向を検出できる。
本実施形態では、視線検出部２５は、光源のプルキンエ像の重心を基準とする瞳孔重心の相対的な位置を、例えば、瞳孔重心の水平方向座標及び垂直方向座標からプルキンエ像の重心の水平方向座標及び垂直方向座標を減算することにより求める。そして視線検出部２５は、瞳孔重心の相対的な位置と表示画面２ａ上でのユーザの注視位置との関係を表す参照テーブルを参照することにより、ユーザの注視位置を決定する。
そして視線検出部２５は、ユーザの注視位置を制御部４で実行中のアプリケーションプログラムへ通知する。
【００４３】
図５は、参照テーブルの一例を示す図である。参照テーブル５００の左側の列の各欄には、光源のプルキンエ像の重心を基準とする瞳孔重心の相対的な位置の座標が表される。また参照テーブル５００の右側の列の各欄には、同じ行の瞳孔重心の相対的な位置の座標に対応する注視位置の座標が表される。なお、瞳孔重心の相対的な位置の座標は、画像上の画素単位で表され、一方、注視位置の座標は、表示画面２ａの画素単位で表される。例えば、行５０１には、瞳孔重心の相対的な位置の座標(0,0)に対する注視位置の座標が(cx,cy)であることが示されている。なお、cx、cyは、例えば、表示画面２ａの中心の水平座標及び垂直座標である。また、行５０２には、瞳孔重心の相対的な位置の座標(-2,0)に対する注視位置の座標が(cx-10,cy)であることが示されている。
【００４４】
キャリブレーション部２６は、参照テーブルを更新する。またキャリブレーション部２６は、キャリブレーション処理の実行タイミングを決定する。
キャリブレーション部２６は、例えば、制御部４から携帯端末１が起動したことを示す信号を受信したとき、あるいは、特定のアプリケーションが起動されたことを示す信号を受信したときに、最初のキャリブレーション処理を実行する。
キャリブレーション処理が開始されると、キャリブレーション部２６は、ユーザインターフェース２の表示画面２ａ上の所定の基準位置にキャリブレーション用のマークを表示させる。基準位置は、例えば、表示画面２ａの中心、あるいは表示画面２ａの４角の何れかとすることができる。またキャリブレーションの実行中、ユーザは、表示画面２ａ上に表示されているキャリブレーション用のマークを注視するものとする。
【００４５】
キャリブレーション部２６は、表示画面２ａの中心にマークが表示されているときに撮影された画像に基づいて検出された、プルキンエ像の重心及び瞳孔重心の座標をプルキンエ像検出部２４から受け取る。そしてキャリブレーション部２６は、プルキンエ像の重心を基準とする瞳孔重心の相対的な位置を、表示画面２ａの中心に対応させるよう、参照テーブルを更新する。
またキャリブレーション部２６は、表示画面２ａの左上の角にマークが表示されているときに撮影された画像に基づいて検出された、プルキンエ像の重心及び瞳孔重心の座標をプルキンエ像検出部２４から受け取る。そしてキャリブレーション部２６は、このときのプルキンエ像の重心を基準とする瞳孔重心の相対的な位置を、表示画面２ａの左上の角に対応させるよう、参照テーブルを更新する。同様に、キャリブレーション部２６は、マークが表示画面２ａのそれぞれの角に表示されているときの撮影画像から求められたプルキンエ像の重心を基準とする瞳孔重心の相対的な位置を、そのマークの表示位置と対応づけるよう参照テーブルを更新する。
さらに、キャリブレーション部２６は、表示画面２ａ上のその他の位置に対するプルキンエ像の重心を基準とする瞳孔重心の相対的な位置を、既に求められている上記の５個のマークの位置に対応する瞳孔重心の相対的な位置を用いて例えば線形補間することにより決定する。そしてキャリブレーション部２６は、様々な表示画面２ａ上の位置に対する瞳孔重心の相対的な位置を対応づけるように参照テーブルを更新する。
キャリブレーション部２６は、表示画面２ａ上の各点に対する瞳孔重心の相対的な位置を決定すると、更新された参照テーブルをメモリ３に保存する。
なお、参照テーブルは、点灯している光源ごとに予め作成され、各参照テーブルは、対応する光源の識別番号と関連付けてメモリ３に記憶されてもよい。この場合、キャリブレーション部２６は、制御部４から点灯している光源についての識別情報を取得して、更新対象となる参照テーブルを特定する。
【００４６】
またキャリブレーション部２６は、プルキンエ像の検出に成功したか否かに基づいて、キャリブレーションの実行タイミングを決定する。例えば、ユーザが眼鏡を掛けている場合、眼鏡レンズによる光源の反射像が瞳孔重心または光源のプルキンエ像と重なる可能性があるため、ユーザが眼鏡を掛けていない場合よりもプルキンエ像検出部２４が光源のプルキンエ像の検出に失敗する可能性が高い。そこでキャリブレーション部２６は、ユーザが眼鏡を掛けている場合のキャリブレーションの実行頻度が、ユーザが眼鏡を掛けていない場合の実行頻度よりも多くなるように、キャリブレーションの実行タイミングを決定する。
【００４７】
本実施形態において、プルキンエ像検出部２４が、何れかの光源が点灯しているときの画像について光源のプルキンエ像または瞳孔重心の検出に失敗した場合、ユーザが眼鏡を掛けていると推定される。そこでこの場合、キャリブレーション部２６は、所定の期間が経過する度にキャリブレーション処理を実行するよう、キャリブレーション処理の実行タイミングを設定する。なお、所定の期間は、例えば、5分間に設定される。またキャリブレーション部２６は、携帯端末１が表示画面２ａに何らかの操作を伴う情報を表示させるアプリケーションを起動した時にもキャリブレーション処理を実行してもよい。さらにキャリブレーション部２６は、最新の画像における顔領域の重心位置が、過去に撮影された画像における顔領域の重心位置から所定画素数以上ずれたときにもキャリブレーション処理を実行してもよい。
さらに、キャリブレーション部２６は、視線検出処理の実行時において、各周期における瞳孔重心及びプルキンエ像の検出を行う画像の順序を設定してもよい。例えば、キャリブレーション部２６は、光源のプルキンエ像または瞳孔重心の検出に成功した画像に対応する光源が点灯している間に撮影された画像について、先に瞳孔重心及びプルキンエ像の検出を行うようにしてもよい。これにより、視線検出装置１は、視線検出処理の実行中に、瞳孔重心及びプルキンエ像の検出に失敗する可能性を低減できるので、視線検出処理に要する演算負荷を軽減できる。
【００４８】
一方、前回のキャリブレーション処理の実行時において、キャリブレーション部２６が何れの光源が点灯しているときに撮影された画像についても、光源のプルキンエ像または瞳孔重心の検出に成功した場合、ユーザは眼鏡を掛けていないと推定される。
そこでこの場合、キャリブレーション部２６は、携帯端末１が表示画面２ａに何らかの操作を伴う情報を表示させるアプリケーションを起動した時にキャリブレーション処理を実行する。また、キャリブレーション部２６は、最新の画像における顔領域の重心位置が、過去に撮影された画像における顔領域の重心位置から所定画素数以上ずれたときにもキャリブレーション処理を実行してもよい。
【００４９】
図６は、制御部４により実行される、キャリブレーション処理の動作フローチャートを示す。
図６に示されるように、制御部４は、ユーザインターフェース２の表示画面２ａ上の基準位置に所定のマークを表示させる。また制御部４は、ユーザが眼鏡を装着しているか否かを表す眼鏡装着フラグを、眼鏡を装着していないことを表す値（以下、便宜上ＯＦＦと表記する）に設定する（ステップＳ１０１）。
次に、制御部４は、点灯する光源が異なる状態で撮影された複数の画像を取得する（ステップＳ１０２）。そして制御部４は、未着目の画像のうちで着目する画像を設定する（ステップＳ１０３）。
【００５０】
制御部４の顔検出部２３は、着目画像上で顔が写っている顔領域を抽出する（ステップＳ１０４）。そして顔検出部２３は、顔領域を表す情報を制御部４のプルキンエ像検出部２４へ渡す。
プルキンエ像検出部２４は、顔領域内で眼の領域を検出する（ステップＳ１０５）。そしてプルキンエ像検出部２４は、眼の領域内で瞳孔重心を検出する（ステップＳ１０６）。またプルキンエ像検出部２４は、眼の領域内で点灯している光源のプルキンエ像を検出する（ステップＳ１０７）。
プルキンエ像検出部２４は、プルキンエ像検出部２４が瞳孔重心及び光源のプルキンエ像の検出に成功したか否か判定する（ステップＳ１０８）。
プルキンエ像検出部２４が瞳孔重心及び光源のプルキンエ像の検出に成功した場合（ステップＳ１０８−Ｙｅｓ）、プルキンエ像検出部２４は、光源のプルキンエ像の重心及び瞳孔重心を制御部４のキャリブレーション部２６へ通知する。
キャリブレーション部２６は、プルキンエ像の重心を基準とする瞳孔重心の相対的な位置を求める。そしてキャリブレーション部２６は、その相対的な位置と表示画面２ａに表示されているマークの位置により決定される注視位置とに基づいて、参照テーブルを更新する（ステップＳ１０９）。
一方、プルキンエ像検出部２４が瞳孔重心または光源のプルキンエ像の検出に失敗した場合（ステップＳ１０８−Ｎｏ）、制御部４は、眼鏡装着フラグの値をユーザが眼鏡を装着していることを表す値に設定する（ステップＳ１１０）。なお、以下では、ユーザが眼鏡を装着していることを表す眼鏡装着フラグの値を、便宜上ＯＮと表記する。
制御部４は、全ての画像を着目画像に設定したか否か判定する（ステップＳ１１１）。何れかの画像が着目画像に設定されていなければ（ステップＳ１１１−Ｎｏ）、制御部４は、ステップＳ１０３以降の処理を再度実行する。
一方、全ての画像が着目画像に設定されていれば（ステップＳ１１１−Ｙｅｓ）、キャリブレーション部２６は、眼鏡装着フラグがＯＮか否か判定する（ステップＳ１１２）。
眼鏡装着フラグがＯＮであれば（ステップＳ１１２−Ｙｅｓ）、キャリブレーション部２６は、ユーザが眼鏡を未装着の時よりもキャリブレーション頻度が高くなるようにキャリブレーションタイミングを設定する（ステップＳ１１３）。
一方、眼鏡装着フラグがＯＦＦであれば（ステップＳ１１２−Ｎｏ）、キャリブレーション部２６は、ユーザが眼鏡を装着の時よりもキャリブレーション頻度が低くなるようにキャリブレーションタイミングを設定する（ステップＳ１１４）。
ステップＳ１１３またはＳ１１４その後、制御部４は、キャリブレーション処理を終了する。なお、プルキンエ像検出部２４は、ステップＳ１０６の処理とステップＳ１０７の処理の順序を入れ替えてもよい。またプルキンエ像検出部２４は、顔領域全体でユーザの瞳孔及び光源のプルキンエ像を探索してもよい。この場合、ステップＳ１０５の処理は省略される。
【００５１】
図７は、制御部４により実行される、視線検出処理の動作フローチャートを示す。
図７に示されるように、制御部４は、点灯する光源が異なる状態で撮影された複数の画像を取得する（ステップＳ２０１）。そして制御部４は、未着目の画像のうちで着目する画像を設定する（ステップＳ２０２）。
ここで制御部４は、例えば、複数の画像のうち、撮影時に点灯していた光源がカメラ１２に近い順に着目する画像を設定してもよい。ユーザが眼鏡を掛けている場合、一般に、眼鏡レンズの光軸は、ユーザの顔の正面方向よりも下方を向いている。そのため、ユーザが表示画面２ａに正対していると、カメラ１２に近い光源から照射された光は、眼鏡レンズでその光源よりも下方へ反射される。その結果、眼鏡レンズによる光源の像（虚像）は、その光源よりも上方にできるので、眼鏡レンズによる光源の像は、光源のプルキンエ像及び瞳孔重心と重ならない。したがって、撮影時に点灯していた光源がカメラ１２に近い画像ほど、制御部４は、瞳孔重心及び光源のプルキンエ像を検出できる可能性が高い。そのため、制御部４は、このような順序で着目する画像を設定することで、瞳孔重心及び光源のプルキンエ像の検出をやり直す確率を低減できるので、結果として各周期における視線検出処理の演算負荷を軽減できる。
あるいは、制御部４は、最新のキャリブレーションの際に、光源のプルキンエ像及び瞳孔重心が検出された画像が、光源のプルキンエ像または瞳孔重心が検出されなかった画像よりも先に着目画像となるように、着目画像の設定順序を決定してもよい。
【００５２】
制御部４の顔検出部２３は、着目画像上で顔が写っている顔領域を抽出する（ステップＳ２０３）。そして顔検出部２３は、顔領域の抽出に成功したか否か判定する（ステップＳ２０４）。顔領域の抽出に失敗した場合（ステップＳ２０４−Ｎｏ）、ユーザは携帯端末１を向いていない。そのため、制御部４は、視線検出処理を終了する。その後制御部４は、キャリブレーション処理を実行してもよい。
【００５３】
一方、顔検出部２３が顔領域の抽出に成功した場合（ステップＳ２０４−Ｙｅｓ）、顔検出部２３は、顔領域を表す情報を制御部４のプルキンエ像検出部２４へ渡す。
プルキンエ像検出部２４は、顔領域内で眼の領域を検出する（ステップＳ２０５）。そしてプルキンエ像検出部２４は、眼の領域内で瞳孔重心を検出する（ステップＳ２０６）。またプルキンエ像検出部２４は、眼の領域内で点灯している光源のプルキンエ像を検出する（ステップＳ２０７）。そしてプルキンエ像検出部２４は、プルキンエ像検出部２４が瞳孔重心及び光源のプルキンエ像の検出に成功したか否か判定する（ステップＳ２０８）。
【００５４】
プルキンエ像検出部２４が瞳孔重心及び光源のプルキンエ像の検出に失敗した場合（ステップＳ２０８−Ｎｏ）、制御部４は、ステップＳ２０２以降の処理を再度実行する。
一方、プルキンエ像検出部２４が瞳孔重心及び光源のプルキンエ像の検出に成功した場合（ステップＳ２０８−Ｙｅｓ）、プルキンエ像検出部２４は、光源のプルキンエ像の重心及び瞳孔重心を制御部４の視線検出部２５へ通知する。
視線検出部２５は、参照テーブルを参照してプルキンエ像の重心を基準とする瞳孔重心の位置に対応する注視位置を検出する（ステップＳ２０９）。そして視線検出部２５は、その注視位置を表す情報を、制御部４が実行中のアプリケーションプログラムへ渡す。
その後、制御部４は、視線検出処理を終了する。なお、プルキンエ像検出部２４は、ステップＳ２０６の処理とステップＳ２０７の処理の順序を入れ替えてもよい。またプルキンエ像検出部２４は、顔領域全体でユーザの瞳孔及び光源のプルキンエ像を探索してもよい。この場合、ステップＳ２０５の処理は省略される。あるいは、プルキンエ像検出部２４が着目画像上で瞳孔重心または光源のプルキンエ像の何れか一方の検出に失敗した時点で、他方の検出処理を行わずに、制御部４は、ステップＳ２０２以降の処理を再実行してもよい。
【００５５】
以上に説明してきたように、この視線検出装置は、一定の周期ごとに、異なる位置に配置された複数の光源のうち点灯する光源を変えつつ複数回ユーザの眼を撮影することで、眼を照明した光源が異なる複数の画像を生成する。そしてこの視線検出装置は、各周期において、複数の画像に対して順次瞳孔重心及び光源のプルキンエ像の検出処理を行い、プルキンエ像が検出された画像を用いてユーザの視線を検出する。このように、この視線検出装置は、瞳孔重心または光源のプルキンエ像の検出に失敗してからユーザの眼を再撮影するのではなく、予め光源の点灯パターンが異なる複数の画像を取得している。そのため、この視線検出装置は、最初に解析した画像上で瞳孔重心または光源のプルキンエ像の検出に失敗した場合でも、プルキンエ像が検出できるまでのタイムラグを短縮できる。
【００５６】
なお、本発明は上記の実施形態に限定されるものではない。例えば、カメラは、視線検出処理の実行中、各周期において、全ての光源が消灯した状態で撮影した画像を生成してもよい。そして制御部のプルキンエ像検出部は、光源のプルキンエ像を検出するために、何れかの光源が点灯している状態で撮影された画像と、全ての光源が消灯した状態で撮影された画像との間で、対応画素間の差分演算を行って差分画像を算出する。差分画像では、光源のプルキンエ像に相当する領域以外の画素の値は非常に小さくなる。そのため、プルキンエ像検出部は、差分画像を、例えば、その差分画像の各画素の値の平均値で２値化することにより光源のプルキンエ像を検出できる。またこれにより、角膜上に太陽または室内灯など他の光源の像が写っていても、プルキンエ像検出部は、他の光源の像を、視線検出装置が有する光源のプルキンエ像として誤検出することを防止できる。
【００５７】
また、カメラは、視線検出処理の実行中、各周期において、全ての光源が消灯した状態で撮影した画像と、全ての光源が点灯した状態で撮影した画像とを生成してもよい。そして制御部のプルキンエ像検出部は、全ての光源が点灯している状態で撮影された画像と、全ての光源が消灯した状態で撮影された画像との間で、対応画素間の差分演算を行って差分画像を算出する。差分画像では、光源のプルキンエ像に相当する領域以外の画素の値は非常に小さくなる。そのため、プルキンエ像検出部は、差分画像を、例えば、その差分画像の各画素の値の平均値で２値化することにより、光源のプルキンエ像が写っている可能性があるプルキンエ像候補領域を特定できる。そこでプルキンエ像検出部は、プルキンエ像候補領域内で光源のプルキンエ像の検出処理を実行すればよい。またこれにより、角膜上に太陽または室内灯など他の光源の像が写っていても、プルキンエ像検出部は、他の光源の像を、視線検出装置が有する光源のプルキンエ像として誤検出することを防止できる。
【００５８】
さらに他の変形例では、参照テーブルは、光源のプルキンエ像に対する瞳孔重心の相対的な位置と、ユーザの視線方向を表すヨー角とピッチ角とを関連付けてもよい。この場合、ユーザの視線方向を表す角度は、例えば、表示画面の中心をユーザが注視しているときにヨー角及びピッチ角はそれぞれ0°に設定される。それ以外の表示画面の各点をユーザが注視している場合のヨー角及びピッチ角は、ユーザの眼と表示画面の中心間の距離を仮定することにより、３点間の距離と角度との関係を表す式により求められる。
【００５９】
ここに挙げられた全ての例及び特定の用語は、読者が、本発明及び当該技術の促進に対する本発明者により寄与された概念を理解することを助ける、教示的な目的において意図されたものであり、本発明の優位性及び劣等性を示すことに関する、本明細書の如何なる例の構成、そのような特定の挙げられた例及び条件に限定しないように解釈されるべきものである。本発明の実施形態は詳細に説明されているが、本発明の精神及び範囲から外れることなく、様々な変更、置換及び修正をこれに加えることが可能であることを理解されたい。
【００６０】
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
（付記１）
互いに異なる位置に配置された複数の光源と、
所定の周期ごとに、前記複数の光源のうちの第１の光源がユーザの眼を照明している間に前記ユーザの眼を撮影した第１の画像と、前記複数の光源のうちの第２の光源が前記ユーザの眼を照明している間に前記ユーザの眼を撮影した第２の画像を生成する撮像部と、
前記所定の周期ごとに、前記第１の画像及び前記第２の画像のうちの一方から、前記第１の光源及び前記第２の光源のうちの一方による角膜反射像と前記ユーザの瞳孔重心とを検出できるか否か判定し、前記角膜反射像及び前記瞳孔重心を検出した場合、当該瞳孔重心と当該角膜反射像との位置関係に応じて前記ユーザの視線方向を検出し、一方、前記角膜反射像または前記瞳孔重心の何れかを検出できない場合、前記第１の画像及び前記第２の画像のうちの他方の画像から前記瞳孔重心及び前記角膜反射像を検出し、前記瞳孔重心と前記角膜反射像との位置関係に応じて前記ユーザの視線方向を検出する制御部と、
を有する視線検出装置。
（付記２）
前記第１の光源は前記第２の光源よりも前記撮像部に近く、
前記制御部は、前記第１の画像から前記瞳孔重心及び前記角膜反射像を検出できるか否か判定し、前記角膜反射像または前記瞳孔重心の何れかを検出できない場合に前記第２の画像から前記瞳孔重心及び前記角膜反射像を検出する、付記１に記載の視線検出装置。
（付記３）
前記制御部は、前記角膜反射像と前記瞳孔重心との位置関係と前記視線方向との対応を表す参照テーブルを参照することにより前記視線方向を検出し、かつ
前記制御部は、前記第１の画像及び前記第２の画像の少なくとも何れかについて前記角膜反射像または前記瞳孔重心の何れかを検出できない場合、前記参照テーブルを更新するキャリブレーションの実行頻度を、前記第１及び第２の画像の両方について前記角膜反射像及び前記瞳孔重心を検出できる場合の前記キャリブレーションの実行頻度よりも高く設定する、付記１に記載の視線検出装置。
（付記４）
前記制御部は、前記キャリブレーションにおいて、前記第１の画像について前記角膜反射像または前記瞳孔重心の何れかを検出できない場合、当該キャリブレーション以降の各所定の周期において、前記第１の画像よりも先に前記第２の画像から前記瞳孔重心及び前記角膜反射像を検出できるか否か判定し、一方、前記キャリブレーションにおいて、前記第２の画像について前記角膜反射像または前記瞳孔重心の何れかを検出できない場合、当該キャリブレーション以降の各所定の周期において、前記第２の画像よりも先に前記第１の画像から前記瞳孔重心及び前記角膜反射像を検出できるか否か判定する、付記３に記載の視線検出装置。
（付記５）
前記複数の光源及び前記撮像部は、ユーザが注視する可能性がある注視領域の周囲に配置され、かつ前記複数の光源のそれぞれについて、当該光源と前記撮像部とを結ぶ直線が前記注視領域の中心を通らないように、前記複数の光源及び前記撮像部は配置される、付記１〜４の何れか一項に記載の視線検出装置。
（付記６）
表示部と、
前記表示部の周囲の互いに異なる位置に配置された複数の光源と、
所定の周期ごとに、前記複数の光源のうちの第１の光源がユーザの眼を照明している間に前記ユーザの眼を撮影した第１の画像と、前記複数の光源のうちの第２の光源が前記ユーザの眼を照明している間に前記ユーザの眼を撮影した第２の画像を生成する撮像部と、
前記所定の周期ごとに、前記第１の画像及び前記第２の画像のうちの一方から、前記第１の光源及び前記第２の光源のうちの一方による角膜反射像と前記ユーザの瞳孔重心とを検出できるか否か判定し、前記角膜反射像及び前記瞳孔重心を検出できる場合、当該瞳孔重心と当該角膜反射像との位置関係に応じて前記ユーザが前記表示部上で注視している注視位置を検出し、一方、前記角膜反射像または前記瞳孔重心の何れかを検出できない場合、前記第１の画像及び前記第２の画像のうちの他方の画像から前記瞳孔重心及び前記角膜反射像を検出し、前記瞳孔重心と前記角膜反射像との位置関係に応じて前記注視位置を検出する制御部と、
前記注視位置と関連付けられた処理を実行するアプリケーション実行部と、
を有する携帯端末。
（付記７）
コンピュータが、
所定の周期ごとに、互いに異なる位置に配置された複数の光源のうちの第１の光源がユーザの眼を照明している間に前記ユーザの眼を撮影した第１の画像と、前記複数の光源のうちの第２の光源が前記ユーザの眼を照明している間に前記ユーザの眼を撮影した第２の画像を取得し、
前記所定の周期ごとに、前記第１の画像及び前記第２の画像のうちの一方から、前記第１の光源及び前記第２の光源のうちの一方による角膜反射像と前記ユーザの瞳孔重心とを検出できるか否か判定し、
前記角膜反射像及び前記瞳孔重心を検出した場合、当該瞳孔重心と当該角膜反射像との位置関係に応じて前記ユーザの視線方向を検出し、一方、前記角膜反射像または前記瞳孔重心の何れかを検出できない場合、前記第１の画像及び前記第２の画像のうちの他方の画像から前記瞳孔重心及び前記角膜反射像を検出し、前記瞳孔重心と前記角膜反射像との位置関係に応じて前記ユーザの視線方向を検出する、
ことを含む視線検出方法。
（付記７）
所定の周期ごとに、互いに異なる位置に配置された複数の光源のうちの第１の光源がユーザの眼を照明している間に前記ユーザの眼を撮影した第１の画像と、前記複数の光源のうちの第２の光源が前記ユーザの眼を照明している間に前記ユーザの眼を撮影した第２の画像を取得し、
前記所定の周期ごとに、前記第１の画像及び前記第２の画像のうちの一方から、前記第１の光源及び前記第２の光源のうちの一方による角膜反射像と前記ユーザの瞳孔重心とを検出できるか否か判定し、
前記角膜反射像及び前記瞳孔重心を検出した場合、当該瞳孔重心と当該角膜反射像との位置関係に応じて前記ユーザの視線方向を検出し、一方、前記角膜反射像または前記瞳孔重心の何れかを検出できない場合、前記第１の画像及び前記第２の画像のうちの他方の画像から前記瞳孔重心及び前記角膜反射像を検出し、前記瞳孔重心と前記角膜反射像との位置関係に応じて前記ユーザの視線方向を検出する、
ことをコンピュータに実行させる視線検出用コンピュータプログラム。
【符号の説明】
【００６１】
１    携帯端末
２    ユーザインターフェース
３    メモリ
４    制御部
５    筺体
１０    視線検出装置
１１−１〜１１−４    光源
１２    カメラ
２１    光源制御部
２２    カメラ制御部
２３    顔検出部
２４    プルキンエ像検出部
２５    視線検出部
２６    キャリブレーション部
【図１】
0005621456.tif 000002
【図２】
0005621456.tif 000003
【図４】
0005621456.tif 000004
【図５】
0005621456.tif 000005
【図６】
0005621456.tif 000006
【図７】
0005621456.tif 000007
【図３】
0005621456.tif 000008