(57)【要約】【課題】画像上で瞳孔と重なる複数の輝点が存在する場合でも、瞳孔を高精度で検出できる瞳孔検出用コンピュータプログラムを提供する。【解決手段】瞳孔検出用コンピュータプログラムは、ユーザの眼が表された画像上の眼領域内に表された少なくとも一つの輝点領域を検出し、基準点から放射状に設定される各探索線について輝点領域の何れかを通るか否か判定し、輝点領域を通る探索線について、その探索線が通る輝点領域の外周の輝度に応じてその輝点領域と画像上に表されたユーザの眼の瞳孔との重なり度合いを判定し、重なり度合いに応じて瞳孔の輪郭上の点の探索範囲を設定し、輝点領域の何れかを通る探索線について設定された探索範囲内で瞳孔の輪郭上の点を検出し、かつ、輝点領域の何れも通らない探索線上で瞳孔の輪郭上の点を検出し、検出された瞳孔の輪郭上の点のそれぞれに基づいて画像上の瞳孔を検出することをコンピュータに実行させる。【選択図】図９
2018205886.tif 000002
【特許請求の範囲】
【請求項１】
ユーザの眼が表された画像から、前記眼が写っている眼領域を検出し、
前記眼領域内に表された少なくとも一つの輝点領域を検出し、
前記眼領域内で瞳孔内に位置すると想定される基準点を設定し、
前記基準点から放射状に複数の探索線を設定し、
前記複数の探索線のそれぞれについて、前記少なくとも一つの輝点領域の何れかを通るか否か判定し、
前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れかを通る探索線について、当該探索線が通る輝点領域の外周の輝度に応じて当該輝点領域と前記画像上に表された前記ユーザの眼の瞳孔との重なり度合いを判定し、当該重なり度合いに応じて前記瞳孔の輪郭上の点の探索範囲を設定し、
前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れかを通る探索線について、当該探索線について設定された前記探索範囲内で前記瞳孔の輪郭上の点を検出し、かつ、前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れも通らない探索線について、当該探索線上で前記瞳孔の輪郭上の点を検出し、
検出された前記瞳孔の輪郭上の点のそれぞれに基づいて前記瞳孔を検出する、
ことをコンピュータに実行させるための瞳孔検出用コンピュータプログラム。
【請求項２】
前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れも通らない探索線に沿った輝度値の変化に基づいて前記瞳孔の輪郭に相当する輝度閾値を算出することをさらにコンピュータに実行させ、
前記輝点領域と前記瞳孔との重なり度合いを判定することは、前記探索線が通る前記輝点領域の外周に沿った各画素の輝度値と前記輝度閾値との比較に応じて前記重なり度合いを判定する、請求項１に記載の瞳孔検出用コンピュータプログラム。
【請求項３】
前記探索範囲を設定することは、前記探索線が通る前記輝点領域の外周に沿った各画素の輝度値が前記輝度閾値未満である場合、前記輝点領域を通る探索線のうち、前記輝点領域と重なる部分を除いた範囲を前記探索範囲とする、請求項２に記載の瞳孔検出用コンピュータプログラム。
【請求項４】
前記探索範囲を設定することは、前記探索線が通る前記輝点領域の外周に沿った各画素の輝度値が前記輝度閾値以上である場合、前記輝点領域を通る探索線に沿って、前記基準点から当該探索線と当該輝点領域とが交差するまでの範囲を前記探索範囲とする、請求項２に記載の瞳孔検出用コンピュータプログラム。
【請求項５】
前記探索範囲設定部は、前記探索線が通る前記輝点領域の外周に沿った各画素のうちの何れかの画素の輝度値が前記輝度閾値未満となり、かつ、前記外周に沿った各画素のうちの他の何れかの画素の輝度値が前記輝度閾値以上である場合、当該輝点領域の前記外周を前記探索範囲とする、請求項２に記載の瞳孔検出用コンピュータプログラム。
【請求項６】
ユーザの眼が表された画像から、前記眼が写っている眼領域を検出する眼検出部と、
前記眼領域内に表された少なくとも一つの輝点領域を検出する輝点検出部と、
前記眼領域内で瞳孔内に位置すると想定される基準点を設定する基準点設定部と、
前記基準点から放射状に複数の探索線を設定し、前記複数の探索線のそれぞれについて、前記少なくとも一つの輝点領域の何れかを通るか否か判定する探索線設定部と、
前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れかを通る探索線について、当該探索線が通る輝点領域の外周の輝度に応じて当該輝点領域と前記画像上に表された前記ユーザの眼の瞳孔との重なり度合いを判定し、当該重なり度合いに応じて前記瞳孔の輪郭上の点の探索範囲を設定する探索範囲設定部と、
前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れかを通る探索線について、当該探索線について設定された前記探索範囲内で前記瞳孔の輪郭上の点を検出し、かつ、前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れも通らない探索線について、当該探索線上で前記瞳孔の輪郭上の点を検出する輪郭点検出部と、
検出された前記瞳孔の輪郭上の点のそれぞれに基づいて前記瞳孔を検出する瞳孔検出部と、
を有する瞳孔検出装置。
【請求項７】
ユーザの眼が表された画像から、前記眼が写っている眼領域を検出し、
前記眼領域内に表された少なくとも一つの輝点領域を検出し、
前記眼領域内で瞳孔内に位置すると想定される基準点を設定し、
前記基準点から放射状に複数の探索線を設定し、
前記複数の探索線のそれぞれについて、前記少なくとも一つの輝点領域の何れかを通るか否か判定し、
前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れかを通る探索線について、当該探索線が通る輝点領域の外周の輝度に応じて当該輝点領域と前記画像上に表された前記ユーザの眼の瞳孔との重なり度合いを判定し、当該重なり度合いに応じて前記瞳孔の輪郭上の点の探索範囲を設定し、
前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れかを通る探索線について、当該探索線について設定された前記探索範囲内で前記瞳孔の輪郭上の点を検出し、かつ、前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れも通らない探索線について、当該探索線上で前記瞳孔の輪郭上の点を検出し、
検出された前記瞳孔の輪郭上の点のそれぞれに基づいて前記瞳孔を検出する、
ことを含む瞳孔検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、眼を撮影して得られた画像に表された瞳孔を検出する瞳孔検出用コンピュータプログラム、瞳孔検出装置及び瞳孔検出方法に関する。
【背景技術】
【０００２】
人の視線方向を検出することで、その人が興味を有しているものに関する情報を得たり、あるいは、視線方向または注視している位置に関連する操作を自動的に実行することが検討されている。なお、以下では、便宜上、人が注視している位置を単に注視位置と呼ぶ。
【０００３】
人の注視位置、あるいは、視線方向は、その人の瞳孔の向きと密接に関連している。そこで、人の眼を撮影して得られた画像から瞳孔を検出し、その瞳孔と基準点との位置関係により、その人の視線方向または注視位置を特定する技術が知られている。なお、基準点としては、例えば、光源の角膜反射像（以下、プルキンエ像と呼ぶ）が用いられる。
【０００４】
瞳孔と基準点との位置関係に基づいて視線方向を検出するために、画像上に表された瞳孔を正確に検出するための技術が提案されている（例えば、特許文献１及び２を参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−１４４３８８号公報
【特許文献２】特開２０１２−２４１５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
場合によっては、画像上で、瞳孔の像とプルキンエ像とが重なることで、瞳孔の輪郭の一部が画像上に表れないことがある。そこで上記の技術では、プルキンエ像内の基準点を一端とし且つ所定の長さを持つ複数の線分を設定し、各線分における各画素の輝度及び基準輝度に基づいて輝度評価値が算出される。そして輝度評価値に基づいて、複数の線分の中から瞳孔画像の中心を通る瞳孔中心直線が特定され、瞳孔中心直線の周辺における輝度状態に基づいて瞳孔画像が検出される。
【０００７】
しかしながら、画像上で瞳孔の像と重なる可能性が有るのはプルキンエ像だけではない。例えば、人が眼鏡を装着している場合、眼鏡で反射した光源の像が瞳孔の像と重なることがある。また、複数の光源の像が画像上に写り込むことがある。このような場合、上記の技術では、瞳孔が正確に検出されないことがある。
【０００８】
一つの側面では、本発明は、画像上で瞳孔と重なる複数の輝点が存在する場合でも、瞳孔を高精度で検出できる瞳孔検出用コンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
一つの実施形態によれば、瞳孔検出用コンピュータプログラムが提供される。この瞳孔検出用コンピュータプログラムは、ユーザの眼が表された画像から、眼が写っている眼領域を検出し、眼領域内に表された少なくとも一つの輝点領域を検出し、眼領域内で瞳孔内に位置すると想定される基準点を設定し、基準点から放射状に複数の探索線を設定し、複数の探索線のそれぞれについて、少なくとも一つの輝点領域の何れかを通るか否か判定し、複数の探索線のうち、少なくとも一つの輝点領域の何れかを通る探索線について、その探索線が通る輝点領域の外周の輝度に応じてその輝点領域と画像上に表されたユーザの眼の瞳孔との重なり度合いを判定し、重なり度合いに応じて瞳孔の輪郭上の点の探索範囲を設定し、複数の探索線のうち、少なくとも一つの輝点領域の何れかを通る探索線について、その探索線について設定された探索範囲内で瞳孔の輪郭上の点を検出し、かつ、複数の探索線のうち、少なくとも一つの輝点領域の何れも通らない探索線について、その探索線上で瞳孔の輪郭上の点を検出し、検出された瞳孔の輪郭上の点のそれぞれに基づいて画像上の瞳孔を検出することをコンピュータに実行させるための命令を有する。
【発明の効果】
【００１０】
画像上で瞳孔と重なる複数の輝点が存在する場合でも、瞳孔を高精度で検出できる。
【図面の簡単な説明】
【００１１】
【図１】瞳孔検出装置の一実施形態であるデジタルサイネージシステムのハードウェア構成図である。
【図２】照明光源、赤外カメラ及び表示装置の配置の一例を示す図である。
【図３】プロセッサの瞳孔検出処理に関する機能ブロック図である。
【図４】基準点と探索線の一例を示す図である。
【図５】探索線に沿った、基準点からの距離と輝度との関係の一例を示す図である。
【図６】瞳孔と輝点領域との位置関係の一例を示す図である。
【図７】（ａ）〜（ｄ）のそれぞれは、輝点領域の外周の輝度変化と瞳孔の輪郭点との関係の一例を示す図である。
【図８】注視位置テーブルの一例を示す図である。
【図９】瞳孔検出処理の動作フローチャートを示す図である。
【図１０】検出された輪郭点の数と瞳孔径の推定値との関係の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、図を参照しつつ、瞳孔検出装置について説明する。
この瞳孔検出装置は、カメラにより、光源により照明されたユーザの少なくとも一方の眼を撮影して画像を生成し、その画像上でユーザの眼の瞳孔を検出することで、ユーザの視線方向を検出する。そのために、この瞳孔検出装置は、画像上に表された瞳孔内に位置すると想定される基準点を設定し、その基準点から放射状に複数の探索線を設定する。そしてこの瞳孔検出装置は、探索線ごとに、探索線に沿った輝度変化に基づいて、瞳孔の輪郭上の点（以下、単に輪郭点と呼ぶ）を検出する。その際、この瞳孔検出装置は、何れかの探索線と重なる画像上の輝点（例えば、プルキンエ像）が表された領域（以下、単に輝点領域と呼ぶ）について、輝点領域の外周の輝度に応じて、輝点領域と瞳孔との重なり度合いを推定する。そしてこの瞳孔検出装置は、推定された重なり度合いに応じて、輝点領域と重なる探索線に関して輪郭点を探索する探索範囲を設定する。これにより、この瞳孔検出装置は、眼領域内に複数の輝点領域が含まれる場合でも、瞳孔の複数の輪郭点を正確に検出することを可能として、画像上の瞳孔を正確に検出する。
【００１３】
なお、以下に説明する実施形態では、瞳孔検出装置は、デジタルサイネージシステムに実装され、そして瞳孔検出装置は、デジタルサイネージシステムのユーザの注視位置を検出する。
【００１４】
図１は、瞳孔検出装置の一実施形態であるデジタルサイネージシステムのハードウェア構成図である。デジタルサイネージシステム１は、表示装置２と、照明光源３と、赤外カメラ４と、入力装置５と、記憶媒体アクセス装置６と、メモリ７と、プロセッサ８とを有する。さらにデジタルサイネージシステム１は、デジタルサイネージシステム１を他の機器に接続するための通信インターフェース回路（図示せず）を有していてもよい。
【００１５】
表示装置２は、例えば、液晶ディスプレイまたは有機エレクトロルミネッセンスディスプレイを有する。そして表示装置２は、例えば、様々なテキスト、アイコン、静止画像または動画像をプロセッサ８からの制御信号に応じて表示する。
【００１６】
照明光源３は、赤外光を発光する光源、例えば、少なくとも一つの赤外発光ダイオードと、プロセッサ８からの制御信号に応じて、赤外発光ダイオードに電源（図示せず）からの電力を供給する駆動回路（図示せず）とを有する。照明光源３は、赤外カメラ４の撮影方向を照明可能なように、赤外カメラ４と同じ筐体１０に、赤外カメラ４の撮影方向へ照明光源３の発光面が向くように取り付けられている。そして照明光源３は、プロセッサ８から光源を点灯させる制御信号を受信している間、照明光を発する。
【００１７】
赤外カメラ４は、撮像部の一例であり、左右それぞれの眼のうちの少なくとも一方を含む、ユーザの顔の少なくとも一部が写った画像を生成する。そのために、赤外カメラ４は、照明光源３が発する赤外光に感度を持つ２次元状に配列された固体撮像素子を有するイメージセンサと、そのイメージセンサ上に被写体の像を結像する撮像光学系を有する。赤外カメラ４は、虹彩による反射像及び照明光源３以外の光源からの光のプルキンエ像が検出されることを抑制するために、イメージセンサと撮像光学系の間に、可視光カットフィルタをさらに有してもよい。また、撮像光学系は、単焦点の光学系でもよく、あるいは、可変焦点光学系であってもよい。赤外カメラ４は、瞳孔検出処理の実行中、所定のフレームレートでユーザの顔を撮影して画像を生成する。なお、赤外カメラ４は、この画像上でデジタルサイネージシステム１を利用するユーザの瞳に写った照明光源３のプルキンエ像及び瞳孔が識別可能な解像度を有する。そして赤外カメラ４は、画像を生成する度に、その画像をプロセッサ８へ渡す。
【００１８】
図２は、照明光源３、赤外カメラ４及び表示装置２の配置の一例を示す図である。表示装置２の周辺には、照明光源３及び赤外カメラ４が取り付けられた筐体１０が配置されている。そして照明光源３及び赤外カメラ４は、表示装置２の表示画面を見るユーザ２００の顔へ向けられる。そして、赤外カメラ４は、ユーザ２００の少なくとも一方の眼を含む、ユーザ２００の顔全体あるいは顔の一部を撮影する。
【００１９】
入力装置５は、例えば、キーボードと、マウスのようなポインティングデバイスとを有する。そして入力装置５を介してユーザにより入力された操作信号は、プロセッサ８へ渡される。
【００２０】
なお、表示装置２と入力装置５とは、例えば、タッチパネルディスプレイのように一体化されていてもよい。この場合、入力装置５は、表示装置２の表示画面上に表示されたアイコンの位置にユーザが触れた場合に、その位置に応じた操作信号を生成し、その操作信号をプロセッサ８へ出力する。
【００２１】
記憶媒体アクセス装置６は、記憶部の一例であり、例えば、磁気ディスク、半導体メモリカード及び光記憶媒体といった記憶媒体１１にアクセスする装置である。記憶媒体アクセス装置６は、例えば、記憶媒体１１に記憶された、プロセッサ８上で実行される、瞳孔検出処理用のコンピュータプログラムを読み込み、プロセッサ８に渡す。
【００２２】
メモリ７は、記憶部の他の一例であり、例えば、読み書き可能な不揮発性の半導体メモリ、及び読み書き可能な揮発性の半導体メモリを有する。そしてメモリ７は、プロセッサ８上で実行される、瞳孔検出処理用のコンピュータプログラム、各種のアプリケーションプログラム及び各種のデータを記憶する。
【００２３】
さらに、メモリ７は、ユーザが注視する位置を検出するために利用される各種のデータを記憶する。例えば、メモリ７は、プルキンエ像の重心に対する瞳孔中心の相対的な位置と視線方向との関係を表す参照テーブルなどを記憶する。
【００２４】
プロセッサ８は、少なくとも一つのCentral Processing Unit(CPU)及びその周辺回路を有する。さらに、プロセッサ８は、数値演算プロセッサまたはGraphics Processing Unit(GPU)を有していてもよい。そしてプロセッサ８は、デジタルサイネージシステム１の各部と信号線を介して接続されており、デジタルサイネージシステム１全体を制御する。例えば、プロセッサ８は、入力装置５から受け取った操作信号と実行中のアプリケーションプログラムに応じて、所定の動画像などを表示装置２に表示させる。
【００２５】
さらに、プロセッサ８は、画像が得られる度に、瞳孔検出処理を実行することにより、画像上に表されたユーザの瞳孔を検出し、検出された瞳孔に基づいてユーザの視線方向及び注視位置を検出する。
【００２６】
図３は、プロセッサ８の瞳孔検出処理に関する機能ブロック図である。プロセッサ８は、眼検出部２１と、輝点検出部２２と、基準点設定部２３と、探索線設定部２４と、閾値算出部２５と、輪郭点探索範囲設定部２６と、輪郭点検出部２７と、瞳孔径推定部２８と、瞳孔検出部２９と、視線検出部３０とを有する。
プロセッサ８が有するこれらの各部は、プロセッサ８上で実行されるコンピュータプログラムにより実現される機能モジュールである。またプロセッサ８が有するこれらの各部は、その各部の機能を実現するプロセッサ８内の回路の一部として実装されてもよい。
【００２７】
眼検出部２１は、瞳孔検出処理の実行中において、画像が得られる度に、画像上でユーザの眼が写っている領域である眼領域を検出する。なお、眼検出部２１は、全ての画像に対して同一の処理を実行すればよいので、以下では、一つの画像に対する処理について説明する。
【００２８】
例えば、画像にユーザの顔全体が写っていると想定される場合、眼検出部２１は、先ず、画像からユーザの顔が写っている領域である顔領域を検出する。そのために、眼検出部２１は、例えば、画像の各画素の値をHSV表色系により表される値に変換する。そして眼検出部２１は、各画素の色相成分（H成分）の値が肌色に相当する値（例えば、0°〜30°の範囲内の値）となる画素を、顔の一部が写っている可能性がある顔領域候補画素として抽出する。
【００２９】
また、ユーザがデジタルサイネージシステム１を利用している場合、ユーザの顔は、表示装置２の方を向いており、かつ、表示装置２から所定の距離（例えば、1m〜2m）だけ離れた位置にあると想定される。そのため、画像上で顔が占める領域の大きさもある程度推定される。
【００３０】
そこで眼検出部２１は、顔領域候補画素に対してラベリング処理を行って、互いに隣接している顔領域候補画素の集合を顔候補領域とする。そして眼検出部２１は、顔候補領域の大きさがユーザの顔の大きさに相当する基準範囲に含まれているか否か判定する。顔候補領域の大きさがユーザの顔の大きさに相当する基準範囲に含まれていれば、眼検出部２１はその顔候補領域を顔領域と判定する。
【００３１】
眼検出部２１は、顔候補領域の大きさだけでなく、顔候補領域の形状も、顔候補領域を顔領域と判定するための判定条件に加えてもよい。人の顔は、一般に略楕円形状を有している。そこで眼検出部２１は、例えば、顔候補領域の大きさが上記の基準範囲に含まれ、かつ、顔候補領域の円形度が、一般的な顔の輪郭に相当する所定の閾値以上である場合に顔候補領域を顔領域としてもよい。なお眼検出部２１は、顔候補領域の輪郭上に位置する画素の合計を顔候補領域の周囲長として求め、顔候補領域内の総画素数に4πを乗じた値を周囲長の２乗で除することにより円形度を算出できる。
【００３２】
あるいは、眼検出部２１は、顔候補領域の輪郭上の各画素の座標を楕円方程式に当てはめて最小二乗法を適用することにより、顔候補領域を楕円近似してもよい。そして眼検出部２１は、その楕円の長軸と短軸の比が一般的な顔の長軸と短軸の比の範囲に含まれる場合に、顔候補領域を顔領域としてもよい。なお、眼検出部２１は、楕円近似により顔候補領域の形状を評価する場合、画像の各画素の輝度成分に対して近傍画素間演算を行ってエッジに相当するエッジ画素を検出してもよい。この場合、眼検出部２１は、エッジ画素を例えばラベリング処理を用いて連結し、一定の長さ以上に連結されたエッジ画素を顔候補領域の輪郭とする。
【００３３】
なお、眼検出部２１は、画像上に写っている顔の領域を検出する他の様々な方法の何れかに従って顔領域を検出してもよい。例えば、眼検出部２１は、顔候補領域と一般的な顔の形状に相当するテンプレートとの間でテンプレートマッチングを行って、顔候補領域とテンプレートとの一致度を算出し、その一致度が所定値以上である場合に、顔候補領域を顔領域と判定してもよい。
【００３４】
あるいは、眼検出部２１は、画像から顔領域を検出するように予め学習された識別器を用いて、画像から顔領域を検出してもよい。この場合、識別器として、例えば、アダブーストまたはリアルアダブースト、サポートベクトルマシン、あるいは、ディープニューラルネットワークが利用される。そして眼検出部２１は、画像上にウインドウを設定し、そのウインドウの位置を変えながら、ウインドウ内の各画素の値またはそのウインドウから抽出した特徴量を識別器に入力することで、そのウインドウが顔領域か否かを判定する。また、特徴量として、例えば、Haar-like特徴量あるいはHistograms of Oriented Gradients特徴量が抽出される。
【００３５】
眼検出部２１は、顔領域から、左右それぞれの眼のうちの少なくとも一方について、眼領域を検出する。
【００３６】
眼に相当する画素の輝度は、眼の周囲に相当する画素の輝度と大きく異なる。そこで眼検出部２１は、顔領域内の各画素に対して、例えば、Sobelフィルタを用いて垂直方向の近傍画素間差分演算を行って垂直方向に輝度が変化するエッジ画素を検出する。そして眼検出部２１は、例えば、エッジ画素が略水平方向に眼の大きさに相当する所定数以上連結された２本のエッジ線で囲まれた領域を眼領域候補とする。
人の眼は、水平方向に二つ並んでいる。そこで、眼検出部２１は、検出された眼領域候補のうち、眼領域候補の重心間の垂直方向の位置差がもっとも少なく、かつ、水平方向に左眼と右眼間の間隔に相当する距離だけ離れている二つの眼領域候補を抽出する。そして眼検出部２１は、その二つの眼領域候補をそれぞれ眼領域とする。
【００３７】
あるいは、眼検出部２１は、眼を表すテンプレートと、顔領域とのテンプレートマッチングにより、テンプレートに最も一致する領域を検出し、その検出した領域を眼領域としてもよい。あるいはまた、眼検出部２１は、画像から眼領域を検出するように予め学習された識別器を用いて、顔領域から眼領域を検出してもよい。この場合も、識別器として、例えば、アダブーストまたはリアルアダブースト、サポートベクトルマシン、あるいは、ディープニューラルネットワークが利用される。そして眼検出部２１は、顔領域内に着目するウインドウを設定し、そのウインドウの各画素の値またはそのウインドウから抽出した特徴量を識別器に入力することで、そのウインドウが眼領域か否かを判定すればよい。
【００３８】
あるいはまた、眼検出部２１は、画像に対してDeformable Part Model法を適用して、顔領域と左右の眼領域とを同時に検出してもよい。なお、Deformable Part Model法については、例えば、P. Felzenszwalb他、「A discriminatively trained, multiscale, deformable part model」、Computer Vision and Pattern Recognition 2008、 IEEE Conference on Year、pp. 1-8、2008年を参照されたい。
【００３９】
なお、画像に顔の一部だけが写っている場合には、眼検出部２１は、顔領域の検出処理を省略してもよい。そして眼検出部２１は、画像全体に対して、上記の何れかの眼領域検出処理を行って、左右それぞれの眼の少なくとも一方についての眼領域を検出してもよい。
【００４０】
眼検出部２１は、眼領域を表す情報を、輝点検出部２２、基準点設定部２３、輪郭点探索範囲設定部２６及び瞳孔検出部２９へわたす。
【００４１】
輝点検出部２２は、眼検出部２１から眼領域を表す情報を受け取る度に、眼領域内の輝点が表された領域（以下、輝点領域と呼ぶ）を検出する。
【００４２】
眼領域内に現れる輝点は、例えば、照明光源３のプルキンエ像、またはユーザが装着している眼鏡により反射された、照明光源３あるいは他の光源の像などである。これらの像は、眼領域内の他の部分と比較して非常に明るく、画像上での輝度値は略飽和している。すなわち、輝度値が、画素値が取り得る輝度の値の略最高値となる。
【００４３】
そこで輝点検出部２２は、眼領域内で輝度値が所定の閾値以上となる画素を検出する。所定の閾値は、例えば、眼領域内での輝度値の最高値の80%〜90%とすることができる。そして輝点検出部２２は、検出された画素の集合に対してラベリング処理を実行して、検出された画素の集合を、互いに連結される画素同士にグループ化する。そして輝点検出部２２は、個々のグループを、それぞれ、一つの輝点領域とする。
【００４４】
なお、輝点検出部２２は、画像上の輝点を検出する他の手法に従って、眼領域内の輝点領域を検出してもよい。
輝点検出部２２は、検出された輝点領域ごとに、その輝点領域の重心と、その輝点領域内で重心から最も遠い画素までの距離（以下、便宜上拡がり距離と呼ぶ）とを算出する。そして輝点検出部２２は、検出された各輝点領域、及び、各輝点領域についての重心及び拡がり距離を、基準点設定部２３、探索線設定部２４、輪郭点探索範囲設定部２６、輪郭点検出部２７及び視線検出部３０へ通知する。
【００４５】
基準点設定部２３は、瞳孔の輪郭を探索するための複数の探索線を設定するための基準点を設定する。
【００４６】
本実施形態では、各探索線と瞳孔の輪郭とが交差するように、画像上で瞳孔が表されていると想定される領域内に基準点を設定する。瞳孔は、一般的に、瞳孔の周囲と比較して暗いため、画像上で瞳孔が表された領域の輝度は、瞳孔の周囲（虹彩など）が表された領域の輝度よりも低くなる。また、画像上で瞳孔が表される領域は、画像上である程度の大きさを持つことが想定される。
【００４７】
そこで、基準点設定部２３は、眼領域内で輝度値が所定の第２の閾値未満となる画素を基準点候補画素として検出する。なお、第２の閾値は、例えば、眼領域内での輝度値の平均値から所定のオフセットを減じた値とすることができる。所定のオフセットは、例えば、眼領域内での輝度値の標準偏差の1倍〜2倍とすることができる。
【００４８】
基準点設定部２３は、基準点候補画素のうちで最も輝度値が低い基準点候補画素から順に選択する。基準点設定部２３は、選択した基準点候補画素から、第２の閾値以上の輝度値を持つ画素のうちの最も近い画素までの距離を、選択した基準点候補画素が瞳孔領域内に含まれる確からしさを表す信頼度として算出する。そして基準点設定部２３は、信頼度が最も高い基準点候補画素を基準点として設定する。
【００４９】
なお、照明光源３のプルキンエ像は、瞳孔の近くに現れることが想定される。そこで変形例として、基準点設定部２３は、輝点検出部２２により検出された各輝点領域のうちの最も近い輝点領域の重心までの距離が所定の距離閾値未満となる基準点候補画素のなかから、基準点を設定してもよい。
【００５０】
また、基準点設定部２３は、複数の基準点を設定してもよい。この場合には、基準点設定部２３は、例えば、信頼度が大きい方から順に所定数（例えば、２〜５）の基準点候補画素を、それぞれ、基準点としてもよい。
【００５１】
基準点設定部２３は、設定した基準点の位置を、探索線設定部２４、閾値算出部２５、輪郭点探索範囲設定部２６及び輪郭点検出部２７へ通知する。
【００５２】
探索線設定部２４は、基準点から放射状に複数の探索線を設定する。その際、探索線設定部２４は、例えば、探索線同士が等角度間隔となるように各探索線を設定する。なお、設定する探索線の本数は任意であるが、瞳孔の輪郭が十分な精度で求められるように、例えば、8本〜20本の探索線が設定される。
【００５３】
探索線設定部２４は、探索線ごとに、何れかの輝点領域と重なるか否か判定する。例えば、探索線設定部２４は、着目する探索線について、基準点から所定距離離れた位置までの探索線上の各画素について、何れかの輝点領域に含まれるか否か判定する。そして探索線上の画素の少なくとも一つが、何れかの輝点領域に含まれる場合、探索線設定部２４は、着目する探索線は輝点領域と重なると判定する。あるいは、探索線設定部２４は、着目する探索線上で輝度が極大となる画素と輝点領域の重心間の距離を算出し、その距離が所定の閾値未満となる場合、着目する探索線は輝点領域と重なると判定してもよい。この場合、所定の閾値は、例えば、輝点領域の拡がり距離に所定のオフセット値（例えば、1〜3画素）を加算した値とすることができる。なお、以下では、探索線と輝点領域とが重なることを、「探索線が輝点領域を通る」と表現することがある。
【００５４】
図４は、基準点と探索線の一例を示す図である。図４に示される例では、基準点４００を中心として、放射状、かつ、等角度間隔で８本の探索線４０１〜４０８が設定される。またこの例では、３個の輝点領域４１１〜４１３が検出されている。８本の探索線のうち、探索線４０１〜４０４は、輝点領域４１１〜４１３の何れとも重ならない。そのため、探索線４０１〜４０４は、瞳孔の輪郭を検出するために用いられる、輝度値に関する閾値を算出するために参照される。
【００５５】
一方、探索線４０５は、輝点領域４１１と重なっており、探索線４０６は、輝点領域４１２と重なっている。また探索線４０７及び４０８は、輝点領域４１３と重なっている。そのため、探索線４０５〜４０８については、それぞれ、輪郭点探索範囲設定部２６により探索範囲が設定され、その設定された探索範囲内で瞳孔の輪郭点が検出される。
【００５６】
なお、複数の基準点が設定されている場合、探索線設定部２４は、基準点ごとに複数の探索線を設定してもよい。そして探索線設定部２４は、複数の基準点のうち、輝点領域を通る探索線の数が最小となる基準点について、閾値算出部２５、輪郭点探索範囲設定部２６及び輪郭点検出部２７の処理を実行すればよい。
【００５７】
探索線設定部２４は、何れの輝点領域とも重ならない探索線を閾値算出部２５及び輪郭点検出部２７へ通知し、輝点領域と重なる探索線を輪郭点探索範囲設定部２６及び輪郭点検出部２７へ通知する。
【００５８】
閾値算出部２５は、瞳孔の輪郭点を検出するために用いられる、瞳孔の輪郭に相当する輝度値に関する閾値を算出する。
【００５９】
図５は、探索線に沿った、基準点からの距離と輝度との関係の一例を示す図である。図５において、横軸は、基準点からの距離を表し、縦軸は、輝度値を表す。そしてプロファイル５１０は、眼領域内で設定される探索線５０１に沿った、基準点５０２からの距離と輝度との関係を表す。
【００６０】
一般に、プロファイル５１０で示されるように、画像上で瞳孔が表された領域の輝度は、瞳孔の周囲の領域、すなわち、虹彩が表された領域の輝度よりも低い。また、瞳孔が表された領域内での位置の違いによる輝度値の変動、及び、虹彩が表された領域内での位置の違いによる輝度値の変動は小さい。一方、瞳孔が表された領域と虹彩が表された領域間の境界近傍では、輝度値は急激に変化する。同様に、虹彩が表された領域と白眼が表された領域間の境界近傍では、輝度値は急激に変化する。
【００６１】
そこで、閾値算出部２５は、参照値を所定値ずつ上昇させながら、参照値ごとに、基準点から探索線に沿って最初にその参照値以上の輝度値を持つ画素までの距離を算出する。なお、参照値の初期値は、基準点における輝度値とすることができる。所定値は、瞳孔と虹彩間の輝度値差よりも小さくなるように設定されればよい。そして閾値算出部２５は、参照値ごとに得られた距離を、輝度値について微分することで、輝度変化に対する距離の微分値を算出する。図５の矢印５２１〜５２３で示されるように、瞳孔に相当する輝度、虹彩に相当する輝度、及び、白眼に相当する輝度において、それぞれ、輝度変化に対する距離の微分値が極大となる。特に、輝度値が低い方から順に２番目の極大値が、虹彩に相当する輝度となる。
【００６２】
そこで、閾値算出部２５は、輝点領域と重ならない各探索線について、上記のように、輝度変化に対する距離変動の微分値を算出し、輝度値が低い方から順に、距離変動の微分値が２番目の極大値となる輝度を、虹彩の輝度値とする。そして閾値算出部２５は、各探索線について得られた虹彩の輝度値の平均値を、瞳孔の上限輝度値として算出する。その際、閾値算出部２５は、各探索線について算出された虹彩の輝度値のうちの一番高い値と一番低い値を除いた残りについて平均値を算出して、その平均値を瞳孔の上限輝度値としてもよい。あるいは、閾値算出部２５は、各探索線について算出された虹彩の輝度値の中央値を、瞳孔の上限輝度値としてもよい。
【００６３】
閾値算出部２５は、例えば、基準点及びその周囲の画素（例えば、基準点から２画素以内の画素）の輝度値の平均値よりも所定の輝度オフセット以上高く、かつ、瞳孔の上限輝度値よりも低い輝度値を、輝度閾値として設定する。その際、閾値算出部２５は、探索線ごとに、輝度値が低い方から順に、距離変動の微分値が１番目の極大値となる輝度と、距離変動の微分値が２番目の極大値となる輝度の間で、距離変動の微分値が極小値となる輝度（以下、便宜上エッジ輝度）を算出する。エッジ輝度付近では、輝度値の変動に対する、基準点からの距離の変化は小さいので、エッジ輝度は、輝度値が互いに異なる二つの領域間の境界近傍の輝度値と推定される。そこで閾値算出部２５は、探索線ごとのエッジ輝度の平均値あるいは中央値を、輝度閾値としてもよい。
【００６４】
閾値算出部２５は、輝度閾値を、輪郭点探索範囲設定部２６及び輪郭点検出部２７へ通知する。
【００６５】
輪郭点探索範囲設定部２６は、探索線と重なる輝点領域について、輝度閾値と輝点領域の外周の輝度値とに基づいてその輝点領域と瞳孔との重なり度合いを判定する。そして輪郭点探索範囲設定部２６は、輝点領域と瞳孔との重なり度合いに応じて、その輝点領域と重なる探索線について、瞳孔の輪郭を探索する範囲を設定する。
【００６６】
図６は、瞳孔と輝点領域との位置関係の一例を示す図である。この例では、４個の輝点領域６０１〜６０４が検出されている。このうち、輝点領域６０１全体が瞳孔６００内に含まれている。一方、輝点領域６０２及び６０３は、瞳孔６００と部分的に重なっている。そして輝点領域６０４は、瞳孔６００と重なっていない。
【００６７】
ここで、輝点領域６０１に着目すると、輝点領域６０１全体が瞳孔６００内に含まれているため、輝点領域６０１の外周に位置する各画素の輝度値は、瞳孔に相当する輝度値を持つ、すなわち、輝度閾値よりも低い。一方、輝点領域６０２については、輝点領域６０２の外周の一部が瞳孔６００内に含まれ、外周の他の一部が瞳孔６００の外に位置している。そのため、輝点領域６０２の外周に位置する各画素のうちの一部の画素の輝度値が輝度閾値よりも低くなり、輝点領域６０２の外周に位置する各画素のうちの他の一部の画素の輝度値は輝度閾値以上となる。輝点領域６０３についても同様である。さらに、輝点領域６０４については、輝点領域６０４全体が瞳孔６００の外に位置しているため、輝点領域６０４の外周に位置する各画素の輝度値は、輝度閾値以上となる。
【００６８】
そこで、輪郭点探索範囲設定部２６は、探索線と重なる輝点領域について、その輝点領域の外周に沿った各画素の輝度値を輝度閾値と比較する。そして輪郭点探索範囲設定部２６は、外周の各画素の輝度値が輝度閾値未満であれば、その輝点領域は瞳孔内に存在すると判定する。一方、外周の各画素のうち、一部の画素の輝度値が輝度閾値未満となり、他の一部の画素の輝度値が輝度閾値以上となる場合、輪郭点探索範囲設定部２６は、その輝点領域は瞳孔と部分的に重なると判定する。さらに、外周の各画素の輝度値が輝度閾値以上であれば、輪郭点探索範囲設定部２６は、その輝点領域は瞳孔外に存在すると判定する。なお、輪郭点探索範囲設定部２６は、輝点領域の外周を、例えば、輝点領域の重心を中心とし、かつ、拡がり距離に所定のオフセット（例えば、1〜3画素）を加えた値を半径とする円とすればよい。
【００６９】
輪郭点探索範囲設定部２６は、輝点領域を通る各探索線を、以下の３種類に分類する。
（Ａ）瞳孔内に存在する輝点領域を通る探索線
（Ｂ）瞳孔と部分的に重なる輝点領域を通る探索線
（Ｃ）瞳孔と重ならない輝点領域を通る探索線
そして輪郭点探索範囲設定部２６は、（Ａ）〜（Ｃ）のそれぞれごとに、以下のように探索範囲を設定する。
【００７０】
（Ａ）瞳孔内に存在する輝点領域を通る探索線について、輪郭点探索範囲設定部２６は、探索線上の各画素から、探索線と輝点領域とが重なる部分に含まれる画素を除いて得られる画素の集合を探索範囲とする。例えば、図６において、輝点領域６０１を通る探索線６１１については、輝点領域６０１と重なる部分以外の探索線６１１上の画素の集合が探索範囲６２１となる。これにより、探索線上での輝点領域の境界が瞳孔の輪郭点として誤検出されることが防止されるとともに、基準点から見て、輝点領域よりも遠い位置にある、本当の瞳孔の輪郭を検出することが可能となる。
【００７１】
（Ｂ）瞳孔と部分的に重なる輝点領域と重なる探索線については、その探索線上の瞳孔の輪郭点は、輝点領域内に存在すると想定される。そのため、探索線上では、瞳孔の輪郭点は検出されない。そこで瞳孔と部分的に重なる輝点領域を通る探索線について、輪郭点探索範囲設定部２６は、その輝点領域の外周を探索範囲とする。例えば、図６において、輝点領域６０２を通る探索線６１２については、輝点領域６０２の外周上の画素の集合が探索範囲６２２となる。
【００７２】
（Ｃ）瞳孔と重ならない輝点領域を通る探索線については、輪郭点探索範囲設定部２６は、基準点からその探索線に沿ってその探索線と輝点領域とが交差する位置までを探索範囲とする。例えば、図６において、輝点領域６０４を通る探索線６１３については、基準点６３０から、基準点６３０に最も近い、輝点領域６０４と探索線６１３との交点６３１までが、探索範囲６２３となる。
【００７３】
輪郭点探索範囲設定部２６は、探索線ごとに、設定した探索範囲を輪郭点検出部２７へ通知する。
【００７４】
輪郭点検出部２７は、探索線ごとに、瞳孔の輪郭点を検出する。その際、輪郭点検出部２７は、輝点領域を通る探索線については、その探索線について設定された探索範囲内で瞳孔の輪郭点を検出する。
【００７５】
本実施形態では、輪郭点検出部２７は、輝点領域と重ならない探索線について、その探索線に沿って基準点に最も近い画素から順に、画素の輝度値を輝度閾値と比較する。そして輪郭点検出部２７は、輝度値が最初に輝度閾値以上となった画素の一つ手前の画素を、瞳孔の輪郭点として検出する。
【００７６】
また、輝点領域を通る探索線について、輪郭点検出部２７は、その探索線について設定された探索範囲内で、基準点に最も近い画素から順に、画素の輝度値を輝度閾値と比較する。そして輪郭点検出部２７は、輝度値が最初に輝度閾値以上となった画素の一つ手前の画素を、瞳孔の輪郭点として検出する。探索範囲として、輝点領域の外周が設定されている場合には、輪郭点検出部２７は、輝点領域の外周と探索線との二つの交点のうち、基準点に近い方の交点を探索開始点とする。そして輪郭点検出部２７は、探索開始点からその外周に沿って両側それぞれに順に画素の輝度値を輝度閾値と比較する。そして輪郭点検出部２７は、探索開始点の両側それぞれについて、輝度値が最初に輝度閾値以上となった画素の一つ手前の画素を、瞳孔の輪郭点として検出する。
【００７７】
再度図６を参照すると、例えば、瞳孔６００内に位置する輝点領域６０１を通る探索線６１１については、基準点６３０から見て、輝点領域６０１よりも遠い位置にある瞳孔６００の輪郭と探索線６１１の交点が輪郭点６４１として検出される。また、瞳孔６００と部分的に重なる輝点領域６０２を通る探索線６１２については、輝点領域６０２の外周と瞳孔６００の輪郭の二つの交点がそれぞれ輪郭点６４２、６４３として検出される。そして瞳孔６００と重ならない輝点領域６０４を通る探索線６１３については、輝点領域６０４よりも基準点６３０に近い方に位置する、瞳孔６００の輪郭と探索線６１３の交点が輪郭点６４４として検出される。
【００７８】
輝点領域の外周が探索範囲に設定される場合において、基準点が瞳孔内に位置していれば、一般に、輝点領域の外周と探索線との二つの交点のうちの基準点に近い方の交点も、瞳孔内に位置しているので、その交点における輝度値は、輝度閾値未満となる。しかし、状況によっては、輝点領域の外周と探索線との二つの交点のうちの基準点に近い方の交点における輝度値が輝度閾値以上となることがある。このような場合には、輪郭点検出部２７は、輝点領域の外周に設定された探索範囲において、瞳孔の輪郭点を検出しなくてもよい。
【００７９】
図７（ａ）〜図７（ｄ）は、それぞれ、輝点領域の外周の輝度変化と瞳孔の輪郭点との関係の一例を示す図である。図７（ａ）〜図７（ｄ）のそれぞれにおいて、探索線７００が通る輝点領域の外周７０１が探索範囲に設定されているものとする。そして探索線７００と外周７０１の二つの交点のうち、交点Ａの方が基準点７０２に近いものとする。さらに、矢印７１０は、瞳孔の輪郭点の候補となるエッジ位置を表す。すなわち、矢印７１０は、矢印７１０の根元側の画素の輝度が輝度閾値以上となり、矢印７１０の先側の画素の輝度が輝度閾値未満となることを表す。
【００８０】
図７（ａ）に示される例では、交点Ａの両側の二つのエッジ位置の何れも、矢印７１０で示されるように、交点Ａに向かって輝度が低くなっており、交点Ａの輝度は輝度閾値未満となっている。そのため、二つのエッジ位置のそれぞれにおいて瞳孔の輪郭点が検出される。
【００８１】
図７（ｂ）に示される例では、交点Ａの両側の二つのエッジ位置の何れも、矢印７１０で示されるように、交点Ａに向かって輝度が高くなっており、交点Ａの輝度は、輝度閾値以上となっている。この場合には、矢印７１０で示されるエッジ位置において、瞳孔の輪郭点は検出されない。
【００８２】
同様に、図７（ｃ）に示される例では、４個のエッジ位置があるものの、交点Ａに隣接する二つのエッジ位置では、矢印７１０で示されるように、交点Ａに向かって輝度が高くなっており、交点Ａの輝度は輝度閾値以上となる。そのため、この場合も、各エッジ位置において、瞳孔の輪郭点は検出されない。
【００８３】
逆に、図７（ｄ）に示される例では、４個のエッジ位置のうち、交点Ａに隣接する二つのエッジ位置では、矢印７１０で示されるように、交点Ａに向かって輝度が低くなっており、交点Ａの輝度は輝度閾値未満となる。そのため、交点Ａに隣接する二つのエッジ位置において、瞳孔の輪郭点が検出される。
【００８４】
なお、輪郭点検出部２７は、探索線と輝点領域の外周の二つの交点のうち、遠い方の交点の輝度が輝度閾値未満であれば、輝点領域の外周において瞳孔の輪郭点を検出しないようにしてもよい。
【００８５】
このように、探索線と輝点領域の外周の交点の輝度に基づいて、瞳孔の輪郭点を検出するか否かを判定することで、輪郭点検出部２７は、瞳孔の輪郭点でないエッジが表された画素を輪郭点として誤検出することを抑制できる。
【００８６】
輪郭点検出部２７は、各探索線について検出された輪郭点の位置を瞳孔径推定部２８へ通知する。
【００８７】
瞳孔径推定部２８は、各探索線について検出された輪郭点の位置に基づいて、瞳孔径を推定する。そのために、瞳孔径推定部２８は、例えば、検出された各輪郭点を、最小二乗法を用いて円近似することで得られた円の直径を、瞳孔径の推定値として求める。さらに、瞳孔径推定部２８は、円近似により得られた円の中心を、瞳孔の中心位置の候補として推定する。
【００８８】
瞳孔径推定部２８は、瞳孔径の推定値及び瞳孔の中心位置の候補を瞳孔検出部２９へ通知する。
【００８９】
瞳孔検出部２９は、瞳孔径の推定値及び瞳孔の中心位置の候補に基づいて、瞳孔を検出する。
【００９０】
瞳孔検出部２９は、例えば、瞳孔に相当するテンプレートと眼領域との間でテンプレートマッチングを行い、眼領域内でテンプレートとの一致度が最も高くなる領域を検出する。そして瞳孔検出部２９は、その検出した領域を瞳孔と判定する。その際、瞳孔検出部２９は、瞳孔径の推定値に相当する直径を持つ瞳孔が表されたテンプレートを利用する。また、瞳孔検出部２９は、瞳孔の中心位置の候補を中心とする探索範囲を設定し、その探索範囲内でテンプレートマッチングを実行してもよい。本実施形態によれば、瞳孔検出部２９は、瞳孔径推定部２８により得られた瞳孔径の推定値及び瞳孔の中心位置の候補に基づいて、瞳孔検出に用いる、瞳孔のサイズが異なるテンプレートの数及び探索範囲を制限することができるので、処理時間を短縮できる。
【００９１】
また瞳孔が写っている領域の輝度は、その周囲の領域の輝度よりも低く、瞳孔は略円形である。そこで変形例によれば、瞳孔検出部２９は、眼領域内で、同心円状に半径の異なる２本のリングを持つ２重リングフィルタを設定する。その際、内側のリングの直径を、瞳孔径の推定値とする。そして瞳孔検出部２９は、外側のリングに相当する画素の輝度の平均値から内側の画素の輝度の平均値を引いた差分値が所定の閾値よりも大きい場合、その内側のリングで囲まれた領域を瞳孔としてもよい。また瞳孔検出部２９は、内側のリングで囲まれた領域の平均輝度値が所定の閾値以下であることを、瞳孔として検出する条件に加えてもよい。この場合、所定の閾値は、例えば、眼領域内の最大輝度値と最小輝度値の差の10％〜20％を、最小輝度値に加えた値に設定される。この場合も、瞳孔検出部２９は、瞳孔径推定部２８により得られた瞳孔径の推定値に基づいて、瞳孔検出に用いる、サイズが異なる２重リングフィルタの数を制限することができるので、処理時間を短縮できる。
【００９２】
瞳孔検出部２９は、検出された瞳孔が表された領域に含まれる各画素の水平方向座標値の平均値及び垂直方向座標値の平均値を、瞳孔の中心位置の座標として算出する。そして瞳孔検出部２９は、検出された瞳孔の中心位置を視線検出部３０へ通知する。
【００９３】
視線検出部３０は、瞳孔検出部２９から瞳孔の中心位置を通知される度に、瞳孔の中心位置に基づいて、ユーザの視線方向及び注視位置を検出する。
【００９４】
角膜の表面は略球形であるため、視線方向によらず、光源のプルキンエ像の位置はほぼ一定となる。一方、瞳孔の中心位置は、視線方向に応じて移動する。そのため、視線検出部３０は、照明光源３のプルキンエ像の重心を基準とする瞳孔の中心位置の相対的な位置関係に基づいて、視線方向を検出できる。
【００９５】
本実施形態では、視線検出部３０は、照明光源３のプルキンエ像の重心を基準とする瞳孔の中心の相対的な位置をもとめる。その際、視線検出部３０は、例えば、瞳孔の中心の水平方向座標及び垂直方向座標からプルキンエ像の重心の水平方向座標及び垂直方向座標を減算することにより瞳孔の中心の相対的な位置を求める。そして視線検出部３０は、瞳孔の中心の相対的な位置と視線方向との関係を表す参照テーブルを参照することにより、視線方向を決定する。
【００９６】
視線検出部３０は、さらに、検出した視線方向に基づいて、ユーザの注視位置を検出する。
本実施形態では、視線検出部３０は、視線方向と注視位置との関係を表す注視位置テーブルを参照することにより、注視位置を決定する。なお、視線方向と注視位置との関係は、その注視位置（例えば、表示装置２の表示画面）とユーザとの間の距離に応じて変化する。また、画像上での水平方向の顔の幅も、赤外カメラ４とそのユーザとの間の距離に応じて変化する。そして赤外カメラ４は、表示装置２の周辺に配置されているので、赤外カメラ４とユーザとの間の距離と、ユーザの注視位置とユーザとの間の距離は、略等しいことが想定される。
【００９７】
そこで、注視位置テーブルは、赤外カメラ４とデジタルサイネージシステム１を利用するユーザとの間の想定される距離（例えば、1m、2mなど）に応じて、予め複数用意され、メモリ７に保存される。また各注視位置テーブルには、その注視位置テーブルに対応する、赤外カメラ４とのユーザとの間の距離に応じた、画像上での水平方向の顔領域の幅の範囲が対応付けられる。そして視線検出部３０は、眼検出部２１から受け取った、最新の顔領域の水平方向の幅をその範囲に含む注視位置テーブルを選択する。そして視線検出部３０は、選択した注視位置テーブルを参照して、視線方向に対応する注視位置を求める。
なお、デジタルサイネージシステム１が、デプスカメラといった距離センサを有していてる場合には、視線検出部３０は、距離センサにより得られたユーザまでの距離に応じて、注視位置テーブルを選択すればよい。
【００９８】
図８は、注視位置テーブルの一例を示す図である。注視位置テーブル８００の上端の行には、視線方向が表される。そして注視位置テーブル８００の各欄には、同じ列の視線方向に対応する、注視位置の座標が所定の単位（例えば、表示装置２の表示画面の画素単位、あるいは、mm単位）で表される。例えば、注視位置テーブル８００の欄８０１には、視線方向が水平方向0°、垂直方向1°の場合の注視位置が(cx,cy+40)であることが示されている。なお、cx、cyは、視線方向が(0,0)のときの注視位置、すなわち基準注視位置の座標、例えば、赤外カメラ４の取り付け位置における、鉛直平面上の水平座標及び垂直座標である。
【００９９】
視線検出部３０は、ユーザの注視位置及び視線方向をメモリ７に保存する。
【０１００】
なお、眼領域内で複数の輝点領域が検出されている場合、その複数の輝点領域のうちの何れか一つが照明光源３のプルキンエ像であると想定される。そこでこの場合、視線検出部３０は、例えば、複数の輝点領域のうち、直前の画像において検出されたプルキンエ像に最も近い輝点領域を照明光源３のプルキンエ像と判定する。また、ユーザが眼鏡を装着している場合、照明光源３からの光は、眼鏡でも反射されるため、輝点領域の何れかが、眼鏡による照明光源３からの反射像であることもある。一般に、眼鏡レンズの曲率は、眼球の曲率よりも小さい。そのため、照明光源３のプルキンエ像と比較して、眼鏡による照明光源３の反射像は大きくなる。そこで、視線検出部３０は、複数の輝点領域のうち、直径が最も小さい輝点領域を、照明光源３のプルキンエ像と判定してもよい。
【０１０１】
あるいは、視線検出部３０は、直近の複数の画像のそれぞれから検出された視線方向に基づいて、例えば、カルマンフィルタといった予測フィルタを用いて現在の画像における視線方向を予測してもよい。そして視線検出部３０は、複数の輝点領域のそれぞれを、照明光源３のプルキンエ像と仮定して求めた視線方向と、予測された視線方向との差を算出し、その差が最小となるときの視線方向に対応する輝点領域を、照明光源３のプルキンエ像と判定してもよい。そして視線検出部３０は、予測された視線方向との差が最小となるときの視線方向を、実際のユーザの視線方向とする。
【０１０２】
また、ユーザが左眼で注視する位置と右眼で注視する位置は同一であると想定される。そこで、一つの画像上でユーザの両眼のそれぞれについて、瞳孔及び輝点領域が検出されている場合、視線検出部３０は、左眼及び右眼のそれぞれについて、各輝点領域を照明光源３のプルキンエ像と仮定して、輝点領域ごとに注視位置の候補をもとめる。そして視線検出部３０は、左眼の注視位置の候補と右眼の注視位置の候補の組み合わせのうち、注視位置の候補間の距離が最小となる組み合わせを、実際の注視位置としてもよい。
【０１０３】
プロセッサ８は、ユーザの注視位置を追跡することで、注視位置が一定時間以上停滞した位置あるいは範囲を特定する。そしてプロセッサ８は、その位置または範囲に応じた処理を実行する。例えば、プロセッサ８は、その位置または範囲において、表示装置２に表示されているアイコンまたはコンテンツに関連する情報を表示装置２に表示させてもよい。
【０１０４】
図９は、プロセッサ８により実行される、瞳孔検出処理の動作フローチャートを示す。プロセッサ８は、画像が取得される度に、下記の動作フローチャートに従って瞳孔検出処理を実行する。
【０１０５】
眼検出部２１は、赤外カメラ４から取得した画像上で眼領域を検出する（ステップＳ１０１）。そして輝点検出部２２は、眼領域内で輝点領域を検出する（ステップＳ１０２）。
【０１０６】
また、基準点設定部２３は、眼領域内に基準点を設定する（ステップＳ１０３）。そして探索線設定部２４は、基準点から放射状に複数の探索線を設定する（ステップＳ１０４）。探索線設定部２４は、設定した複数の探索線のうち、何れかの輝点領域を通る探索線を特定する（ステップＳ１０５）。
【０１０７】
閾値算出部２５は、何れの輝点領域も通らない探索線に沿った輝度値のプロファイルに基づいて、瞳孔の輪郭点を検出するための輝度閾値を算出する（ステップＳ１０６）。また、輪郭点探索範囲設定部２６は、探索線と重なる輝点領域のそれぞれについて、その輝点領域の外周の輝度値と輝度閾値とに基づいて、その輝点領域と瞳孔との重なり度合いを判定する（ステップＳ１０７）。そして輪郭点探索範囲設定部２６は、何れかの輝点領域を通る探索線のそれぞれについて、その探索線が通る輝点領域と瞳孔との重なり度合いに応じて瞳孔の輪郭点の探索範囲を設定する（ステップＳ１０８）。
【０１０８】
輪郭点検出部２７は、輝点領域を通る探索線ごとに、その探索線について設定された探索範囲内で瞳孔の輪郭点を検出する（ステップＳ１０９）。また輪郭点検出部２７は、輝点領域を通らない探索線ごとに、その探索線に沿って瞳孔の輪郭点を検出する（ステップＳ１１０）。そして瞳孔径推定部２８は、各探索線について検出された輪郭点に基づいて、瞳孔径の推定値を算出する（ステップＳ１１１）。
【０１０９】
瞳孔検出部２９は、瞳孔径の推定値に基づいて、眼領域内で瞳孔及び瞳孔の中心位置を検出する（ステップＳ１１２）。そして視線検出部３０は、瞳孔の中心位置に基づいてユーザの視線方向及び注視位置を検出する（ステップＳ１１３）。そしてプロセッサ８は、瞳孔検出処理を終了する。
【０１１０】
図１０は、検出された輪郭点の数と瞳孔径の推定値との関係の一例を示す図である。図１０において、輪郭点１００１〜１００３は、輝点領域を通らない探索線上で検出された瞳孔１０００の輪郭点である。一方、輪郭点１００４〜１００８は、輝点領域を通る探索線について設定された探索範囲内で検出された瞳孔１０００の輪郭点である。
【０１１１】
輪郭点１００１〜１００３に基づいて推定される瞳孔１０００の輪郭は、推定に利用される輪郭点の数が少ないため、輪郭点１００１〜１００３の僅かな検出位置の誤差に応じて大きく変動する。特に、図１０に示されるように、検出された輪郭点の位置が偏っている場合には、例えば、点線１０１１で示されるように、推定された輪郭が、実際の瞳孔１０００の輪郭と大きく異なることがある。
【０１１２】
これに対して、輪郭点１００１〜１００８に基づいて推定される瞳孔１０００の輪郭は、推定に利用される輪郭点の数が多いため、点線１０１２で示されるように、実際の瞳孔１０００の輪郭と略等しくなる。このように、この瞳孔検出装置は、瞳孔を高精度で検出できることが分かる。
【０１１３】
以上に説明してきたように、この瞳孔検出装置は、眼領域内に存在する輝点領域について、瞳孔との重なり度合いを判定し、その重なり度合いに応じて、その輝点領域を通る探索線についての瞳孔の輪郭点の探索範囲を設定する。そのため、この瞳孔検出装置は、輝点領域が瞳孔内に含まれていたり、あるいは、輝点領域と瞳孔とが部分的に重なっている場合でも、瞳孔の輪郭点の検出精度を向上できる。特に、眼領域内で検出される輝点領域が複数存在する場合でも、この瞳孔検出装置は、輝点領域ごとに、その輝点領域を通る探索線について、瞳孔の輪郭点が存在する可能性が高い適切な探索範囲を設定できる。そのため、この瞳孔検出装置は、画像上に写っている瞳孔を高精度で検出できる。さらに、この瞳孔検出装置は、探索範囲の設定に関して比較的演算量が少ない処理を行えばよいので、瞳孔検出に要する演算負荷を抑制できる。
【０１１４】
なお、ユーザが、赤外カメラ４の方を見ていない場合には、画像上で、瞳孔が楕円形に写ることもある。そこで変形例によれば、瞳孔径推定部２８は、各探索線について検出された瞳孔の輪郭点に対して、最小二乗法を用いて楕円近似を行ってもよい。そして瞳孔径推定部２８は、近似された楕円の長軸の直径及び短軸の直径、及び、画像の水平方向に対する長軸の傾き角を瞳孔検出部２９へ通知してもよい。瞳孔検出部２９は、通知された長軸の直径及び短軸の直径、及び、画像の水平方向に対する長軸の傾き角を持つ瞳孔が表されたテンプレートを用いて、画像の眼領域とテンプレートマッチングすることで、瞳孔を検出してもよい。
【０１１５】
また他の変形例によれば、瞳孔径推定部２８は、各探索線についての輪郭点を円近似することにより得られた円の中心、または各探索線についての輪郭点を楕円近似により求めた楕円の中心を、瞳孔の中心位置としてもよい。この場合には、瞳孔径推定部２８が、瞳孔検出部の他の一例となる。そのため、この変形例によれば、瞳孔検出部２９は省略されてもよい。
【０１１６】
さらに他の変形例によれば、基準点設定部２３により複数の基準点が設定される場合、基準点ごとに、探索線設定部２４、閾値算出部２５、輪郭点探索範囲設定部２６及び輪郭点検出部２７の処理が行われてもよい。そして瞳孔径推定部２８は、基準点ごとに、検出された瞳孔の輪郭点の集合に対して楕円近似を行ってもよい。瞳孔径推定部２８は、各基準点について近似された楕円のうち、最も円形に近い（すなわち、長軸径と短軸径の差が最小となる）楕円の長軸径または短軸径を瞳孔径の推定値としてもよい。
【０１１７】
また、輝点領域を通る探索線の数が所定数以下であれば、瞳孔径推定部２８は、輝点領域を通らない探索線上で検出される瞳孔の輪郭点に基づいて瞳孔径を正確に推定できる。そこでこの場合、輪郭点検出部２７は、輝点領域を通る探索線については瞳孔の輪郭点を検出しなくてもよい。なお、所定数は、例えば、設定される探索線の総数の10〜20％に設定される。
【０１１８】
なお、この瞳孔検出装置は、デジタルサイネージシステムに限られず、車両の運転支援システム、コンピュータの入力支援システムなどに利用されてもよい。また用途によっては、瞳孔検出装置は、ユーザの視線方向のみを検出し、注視位置については検出しなくてもよい。
【０１１９】
上記の実施形態またはその変形例による瞳孔検出装置のプロセッサの機能を実現するコンピュータプログラムは、磁気記録媒体、光記録媒体といったコンピュータ読み取り可能な記録媒体に記録された形で提供されてもよい。なお、この記録媒体には、搬送波は含まれない。
【０１２０】
ここに挙げられた全ての例及び特定の用語は、読者が、本発明及び当該技術の促進に対する本発明者により寄与された概念を理解することを助ける、教示的な目的において意図されたものであり、本発明の優位性及び劣等性を示すことに関する、本明細書の如何なる例の構成、そのような特定の挙げられた例及び条件に限定しないように解釈されるべきものである。本発明の実施形態は詳細に説明されているが、本発明の精神及び範囲から外れることなく、様々な変更、置換及び修正をこれに加えることが可能であることを理解されたい。
【０１２１】
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
（付記１）
ユーザの眼が表された画像から、前記眼が写っている眼領域を検出し、
前記眼領域内に表された少なくとも一つの輝点領域を検出し、
前記眼領域内で瞳孔内に位置すると想定される基準点を設定し、
前記基準点から放射状に複数の探索線を設定し、
前記複数の探索線のそれぞれについて、前記少なくとも一つの輝点領域の何れかを通るか否か判定し、
前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れかを通る探索線について、当該探索線が通る輝点領域の外周の輝度に応じて当該輝点領域と前記画像上に表された前記ユーザの眼の瞳孔との重なり度合いを判定し、当該重なり度合いに応じて前記瞳孔の輪郭上の点の探索範囲を設定し、
前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れかを通る探索線について、当該探索線について設定された前記探索範囲内で前記瞳孔の輪郭上の点を検出し、かつ、前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れも通らない探索線について、当該探索線上で前記瞳孔の輪郭上の点を検出し、
検出された前記瞳孔の輪郭上の点のそれぞれに基づいて前記瞳孔を検出する、
ことをコンピュータに実行させるための瞳孔検出用コンピュータプログラム。
（付記２）
前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れも通らない探索線に沿った輝度値の変化に基づいて前記瞳孔の輪郭に相当する輝度閾値を算出することをさらにコンピュータに実行させ、
前記輝点領域と前記瞳孔との重なり度合いを判定することは、前記探索線が通る前記輝点領域の外周に沿った各画素の輝度値と前記輝度閾値との比較に応じて前記重なり度合いを判定する、付記１に記載の瞳孔検出用コンピュータプログラム。
（付記３）
前記探索範囲を設定することは、前記探索線が通る前記輝点領域の外周に沿った各画素の輝度値が前記輝度閾値未満である場合、前記輝点領域を通る探索線のうち、前記輝点領域と重なる部分を除いた範囲を前記探索範囲とする、付記２に記載の瞳孔検出用コンピュータプログラム。
（付記４）
前記探索範囲を設定することは、前記探索線が通る前記輝点領域の外周に沿った各画素の輝度値が前記輝度閾値以上である場合、前記輝点領域を通る探索線に沿って、前記基準点から当該探索線と当該輝点領域とが交差するまでの範囲を前記探索範囲とする、付記２に記載の瞳孔検出用コンピュータプログラム。
（付記５）
前記探索範囲設定部は、前記探索線が通る前記輝点領域の外周に沿った各画素のうちの何れかの画素の輝度値が前記輝度閾値未満となり、かつ、前記外周に沿った各画素のうちの他の何れかの画素の輝度値が前記輝度閾値以上である場合、当該輝点領域の前記外周を前記探索範囲とする、付記２に記載の瞳孔検出用コンピュータプログラム。
（付記６）
前記探索範囲内で前記瞳孔の輪郭上の点を検出することは、前記探索範囲となる前記輝点領域の外周と当該輝点領域を通る探索線との二つの交点のうちの前記基準点に近い方の交点から順に前記外周に沿って輝度値が最初に前記輝度閾値以上となる画素の直前の画素を前記瞳孔の輪郭上の点として検出する、付記５に記載の瞳孔検出用コンピュータプログラム。
（付記７）
ユーザの眼が表された画像から、前記眼が写っている眼領域を検出する眼検出部と、
前記眼領域内に表された少なくとも一つの輝点領域を検出する輝点検出部と、
前記眼領域内で瞳孔内に位置すると想定される基準点を設定する基準点設定部と、
前記基準点から放射状に複数の探索線を設定し、前記複数の探索線のそれぞれについて、前記少なくとも一つの輝点領域の何れかを通るか否か判定する探索線設定部と、
前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れかを通る探索線について、当該探索線が通る輝点領域の外周の輝度に応じて当該輝点領域と前記画像上に表された前記ユーザの眼の瞳孔との重なり度合いを判定し、当該重なり度合いに応じて前記瞳孔の輪郭上の点の探索範囲を設定する探索範囲設定部と、
前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れかを通る探索線について、当該探索線について設定された前記探索範囲内で前記瞳孔の輪郭上の点を検出し、かつ、前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れも通らない探索線について、当該探索線上で前記瞳孔の輪郭上の点を検出する輪郭点検出部と、
検出された前記瞳孔の輪郭上の点のそれぞれに基づいて前記瞳孔を検出する瞳孔検出部と、
を有する瞳孔検出装置。
（付記８）
ユーザの眼が表された画像から、前記眼が写っている眼領域を検出し、
前記眼領域内に表された少なくとも一つの輝点領域を検出し、
前記眼領域内で瞳孔内に位置すると想定される基準点を設定し、
前記基準点から放射状に複数の探索線を設定し、
前記複数の探索線のそれぞれについて、前記少なくとも一つの輝点領域の何れかを通るか否か判定し、
前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れかを通る探索線について、当該探索線が通る輝点領域の外周の輝度に応じて当該輝点領域と前記画像上に表された前記ユーザの眼の瞳孔との重なり度合いを判定し、当該重なり度合いに応じて前記瞳孔の輪郭上の点の探索範囲を設定し、
前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れかを通る探索線について、当該探索線について設定された前記探索範囲内で前記瞳孔の輪郭上の点を検出し、かつ、前記複数の探索線のうち、前記少なくとも一つの輝点領域の何れも通らない探索線について、当該探索線上で前記瞳孔の輪郭上の点を検出し、
検出された前記瞳孔の輪郭上の点のそれぞれに基づいて前記瞳孔を検出する、
ことを含む瞳孔検出方法。
【符号の説明】
【０１２２】
１    デジタルサイネージシステム（瞳孔検出装置）
２    表示装置
３    照明光源
４    赤外カメラ
５    入力装置
６    記憶媒体アクセス装置
７    メモリ
８    プロセッサ
１０    筐体
１１    記憶媒体
２１    眼検出部
２２    輝点検出部
２３    基準点設定部
２４    探索線設定部
２５    閾値算出部
２６    輪郭点探索範囲設定部
２７    輪郭点検出部
２８    瞳孔径推定部
２９    瞳孔検出部
３０    視線検出部
【図１】
2018205886.tif 000003
【図２】
2018205886.tif 000004
【図３】
2018205886.tif 000005
【図４】
2018205886.tif 000006
【図５】
2018205886.tif 000007
【図６】
2018205886.tif 000008
【図７】
2018205886.tif 000009
【図８】
2018205886.tif 000010
【図９】
2018205886.tif 000011
【図１０】
2018205886.tif 000012