以下、図を参照しつつ、視線検出装置について説明する。
この視線検出装置は、複数の照明光源のうちの何れかにて照明されたユーザの眼をカメラにより撮影して画像を生成し、その画像上で眼の瞳孔及びプルキンエ像を検出し、検出された瞳孔及びプルキンエ像に基づいて、ユーザの視線方向を検出する。この視線検出装置は、それまでに得られた画像から検出された視線方向に基づいて次回撮影時の視線方向を予測する。そしてこの視線検出装置は、予測された視線方向が視線方向を検出可能な視線方向の範囲、すなわち、プルキンエ像が観察可能な視線方向の範囲に含まれるように、複数の照明光源のなかから点灯させる照明光源を選択する。
なお、以下に説明する実施形態では、視線検出装置は、デジタルサイネージシステムに実装され、そして視線検出装置は、デジタルサイネージシステムのユーザである人の視線方向及び注視位置を追跡する。しかしこの視線検出装置は、視線方向を追跡し、その追跡結果を利用する様々な装置に利用可能である。
図1は、視線検出装置の一実施形態であるデジタルサイネージシステムのハードウェア構成図である。デジタルサイネージシステム1は、表示装置2と、複数の照明光源3−1〜3−n(ただし、nは3以上の整数)と、赤外カメラ4と、入力装置5と、記憶媒体アクセス装置6と、メモリ7と、プロセッサ8とを有する。さらにデジタルサイネージシステム1は、デジタルサイネージシステム1を他の機器に接続するための通信インターフェース回路(図示せず)を有していてもよい。
表示装置2は、例えば、液晶ディスプレイまたは有機エレクトロルミネッセンスディスプレイを有する。そして表示装置2は、例えば、様々なテキスト、アイコン、静止画像または動画像をプロセッサ8からの映像信号に応じて表示する。
複数の照明光源3−1〜3−nのそれぞれは、赤外光を発光する光源、例えば、少なくとも一つの赤外発光ダイオードと、プロセッサ8からの制御信号に応じて、赤外発光ダイオードに電源(図示せず)からの電力を供給する駆動回路(図示せず)とを有する。照明光源3−1〜3−nのそれぞれは、赤外カメラ4の撮影方向を照明可能なように、赤外カメラ4の撮影方向へ照明光源3−1〜3−nのそれぞれの発光面が向くように取り付けられている。そして照明光源3−1〜3−nのそれぞれは、プロセッサ8からその照明光源を点灯させる制御信号を受信してから、その照明光源を消灯させる制御信号を受信するまでの間、照明光を発する。
なお、本実施形態では、照明光源の数は、同時に点灯する照明光源の数(本実施形態では、2)よりも多ければよく、例えば、照明光源の数は、6個とすることができる(すなわち、n=6)。また、照明光源3−1〜3−nのそれぞれは、検出可能なユーザの視線方向の範囲が互いに異なるように、互いに異なる位置に配置される。なお、検出可能なユーザの視線方向の範囲を、以下では、単に検出可能範囲と呼ぶ。
赤外カメラ4は、撮像部の一例であり、ユーザの少なくとも一方の眼が写った画像を生成する。そのために、赤外カメラ4は、照明光源3−1〜3−nが発する赤外光に感度を持つ2次元状に配列された固体撮像素子を有するイメージセンサと、そのイメージセンサ上に被写体の像を結像する撮像光学系を有する。赤外カメラ4は、虹彩による反射像及び照明光源3−1〜3−n以外の光源からの光のプルキンエ像が検出されることを抑制するために、イメージセンサと撮像光学系の間に、可視光カットフィルタをさらに有してもよい。また、撮像光学系は、単焦点の光学系でもよく、あるいは、可変焦点光学系であってもよい。赤外カメラ4は、視線検出処理の実行中、所定のフレームレートで撮影して画像を生成する。なお、赤外カメラ4は、この画像上でデジタルサイネージシステム1を利用するユーザの瞳に写った照明光源3−1〜3−nのプルキンエ像及び瞳孔が識別可能な解像度を有する。そして赤外カメラ4は、画像を生成する度に、その画像をプロセッサ8へ渡す。なお、以下の説明において、「画像」とは、特に説明が無い限り、赤外カメラ4により生成され、かつ、ユーザの眼が写った画像を表す。
また、本実施形態では、照明光源3−1〜3−n及び赤外カメラ4は、同一の筐体10に取り付けられる。なお、照明光源3−1〜3−nと赤外カメラ4とは、別個に設けられてもよい。
図2は、照明光源3−1〜3−n及び赤外カメラ4の配置の一例を示す図である。この例では、照明光源の数は6個であり、表示装置2の近傍に配置された商品棚11に、照明光源3−1〜3−6及び赤外カメラ4が取り付けられた筐体10が取り付けられている。そして照明光源3−1〜3−6及び赤外カメラ4が商品棚11上に載置された商品を見るユーザ200の顔へ向けられるように、筐体10は、商品棚11のユーザ200に対向する側の面に配置される。また、照明光源3−1〜3−6は、ユーザ200から見て左から順に、ユーザ200の両眼の並び方向に沿って、すなわち、水平方向に沿って、一列に並べて配置される。そして、赤外カメラ4は、照明光源3−3と照明光源3−4の間に、配置され、ユーザ200の少なくとも一方の眼を含む、ユーザ200の顔全体あるいは顔の一部を撮影する。
なお、照明光源3−1〜3−n及び赤外カメラ4の配置はこの例に限られず、例えば、照明光源3−1〜3−nは、垂直方向に対しても互いに異なる位置に配置されてもよい。さらに、照明光源3−1〜3−nの垂直方向の位置と赤外カメラ4の垂直方向の位置とは、互いに異なっていてもよい。
入力装置5は、例えば、キーボードと、マウスのようなポインティングデバイスとを有する。そして入力装置5を介してユーザにより入力された操作信号は、プロセッサ8へ渡される。
なお、表示装置2と入力装置5とは、例えば、タッチパネルディスプレイのように一体化されていてもよい。この場合、入力装置5は、表示装置2の表示画面上に表示されたアイコンの位置にユーザが触れた場合に、その位置に応じた操作信号を生成し、その操作信号をプロセッサ8へ出力する。
記憶媒体アクセス装置6は、記憶部の一例であり、例えば、磁気ディスク、半導体メモリカード及び光記憶媒体といった記憶媒体9にアクセスする装置である。記憶媒体アクセス装置6は、例えば、記憶媒体9に記憶された、プロセッサ8上で実行される、視線検出処理用のコンピュータプログラムを読み込み、プロセッサ8に渡す。
メモリ7は、記憶部の他の一例であり、例えば、読み書き可能な不揮発性の半導体メモリ、及び読み書き可能な揮発性の半導体メモリを有する。そしてメモリ7は、プロセッサ8上で実行される、視線検出処理用のコンピュータプログラム、各種のアプリケーションプログラム及び各種のデータを記憶する。
さらに、メモリ7は、ユーザの視線方向及び注視位置を検出するために利用される各種のデータを記憶する。例えば、メモリ7は、照明光源3−1〜3−n及び赤外カメラ4の実空間での位置、赤外カメラ4の焦点距離などを記憶する。また、メモリ7は、点灯モデル及び視線方向の検出履歴を記憶してもよい。なお、点灯モデルの詳細については後述する。さらに、ユーザと赤外カメラ4間の距離が予め設定された距離となることが想定される場合には、メモリ7は、その予め設定された距離を記憶してもよい。
プロセッサ8は、制御部の一例であり、例えば、少なくとも一つのCentral Processing Unit(CPU)及びその周辺回路を有する。さらに、プロセッサ8は、数値演算プロセッサまたはGraphics Processing Unit(GPU)を有していてもよい。そしてプロセッサ8は、デジタルサイネージシステム1の各部と信号線を介して接続されており、デジタルサイネージシステム1全体を制御する。例えば、プロセッサ8は、入力装置5から受け取った操作信号と実行中のアプリケーションプログラムに応じて、所定の動画像などを表示装置2に表示させる。
さらに、プロセッサ8は、画像が得られる度に、視線検出処理を実行することにより、ユーザの視線方向及び注視位置を検出する。そしてプロセッサ8は、その検出結果に応じた処理を実行する。例えば、プロセッサ8は、メモリ7に記憶された商品の位置情報を参照して、検出された注視位置に最も近い商品を特定し、特定された商品に関する情報をメモリ7から読み出して表示装置2に表示させる。
図3は、プロセッサ8の視線検出処理に関する機能ブロック図である。プロセッサ8は、視線検出部21と、注視位置推定部22と、予測部23と、光源制御部24とを有する。
プロセッサ8が有するこれらの各部は、プロセッサ8上で実行されるコンピュータプログラムにより実現される機能モジュールである。またプロセッサ8が有するこれらの各部は、その各部の機能を実現するプロセッサ8内の回路の一部として実装されてもよい。
本実施形態では、プロセッサ8は、視線検出処理を開始するまで、赤外カメラ4から画像が得られる度に、その画像とメモリ7に記憶されている背景画像との間で背景差分処理を実行して、対応画素間の差分絶対値が所定値以上となる画素を抽出する。そしてプロセッサ8は、抽出された画素の数が所定数以上になると、視線検出処理を開始する。
なお、デジタルサイネージシステム1は、近接センサ(図示せず)を有していてもよい。そして近接センサが、赤外カメラ4の正面に位置する物体を検知すると、プロセッサ8は、視線検出処理を開始してもよい。
本実施形態では、視線検出処理が実行されている間、プロセッサ8は、照明光源3−1〜3−nのうちの二つを点灯させる。そしてプロセッサ8は、所定の周期、例えば、赤外カメラ4の撮影周期ごとに、予測された視線方向に基づいて、点灯させる照明光源を選択する。
視線検出部21は、視線検出処理の実行中において、画像が得られる度に、画像上でユーザの眼の瞳孔及び照明光源3−1〜3−nのうちの点灯している照明光源のプルキンエ像を検出する。そして視線検出部21は、瞳孔とプルキンエ像の位置関係に基づいて、ユーザの視線方向を検出する。なお、以下では、説明の便宜上、点灯している照明光源を、単に点灯光源と呼ぶことがある。
視線検出部21は、画像から、先ず、ユーザの左右の眼のそれぞれについて、その眼が写っている領域(以下、単に眼領域と呼ぶ)を検出する。そのために、視線検出部21は、例えば、画像から眼領域を検出するように予め学習された識別器を用いて眼領域を検出する。この場合、識別器として、例えば、アダブーストまたはリアルアダブースト、サポートベクトルマシン、あるいは、ディープニューラルネットワークが利用される。そして視線検出部21は、画像上にウインドウを設定し、そのウインドウの位置を変えながら、ウインドウ内の各画素の値またはそのウインドウから抽出した特徴量を識別器に入力することで、そのウインドウが眼領域か否かを判定する。また、特徴量として、例えば、Haar-like特徴量あるいはHistograms of Oriented Gradients特徴量が抽出される。
あるいは、視線検出部21は、眼を表すテンプレートと、画像とのテンプレートマッチングにより、テンプレートに最も一致する領域を検出し、その検出した領域を眼領域としてもよい。あるいはまた、視線検出部21は、画像上に写っている眼の領域を検出する他の様々な方法の何れかに従って眼領域を検出してもよい。
眼領域が検出されると、視線検出部21は、何れか一方の眼領域内で瞳孔及び点灯光源のプルキンエ像を検出する。
例えば、視線検出部21は、瞳孔を検出するために、瞳孔に相当するテンプレートと眼領域との間でテンプレートマッチングを行い、眼領域内でテンプレートとの一致度が最も高くなる領域を検出する。そして視線検出部21は、一致度の最高値が所定の一致度閾値よりも高い場合、その検出した領域を、瞳孔が写っている瞳孔領域と判定する。なお、ユーザの周囲の明るさに応じて瞳孔のサイズは変化する。また、瞳孔は略円形であるが、赤外カメラ4が瞳孔を斜めから見ている場合、画像上での瞳孔の形状は垂直方向に長い楕円形状となる。そこでテンプレートは、瞳孔の大きさまたは形状に応じて複数準備されてもよい。この場合、視線検出部21は、各テンプレートと眼領域とのテンプレートマッチングをそれぞれ実行し、一致度の最高値を求める。そして一致度の最高値が一致度閾値よりも高い場合、視線検出部21は、一致度の最高値に対応するテンプレートと重なった領域を瞳孔領域と判定する。なお、一致度は、例えば、テンプレートとそのテンプレートと重なった領域との正規化相互相関値として算出される。また一致度閾値は、例えば、0.7または0.8に設定される。
また瞳孔が写っている領域の輝度は、その周囲の領域の輝度よりも低く、瞳孔は略円形である。そこで視線検出部21は、眼領域内で、同心円状に半径の異なる2本のリングを持つ2重リングフィルタを設定する。そして視線検出部21は、外側のリングに相当する画素の輝度の平均値から内側の画素の輝度の平均値を引いた差分値が所定の閾値よりも大きい場合、その内側のリングで囲まれた領域を瞳孔領域としてもよい。また視線検出部21は、内側のリングで囲まれた領域の平均輝度値が所定の閾値以下であることを、瞳孔領域として検出する条件に加えてもよい。この場合、所定の閾値は、例えば、眼領域内の最大輝度値と最小輝度値の差の10%〜20%を、最小輝度値に加えた値に設定される。
なお、視線検出部21は、画像上で瞳孔が写っている領域を検出する他の様々な方法の何れかを用いて、瞳孔領域を検出してもよい。
また、点灯光源のプルキンエ像が写っている領域の輝度は、その周囲の領域の輝度よりも高く、その輝度値は略飽和している(すなわち、輝度値が、画素値が取り得る輝度の値の略最高値となっている)。また、点灯光源のプルキンエ像が写っている領域の形状は、点灯光源の発光面の形状と略一致する。そこで視線検出部21は、点灯光源のプルキンエ像を検出するために、眼領域内で、点灯光源の発光面の輪郭形状と略一致する形状を持ち、かつ、大きさが異なるとともに中心が一致する2本のリングを設定する。そして視線検出部21は、内側のリングに相当する画素の輝度の平均値である内部輝度平均値から外側の画素の輝度の平均値を引いた差分値を求める。視線検出部21は、その差分値が所定の差分閾値よりも大きく、かつ内側輝度平均値が所定の輝度閾値よりも高い場合、その内側のリングで囲まれた領域を点灯光源のプルキンエ像とする。なお、差分閾値は、例えば、眼領域内の近傍画素間の差分値の平均値とすることができる。また所定の輝度閾値は、例えば、眼領域内での輝度値の最高値の80%とすることができる。
なお、視線検出部21は、画像上で光源のプルキンエ像が写っている領域を検出する他の様々な方法の何れかを用いて、点灯光源のプルキンエ像が写っている領域を検出してもよい。
視線検出部21は、瞳孔領域に含まれる各画素の水平方向座標値の平均値及び垂直方向座標値の平均値を、瞳孔領域の重心(以下、単に瞳孔重心と呼ぶ)の位置座標として算出する。同様に、視線検出部21は、プルキンエ像が写っている領域に含まれる各画素の水平方向座標値の平均値及び垂直方向座標値の平均値を、プルキンエ像の重心の位置座標として算出する。
本実施形態では、視線検出部21は、検出されたプルキンエ像が一つの場合と二つの場合とで、異なる方式に従ってユーザの視線方向を検出する。
検出されたプルキンエ像が一つの場合、視線検出部21は、二つの点灯光源のうち、画像上で検出されたプルキンエ像に対応する点灯光源を特定する。
図4は、画像上で検出されるプルキンエ像が一つである場合の、点灯光源及び赤外カメラ4と、ユーザの視線方向との関係の一例を示す図である。この例では、赤外カメラ4の左側に位置する照明光源3−2と、赤外カメラ4の右側に位置する照明光源3−5とが点灯しているものとする。ユーザが赤外カメラ4の方を向いていれば、ユーザの角膜401は、赤外カメラ4と対向している。そのため、赤外カメラ4から見て、照明光源3−2及び3−5からの光を反射する位置は、ユーザの角膜401上に位置し、画像上に二つのプルキンエ像が写ると想定される。したがって、画像上でプルキンエ像が一つしか表れない場合には、例えば、図4において矢印402で示されるように、ユーザの視線が、赤外カメラ4から離れた位置を向いていると想定される。そして矢印403で示されるように、点灯している二つの照明光源のうち、ユーザの視線方向に近い方の照明光源(図4では、照明光源3−2)からの光が、角膜401で反射されて赤外カメラ4に達する。一方、矢印404で示されるように、ユーザの視線方向から遠い方の照明光源(図4では、照明光源3−5)からの光は、角膜401から外れた眼球の表面で反射されて赤外カメラ4に達するため、その照明光源のプルキンエ像は画像上に写らない。正確には、角膜以外の眼球の表面は白いため、角膜以外の眼球の表面で照明光源からの光が反射されると、画像上ではプルキンエ像とその周囲の輝度差が少なく、プルキンエ像を識別することが困難となる。
そこで、視線検出部21は、何れか一方の眼について、眼頭と目尻に対する瞳孔の相対的な位置関係に基づいて、視線方向が赤外カメラ4よりも右側または左側の何れを見ているかを判定する。そして視線検出部21は、点灯している二つの照明光源のうち、視線方向に近い方の照明光源のプルキンエ像が画像上に表されていると判定する。
例えば、視線検出部21は、検出された二つの眼領域のうちの一方に対して、例えば、harrisフィルタといったコーナー検出フィルタ処理を行って、眼領域中のコーナーを検出する。そして視線検出部21は、検出された二つのコーナーのうち、他方の眼領域に近い方のコーナーを眼頭とし、他方のコーナーを目尻とする。視線検出部21は、眼頭と目尻の中点を算出し、その中点と瞳孔の位置を比較することで、視線方向を判定する。例えば、二つの眼領域のうち、画像上で右側に位置する眼領域(すなわち、ユーザの左眼)について、瞳孔が眼頭と目尻の中点よりも眼頭側に近ければ、視線検出部21は、視線方向が赤外カメラ4よりも左側を向いていると判定する。そして視線検出部21は、画像上のプルキンエ像は、赤外カメラ4よりも左側に位置する照明光源のものであると判定する。一方、瞳孔が眼頭と目尻の中点よりも目尻側に近ければ、視線検出部21は、視線方向が赤外カメラ4よりも右側を向いていると判定する。そして視線検出部21は、画像上のプルキンエ像は、赤外カメラ4よりも右側に位置する照明光源のものであると判定する。
また、二つの眼領域のうち、画像上で左側に位置する眼領域(すなわち、ユーザの右眼)について、瞳孔が眼頭と目尻の中点よりも眼頭側に近ければ、視線検出部21は、視線方向が赤外カメラ4よりも右側を向いていると判定する。そして視線検出部21は、画像上のプルキンエ像は、赤外カメラ4よりも右側に位置する照明光源のものであると判定する。一方、瞳孔が眼頭と目尻の中点よりも目尻側に近ければ、視線検出部21は、視線方向が赤外カメラ4よりも左側を向いていると判定する。そして視線検出部21は、画像上のプルキンエ像は、赤外カメラ4よりも左側に位置する照明光源のものであると判定する。
プルキンエ像に対応する点灯光源が特定されると、視線検出部21は、特定された点灯光源と赤外カメラ4との位置関係と、プルキンエ像と瞳孔重心との位置関係とに基づいて、ユーザの視線方向を検出する。
角膜の表面は略球形であるため、視線方向によらず、点灯光源のプルキンエ像の位置はほぼ一定となる。一方、瞳孔重心は、視線方向に応じて移動する。そのため、視線検出部21は、プルキンエ像の重心を基準とする瞳孔重心の相対的な位置を求めることにより、視線方向を検出できる。
例えば、視線検出部21は、点灯光源のプルキンエ像の重心を基準とする瞳孔重心の相対的な位置を、例えば、瞳孔重心の水平方向座標及び垂直方向座標からプルキンエ像の重心の水平方向座標及び垂直方向座標を減算することにより求める。そして視線検出部21は、瞳孔重心の相対的な位置と視線方向との関係を表す参照テーブルを参照することにより、視線方向を決定する。
赤外カメラ4と点灯光源の位置関係に応じて、プルキンエ像に対応する視線方向が異なるため、瞳孔重心の相対的な位置と視線方向との関係を表す参照テーブルは、照明光源3−1〜3−nのそれぞれごとに予め用意され、メモリ7に保存される。そこで視線検出部21は、特定された点灯光源に対応する参照テーブルをメモリ7から読み込んで、視線方向を検出するために利用すればよい。
また、画像上に、点灯している二つの照明光源のそれぞれのプルキンエ像が写っている場合、視線検出部21は、例えば、文献(大野健彦、「1点キャリブレーションによる視線計測とその応用」、情報処理学会 研究報告、2006年)に記載されている方法に従って、視線方向を検出してもよい。すなわち、視線検出部21は、二つのプルキンエ像間の間隔と、仮定される角膜曲率半径と、赤外カメラ4から角膜までの距離とに基づいて角膜の曲率中心の3次元位置を算出する。また、視線検出部21は、画像上の瞳孔重心の位置(すなわち、赤外カメラ4の光軸を基準とした、赤外カメラ4から瞳孔重心へ向かう方向を表す)と、赤外カメラ4から角膜までの距離とに基づいて、瞳孔重心の3次元位置を算出する。そして視線検出部21は、瞳孔重心の3次元位置から角膜の曲率中心の3次元位置を減じることで得られるベクトルを、ユーザの視線方向を表すベクトルとする。なお、赤外カメラ4から角膜までの距離は、例えば、赤外カメラ4の焦点距離、及び、人の平均的な両眼の中心間距離(64mm)に対応する画像上での距離に対する画像上での両眼の中心間距離の比に基づいて算出される。この場合、画像上での両眼の中心間距離は、例えば、左右それぞれの眼の目尻と眼頭間の中点間の距離として算出されればよい。あるいは、赤外カメラ4から角膜までの距離は、デジタルサイネージシステム1がステレオカメラあるいはデプスカメラといった距離センサ(図示せず)を有している場合、その距離センサによる測定値に基づいて求められてもよい。あるいはまた、ユーザの位置が予め想定される場合、赤外カメラ4から角膜までの距離は、メモリ7に予め記憶されていてもよい。
なお、視線検出部21は、画像上に二つのプルキンエ像が写っている場合でも、何れか一方のプルキンエ像と瞳孔重心の位置関係に基づいてユーザの視線方向を検出してもよい。この場合には、視線検出部21は、一つのプルキンエ像が写っている場合と同様の方法により、ユーザの視線方向を検出できる。また、視線検出部21は、二つのプルキンエ像の並びに応じて、各プルキンエ像に対応する、点灯光源を特定できる。例えば、二つのプルキンエ像のうち、画像上で右側に位置するプルキンエ像に対応する点灯光源は、点灯中の二つの照明光源のうちの右側に位置する照明光源である。
視線検出部21は、検出した視線方向を注視位置推定部22にわたす。
注視位置推定部22は、検出されたユーザの視線方向に基づいて、ユーザの注視位置を推定する。
本実施形態では、注視位置推定部22は、視線方向と注視位置との関係を表す注視位置テーブルを参照することにより、注視位置を推定する。なお、視線方向と注視位置との関係は、その注視位置(例えば、表示装置2の表示画面)と視線方向が検出されたユーザとの間の距離に応じて変化する。
そこで、注視位置テーブルは、赤外カメラ4とデジタルサイネージシステム1を利用するユーザとの間の想定される距離(例えば、1m、2mなど)に応じて、予め複数用意され、メモリ7に保存される。そして注視位置推定部22は、複数の注視位置テーブルのうち、赤外カメラ4から角膜までの距離に対応する注視位置テーブルを選択する。そして注視位置推定部22は、選択した注視位置テーブルを参照して、視線方向に対応する注視位置を求める。
図5は、注視位置テーブルの一例を示す図である。注視位置テーブル500の上端の行には、視線方向が表される。そして注視位置テーブル500の各欄には、同じ列の視線方向に対応する、注視位置の座標が所定の単位(例えば、表示装置2の表示画面の画素単位、あるいは、mm単位)で表される。例えば、注視位置テーブル500の欄501には、視線方向が水平方向0°、垂直方向1°の場合の注視位置が(cx,cy+40)であることが示されている。なお、cx、cyは、視線方向が(0,0)のときの注視位置、すなわち基準注視位置の座標、例えば、赤外カメラ4の取り付け位置における、鉛直平面上の水平座標及び垂直座標である。
なお、注視位置推定部22は、ユーザの実空間の位置(例えば、ユーザの両眼間の中点の実空間の位置)と、ユーザの観察対象となる物体(例えば、商品棚または表示装置2の表示画面)との相対的な位置関係と視線方向とに基づいて、注視位置を推定してもよい。
注視位置推定部22は、ユーザの視線方向及び注視位置が検出される度に、検出した視線方向及び注意位置を、メモリ7に保存されている検出履歴に書き込む。
予測部23は、生成されたタイミングが異なる少なくとも2枚の画像のそれぞれから検出されたユーザの視線方向に基づいて、赤外カメラ4が次に撮影するときのユーザの視線方向を予測する。例えば、予測部23は、現フレームの画像、すなわち、最新の画像から検出されたユーザの視線方向及び1フレーム前の画像から検出されたユーザの視線方向に基づいて、赤外カメラ4が次に撮影するときのユーザの視線方向を予測する。なお、予測部23は、2回分の視線方向の検出結果が得られるまでは、視線方向を予測しなくてもよい。そして予測部23は、2回分の視線方向の検出結果が得られた後、様々な予測方法の何れかに従って視線方向を予測すればよい。例えば、予測部23は、得られた視線方向の検出結果が2以上の所定数に達するまでは、次式で表される線形予測方法に従って、視線方向を予測する。
ここで、P
tは、最新の画像に基づいて検出された視線方向であり、P
t-1は、1フレーム前の画像に基づいて検出された視線方向である。そしてP
t+1は、次フレームの赤外カメラ4による撮影時における、視線方向の予測値である。またαは補正係数であり、例えば、1に設定される。なお、補正係数αは、例えば、ユーザの眼から赤外カメラ4へ向かう方向と、視線方向とがなす角θが大きいほど、大きい値に設定される。そして補正係数αと角θとの関係を表すテーブルが予めメモリ7に保存され、予測部23は、そのテーブルを参照して、角θに対応する補正係数αを決定すればよい。
また、得られた視線方向の検出結果が2以上の所定数に達すると、予測部23は、カルマンフィルタといった予測フィルタを用いて次フレームの画像取得時における視線方向の予測値Pt+1を算出してもよい。
その際、予測部23は、時系列で得られる、検出された複数の視線方向のそれぞれを変数とする多項式近似により、視線方向の予測値P
t+1を算出してもよい。そして予測部23は、その多項式を決定する際、次式に従って算出される残差Qが最小となるように、多項式を決定してもよい。
ここでf(x
i)は、視線方向の予測値を算出するための多項式であり、x
iは、i番目の画像についての視線方向の予測値を算出するために利用される、i番目の画像よりも前のn個のフレームのそれぞれの画像において検出された視線方向を表す。y
iは、i番目の画像について検出された視線方向を表す。なお、nは、視線方向の予測に用いられる、過去に検出された視線方向の数である。またσ
iは、正規化された、プルキンエ像間の距離に依存する視線方向の検出精度であり、プルキンエ像間の距離が大きいほど小さくなるように予め求められる。そしてσ
iは、i番目の画像におけるプルキンエ像間の距離に応じて決定されればよい。視線方向の検出に用いる二つのプルキンエ像間の間隔が大きいほど、計測分解能が向上するため、視線方向の検出精度が向上する。そこで、(2)式のように、視線検出精度を視線方向の予測に反映させることで、予測部23は、視線方向の予測精度をより向上できる。
予測部23は、次フレームの撮影時における視線方向の予測値Pt+1を光源制御部24へわたす。
光源制御部24は、次フレームの撮影時における視線方向の予測値Pt+1に基づいて、複数の照明光源3−1〜3−nのうち、次フレームの画像取得時に点灯させる二つの照明光源を選択する。そして光源制御部24は、選択した二つの照明光源を点灯させ、かつ、複数の照明光源3−1〜3−nのうちの他の照明光源を消灯する制御信号を生成し、その制御信号を照明光源3−1〜3−nへ出力する。
本実施形態では、光源制御部24は、視線方向ごとに、画像上でプルキンエ像が写る照明光源を示した点灯モデルを参照して、視線方向の予測値Pt+1が、視線方向の検出可能範囲に含まれる照明光源、すなわわち、画像上にプルキンエ像が写る照明光源を特定する。
図6は、点灯モデルの一例を示す図である。点灯モデル600は、行ごとに、一つのモデルが示され、一つのモデルには、頭部の実空間位置(x, y, z)と、視線方向(θx,θy)と、点灯する照明光源の識別番号とが含まれる。なお、xは水平方向の座標を表し、yは垂直方向の座標を表し、zは、赤外カメラ4の光軸に沿った奥行き方向の座標を表す。またθxは、水平方向の角度を表し、θyは、垂直方向の角度を表す。なお、頭部の実空間位置は、例えば、ユーザの両眼間の中点とすることができる。
例えば、光源制御部24は、点灯モデル600に表された各モデルのうち、視線方向の予測値Pt+1に最も近い視線方向が表されたモデルを特定する。光源制御部24は、特定したモデルのうちでユーザの頭部の位置に最も近い頭部の実空間位置が表されたモデルを参照して、視線方向の予測値Pt+1に対応する照明光源を特定すればよい。
図7及び図8は、点灯する照明光源を選択する処理の原理を説明する図である。図7及び図8において、検出可能範囲701は、検出可能なユーザの視線方向の範囲、すなわち、画像上で照明光源3−1のプルキンエ像が写る視線方向の範囲を表す。同様に、検出可能範囲702〜706は、それぞれ、画像上で照明光源3−2〜3−6のプルキンエ像が写る視線方向の範囲を表す。
図7を参照して、視線方向の予測結果が利用可能となるまでにおける、点灯させる照明光源の制御について説明する。
視線検出処理が開始されると、最初に、光源制御部24は、視線方向の検出可能範囲が最も広くなり、かつ、赤外カメラ4へ向かう方向の近くにて視線方向が検出できない範囲が生じないように、照明光源3−2と3−5とを点灯させる。この場合において、矢印711で示される、ユーザの視線方向が、検出可能範囲701〜703のそれぞれが重なる部分へ向いているとする。光源制御部24は、点灯モデルを参照して、照明光源3−1〜3−6のうち、視線方向を検出可能な照明光源として、照明光源3−1〜3−3を特定する。すなわち、照明光源3−1〜3−3からの光は、それぞれ、ユーザの角膜700上の点721〜723で反射されて赤外カメラ4に達する。一方、照明光源3−4〜3−6からの光は、ユーザの角膜700以外の眼球の表面で反射されて赤外カメラ4に達するため、プルキンエ像が写らない。この3個の照明光源のうち、視線方向を検出可能な範囲が最も広くなり、かつ、二つのプルキンエ像を用いて視線方向を検出する際の検出精度が向上するように、光源制御部24は、最も離れた照明光源3−1と3−3とを、点灯させる照明光源として選択する。そして光源制御部24は、赤外カメラ4の次回撮影時に、照明光源3−1と3−3とを点灯させ、その他の照明光源を消灯する。
次に、図8を参照して、視線方向の予測結果が利用可能となった以降での、点灯させる照明光源の制御について説明する。矢印811は、1フレーム前の画像に基づいて検出された視線方向を表し、矢印812は、現フレームの画像に基づいて検出された視線方向を表す。そして矢印813は、次フレームについて予測された視線方向を表す。
光源制御部24は、次フレームにおいて、予測された視線方向と、実際の視線方向との間に誤差が生じていても、視線方向を検出できるように、点灯する照明光源を選択する。そこで、光源制御部24は、次フレームについて予測された視線方向と現フレームについての視線方向の両方が検出可能範囲に含まれる照明光源のなかから、点灯させる照明光源を選択する。
図8では、矢印813で示されるように、予測された視線方向は、検出可能範囲702〜704と重なっているので、予測された視線方向について検出可能となる照明光源は、照明光源3−2〜3−4である。すなわち、照明光源3−2〜3−4からの光は、それぞれ、角膜700上の点821〜823で反射されて赤外カメラ4に達すると想定される。一方、照明光源3−1、3−5及び3−6からの光は、角膜700以外の眼球の表面で反射されて赤外カメラ4に達すると想定される。また、矢印812で示されるように、現フレームでの検出された視線方向は、検出可能範囲701〜703と重なっているので、現フレームでの視線方向について検出可能となる照明光源は、照明光源3−1〜3−3である。すなわち、照明光源3−1〜3−3からの光は、それぞれ、角膜700上の点831〜833で反射されて赤外カメラ4に達する。そこで光源制御部24は、現フレームと次フレームの両方で視線方向を検出可能な照明光源3−2と照明光源3−3とを選択する。
なお、現フレームと次フレームの両方で視線方向を検出可能な照明光源が3個以上ある場合、光源制御部24は、それらの照明光源の中から、最も離れた二つの照明光源を選択すればよい。
光源制御部24は、フレームごとに、照明光源3−1〜3−nのうち、選択した二つの照明光源を点灯させ、かつ、その他の照明光源を消灯する制御信号を生成し、その制御信号を照明光源3−1〜3−nへ出力する。また、光源制御部24は、フレームごとに、選択した二つの照明光源の識別番号を検出履歴に追加する。
図9は、プロセッサ8により実行される、視線方向の予測結果が照明光源の点灯制御に利用可能となるまでの、視線検出処理の動作フローチャートを示す。プロセッサ8は、画像が取得される度に、下記の動作フローチャートに従って視線検出処理を実行する。
光源制御部24は、視線方向が既に検出されたか否か判定する(ステップS101)。視線方向が一回も検出されていなければ、すなわち、視線検出処理の開始直後であれば(ステップS101−No)、光源制御部24は、照明光源3−1〜3−nのうち、予め定められた二つの照明光源を点灯させる(ステップS102)。一方、直前のフレームの画像で視線方向が検出されていれば(ステップS101−Yes)、光源制御部24は、検出された視線方向と点灯モデルに基づいて選択された二つの照明光源を点灯させる(ステップS103)。
ステップS102またはステップS103の後、赤外カメラ4はユーザを撮影して画像を生成する。そして視線検出部21は、生成された画像上で瞳孔及びプルキンエ像を検出する(ステップS104)。視線検出部21は、検出されたプルキンエ像が一つか否か判定する(ステップS105)。検出されたプルキンエ像が一つであれば(ステップS105−Yes)、視線検出部21は、一つのプルキンエ像と瞳孔に基づいて視線方向を検出する(ステップS106)。一方、検出されたプルキンエ像が二つであれば(ステップS105−No)、視線検出部21は、二つのプルキンエ像と瞳孔に基づいて視線方向を検出する(ステップS107)。
ステップS106またはS107の後、注視位置推定部22は、検出された視線方向に基づいてユーザの注視位置を推定する(ステップS108)。
また、予測部23は、2フレーム以上視線方向が検出されたか否か判定する(ステップS109)。2フレーム以上視線方向が検出されていれば、予測部23は、現フレームの視線方向と一つ前のフレームの視線方向とに基づいて次フレームの撮影時における視線方向を予測する(ステップS110)。ステップS110の後、または、ステップS109にて視線方向が検出されたフレーム数が2未満であれば、プロセッサ8は、視線検出処理を終了する。
図10は、プロセッサ8により実行される、視線方向の予測結果が照明光源の点灯制御に利用可能となった以降の、視線検出処理の動作フローチャートを示す。プロセッサ8は、画像が取得される度に、下記の動作フローチャートに従って視線検出処理を実行する。
光源制御部24は、直前のフレームにおいて予測された視線方向及び直前のフレームにて検出された視線方向と点灯モデルに基づいて選択された二つの照明光源を点灯させる(ステップS201)。
二つの照明光源が点灯した後、赤外カメラ4はユーザを撮影して画像を生成する。そして視線検出部21は、生成された画像上で瞳孔及びプルキンエ像を検出する(ステップS202)。そして視線検出部21は、二つのプルキンエ像と瞳孔に基づいて視線方向を検出する(ステップS203)。また、注視位置推定部22は、検出された視線方向に基づいてユーザの注視位置を推定する(ステップS204)。
予測部23は、少なくとも現フレームの視線方向と一つ前のフレームの視線方向とに基づいて次フレームの撮影時における視線方向を予測する(ステップS205)。ステップS205の後、プロセッサ8は、視線検出処理を終了する。
以上に説明してきたように、この視線検出装置は、複数の照明光源のうちの点灯させる照明光源を、予測された視線方向に基づいて、プルキンエ像が画像上に写るように、すなわち、プルキンエ像に基づいて視線方向を検出可能なように選択する。その際、この視線検出装置は、次フレームについて予測された視線方向と、現フレームについて検出された視線方向の両方について、点灯させる照明光源のプルキンエ像が画像上に写るように点灯させる照明光源を選択する。これにより、この視線検出装置は、画像上でプルキンエ像が常に写るようにすることができるので、視線方向の検出精度を向上できる。また、プルキンエ像が画像上に写る照明光源が3個以上ある場合、視線検出装置は、その3個以上の照明光源の中から、互いに最も離れた二つの照明光源を点灯させる。これにより、この視線検出装置は、画像上でのプルキンエ像間の間隔をできるだけ大きくすることができるので、視線方向の検出精度をより向上させることができる。
変形例によれば、視線検出装置は、フレームごとに、複数の照明光源のうちの一つだけを点灯させ、その他を消灯するようにしてもよい。この場合には、視線検出部21は、赤外カメラ4により生成された画像が得られる度に、図10のステップS203において、一つのプルキンエ像を用いて視線方向を検出する方法に従ってユーザの視線方向を検出すればよい。
また、光源制御部24は、視線検出処理が開始された直後、図9のステップS102において、予め設定された一つの照明光源を点灯させる。そして光源制御部24は、視線方向の予測結果が得られるまでは、図9のステップS103において、最新の視線方向の検出結果に基づいて、点灯モデルを参照して、検出された視線方向が検出可能範囲に含まれる一つの照明光源を点灯させる。そして光源制御部24は、視線方向の予測結果が得られると、図10のステップS201にて、点灯モデルを参照して、予測された視線方向と最新の視線方向の何れもが検出可能範囲内に含まれる一つの照明光源を点灯させればよい。
この変形例による視線検出装置も、上記の実施形態による視線検出装置と同様に、赤外カメラ4により得られる画像上にプルキンエ像が写るように、複数の照明光源のなかから点灯する照明光源を選択するので、視線方向の検出精度を向上できる。
また、他の変形例によれば、光源制御部24は、最新の画像から検出された視線方向によらず、赤外カメラ4による次回撮影時において予測されたユーザの視線方向が含まれる検出可能範囲に対応する照明光源を、次回撮影時に点灯させてもよい。これにより、特に、視線方向が、速く、かつ、大きく移動している場合でも、視線検出装置は、画像上にプルキンエ像が写る照明光源を点灯させることができる。なお、光源制御部24は、現フレームの検出された視線方向と次フレームの予測された視線方向の差に基づいて、点灯させる照明光源の選択方法を切り替えてもよい。例えば、光源制御部24は、現フレームの検出された視線方向と次フレームの予測された視線方向間の差分絶対値を所定の閾値と比較してもよい。そして光源制御部24は、差分絶対値が所定の閾値よりも大きければ、最新の画像から検出された視線方向によらず、赤外カメラ4による次回撮影時において予測されたユーザの視線方向が含まれる検出可能範囲に対応する照明光源を、次回撮影時に点灯させる。一方、光源制御部24は、差分絶対値が所定の閾値以下であれば、最新の画像から検出された視線方向と次回撮影時において予測されたユーザの視線方向の両方が含まれる検出可能範囲に対応する照明光源を、次回撮影時に点灯させればよい。
さらに、他の変形例によれば、点灯モデルは、照明光源ごとの検出可能範囲に相当する視線方向の範囲を表していてもよい。この場合も、光源制御部24は、点灯モデルを参照して、予測された視線方向及び現フレームの検出された視線方向が検出可能範囲に含まれる照明光源を特定すればよい。
上記の実施形態またはその変形例による視線検出装置のプロセッサの機能を実現するコンピュータプログラムは、磁気記録媒体、光記録媒体といったコンピュータ読み取り可能な記録媒体に記録された形で提供されてもよい。なお、この記録媒体には、搬送波は含まれない。
ここに挙げられた全ての例及び特定の用語は、読者が、本発明及び当該技術の促進に対する本発明者により寄与された概念を理解することを助ける、教示的な目的において意図されたものであり、本発明の優位性及び劣等性を示すことに関する、本明細書の如何なる例の構成、そのような特定の挙げられた例及び条件に限定しないように解釈されるべきものである。本発明の実施形態は詳細に説明されているが、本発明の精神及び範囲から外れることなく、様々な変更、置換及び修正をこれに加えることが可能であることを理解されたい。
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
(付記1)
撮像部がユーザの眼を撮影することで生成された画像から、前記眼の瞳孔が写っている瞳孔領域、及び、複数の照明光源のうち、点灯している照明光源の角膜反射像を検出し、
前記瞳孔領域及び前記角膜反射像に基づいて前記ユーザの視線方向を検出し、
生成されたタイミングが異なる少なくとも2枚の前記画像のそれぞれから検出された前記ユーザの視線方向に基づいて、前記撮像部の次回撮影時における前記ユーザの視線方向を予測し、
前記複数の照明光源のそれぞれについて、当該照明光源と前記撮像部との位置関係に応じて視線方向の検出可能範囲が規定され、前記複数の照明光源のうち、予測された前記ユーザの視線方向が含まれる前記検出可能範囲に対応する照明光源の少なくとも一つを前記撮像部の次回撮影時に点灯させる、
ことをコンピュータに実行させるための視線検出用コンピュータプログラム。
(付記2)
前記照明光源を点灯させることは、前記複数の照明光源のうち、最新の前記画像から検出された前記ユーザの視線方向と前記予測されたユーザの視線方向の両方が含まれる前記検出可能範囲に対応する少なくとも一つの照明光源を点灯させる、付記1に記載の視線検出用コンピュータプログラム。
(付記3)
前記照明光源を点灯させることは、前記複数の照明光源のうち、最新の前記画像から検出された前記ユーザの視線方向と前記予測されたユーザの視線方向の両方が含まれる前記検出可能範囲に対応する照明光源が3個以上ある場合、当該3個以上の照明光源のうちの最も離れた二つの照明光源を点灯させる、付記2に記載の視線検出用コンピュータプログラム。
(付記4)
前記照明光源を点灯させることは、前記複数の照明光源のうち、前記予測されたユーザの視線方向が含まれる前記検出可能範囲に対応する照明光源のうちの二つを点灯させる、付記1に記載の視線検出用コンピュータプログラム。
(付記5)
前記照明光源を点灯させることは、前記複数の照明光源のうち、前記予測されたユーザの視線方向が含まれる前記検出可能範囲に対応する前記照明光源が3個以上ある場合、当該3個以上の照明光源のうちの最も離れた二つの照明光源を点灯させる、付記4に記載の視線検出用コンピュータプログラム。
(付記6)
撮像部がユーザの眼を撮影することで生成された画像から、前記眼の瞳孔が写っている瞳孔領域、及び、複数の照明光源のうち、点灯している照明光源の角膜反射像を検出し、
前記瞳孔領域及び前記角膜反射像に基づいて前記ユーザの視線方向を検出し、
生成されたタイミングが異なる少なくとも2枚の前記画像のそれぞれから検出された前記ユーザの視線方向に基づいて、前記撮像部の次回撮影時における前記ユーザの視線方向を予測し、
前記複数の照明光源のそれぞれについて、当該照明光源と前記撮像部との位置関係に応じて視線方向の検出可能範囲が規定され、前記複数の照明光源のうち、予測された前記ユーザの視線方向が含まれる前記検出可能範囲に対応する照明光源の少なくとも一つを前記撮像部の次回撮影時に点灯させる、
ことを含む視線検出方法。
(付記7)
撮像部がユーザの眼を撮影することで生成された画像から、前記眼の瞳孔が写っている瞳孔領域、及び、複数の照明光源のうち、点灯している照明光源の角膜反射像を検出し、前記瞳孔領域及び前記角膜反射像に基づいて前記ユーザの視線方向を検出する視線検出部と、
生成されたタイミングが異なる少なくとも2枚の前記画像のそれぞれから検出された前記ユーザの視線方向に基づいて、前記撮像部の次回撮影時における前記ユーザの視線方向を予測する予測部と、
前記複数の照明光源のそれぞれについて、当該照明光源と前記撮像部との位置関係に応じて視線方向の検出可能範囲が規定され、前記複数の照明光源のうち、予測された前記ユーザの視線方向が含まれる前記検出可能範囲に対応する照明光源の少なくとも一つを前記撮像部の次回撮影時に点灯させる光源制御部と、
を有する視線検出装置。