以下、図を参照しつつ、視線検出装置について説明する。
この視線検出装置は、人が想定される範囲内に位置している限り、その人の顔全体を撮影可能な画角を持つ広角カメラと、画像上で瞳孔及びプルキンエ像が識別可能なサイズとなるように、広角カメラの画角よりも狭い画角を持つ赤外カメラを有する。この視線検出装置は、広角カメラが一定周期ごとに撮影することにより得られた一連の画像のそれぞれから、顔を検出する。そしてこの視線検出装置は、検出された顔の位置に基づいて想定される眼の位置を赤外カメラにより撮影して画像を生成し、赤外カメラによる画像上で瞳孔及びプルキンエ像を検出することで、人の注視位置を検出する。またこの視線検出装置は、広角カメラによる画像上で顔が検出されている期間内に検出された注視位置を、同一人物によるものと判定する。
なお、注視位置の追跡対象であった人が一時的に移動したり、カメラが設けられた方向とは異なる方向へその人が顔を向けることにより、視線検出装置は、顔及び注視位置を一時的に検出できなくなることがある。そこでこの視線検出装置は、一旦、顔を検出できなくなったときに、検出できなくなる直前の顔の位置と、再度顔が検出されたときの顔の位置との比較結果に基づいて、顔が検出できなかった期間の前後の注視位置が同一人物によるものか否かを判定する。
なお、以下に説明する実施形態では、視線検出装置は、デジタルサイネージシステムに実装され、そして視線検出装置は、デジタルサイネージシステムのユーザである人の注視位置を追跡する。しかしこの視線検出装置は、注視位置を追跡し、その追跡結果を利用する様々な装置に利用可能である。
図1は、視線検出装置の一実施形態であるデジタルサイネージシステムのハードウェア構成図である。デジタルサイネージシステム1は、表示部2と、広角カメラ3と、照明光源4と、赤外カメラ5と、入力部6と、記憶媒体アクセス装置7と、記憶部8と、制御部9とを有する。さらにデジタルサイネージシステム1は、デジタルサイネージシステム1を他の機器に接続するための通信インターフェース回路(図示せず)を有していてもよい。
表示部2は、例えば、液晶ディスプレイまたは有機エレクトロルミネッセンスディスプレイを有する。そして表示部2は、例えば、様々なテキスト、静止画像または動画像を制御部9からの制御信号に応じて表示する。
広角カメラ3は、第1の撮像部の一例であり、可視光に感度を有し、デジタルサイネージシステム1の表示部2などを注視する人が位置すると想定される範囲が広角カメラ3の撮影範囲に含まれるような画角(例えば、対角60度〜80度)を持つ。そして広角カメラ3は、視線検出処理の実行中、所定のフレームレートでその撮影範囲を撮影することにより、その撮影範囲全体が写った画像を生成する。そして広角カメラ3は、画像を生成する度に、その画像を制御部9へ渡す。
なお、広角カメラ3も、赤外カメラ5と同様に、照明光源4から発せられる赤外光に感度を有するカメラであってもよい。
照明光源4は、赤外光を発光する光源、例えば、少なくとも一つの赤外発光ダイオードと、制御部9からの制御信号に応じて、赤外発光ダイオードに電源(図示せず)からの電力を供給する駆動回路(図示せず)とを有する。照明光源4は、赤外カメラ5の撮影方向を照明可能なように、赤外カメラ5と同じ筐体10に、赤外カメラ5の撮影方向へ照明光源4の発光面が向くように取り付けられている。そして照明光源4は、制御部9から光源を点灯させる制御信号を受信している間、照明光を発する。
赤外カメラ5は、第2の撮像部の一例であり、眼を含む人の顔の少なくとも一部が写った画像を生成する。そのために、赤外カメラ5は、照明光源4が発する赤外光に感度を持つ2次元状に配列された固体撮像素子を有するイメージセンサと、そのイメージセンサ上に被写体の像を結像する撮像光学系を有する。赤外カメラ5は、虹彩による反射像及び照明光源4以外の光源からの光のプルキンエ像が検出されることを抑制するために、イメージセンサと撮像光学系の間に、可視光カットフィルタをさらに有してもよい。また、撮像光学系は、単焦点の光学系でもよく、あるいは、可変焦点光学系であってもよい。そして赤外カメラ5は、広角カメラ3の画角よりも狭い画角(例えば、対角30度〜40度)を持つ。赤外カメラ5は、視線検出処理の実行中、所定のフレームレートで制御部9により指定された撮影方向について撮影して得られる画像を生成する。なお、赤外カメラ5は、この画像上でデジタルサイネージシステム1を利用する人の瞳に写った照明光源4のプルキンエ像及び瞳孔が識別可能な解像度を有する。そして赤外カメラ5は、画像を生成する度に、その画像を制御部9へ渡す。
また、本実施形態では、照明光源4及び赤外カメラ5は、同一の筐体10に取り付けられる。筐体10は、照明光源4及び赤外カメラ5を一体的に支持しつつ、筐体10が載置された台の表面に沿って回動可能な回動支持部材(図示せず)と、回動支持部材を制御部9からの制御信号に応じて回転させるアクチュエータ(図示せず)とを有する。これにより、赤外カメラ5は、その撮影方向を変更可能なように、筐体10に取り付けられる。
また、広角カメラ3の感度と赤外カメラ5の感度は、それぞれ別個に最適化されてもよい。例えば、広角カメラ3の感度は、画像上で顔の輪郭が識別できるように、相対的に低く設定され、一方、赤外カメラ5の感度は、画像上でプルキンエ像及び瞳孔が識別できるように、相対的に高く設定されてもよい。
図2は、各カメラと表示部2の配置の一例を示す図である。表示部2の周辺には、広角カメラ3が配置されている。そして広角カメラ3は、表示部2と対向するように位置する人200の顔を撮影可能なように向けられている。同様に、照明光源4及び赤外カメラ5が取り付けられた筐体10も、表示部2の周辺に配置されている。そして照明光源4及び赤外カメラ5は、制御部9からの制御信号に応じて、人200の顔へ向けられる。そして、広角カメラ3により生成される画像の垂直方向、及び、赤外カメラ5により生成される画像の垂直方向が、実空間での垂直方向に対応する。したがって、各画像において、人の顔の縦方向が、各画像の垂直方向と略平行となることが想定される。
以下では、便宜上、広角カメラ3により生成された画像を広角画像と呼び、赤外カメラ5により生成された画像を狭角画像と呼ぶ。
図3は、広角画像の一例と挟角画像の一例を示す図である。広角カメラ3により得られる広角画像300の水平方向の幅は、水平方向における人の顔301の幅の数倍程度となっている。そのため、人がある程度移動しても、広角画像300上にその人の顔301が写る。一方、赤外カメラ5により得られる挟角画像310では、プルキンエ像及び瞳孔が明りょうに識別可能となるように、挟角画像310いっぱいに人の顔301が写る。
入力部6は、例えば、キーボードと、マウスのようなポインティングデバイスとを有する。そして入力部6を介してユーザにより入力された操作信号は、制御部9へ渡される。
なお、表示部2と入力部6とは、例えば、タッチパネルディスプレイのように一体化されていてもよい。この場合、入力部6は、表示部2の表示画面上に表示されたアイコンの位置にユーザが触れた場合に、その位置に応じた操作信号を生成し、その操作信号を制御部9へ出力する。
記憶媒体アクセス装置7は、例えば、磁気ディスク、半導体メモリカード及び光記憶媒体といった記憶媒体11にアクセスする装置である。記憶媒体アクセス装置7は、例えば、記憶媒体11に記憶された、制御部9上で実行される、視線検出処理用のコンピュータプログラムを読み込み、制御部9に渡す。
記憶部8は、例えば、読み書き可能な不揮発性の半導体メモリ、及び読み書き可能な揮発性の半導体メモリを有する。そして記憶部8は、制御部9上で実行される、視線検出処理用のコンピュータプログラム、各種のアプリケーションプログラム及び各種のデータを記憶する。
さらに、記憶部8は、人が注視する位置を検出するために利用される各種のデータを記憶する。例えば、記憶部8は、プルキンエ像の重心に対する瞳孔重心の相対的な位置と視線方向との関係を表す参照テーブルを記憶する。また記憶部8は、検出された顔の位置の履歴を表す顔位置履歴情報と、検出された注視位置の履歴を表す注視位置履歴情報とを記憶する。
制御部9は、一つまたは複数のプロセッサ及びその周辺回路を有する。そして制御部9は、デジタルサイネージシステム1の各部と信号線を介して接続されており、デジタルサイネージシステム1全体を制御する。例えば、制御部9は、入力部6から受け取った操作信号と実行中のアプリケーションプログラムに応じて、所定の動画像などを表示部2に表示させる。
さらに、制御部9は、広角画像及び挟角画像が得られる度に、視線検出処理を実行することにより、ユーザの顔を検出するとともに、ユーザが注視している位置を求める。そして制御部9は、広角画像の取得時刻とともに、ユーザの顔の位置を、顔位置履歴情報に含める。また制御部9は、挟角画像の取得時刻とともに、ユーザの注視位置を、注視位置履歴情報に含める。
図4は、制御部9の視線検出処理に関する機能ブロック図である。制御部9は、顔検出部21と、撮影方向制御部22と、視線検出部23と、履歴情報記録部24と、同一人物判定部25とを有する。
制御部9が有するこれらの各部は、制御部9が有するプロセッサ上で実行されるコンピュータプログラムにより実現される機能モジュールである。また制御部9が有するこれらの各部は、その各部に対応する回路が集積された一つまたは複数の集積回路として、制御部9が有するプロセッサとは別個にデジタルサイネージシステム1に実装されてもよい。
顔検出部21は、視線検出処理の実行中において、広角画像が得られる度に、広角画像上で人の顔が写っている場合に、顔の領域である顔領域及び顔の位置を検出する。なお、顔検出部21は、全ての広角画像に対して同一の処理を実行すればよいので、以下では、一つの広角画像に対する処理について説明する。
例えば、顔検出部21は、広角画像の各画素の値をHSV表色系により表される値に変換する。そして顔検出部21は、各画素の色相成分(H成分)の値が肌色に相当する値(例えば、0°〜30°の範囲内の値)となる画素を、顔の一部が写っている可能性がある顔領域候補画素として抽出する。
また、ある人物がデジタルサイネージシステム1を利用している場合、その人物の顔は、表示部2の方を向いており、かつ、表示部2から所定の距離(例えば、1m〜2m)だけ離れた位置にあると想定される。そのため、広角画像上で顔が占める領域の大きさもある程度推定される。
そこで顔検出部21は、顔領域候補画素に対してラベリング処理を行って、互いに隣接している顔領域候補画素の集合を顔候補領域とする。そして顔検出部21は、顔候補領域の大きさが人の顔の大きさに相当する基準範囲に含まれているか否か判定する。顔候補領域の大きさが人の顔の大きさに相当する基準範囲に含まれていれば、顔検出部21はその顔候補領域を顔領域と判定する。
なお、顔候補領域の大きさは、例えば、顔候補領域の水平方向の最大幅の画素数で表される。この場合、基準範囲は、例えば、広角画像の水平方向画素数の1/10以上〜1/3以下に設定される。あるいは、顔候補領域の大きさは、例えば、顔候補領域に含まれる画素数で表されてもよい。この場合、基準範囲は、例えば、画像全体の画素数の1/100以上〜1/9以下に設定される。
顔検出部21は、顔候補領域の大きさだけでなく、顔候補領域の形状も、顔候補領域を顔領域と判定するための判定条件に加えてもよい。人の顔は、一般に略楕円形状を有している。そこで顔検出部21は、例えば、顔候補領域の大きさが上記の基準範囲に含まれ、かつ、顔候補領域の円形度が、一般的な顔の輪郭に相当する所定の閾値以上である場合に顔候補領域を顔領域としてもよい。なお顔検出部21は、顔候補領域の輪郭上に位置する画素の合計を顔候補領域の周囲長として求め、顔候補領域内の総画素数に4πを乗じた値を周囲長の2乗で除することにより円形度を算出できる。
あるいは、顔検出部21は、顔候補領域の輪郭上の各画素の座標を楕円方程式に当てはめて最小二乗法を適用することにより、顔候補領域を楕円近似してもよい。そして顔検出部21は、その楕円の長軸と短軸の比が一般的な顔の長軸と短軸の比の範囲に含まれる場合に、顔候補領域を顔領域としてもよい。なお、顔検出部21は、楕円近似により顔候補領域の形状を評価する場合、画像の各画素の輝度成分に対して近傍画素間演算を行ってエッジに相当するエッジ画素を検出してもよい。この場合、顔検出部21は、エッジ画素を例えばラベリング処理を用いて連結し、一定の長さ以上に連結されたエッジ画素を顔候補領域の輪郭とする。
なお、顔検出部21は、画像上に写っている顔の領域を検出する他の様々な方法の何れかに従って顔領域を検出してもよい。例えば、顔検出部21は、顔候補領域と一般的な顔の形状に相当するテンプレートとの間でテンプレートマッチングを行って、顔候補領域とテンプレートとの一致度を算出し、その一致度が所定値以上である場合に、顔候補領域を顔領域と判定してもよい。
顔検出部21は、顔領域を検出できると、広角画像上での顔領域の重心位置を、検出された顔の位置として算出する。また、顔検出部21は、顔領域を検出できない場合、顔の位置として、所定のデフォルト座標値(例えば、(-1,-1))を設定する。
そして顔検出部21は、顔の位置の座標を撮影方向制御部22へ渡す。また顔検出部21は、広角画像の取得時刻とともに、顔の位置の座標を履歴情報記録部24へ渡す。さらに、顔検出部21は、顔領域の水平方向の幅を視線検出部23へ通知する。
撮影方向制御部22は、顔検出部21から通知された顔の検出位置に基づいて、照明光源4の照明方向及び赤外カメラ5の撮影方向を調整する。
広角画像上での画素の座標は、広角カメラ3の光軸方向に対する角度と1対1に対応している。したがって、広角画像上での顔の位置が分かれば、広角カメラ3に対する顔の方向も分かる。さらに、広角カメラ3と赤外カメラ5との位置関係も既知であり、かつ、広角カメラ3及び赤外カメラ5と、広角画像に顔が写っている人物との間の距離もある程度想定される。そのため、広角画像上での顔の位置が分かれば、赤外カメラ5からの顔の方向も求められる。そこで、例えば、広角画像上での顔の位置と、赤外カメラ5の撮影方向との関係を表すテーブルが予め作成され、記憶部8に記憶される。そして撮影方向制御部22は、そのテーブルを参照して、広角画像上での顔の位置に対応する、赤外カメラ5の撮影方向を求める。さらに、撮影方向制御部22は、求めた撮影方向と、現在の赤外カメラ5の撮影方向との差に基づいて、赤外カメラ5が支持された筐体の回動支持部材の回転方向及び回転角度を算出する。そして撮影方向制御部22は、算出した回転方向及び回転角度に応じた制御信号を筐体へ出力することで、赤外カメラ5の撮影方向を、検出された顔の位置に対応する方向へ向けさせる。なお、検出された顔の位置がデフォルト値になっている場合、すなわち、直前に得られた広角画像において、顔が検出されていない場合には、撮影方向制御部22は、赤外カメラ5の撮影方向を、現在の撮影方向のまま維持してもよい。あるいは、撮影方向制御部22は、直前に得られた挟角画像から注視位置が検出できない場合に限り、赤外カメラ5の撮影方向を調整してもよい。
視線検出部23は、視線検出処理の実行中において、挟角画像が得られる度に、狭角画像上で人の眼が写っている場合にプルキンエ像及び瞳孔を検出し、プルキンエ像と瞳孔の位置関係に基づいて、人の視線方向及び注視位置を検出する。なお、視線検出部23は、全ての挟角画像に対して同一の処理を実行すればよいので、以下では、一つの挟角画像に対する処理について説明する。
本実施形態では、視線検出部23は、一方の眼の瞳孔に相当するテンプレートと挟角画像との間でテンプレートマッチングを行い、挟角画像上でテンプレートとの一致度が最も高くなる領域を検出する。そして視線検出部23は、一致度の最高値が所定の一致度閾値よりも高い場合、その検出した領域を、瞳孔が写っている瞳孔領域と判定する。なお、テンプレートは、瞳孔の大きさに応じて複数準備されてもよい。この場合、視線検出部23は、各テンプレートと挟角画像とのテンプレートマッチングをそれぞれ実行し、一致度の最高値を求める。そして一致度の最高値が一致度閾値よりも高い場合、視線検出部23は、一致度の最高値に対応するテンプレートと重なった領域を瞳孔領域と判定する。なお、一致度は、例えば、テンプレートとそのテンプレートと重なった領域との正規化相互相関値として算出される。また一致度閾値は、例えば、0.7または0.8に設定される。
また瞳孔が写っている領域の輝度は、その周囲の領域の輝度よりも低く、瞳孔は略円形である。そこで視線検出部23は、挟角画像上で、同心円状に半径の異なる2本のリングを設定する。そして視線検出部23は、外側のリングに相当する画素の輝度の平均値から内側の画素の輝度の平均値を引いた差分値が所定の閾値よりも大きい場合、その内側のリングで囲まれた領域を瞳孔領域としてもよい。また視線検出部23は、内側のリングで囲まれた領域の平均輝度値が所定の閾値以下であることを、瞳孔領域として検出する条件に加えてもよい。この場合、所定の閾値は、例えば、拡大眼周辺領域内の最大輝度値と最小輝度値の差の10%〜20%を、最小輝度値に加えた値に設定される。
視線検出部23は、瞳孔領域の検出に成功した場合、瞳孔領域に含まれる各画素の水平方向座標値の平均値及び垂直方向座標値の平均値を、瞳孔領域の重心の位置座標として算出する。
また視線検出部23は、瞳孔領域及びその周辺領域内で照明光源4のプルキンエ像を検出する。照明光源4のプルキンエ像が写っている領域の輝度は、その周囲の領域の輝度よりも高く、その輝度値は略飽和している(すなわち、輝度値が、画素値が取り得る輝度の値の略最高値となっている)。また、照明光源4のプルキンエ像が写っている領域の形状は、照明光源4の発光面の形状と略一致する。そこで視線検出部23は、瞳孔領域及びその周辺領域内で、照明光源4の発光面の輪郭形状と略一致する形状を持ち、かつ、大きさが異なるとともに中心が一致する2本のリングを設定する。そして視線検出部23は、内側のリングに相当する画素の輝度の平均値である内部輝度平均値から外側の画素の輝度の平均値を引いた差分値を求める。視線検出部23は、その差分値が所定の差分閾値よりも大きく、かつ内側輝度平均値が所定の輝度閾値よりも高い場合、その内側のリングで囲まれた領域を照明光源4のプルキンエ像とする。なお、差分閾値は、例えば、瞳孔領域及びその周辺領域内の近傍画素間の差分値の平均値とすることができる。また所定の輝度閾値は、例えば、瞳孔領域及びその周辺領域内での輝度値の最高値の80%とすることができる。
なお、視線検出部23は、画像上で瞳孔が写っている領域を検出する他の様々な方法の何れかを用いて、瞳孔が写っている領域を検出してもよい。同様に、視線検出部23は、画像上で光源のプルキンエ像が写っている領域を検出する他の様々な方法の何れかを用いて、光源のプルキンエ像が写っている領域を検出してもよい。
視線検出部23は、照明光源4のプルキンエ像の検出に成功した場合、プルキンエ像に含まれる各画素の水平方向座標値の平均値及び垂直方向座標値の平均値を、プルキンエ像の重心の位置座標として算出する。そしてプルキンエ像の重心及び瞳孔重心が検出されると、視線検出部23は、視線方向及び注視位置を検出する。
角膜の表面は略球形であるため、視線方向によらず、光源のプルキンエ像の位置はほぼ一定となる。一方、瞳孔重心は、視線方向に応じて移動する。そのため、視線検出部23は、プルキンエ像の重心を基準とする瞳孔重心の相対的な位置を求めることにより、視線方向を検出できる。
本実施形態では、視線検出部23は、光源のプルキンエ像の重心を基準とする瞳孔重心の相対的な位置を、例えば、瞳孔重心の水平方向座標及び垂直方向座標からプルキンエ像の重心の水平方向座標及び垂直方向座標を減算することにより求める。そして視線検出部23は、瞳孔重心の相対的な位置と視線方向との関係を表す参照テーブルを参照することにより、視線方向を決定する。
図5は、参照テーブルの一例を示す図である。参照テーブル500の左側の列の各欄には、光源のプルキンエ像の重心を基準とする瞳孔重心の相対的な位置の座標が表される。また参照テーブル500の右側の列の各欄には、同じ行の瞳孔重心の相対的な位置の座標に対応する視線方向が表される。なお、この例では、視線方向は、所定の基準点(例えば、表示部2の表示画面の中心または赤外カメラ5の取り付け位置)を人が注視しているときの視線方向を基準方向として、その基準方向からの水平方向及び垂直方向の角度の差で表される。なお、瞳孔重心の相対的な位置の座標は、挟角画像上の画素単位で表される。
視線検出部23は、さらに、検出した視線方向に基づいて、人の注視位置を検出する。
本実施形態では、視線検出部23は、視線方向と注視位置との関係を表す注視位置テーブルを参照することにより、注視位置を決定する。なお、視線方向と注視位置との関係は、その注視位置(例えば、表示部2の表示画面)と視線方向が検出された人物との間の距離に応じて変化する。また、広角画像上での水平方向の顔の幅も、広角カメラ3とその人物との間の距離に応じて変化する。そして広角カメラ3は、表示部2の周辺に配置されているので、広角カメラ3とその人物との間の距離と、その人物の注視位置とその人物との間の距離は、略等しいことが想定される。
そこで、注視位置テーブルは、広角カメラ3とデジタルサイネージシステム1を利用する人との間の想定される距離(例えば、1m、2mなど)に応じて、予め複数用意され、記憶部8に保存される。また各注視位置テーブルには、その注視位置テーブルに対応する、広角カメラ3とのその人物との間の距離に応じた、広角画像上での水平方向の顔領域の幅の範囲が対応付けられる。そして視線検出部23は、顔検出部21から受け取った、最新の顔領域の水平方向の幅をその範囲に含む注視位置テーブルを選択する。そして視線検出部23は、選択した注視位置テーブルを参照して、視線方向に対応する注視位置を求める。
なお、変形例によれば、視線検出装置は、デプスカメラといった距離センサを有していてもよい。この場合には、視線検出部23は、距離センサにより得られた、広角画像上で検出された顔までの距離に応じて、注視位置テーブルを選択すればよい。
図6は、注視位置テーブルの一例を示す図である。注視位置テーブル600の上端の行には、視線方向が表される。そして注視位置テーブル600の各欄には、同じ列の視線方向に対応する、注視位置の座標が所定の単位(例えば、表示部2の表示画面の画素単位、あるいは、mm単位)で表される。例えば、注視位置テーブル600の欄601には、視線方向が水平方向0°、垂直方向1°の場合の注視位置が(cx,cy+40)であることが示されている。なお、cx、cyは、視線方向が(0,0)のときの注視位置、すなわち基準注視位置の座標、例えば、赤外カメラ5の取り付け位置における、鉛直平面上の水平座標及び垂直座標である。
なお、視線検出部23は、視線方向及び注視位置の検出に失敗した場合、すなわち、瞳孔またはプルキンエ像の検出に失敗した場合、注視位置の座標として、注視位置の検出に失敗したことを表す座標値、例えば、(0,0)に設定する。
視線検出部23は、注視位置を、挟角画像の取得時刻とともに履歴情報記録部24へ通知する。
履歴情報記録部24は、顔検出部21から、広角画像上での顔の位置と広角画像の取得時刻を受け取る度に、広角画像上での顔の位置と広角画像の取得時刻を、顔位置履歴情報に登録する。
図7は、顔位置履歴情報の一例を示す図である。顔位置履歴情報700には、行ごとに、広角画像の取得時刻701と、検出された顔の位置についての広角画像上の水平方向(すなわち、X方向)の座標値及び垂直方向(すなわち、Y方向)の座標値との組702が含まれる。そして取得時刻と座標値の組が得られる度に、顔位置履歴情報700の最下行に、その取得時刻と座標値の組が追加される。なお、この例では、X方向及びY方向の原点は、広角画像の左上端の画素の位置となり、原点よりも右側であればX方向の座標値は正となり、原点よりも下側であればY方向の座標値は正となる。またこの例では、広角画像上で顔が検出されていない場合、顔位置履歴情報700において、行710に示されるように、X方向の座標値及びY方向の座標値は、(-1,-1)で表される。
また、履歴情報記録部24は、後述する同一人物判定部25より、現在の注視位置履歴情報に注視位置が記録されている人物と、最新の広角画像の取得時において顔が検出された人物とが同一であるか否かの判定結果を受け取る。そして履歴情報記録部24は、現在の注視位置履歴情報に注視位置が記録されている人物と、最新の広角画像の取得時において顔が検出された人物とが同一であれば、その注視位置履歴情報に、最新の挟角画像の取得時刻と注視位置とを記録する。
一方、現在の注視位置履歴情報に注視位置が記録されている人物と、最新の広角画像の取得時において顔が検出された人物とが同一でなければ、履歴情報記録部24は、現在の注視位置履歴情報の更新を停止する。そして履歴情報記録部24は、注視位置履歴情報を新たに作成する。そして履歴情報記録部24は、新たに作成した注視位置履歴情報に、視線検出部23から受け取った、最新の挟角画像の取得時刻と注視位置とを記録する。
図8は、注視位置履歴情報の一例を示す図である。注視位置履歴情報800には、行ごとに、挟角画像の取得時刻801と、検出された注視位置についての所定の面上での水平方向(すなわち、X方向)の座標値及び垂直方向(すなわち、Y方向)の座標値の組802が含まれる。なお、所定の面は、デジタルサイネージシステム1のユーザが注視する対象となる物体が存在する面であり、例えば、表示部2の表示画面である。そして取得時刻と座標値の組が得られる度に、注視位置履歴情報800の最下行に、その取得時刻と座標値の組が追加される。この例では、注視位置が検出されていない場合、注視位置履歴情報800において、行810に示されるように、X方向の座標値及びY方向の座標値は、(0,0)で表される。
なお、変形例によれば、履歴情報記録部24は、注視位置が追跡される人物ごとに注視位置履歴情報を作成する代わりに、一つの注視位置履歴情報において、挟角画像の取得時刻ごとに、対応する人物の識別情報を付してもよい。
同一人物判定部25は、顔位置履歴情報に基づいて、注視位置履歴情報に記録されている、一連の注視位置の座標の組のうち、同一人物による注視位置の座標の組を判定する。
一般に、一人の人物がデジタルサイネージシステム1を利用している間、その人物は、広角カメラ3の撮影範囲内にいるので、広角画像上でその人物の顔が検出される。したがって、顔位置履歴情報において、連続して顔の位置が記録されている期間については、同じ人物の顔が検出されていると想定されるので、その期間において検出された注視位置も、同一人物によるものと想定される。
しかしながら、デジタルサイネージシステム1を利用している人物が広角カメラ3の撮影範囲の端部近辺に位置している場合、その人物が立つ位置を少し変えただけで、その人物の顔が広角カメラ3の撮影範囲から外れることがある。このような場合、広角画像上で顔が検出されなくなる。そしてその人物が広角カメラ3の撮影範囲から外れた後、再度広角カメラ3の撮影範囲内に戻り、再度、顔が検出可能になることがある。
図9は、人物のポジションと顔位置履歴情報の関係の一例を示す図である。この例では、期間901では、人物910が、広角カメラ3の撮影範囲の端部近傍に位置しており、広角画像921の端部近傍に人物910の顔が写っている。そのため、期間901では、顔位置履歴情報900において、連続して顔の位置が記録されている。一方、期間902では、人物910が、広角カメラ3の撮影範囲から人物910の顔が外れる位置まで移動しており、広角画像922でも、人物910の顔は写っていない。そのため、期間902では、顔位置履歴情報900において、顔の位置が記録されていない。その後、期間903において、人物910が再度広角カメラ3の撮影範囲内へ戻っており、広角画像923の端部近傍に人物910の顔が写っている。そのため、期間903では、顔位置履歴情報900において、顔の位置が記録されている。
このように、顔位置履歴情報において、顔の位置の記録が途切れている期間があっても、その期間の前後における、検出された顔の位置は、同一人物の顔の位置である可能性がある。ここで再度図9を参照すると、期間901に対応する広角画像921上での人物910の顔の垂直方向の位置y1と、期間903に対応する広角画像923上での人物910顔の垂直方向の位置y3とは、略同一である。一方、期間903において、人物910とは別の人物が広角カメラ3の撮影範囲内に移動してきたと仮定する。この場合には、その人物の身長と人物910の身長が異なる可能性が高いので、期間901において検出されている顔の垂直方向の位置と、期間903において検出されている顔の垂直方向の位置の差が相対的に大きくなると想定される。
さらに、顔位置履歴情報において、顔の位置の記録が途切れている期間が、人物の立ち位置の変化によるものであれば、その期間の前後において検出された顔の水平方向の位置は、何れも、広角画像の同じ側の端部の近傍に位置していると想定される。例えば、図9に示される例では、期間901における顔の水平方向の位置、及び、期間903における顔の水平方向の位置は、何れも、広角画像の左端近傍に位置している。
そこで、同一人物判定部25は、顔位置履歴情報において、連続して顔の位置が記録されている期間において検出された注視位置を、同一人物によるものと判定する。また、同一人物判定部25は、顔位置履歴情報において、顔の位置が記録されていない中断期間があると、中断期間の前後における、顔の位置を比較する。そして、中断期間の前後における顔の垂直方向の位置の差が所定範囲内であり、かつ、中断期間の前後における顔の水平方向の位置が、広角画像の同じ側の端部の方に近ければ、中断期間の前後の広角画像に写っている人物は同一であると想定される。そこでこの場合、同一人物判定部25は、中断期間の直前に取得された挟角画像から検出された注視位置と、中断期間の直後に取得された挟角画像から検出された注視位置とを、同一人物によるものと判定する。これにより、制御部9は、デジタルサイネージシステム1を利用する人物が立ち位置を少しずらすことで一時的に疎の人物の顔及び注視位置が検出できなくなっても、その人物の注視位置を追跡できる。
図10及び図11は、制御部9により実行される、視線検出処理の動作フローチャートを示す。制御部9は、広角画像と挟角画像の組が取得される度に、下記の動作フローチャートに従って視線検出処理を実行する。
顔検出部21は、広角カメラ3から取得した広角画像上で顔が写っている顔領域を検出する(ステップS101)。そして、顔検出部21は、顔領域の検出に成功したか否か判定する(ステップS102)。顔領域の検出に失敗した場合(ステップS102−No)、顔検出部21は、顔の位置を、顔が検出されていないことを表すデフォルト値に設定する(ステップS103)。一方、顔検出部21が顔領域の検出に成功した場合(ステップS102−Yes)、顔検出部21は、顔領域の重心を顔の位置とする(ステップS104)。
撮影方向制御部22は、検出された顔の位置に基づいて、その位置が赤外カメラ5の撮影範囲に含まれるように、赤外カメラ5の撮影方向を調整する(ステップS105)。そして視線検出部23は、赤外カメラ5から取得した狭角画像上で瞳孔重心及び照明光源4のプルキンエ像を検出する(ステップS106)。
視線検出部23は、プルキンエ像の重心と瞳孔重心の位置関係に基づいて、注視位置を検出する(ステップS107)。ただし、プルキンエ像及び瞳孔の何れか一方が検出されていない場合、視線検出部23は、注視位置の座標を、注視位置が検出されていないことを表すデフォルト値に設定する。
履歴情報記録部24は、顔の位置及び広角画像の取得時刻を顔位置履歴情報に登録する(ステップS108)。
図11に示されるように、同一人物判定部25は、顔位置履歴情報に記録されている最新の広角画像の取得時刻において、顔の位置が検出されているか否か判定する(ステップS109)。顔の位置が検出されていなければ(ステップS109−No)、履歴情報記録部24は、最新の注視位置及び挟角画像の取得時刻を注視位置履歴情報に登録する(ステップS111)。なお、この場合、最新の広角画像上で顔が検出されていないので、最新の挟角画像においても、注視位置が検出されていない可能性が高い。そのため、注視位置がデフォルト値となっていれば、すなわち、注視位置が検出されていなければ、履歴情報記録部24は、最新の注視位置及び挟角画像の取得時刻を注視位置履歴情報に登録しなくてもよい。そして制御部9は、視線検出処理を終了する。
一方、最新の広角画像の取得時刻において、顔の位置が検出されていれば(ステップS109−Yes)、同一人物判定部25は、直前の広角画像の取得時刻において、顔の位置が検出されているか否か判定する(ステップS110)。直前の広角画像の取得時刻において、顔の位置が検出されていれば(ステップS110−Yes)、同一人物判定部25は、直前の挟角画像において検出された注視位置と、最新の挟角画像において検出された注視位置とは、同一人物によるものと判定する。そして履歴情報記録部24は、注視位置及び挟角画像の取得時刻を注視位置履歴情報に登録する(ステップS111)。
一方、直前の広角画像の取得時刻において、顔の位置が記録されていなければ(ステップS110−No)、同一人物判定部25は、顔位置履歴情報を参照して、最新の広角画像の取得時刻以前において最後に記録された顔の位置及び広角画像の取得時刻を特定する。なお、以下では、便宜上、最後に顔の位置が記録されたときの広角画像の取得時刻を、前回検出時刻と呼ぶ。そして同一人物判定部25は、前回検出時刻における顔の位置と、最新の広角画像の取得時における顔の位置とが、広角画像の同一の端部側に位置するか否か判定する(ステップS112)。なお、同一人物判定部25は、例えば、前回検出時刻における顔の位置と、最新の広角画像の取得時における顔の位置とが、広角画像の同一の側の端部から所定の長さ以内であれば、広角画像の同一の端部側に位置すると判定する。また所定の長さは、例えば、広角画像の水平方向の幅の1/2未満、例えば、広角画像の水平方向の幅の1/3に設定される。
前回検出時刻と最新の広角画像の取得時とで、広角画像の同一端部側に顔が位置していなければ(ステップS112−No)、同一人物判定部25は、前回検出時刻での顔の位置が広角画像の水平方向の端部よりも中心に近いか否か判定する(ステップS113)。前回検出時刻における顔の位置が広角画像の水平方向の端部よりも中心に近い場合(ステップS113−Yes)、注視位置を追跡中の人物が顔の向きを変えたといった理由により、顔検出部21が一時的に顔の検出に失敗したと想定される。そこでこの場合、同一人物判定部25は、その二つの取得時刻における顔は、同一人物の顔であると判定する。そして履歴情報記録部24は、注視位置及び挟角画像の取得時刻を注視位置履歴情報に登録する(ステップS111)。
一方、前回検出時刻における顔の位置が、広角画像の水平方向の中心よりも端部に近い場合(ステップS113−No)、前回検出時刻での顔の位置と、最新の広角画像の取得時での顔の位置は、広角画像の中心を挟んで反対側に位置していることになる。このことから、同一人物判定部25は、その二つの取得時刻における顔は、互いに異なる人物の顔であると判定し、その判定結果を履歴情報記録部24に通知する。そして履歴情報記録部24は、新たに検出された人物についての注視位置履歴情報を作成し、最新の挟角画像の取得時刻及び注視位置の組をその新たに作成した注視位置履歴情報に記録する(ステップS114)。
一方、前回検出時刻と、最新の広角画像の取得時とで、顔が広角画像の同一の端部側に位置している場合(ステップS112−Yes)、同一人物判定部25は、その二つの取得時刻における、顔の垂直方向の位置の差の絶対値を算出する(ステップS115)。そして同一人物判定部25は、その差の絶対値が所定の閾値Th以下か否か判定する(ステップS116)。なお、所定の閾値は、例えば、広角カメラ3と人との距離が所定距離となる場合の広角画像上での顔の縦方向の長さの平均値の1/2とすることができる。
二つの取得時刻における、顔の垂直方向の位置の差の絶対値が所定の閾値Thよりも大きければ(ステップS116−No)、同一人物判定部25は、その二つの取得時刻における顔は、互いに異なる人物の顔であると判定する。そして同一人物判定部25は、ステップS114の処理を実行する。
一方、二つの取得時刻における、顔の垂直方向の位置の差の絶対値が所定の閾値Th以下であれば(ステップS116−Yes)、その二つの取得時刻における顔は、同一人物の顔であると判定し、その判定結果を履歴情報記録部24へ通知する。そして同一人物判定部25は、ステップS111の処理を実行する。
ステップS111またはS114の後、制御部9は、視線検出処理を終了する。
以上に説明してきたように、この視線検出装置は、広角画像において連続して顔の位置が検出されている期間中に取得された注視位置を、同一人物によるものと判定する。これにより、この視線検出装置は、眼が閉じられるといった理由で一時的に注視位置が検出できないことがあっても、同一人物による注視位置の時間変化を追跡できる。またこの視線検出装置は、一時的に顔が検出さなかった期間の前後における顔の位置を比較する。そしてこの視線検出装置は、その期間の前後における、検出された顔の位置が比較的近ければ、その期間の前後において検出された顔は同一人物の顔であると判定する。そしてこの視線検出装置は、同一人物の顔が検出されている間の一連の挟角画像から検出された注視位置を、同一人物によるものとする。そのため、この視線検出装置は、一時的に顔及び注視位置が検出できなくなったとしても、人物ごとに、その人物の注視位置の時間変化を追跡できる。
なお、変形例によれば、同一人物判定部25は、顔の位置が検出されなかった期間の前後での、広角画像上での垂直方向の顔の位置の差の代わりに、その期間の長さに基づいて、その期間の前後において検出された顔が同一人物の顔か否かを判定してもよい。これは、ある人物がデジタルサイネージシステム1を利用している状態で、ただ単に立ち位置を一時的にずらしただけであれば、その人物は、比較的短時間で元の位置に戻ることが想定されるためである。
この場合、同一人物判定部25は、図10に示される動作フローチャートのステップS115及びS116の代わりに、前回検出時刻と、最新の広角画像の取得時の差を所定の閾値と比較すればよい。そして同一人物判定部25は、その差が所定の閾値以下であれば、その二つの取得時刻における顔は、同一人物の顔であると判定すればよい。すなわち、同一人物判定部25は、中断期間の直前に取得された挟角画像から検出された注視位置と、中断期間の直後に取得された挟角画像から検出された注視位置とを、同一人物によるものと判定する。一方、その差が所定の閾値よりも大きければ、同一人物判定部25は、その二つの取得時刻における顔は、異なる人物の顔であると判定すればよい。なお、所定の閾値は、例えば、数秒から数十秒程度に設定される。
また、ある人物が、広角カメラ3の撮影範囲の中心付近にいたとしても、その後、その人物が後方を向いて去って行くことがある。このような場合には、最後に顔が検出されたときの顔の位置が広角画像の中心付近となることがある。この場合、次に検出された顔は、他の人物の顔である可能性が高い。そこで他の変形例によれば、同一人物判定部25は、ステップS113において、前回検出時刻における顔の位置が、広角画像の水平方向の端部よりも中心に近いと判定された場合も、前回検出時刻と最新の広角画像の取得時の差を所定の閾値と比較する。そして同一人物判定部25は、その差が所定の閾値よりも大きければ、その二つの取得時刻における顔は、異なる人物の顔であると判定してもよい。
ある人物の顔の検出に失敗する直前において、顔が広角画像の水平方向の何れかの端部近傍に位置している場合には、顔検出部21が顔の検出に失敗した以降も、その人物が、広角カメラ3の撮影範囲の対応する端部近傍に位置している可能性がある。そこで他の変形例によれば、撮影方向制御部22は、顔検出部21が顔の検出に失敗した場合、顔位置履歴情報を参照して、その直前において検出された顔の位置が、広角画像の水平方向の何れかの端部から所定幅以内か否か判定する。なお、所定幅は、例えば、広角画像の水平方向の幅の1/5〜1/3とすることができる。そして撮影方向制御部22は、その顔の位置が、広角画像の水平方向の何れかの端部から所定幅以内である場合、赤外カメラ5の撮影方向を、その端部に対応する、広角カメラ3の撮影範囲の端部から所定角度だけ外れる方向へ向けてさせてもよい。なお、所定角度は、例えば、顔の水平方向の平均的な幅〜その幅の2倍に相当する角度とすることができる。
赤外カメラ5の撮影方向を上記のように変更した後の所定期間内に得た挟角画像から注視位置が検出された場合、同一人物判定部25は、その注視位置と、顔の検出に失敗する直前に取得された挟角画像上での注視位置とを、同一人物によるものと判定してもよい。なお、所定期間は、例えば、1秒〜数秒とすることができる。また、所定期間内に得られた挟角画像において、注視位置が検出されなかった場合には、撮影方向制御部22は、赤外カメラ5の撮影方向を、広角カメラ3の撮影範囲内に戻すように調整してもよい。
この変形例によれば、視線検出装置は、注視位置を追跡中の人物が広角カメラの撮影範囲からわずかに外れる位置へ移動しても、その人物の注視位置の追跡を継続できる。
上記の実施形態またはその変形例による視線検出装置の制御部の機能を実現するコンピュータプログラムは、磁気記録媒体、光記録媒体といったコンピュータ読み取り可能な記録媒体に記録された形で提供されてもよい。なお、この記録媒体には、搬送波は含まれない。
ここに挙げられた全ての例及び特定の用語は、読者が、本発明及び当該技術の促進に対する本発明者により寄与された概念を理解することを助ける、教示的な目的において意図されたものであり、本発明の優位性及び劣等性を示すことに関する、本明細書の如何なる例の構成、そのような特定の挙げられた例及び条件に限定しないように解釈されるべきものである。本発明の実施形態は詳細に説明されているが、本発明の精神及び範囲から外れることなく、様々な変更、置換及び修正をこれに加えることが可能であることを理解されたい。
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
(付記1)
第1の画角を有し、第1の画像を生成する第1の撮像部と、
前記第1の画角よりも狭い第2の画角を有し、第2の画像を生成する第2の撮像部と、
前記第1の画像に人の顔が表されている場合に当該顔の位置を検出する顔検出部と、
前記検出した顔の位置を含む前記第2の画像に人の眼が表されている場合に当該人の注視位置を検出する視線検出部と、
連続して生成された複数の前記第1の画像のそれぞれについて前記顔の位置が検出されている第1の期間において生成された複数の前記第2の画像から検出された前記注視位置を同一人物によるものと判定する同一人物判定部と、
を有する視線検出装置。
(付記2)
前記同一人物判定部は、前記顔の位置が検出されない連続して生成された一つ以上の前記第1の画像のそれぞれについて前記顔の位置が検出されない第2の期間の直前に生成された前記第1の画像上での前記顔の位置と、前記第2の期間の直後に生成された前記第1の画像上での前記顔の位置との比較結果に基づいて、前記第2の期間の直前に生成された前記第2の画像から検出された前記注視位置と、前記第2の期間の直後に生成された前記第2の画像から検出された前記注視位置とを同一人物によるものか否かを判定する、付記1に記載の視線検出装置。
(付記3)
前記同一人物判定部は、前記第2の期間の直前において生成された前記第1の画像上での前記顔の位置が当該第1の画像の水平方向の一方の端部側に位置し、前記第2の期間の直後において生成された前記第1の画像上での前記顔の位置が当該第1の画像の水平方向の他方の端部側に位置する場合、前記第2の期間の直前に生成された前記第2の画像から検出された前記注視位置と、前記第2の期間の直後に生成された前記第2の画像から検出された前記注視位置とを異なる人物によるものと判定する、付記2に記載の視線検出装置。
(付記4)
前記同一人物判定部は、前記第2の期間の直前において生成された前記第1の画像上での前記顔の位置、及び、前記第2の期間の直後において生成された前記第1の画像上での前記顔の位置の何れも、前記第1の画像の水平方向の一方の端部側に位置し、かつ、前記第2の期間の直前において生成された前記第1の画像上での前記顔の垂直方向の位置と、前記第2の期間の直後において生成された前記第1の画像上での前記顔の垂直方向の位置との差が所定の長さ以下である場合、前記第2の期間の直前に生成された前記第2の画像から検出された前記注視位置と、前記第2の期間の直後に生成された前記第2の画像から検出された前記注視位置とを同一人物によるものと判定する、付記2に記載の視線検出装置。
(付記5)
前記同一人物判定部は、前記第2の期間の直前において生成された前記第1の画像上での前記顔の位置、及び、前記第2の期間の直後において生成された前記第1の画像上での前記顔の位置の何れも、前記第1の画像の水平方向の一方の端部側に位置し、かつ、前記第2の期間の長さが所定の期間以下である場合、前記第2の期間の直前に生成された前記第2の画像から検出された前記注視位置と、前記第2の期間の直後に生成された前記第2の画像から検出された前記注視位置とを同一人物によるものと判定する、付記2に記載の視線検出装置。
(付記6)
前記第2の撮像部は、撮影方向を変更可能であり、
前記第2の期間の直前において生成された前記第1の画像上での前記顔の位置が当該第1の画像の水平方向の何れか一方の端部から所定範囲内に位置していた場合、前記第2の撮像部の撮影方向を、前記一方の端部に対応する前記第1の撮像部の撮影範囲の端部から外れる方向へ向ける撮影方向制御部をさらに有する、
付記2〜5の何れかに記載の視線検出装置。
(付記7)
前記同一人物判定部は、前記第2の撮像部の撮影方向を、前記一方の端部に対応する前記第1の撮像部の撮影範囲の端部から外れる方向へ向けた後に生成された前記第2の画像から前記注視位置が検出された場合、当該第2の画像から検出された前記注視位置と、前記第2の期間の直前に生成された前記第2の画像から検出された前記注視位置とを、同一人物によるものと判定する、付記6に記載の視線検出装置。
(付記8)
同一人物による前記注視位置と、対応する前記第2の画像の取得時刻とを含む注視位置履歴情報を作成する履歴情報記録部をさらに有する、付記1〜7の何れかに記載の視線検出装置。
(付記9)
第1の画角を有する第1の撮像部により生成された第1の画像に人の顔が表されている場合に当該顔の位置を検出し、
前記第1の画角よりも狭い第2の画角を有する第2の撮像部により生成され、前記検出した顔の位置を含む第2の画像に人の眼が表されている場合に当該人の注視位置を検出し、
連続して生成された複数の前記第1の画像のそれぞれについて前記顔の位置が検出されている第1の期間において生成された複数の前記第2の画像から検出された前記注視位置を同一人物によるものと判定する、
ことを含む視線検出方法。
(付記10)
第1の画角を有する第1の撮像部により生成された第1の画像に人の顔が表されている場合に当該顔の位置を検出し、
前記第1の画角よりも狭い第2の画角を有する第2の撮像部により生成され、前記検出した顔の位置を含む第2の画像に人の眼が表されている場合に当該人の注視位置を検出し、
連続して生成された複数の前記第1の画像のそれぞれについて前記顔の位置が検出されている第1の期間において生成された複数の前記第2の画像から検出された前記注視位置を同一人物によるものと判定する、
ことをコンピュータに実行させるための視線検出用コンピュータプログラム。