(57)【特許請求の範囲】
【請求項１】
撮像画像上のユーザの眼領域から、輝度に基づくエッジ検出によって瞳孔と虹彩との境界の位置を検出する境界検出部と、
前記境界検出部によって前記境界の位置が検出されたか否かに応じて、前記瞳孔の中心位置を検出する第１の処理と、前記第１の処理とは異なる手順で前記瞳孔の中心位置を検出する第２の処理とを切り替えて実行する中心位置検出部と、
前記中心位置検出部によって検出された前記瞳孔の中心位置に基づいて、前記ユーザの視線方向または注視位置を検出する視線検出部と、
を有する視線検出システム。
【請求項２】
前記第１の処理では、前記眼領域における瞳孔の輪郭の検出結果に基づいて前記瞳孔の中心位置を算出し、前記第２の処理では、前記眼領域における虹彩の輪郭の検出結果に基づいて前記瞳孔の中心位置を算出する、
請求項１記載の視線検出システム。
【請求項３】
前記第１の処理および前記第２の処理は、前記眼領域における瞳孔の輪郭の検出結果に基づいて前記瞳孔の中心位置を算出する第１の算出処理と、前記眼領域における虹彩の輪郭の検出結果に基づいて前記瞳孔の中心位置を算出する第２の算出処理とを含み、
前記中心位置検出部は、前記第１の処理の実行時に、前記第１の算出処理および前記第２の算出処理のそれぞれの処理結果に与える重みと、前記第２の処理の実行時に、前記第１の算出処理および前記第２の算出処理のそれぞれの処理結果に与える重みとを、前記境界の位置が検出されたか否かに応じて変更する、
請求項１記載の視線検出システム。
【請求項４】
前記第１の処理および前記第２の処理は、複数の第１テンプレートを用いて前記眼領域における瞳孔の輪郭を検出し、前記瞳孔の輪郭の検出結果に基づいて前記瞳孔の中心位置を算出する第１の算出処理と、複数の第２テンプレートを用いて前記眼領域における虹彩の輪郭を検出し、前記虹彩の輪郭の検出結果に基づいて前記瞳孔の中心位置を算出する第２の算出処理とを含み、
前記中心位置検出部は、前記第１の処理の実行時に、前記第１の算出処理で前記複数の第１テンプレートの中から使用するテンプレートおよび前記第２の算出処理で前記複数の第２テンプレートの中から使用するテンプレートと、前記第２の処理の実行時に、前記第１の算出処理で前記複数の第１テンプレートの中から使用するテンプレートおよび前記第２の算出処理で前記複数の第２テンプレートの中から使用するテンプレートとを、前記境界の位置が検出されたか否かに応じて変更する、
請求項１記載の視線検出システム。
【請求項５】
前記境界検出部は、前記眼領域に線状または帯状の検出領域を設定し、前記検出領域の長手方向に対してエッジ検出を行い、検出されたエッジのうち、前後で輝度が減少する第１のエッジおよび前後で輝度が増加する第２のエッジの前記検出領域における位置の対称性に基づいて、前記境界の位置を検出する、
請求項１乃至４のいずれか１項に記載の視線検出システム。
【請求項６】
前記境界検出部は、前記検出領域において角膜反射像が検出された場合、前記角膜反射像の前後の輝度差に基づいて、前記角膜反射像の位置を、前記第１のエッジが存在する位置、または前記第２のエッジが存在する位置、またはエッジが存在しない位置のいずれかであると判定する、
請求項５記載の視線検出システム。
【請求項７】
前記境界検出部は、前記検出領域において角膜反射像が検出された場合、検出された前記第１のエッジおよび前記第２のエッジと前記角膜反射像との位置関係に基づいて、前記角膜反射像の位置を、前記第１のエッジが存在する位置、または前記第２のエッジが存在する位置、またはエッジが存在しない位置のいずれかであると判定する、
請求項５記載の視線検出システム。
【請求項８】
コンピュータが、
撮像画像上のユーザの眼領域から、輝度に基づくエッジ検出によって瞳孔と虹彩との境界の位置を検出し、
前記境界の位置が検出されたか否かに応じて、前記瞳孔の中心位置を検出する第１の処理と、前記第１の処理とは異なる手順で前記瞳孔の中心位置を検出する第２の処理とを切り替えて実行し、
検出された前記瞳孔の中心位置に基づいて、前記ユーザの視線方向または注視位置を検出する、
視線検出方法。
【請求項９】
コンピュータに、
撮像画像上のユーザの眼領域から、輝度に基づくエッジ検出によって瞳孔と虹彩との境界の位置を検出し、
前記境界の位置が検出されたか否かに応じて、前記瞳孔の中心位置を検出する第１の処理と、前記第１の処理とは異なる手順で前記瞳孔の中心位置を検出する第２の処理とを切り替えて実行し、
検出された前記瞳孔の中心位置に基づいて、前記ユーザの視線方向または注視位置を検出する、
処理を実行させる視線検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、視線検出システム、視線検出方法および視線検出プログラムに関する。
【背景技術】
【０００２】
ユーザの視線方向や注視位置を検出する視線検出技術が知られている。視線検出方法の一例として、ユーザの眼を撮像して得られた画像から、光源の角膜反射像と瞳孔とを検出し、角膜反射像と瞳孔の中心との位置関係に基づいてユーザの視線を検出する方法がある。
【０００３】
この方法では、角膜反射像および瞳孔の中心の各位置を正確に検出することが求められる。しかし、照明光源とカメラとの間隔が近いと、照明光源からの光が網膜で反射され、その反射光が瞳孔を通じてカメラに達する。その結果、カメラにより撮影された画像上で瞳孔全体が明るくなる明瞳孔状態になることが知られている。そして、明瞳孔状態になった場合には、角膜反射像の輪郭が明確でなくなり、角膜反射像の検出が困難になる場合がある。
【０００４】
この問題に対し、カメラからユーザの顔までの距離を推定し、照明光源とカメラとの間隔に対する、その距離の推定値の比に基づいて、明瞳孔状態となるか否かを判定し、その判定結果に応じて視線検出方法を切り替える技術が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−６７１０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、瞳孔の中心を検出する方法としては、瞳孔の輪郭から瞳孔の中心を検出する方法と、虹彩の輪郭から瞳孔の中心を求める方法とがある。これらのうち、前者の方法の方が瞳孔の中心を高精度に検出できる。それは、通常状態では、瞳孔と虹彩との輝度差は虹彩と強膜との輝度差より大きく、また、虹彩は上部と下部が瞼により隠れやすいため、瞳孔の輪郭の方が虹彩の輪郭より明確に検出できるからである。
【０００７】
しかし、前述の明瞳孔状態では、瞳孔が明るくなるために、瞳孔と虹彩との輝度差が小さくなり、通常状態、即ち明瞳孔状態ではない場合よりも瞳孔の輪郭を検出しにくくなる。さらに、瞳孔が通常よりやや明るくなる「半明瞳孔」と呼ばれる状態になる場合もあり、この場合には瞳孔と虹彩との輝度差がほとんどなくなり、瞳孔の輪郭を検出することが困難になる。
【０００８】
そこで、明瞳孔や半明瞳孔の状態になったかを検出し、その検出結果に応じて、瞳孔の輪郭から瞳孔の中心を検出する処理と、虹彩の輪郭から瞳孔の中心を求める処理とを切り替える方法が考えられる。しかし、カメラとユーザの顔までの距離の推定結果に基づいて明瞳孔状態か否かを判定する前述の方法では、距離の推定精度が十分高くないことや、虹彩の輝度に個人差があることから、明瞳孔状態か否かの判定精度は高いとは言えない。その結果、瞳孔の中心の検出精度が低下するという問題がある。
【０００９】
１つの側面では、本発明は、瞳孔の中心位置の検出精度を向上させることが可能な視線検出システム、視線検出方法および視線検出プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
１つの案では、境界検出部と、中心位置検出部と、視線検出部とを有する視線検出システムが提供される。境界検出部は、撮像画像上のユーザの眼領域から、輝度に基づくエッジ検出によって瞳孔と虹彩との境界の位置を検出する。中心位置検出部は、境界検出部によって境界の位置が検出されたか否かに応じて、瞳孔の中心位置を検出する第１の処理と、第１の処理とは異なる手順で瞳孔の中心位置を検出する第２の処理とを切り替えて実行する。視線検出部は、中心位置検出部によって検出された瞳孔の中心位置に基づいて、ユーザの視線方向または注視位置を検出する。
【００１１】
また、１つの案では、上記の視線検出システムと同様の処理をコンピュータが実行する視線検出方法が提供される。
さらに、１つの案では、上記の視線検出システムと同様の処理をコンピュータに実行させる視線検出プログラムが提供される。
【発明の効果】
【００１２】
１つの側面では、瞳孔の中心位置の検出精度を向上させることができる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態に係る視線検出システムの構成例および処理例を示す図である。
【図２】第２の実施の形態に係る視線検出装置のハードウェア構成例を示す図である。
【図３】瞳孔の状態を示す図である。
【図４】視線検出装置の処理機能の構成例を示すブロック図である。
【図５】エッジ検出結果の第１の例を示す図である。
【図６】エッジ検出結果の第２の例を示す図である。
【図７】エッジ検出結果の第３の例を示す図である。
【図８】エッジ検出部によるエッジ検出領域の設定例を示す図である。
【図９】瞳孔の中心位置の検出処理例を示す図である。
【図１０】視線検出処理手順の例を示すフローチャートである。
【図１１】エッジペア検出についての処理例１−１を示すフローチャート（その１）である。
【図１２】エッジペア検出についての処理例１−１を示すフローチャート（その２）である。
【図１３】エッジペア検出についての処理例１−２を示すフローチャート（その１）である。
【図１４】エッジペア検出についての処理例１−２を示すフローチャート（その２）である。
【図１５】瞳孔の中心位置検出処理についての処理例２−１を示すフローチャートである。
【図１６】瞳孔の中心位置検出処理についての処理例２−２を示すフローチャートである。
【図１７】テンプレートと尤度との関係の例を示す図である。
【図１８】瞳孔の中心位置検出処理についての処理例２−３を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態に係る視線検出システムの構成例および処理例を示す図である。第１の実施の形態に係る視線検出システム１は、境界検出部１ａ、中心位置検出部１ｂおよび視線検出部１ｃを有する。境界検出部１ａ、中心位置検出部１ｂおよび視線検出部１ｃの各処理は、例えば、プロセッサが所定のプログラムを実行することで実現される。また、境界検出部１ａ、中心位置検出部１ｂおよび視線検出部１ｃの各処理機能の少なくとも一部は、他の処理機能とは別の装置に実装されてもよい。
【００１５】
境界検出部１ａは、撮像画像上のユーザの眼領域１０から、輝度に基づくエッジ検出を行うことで、瞳孔１１と虹彩１２との境界を検出する。例えば、境界検出部１ａは、眼領域１０内に線状または帯状の検出領域１３を設定し、検出領域１３の長手方向に対してエッジ検出を行う。境界検出部１ａは、検出されたエッジのうち、前後で輝度が減少する第１のエッジと前後で輝度が増加する第２のエッジの検出領域１３における位置の対称性に基づいて、瞳孔１１と虹彩１２との境界の位置を検出する、図１の例では、瞳孔１１と虹彩１２との２つの境界１１ａ，１１ｂが検出されている。境界１１ａ，１１ｂは、それぞれ第１のエッジ，第２のエッジの一例である。
【００１６】
ここで、通常は、瞳孔１１は虹彩１２と比較して十分暗いことから、境界検出部１ａは、瞳孔１１と虹彩１２との境界をエッジ検出によって検出可能である。しかし、瞳孔１１と虹彩１２との明るさがほぼ同じになる状態（以下、「半明瞳孔状態」と呼ぶ）では、境界検出部１ａは、瞳孔１１と虹彩１２との境界をエッジ検出によって検出できない場合がある。
【００１７】
中心位置検出部１ｂは、境界検出部１ａによって瞳孔１１と虹彩１２との境界が検出されたか否かに応じて、第１の処理と第２の処理とを切り替えて実行する。第１の処理と第２の処理は、いずれも瞳孔１１の中心位置を検出する処理であるが、その処理手順が互いに異なる。
【００１８】
例えば、第１の処理では、瞳孔１１の輪郭が検出され、その検出結果に基づいて瞳孔１１の中心位置が検出される。一方、第２の処理では、虹彩１２の輪郭が検出され、その検出結果に基づいて瞳孔１１の中心位置が検出される。
【００１９】
また、他の例として、第１の処理では、瞳孔１１の輪郭の検出結果を重視して、瞳孔１１の中心位置が検出される。一方、第２の処理では、虹彩１２の輪郭の検出結果を重視して、瞳孔１１の中心位置が検出される。
【００２０】
いずれの例でも、第１の処理は、暗瞳孔状態の場合に適した処理となっており、第２の処理は、半明瞳孔状態の場合に適した処理となっている。この場合、中心位置検出部１ｂは、境界検出部１ａによって瞳孔１１と虹彩１２との境界が検出された場合、第１の処理を実行する。一方、中心位置検出部１ｂは、境界検出部１ａによって瞳孔１１と虹彩１２との境界が検出されなかった場合に、第２の処理を実行する。
【００２１】
視線検出部１ｃは、中心位置検出部１ｂによる瞳孔１１の中心位置の検出結果に基づいて、ユーザの視線方向または注視位置を検出する。例えば、視線検出部１ｃは、眼領域１０における角膜反射像の検出位置と、瞳孔１１の中心位置の検出結果に基づいて、ユーザの視線方向または注視位置を検出する。
【００２２】
以上の視線検出システム１では、境界検出部１ａは、輝度に基づくエッジ検出を行うことで、瞳孔１１と虹彩１２との境界を検出する。中心位置検出部１ｂは、境界検出部１ａによって瞳孔１１と虹彩１２との境界が検出されたか否かによって、半明瞳孔状態になっているかを判定できる。そして、中心位置検出部１ｂは、半明瞳孔状態になっているか否かによって、瞳孔１１の中心を検出するための適切な処理を選択して実行することができる。これにより、半明瞳孔状態になった場合でも、瞳孔１１の中心を精度よく検出することができる。したがって、瞳孔１１の中心の検出精度を向上させることができる。
【００２３】
［第２の実施の形態］
図２は、第２の実施の形態に係る視線検出装置のハードウェア構成例を示す図である。第２の実施の形態に係る視線検出装置１００は、例えば、図２に示すようなコンピュータとして実現することができる。
【００２４】
視線検出装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００２５】
プロセッサ１０１には、バス１０９を介して、ＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。
ＲＡＭ１０２は、視線検出装置１００の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。
【００２６】
バス１０９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、読み取り装置１０６、通信インタフェース１０７およびネットワークインタフェース１０８がある。
【００２７】
ＨＤＤ１０３は、視線検出装置１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、ＳＳＤ（Solid State Drive）などの他の種類の不揮発性記憶装置を使用することもできる。
【００２８】
グラフィック処理装置１０４には、表示装置１０４ａが接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令にしたがって、画像を表示装置１０４ａに表示させる。表示装置としては、液晶ディスプレイや有機ＥＬ（Electroluminescence）ディスプレイなどがある。
【００２９】
入力インタフェース１０５には、入力装置１０５ａが接続されている。入力インタフェース１０５は、入力装置１０５ａから出力される信号をプロセッサ１０１に送信する。入力装置１０５ａとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３０】
読み取り装置１０６には、可搬型記録媒体１０６ａが脱着される。読み取り装置１０６は、可搬型記録媒体１０６ａに記録されたデータを読み取ってプロセッサ１０１に送信する。可搬型記録媒体１０６ａとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
【００３１】
通信インタフェース１０７は、外部機器との間でデータの送受信を行う。本実施の形態では、外部機器として、赤外照明１０７ａと赤外カメラ１０７ｂとが接続される。赤外照明１０７ａは、視線検出対象のユーザの顔に対して赤外光を照射する。赤外カメラ１０７ｂは、照射された赤外光の反射光を検知する。プロセッサ１０１は、赤外カメラ１０７ｂによって撮像された画像を解析することで、ユーザの視線を検出する。なお、赤外照明１０７ａと赤外カメラ１０７ｂは、例えば、センサユニット１０７ｃとして一体化されている。
【００３２】
ネットワークインタフェース１０８は、ネットワーク１０８ａを介して他の装置との間でデータの送受信を行う。
以上のようなハードウェア構成によって、視線検出装置１００の処理機能を実現することができる。
【００３３】
上記の視線検出装置１００は、赤外カメラ１０７ｂによって撮像されたユーザの眼の領域の画像に基づいて、ユーザの視線を検出する。視線検出の方法としては、角膜反射像の位置と瞳孔の中心位置との位置関係から視線方向を検出する「角膜反射法」が用いられる。
【００３４】
ここで、図３は、瞳孔の状態を示す図である。図３（Ａ）は、暗瞳孔状態（通常状態）を示し、図３（Ｂ）は、明瞳孔状態を示し、図３（Ｃ）は、半明瞳孔状態を示す。
以下の説明において、眼球が露出している「眼球領域」は、上瞼の下縁部２０１と下瞼の上縁部２０２とによって囲まれる領域として定義される。眼球領域には、同心円状に瞳孔２０３と虹彩２０４の各領域が存在し、虹彩２０４の外側には強膜（白目）２０５の領域が存在する。また、視線検出時には、赤外照明１０７ａからの赤外線の反射光である角膜反射像２０６が、眼球領域に現れる。
【００３５】
図３（Ａ）に示すように、通常状態では、瞳孔２０３が虹彩２０４より十分に暗い「暗瞳孔状態」となっている。一方、赤外照明１０７ａと赤外カメラ１０７ｂとの距離が近い場合には、赤外照明１０７ａからの光が網膜で反射され、その反射光が瞳孔２０３を通じて赤外カメラ１０７ｂに達する。その結果、図３（Ｂ）に示すように、瞳孔２０３が虹彩２０４より明るくなる「明瞳孔状態」や、図３（Ｃ）に示すように、瞳孔２０３と虹彩２０４とがほぼ同じ明るさになる「半明瞳孔状態」になることがある。
【００３６】
ところで、視線検出装置１００は、上記のように眼球領域が写った画像から、角膜反射像２０６の位置と瞳孔２０３の中心位置とを検出する。これらのうち、瞳孔２０３の中心位置を検出する方法としては、瞳孔２０３の輪郭の検出結果を用いる方法と、虹彩２０４の輪郭の検出結果を用いる方法とがある。
【００３７】
暗瞳孔状態では、瞳孔２０３の輪郭の検出結果を用いる方法の方が、瞳孔２０３の中心位置の検出精度が高い。その理由は、暗瞳孔状態では一般的に、虹彩２０４と強膜２０５との輝度差より、瞳孔２０３と虹彩２０４との輝度差の方が大きく、瞳孔２０３の輪郭の方が明確だからである。また、瞼が開いている状態では、瞳孔２０３の輪郭はその全体が露出しているが、虹彩２０４の輪郭の一部は瞼に隠れている場合が多い。そのため、円検出により瞳孔２０３や虹彩２０４を検出する場合には、瞳孔２０３の輪郭の方が容易かつ高精度に検出できる。
【００３８】
しかし、半明瞳孔状態では、暗瞳孔状態より瞳孔２０３と虹彩２０４との輝度差が小さくなることから、瞳孔２０３の輪郭の検出精度が低下する。一方、虹彩２０４の輪郭の検出精度は暗瞳孔状態、明瞳孔状態、半明瞳孔状態のいずれでも変化しない。このため、半明瞳孔状態では、虹彩２０４の輪郭の検出結果を用いる方法の方が、瞳孔２０３の中心位置の検出精度が高い。
【００３９】
上記のように、半明瞳孔状態は、赤外照明１０７ａと赤外カメラ１０７ｂとの距離が近い場合に発生する。このため、特に、図２に示したように赤外照明１０７ａと赤外カメラ１０７ｂとがセンサユニット１０７ｃとして一体化され、センサユニット１０７ｃを小型化する上で、半明瞳孔状態の発生を避けることはできない。
【００４０】
そこで、視線検出装置１００は、眼球領域内の輝度情報を用いてエッジ検出を行い、瞳孔２０３のエッジを検出できたか否かに応じて、瞳孔２０３の中心位置の検出処理を切り替える。これにより、瞳孔２０３の中心位置を安定的に精度よく検出できるようにし、その結果として、視線検出精度を向上させる。
【００４１】
図４は、視線検出装置の処理機能の構成例を示すブロック図である。視線検出装置１００は、画像取得部１１１、眼球領域検出部１１２、角膜反射検出部１１３、エッジ検出部１１４、瞳孔中心検出部１１５および視線検出部１１６を有する。これらの各処理機能は、例えば、プロセッサ１０１が所定のプログラムを実行することで実現される。
【００４２】
なお、これらの処理機能のうちの少なくとも一部は、他の処理機能とは別の装置に実装されてもよい。例えば、画像取得部１１１、眼球領域検出部１１２、角膜反射検出部１１３、エッジ検出部１１４および瞳孔中心検出部１１５が、センサユニット１０７ｃに実装され、視線検出部１１６が視線検出装置１００に実装されてもよい。
【００４３】
画像取得部１１１は、赤外カメラ１０７ｂによってユーザの顔が撮像された画像を取得する。取得された画像のデータは、視線検出装置１００の記憶装置（例えば、ＲＡＭ１０２）に一時的に格納される。
【００４４】
眼球領域検出部１１２は、画像取得部１１１によって取得された画像から、眼球領域を検出する。眼球領域は、例えば、上瞼の下縁部と下瞼の上縁部とによって囲まれる領域として検出される。眼球領域検出部１１２は、例えば、取得された画像から顔領域を検出し、検出された顔領域から眼球領域を検出する。顔領域の検出、および顔領域からの眼球領域の検出は、例えば、テンプレートマッチングあるいは画像特徴等を用いた識別処理により行うことができる。
【００４５】
角膜反射検出部１１３は、検出された眼球領域の輝度分布に基づいて、眼球領域から角膜反射像の位置を検出する。角膜反射像の領域は、眼球領域における他の領域より極端に輝度が大きくなっている。そのため、角膜反射検出部１１３は、眼球領域から輝度が所定の閾値以上である円形領域を角膜反射像として検出する。なお、角膜反射検出部１１３は、例えば、コーナー検出によって角膜反射像の位置を検出することもできる。
【００４６】
エッジ検出部１１４は、眼球領域において略左右方向に線状または帯状にエッジ検出領域を設定し、エッジ検出領域の長手方向に対して輝度差を検出することによってエッジを検出する。エッジ検出部１１４は、検出されたエッジの位置に基づいて、瞳孔と虹彩との境界（すなわち、瞳孔のエッジ）および虹彩と強膜との境界（すなわち、虹彩のエッジ）の両方が検出されたか、これらのうち後者のみが検出されたか、いずれも検出されなかったかを判定する。
【００４７】
瞳孔中心検出部１１５は、眼球領域の輝度に基づいて瞳孔の中心位置を検出する。その際、瞳孔中心検出部１１５は、エッジ検出部１１４による判定結果に基づいて、瞳孔の中心位置を検出するための処理を切り替える。この切り替えでは、瞳孔の輪郭の検出結果を重視した処理と、虹彩の輪郭の検出結果を重視した処理とが切り替えられる。エッジ検出部１１４により瞳孔のエッジと虹彩のエッジとが両方検出された場合、前者の処理に切り替えられ、虹彩のエッジのみ検出された場合、後者の処理に切り替えられる。
【００４８】
視線検出部１１６は、角膜反射検出部１１３によって検出された角膜反射の位置と、瞳孔中心検出部１１５によって検出された瞳孔の中心位置との位置関係に基づいて、ユーザの視線の方向を検出する。また、視線検出部１１６は、検出された視線の方向に基づいて、ユーザの注視位置を検出してもよい。
【００４９】
次に、エッジ検出部１１４の処理について説明する。
エッジ検出部１１４は、眼球領域において略左右方向に線状または帯状にエッジ検出領域を設定し、設定したエッジ検出領域の長手方向に対して隣接画素の輝度差を検出することで、エッジを検出する。ここで、図５〜図７に、エッジ検出領域におけるエッジ検出結果の例を示す。図５〜図７では、例として、眼球領域において水平な線をエッジ検出領域として設定したものとする。
【００５０】
図５は、エッジ検出結果の第１の例を示す図である。図５に示すグラフでは、横軸はエッジ検出領域の長手方向に沿った座標を示し、縦軸は輝度を示す。なお、図６，図７に示すグラフについても同様である。
【００５１】
眼球領域内では、エッジ検出領域に沿って、強膜、虹彩、瞳孔、虹彩、強膜が順に存在する。すなわち、瞳孔を中心とした両側に虹彩、強膜が順に位置する。また、エッジ検出により、各領域の境界がエッジとして検出される。そこで、エッジ検出部１１４は、エッジ検出領域に沿ってエッジ検出を行い、エッジ位置の対称性に基づいて、検出されたエッジが瞳孔のエッジ（瞳孔と虹彩との境界）か、または虹彩のエッジ（虹彩と強膜との境界）かを判定する。例えば、エッジ検出部１１４は、前後の輝度差がほぼ同等で、傾きの正負が逆になっているエッジ部のペアを、このようなエッジと判定する。
【００５２】
図５のグラフは、暗瞳孔状態における輝度の検出例を示す。この例では、眼球領域において４カ所のエッジ部２２１ａ〜２２１ｄが検出されている。これらのうち、エッジ部２２１ａとエッジ部２２１ｄは、前後の輝度差がほぼ同等で、傾きの正負が逆になっている。このことから、エッジ部２２１ａ，２２１ｄは、瞳孔のエッジか、または虹彩のエッジのどちらかであると推定される。
【００５３】
また、エッジ部２２１ｂとエッジ部２２１ｃも、前後の輝度差がほぼ同等で、傾きの正負が逆になっている。エッジ部２２１ｂ，２２１ｃは、エッジ部２２１ａとエッジ部２２１ｄとの間の領域に位置する。したがって、エッジ検出部１１４は、エッジ部２２１ｂ，２２１ｃを瞳孔のエッジと判定し、エッジ部２２１ａ，２２１ｄを虹彩のエッジと判定する。
【００５４】
図６は、エッジ検出結果の第２の例を示す図である。図６に示すグラフは、暗瞳孔状態において、エッジ検出領域に角膜反射像が重なっている場合の輝度の検出例を示す。
図６の例では、図５の例と同様に、虹彩のエッジに対応する２つのエッジ部２２２ａ，２２２ｃが検出されている。また、瞳孔のエッジに対応する１つのエッジ部２２２ｂも検出されている。しかし、瞳孔についての他方のエッジが存在するはずの領域２２３には、角膜反射像が存在するため、他方のエッジは検出されていない。
【００５５】
このように、エッジ検出領域に角膜反射像が重なっている場合、エッジ検出部１１４は、角膜反射像の領域をエッジ部または平坦部としてみなす。例えば、エッジ検出部１１４は、角膜反射像の領域の前後の輝度差が所定の閾値以上である場合には、その領域からエッジ部が検出されたとみなし、輝度差が閾値未満である場合には、その領域をエッジ部でない平坦部とみなす。
【００５６】
エッジ部検出部１１４は、このようにして検出されたエッジ部の対称性に基づいて瞳孔のエッジおよび虹彩のエッジの各位置を判定することで、エッジ検出領域に角膜反射像が重なっている場合でもそれらの位置を検出することができる。図６の例では、領域２２３がエッジ部と判定され、このエッジ部とエッジ部２２２ｂとが、前後の輝度差がほぼ同等で、傾きの正負が逆になっていると判定される。このことから、エッジ検出部１１４は、エッジ部２２２ｂと領域２２３を瞳孔のエッジと判定し、エッジ部２２２ａ，２２２ｃを虹彩のエッジと判定する。
【００５７】
図７は、エッジ検出結果の第３の例を示す図である。図７に示すグラフは、半明瞳孔状態において、エッジ検出領域に角膜反射像が重なっている場合の輝度の検出例を示す。
図７の例では、領域２２４において角膜反射像が検出されている。エッジ検出部１１４は、例えば、領域２２４における前後の輝度差が所定の閾値未満であることから、領域２２４をエッジ部でない平坦部とみなす。
【００５８】
また、図７の例では、エッジ部２２５ａ，２２５ｂが検出されている。エッジ部２２５ａ，２２５ｂは、前後の輝度差がほぼ同等で、傾きの正負が逆になっている。さらに、エッジ部２２５ａとエッジ部２２５ｂとの間の領域には、エッジ部のペアが検出されていない。このことから、エッジ検出部１１４は、エッジ部２２５ａ，２２５ｂを虹彩のエッジと判定するとともに、瞳孔のエッジを検出できなかったと判定する。このように瞳孔のエッジを検出できなかった場合、半明瞳孔状態であると考えられる。そのため、瞳孔中心検出部１１５は、エッジ検出部１１４による判定結果に基づいて、虹彩の輪郭の検出結果を重視した瞳孔の中心位置の検出処理を実行する。
【００５９】
図８は、エッジ検出部によるエッジ検出領域の設定例を示す図である。前述のように、エッジ検出部１１４は、眼球領域において略左右方向に線状または帯状にエッジ検出領域を設定する。図８（Ａ）〜（Ｄ）に示すように、エッジ検出領域の設定方法としては様々な方法を適用可能である。
【００６０】
例えば図８（Ａ）に示すように、エッジ検出部１１４は、目頭２３１と目尻２３２とを結び、かつ、上瞼の下縁部２０１と下瞼の上縁部２０２との中間を通るように、エッジ検出領域２４１を設定する。
【００６１】
また、エッジ検出部１１４は、眼球領域において直線的な領域をエッジ検出領域に設定してもよい。例えば図８（Ｂ）に示すように、エッジ検出部１１４は、眼球領域において、角膜反射像２５１を通過する直線的な領域を、エッジ検出領域２４２に設定する。あるいは、エッジ検出部１１４は、角膜反射像２５１から上側または下側に一定距離だけ離れた位置に配置した直線的な領域を、エッジ検出領域に設定してもよい。例えば、赤外照明１０７ａが顔の下側から赤外光を照射する場合には、角膜反射像２５１より上側に瞳孔の中心が位置する可能性が高い。このような赤外カメラ１０７ｂと顔との位置関係に基づいて、角膜反射像２５１の上側と下側のどちらにエッジ検出領域を設定すればよいかがわかる。
【００６２】
さらに、図８（Ｃ）に示すように、エッジ検出部１１４は、目頭２３１、角膜反射像２５２および目尻２３２を通る折れ線状の領域を、エッジ検出領域２４３に設定してもよい。
【００６３】
また、エッジ検出部１１４は、上記のような方法で仮設定したエッジ検出領域に平行な複数のエッジ検出領域の候補の中から、最も暗い領域を通過するものをエッジ検出領域として設定してもよい。
【００６４】
また、エッジ検出部１１４は、例えば、目頭と目尻とを結ぶ直線的な領域を定義し、その領域から一定の範囲内で検知された最も暗い点を新たな中間点として定義する。そして、エッジ検出部１１４は、新たな中間点を通る直線的な領域、あるいは、新たな中間点と目頭および目尻を通る折れ線状の領域を、エッジ検出領域に設定してもよい。
【００６５】
また、エッジ検出部１１４は、眼球領域内に複数のエッジ検出領域を設定してもよい。例えば図８（Ｄ）に示すように、エッジ検出部１１４は、直線的なエッジ検出領域２４４ａ〜２４４ｄを、眼球領域内に互いに平行になるように設定する。このように複数のエッジ検出領域を設定した場合、エッジ検出領域２４１は、例えば、各エッジ検出領域について前述のエッジ検出処理を行い、エッジ部のペアが最も多く検出された処理結果を採用する。
【００６６】
なお、以上の例はいずれも、目頭と目尻の位置に基づいて眼球領域が特定された場合を示したが、例えば、目頭と目尻の位置を特定しない方法を用いる場合には、エッジ検出部１１４は、眼を含む一定領域内にエッジ検出部を設定してもよい。
【００６７】
次に、瞳孔中心検出部１１５の処理について説明する。
瞳孔中心検出部１１５は、エッジ検出部１１４によって瞳孔のエッジが検出されたか否かに応じて、瞳孔の中心位置の検出処理を切り替えて実行する。瞳孔中心検出部１１５は、瞳孔のエッジが検出された場合、瞳孔の輪郭の検出結果を重視した中心位置の検出処理を実行する。一方、瞳孔中心検出部１１５は、瞳孔のエッジが検出されなかった場合、虹彩の輪郭の検出結果を重視した中心位置の検出処理を実行する。
【００６８】
図９は、瞳孔の中心位置の検出処理例を示す図である。瞳孔中心検出部１１５の処理では、例えば、瞳孔の輪郭を検出するための複数のテンプレート２７１ａ，２７１ｂ，２７１ｃ，・・・と、虹彩の輪郭を検出するための複数のテンプレート２７２ａ，２７２ｂ，２７２ｃ，・・・とが用いられる。
【００６９】
テンプレート２７１ａ，２７１ｂ，２７１ｃ，・・・には、画像上の瞳孔の大きさに適した、それぞれ異なる半径の円が含まれている。瞳孔中心検出部１１５は、テンプレート２７１ａ，２７１ｂ，２７１ｃ，・・・を用いて撮像画像から円検出を行うことで、瞳孔の輪郭を検出する。
【００７０】
一方、テンプレート２７２ａ，２７２ｂ，２７２ｃ，・・・には、画像上の虹彩の大きさに適した、それぞれ異なる半径の円が含まれている。テンプレート２７２ａ，２７２ｂ，２７２ｃ，・・・に含まれる円の半径の最大値は、テンプレート２７１ａ，２７１ｂ，２７１ｃ，・・・に含まれる円の半径の最大値より大きい。瞳孔中心検出部１１５は、テンプレート２７２ａ，２７２ｂ，２７２ｃ，・・・を用いて撮像画像から円検出を行うことで、虹彩の輪郭を検出する。
【００７１】
なお、瞳孔中心検出部１１５は、画像上の顔の大きさや眼の間の距離に応じて、各テンプレートを拡大または縮小した上で使用してもよい。
エッジ検出部１１４によるエッジ検出結果に応じて瞳孔の中心位置の検出処理を切り替える方法の一例としては、瞳孔の輪郭を検出し、その検出結果から瞳孔の中心位置を検出する処理と、虹彩の輪郭を検出し、その検出結果から瞳孔の中心位置を検出する処理のどちらかを、エッジ検出部１１４によるエッジ検出結果に応じて切り替えて実行する方法がある。ここでは、前者を「瞳孔輪郭に基づく中心検出処理」と呼び、後者を「虹彩輪郭に基づく中心検出処理」と呼ぶ。
【００７２】
エッジ検出部１１４によって瞳孔のエッジが検出された場合には、瞳孔と虹彩との境界が明確であり、暗瞳孔状態である可能性が高い。このため、瞳孔中心検出部１１５は、瞳孔輪郭に基づく中心検出処理を実行する。一方、エッジ検出部１１４によって瞳孔のエッジが検出されなかった場合には、瞳孔と虹彩との境界が不明確であり、半明瞳孔状態である可能性が高い。このため、瞳孔中心検出部１１５は、虹彩輪郭に基づく中心検出処理を実行する。後者のケースでは、瞳孔と虹彩との境界より、虹彩と強膜との境界の方が明確であるため、虹彩の輪郭を基に瞳孔の中心位置を検出する方が、中心位置を精度よく検出できる。
【００７３】
なお、実際の処理では、瞳孔の輪郭を検出する際に、テンプレート２７１ａ，２７１ｂ，２７１ｃ，・・・だけでなく、虹彩の輪郭検出用のテンプレート２７２ａ，２７２ｂ，２７２ｃ，・・・も用いられてもよい。例えば、瞳孔の輪郭および虹彩の輪郭は、次のような手順で検出される。
【００７４】
まず、虹彩の輪郭を検出する場合、瞳孔中心検出部１１５は、眼球領域における最大輝度Ｌｍａｘと最小輝度Ｌｍｉｎを取得する。瞳孔中心検出部１１５は、閾値を最大輝度Ｌｍａｘから最小輝度Ｌｍｉｎまで徐々に下げながら、眼球領域の２値化処理を行う。瞳孔中心検出部１１５は、閾値を下げるたびに、２値化された画像と虹彩の輪郭検出用のテンプレート２７２ａ，２７２ｂ，２７２ｃ，・・・とのマッチングを行い、いずれかのテンプレートとのマッチング評価値（類似度）が所定の閾値を超えるかを判定する。
【００７５】
閾値がある輝度を下回ったとき、眼球領域には、輪郭の一部が瞼に隠れた円領域が現れる。このとき、テンプレート２７２ａ，２７２ｂ，２７２ｃ，・・・のいずれかと、現れた円領域とが類似すると判定される。これにより、虹彩の輪郭が検出される。なお、虹彩の輪郭に対応する円領域は、例えば、両眼の間の距離から推測することも可能である。
【００７６】
一方、瞳孔の輪郭を検出する場合には、瞳孔中心検出部１１５はまず、上記と同様の方法で虹彩の輪郭を検出する。その後、瞳孔中心検出部１１５は、さらに閾値を徐々に下げていき、閾値を下げるたびに、２値化された画像と瞳孔の輪郭検出用のテンプレート２７１ａ，２７１ｂ，２７１ｃ，・・・とのマッチングを行い、いずれかのテンプレートとのマッチング評価値（類似度）が所定の閾値を超えるかを判定する。
【００７７】
虹彩領域と瞳孔領域の輝度差がある程度開いていれば、やがて、眼球領域には、輪郭が完全に露出した円領域が現れる。このとき、テンプレート２７１ａ，２７１ｂ，２７１ｃ，・・・のいずれかと、現れた円領域とが類似すると判定される。これにより、瞳孔の輪郭が検出される。
【００７８】
なお、ほとんどの場合、虹彩の輪郭の一部は瞼によって隠れ、虹彩の輪郭全体が眼球領域に露出しているケースは少ない。このため、瞳孔のエッジも虹彩のエッジも明確であったとしても、テンプレート２７２ａ，２７２ｂ，２７２ｃ，・・・を用いた虹彩の輪郭の検出精度は、テンプレート２７１ａ，２７１ｂ，２７１ｃ，・・・を用いた瞳孔の輪郭の検出精度より低い。このことが、瞳孔の輪郭に基づいて瞳孔の中心位置を検出するより、虹彩の輪郭に基づいて瞳孔の中心位置を検出する方が位置検出の精度が低いことの一因となる。
【００７９】
以上の図９では、エッジ検出部１１４によるエッジ検出結果に応じて、瞳孔輪郭に基づく中心検出処理と、虹彩輪郭に基づく中心検出処理とを切り替える例について説明した。しかし、エッジ検出結果に応じた処理の切り替え方法としては、この例に限らず、例えば、瞳孔の輪郭の検出結果についての重み（尤度）と、虹彩の輪郭の検出結果についての重み（尤度）を、エッジ検出結果に応じて変更する方法も適用可能である。また、瞳孔輪郭に基づく中心検出処理と、虹彩輪郭に基づく中心検出処理の各制御パラメータを、エッジ検出結果に応じて変更する方法も適用可能である。これらの方法の詳細については、後に説明する。
【００８０】
次に、視線検出装置１００の処理についてフローチャートを用いて説明する。
図１０は、視線検出処理手順の例を示すフローチャートである。
［ステップＳ１１］画像取得部１１１は、赤外カメラ１０７ｂによってユーザの顔が撮影された画像を取得する。眼球領域検出部１１２は、取得された画像から眼球領域を検出する。
【００８１】
［ステップＳ１２］角膜反射検出部１１３は、眼球領域の輝度分布に基づいて、眼球領域から角膜反射像の位置を検出する。
［ステップＳ１３］エッジ検出部１１４は、眼球領域にエッジ検出領域を設定する。
【００８２】
［ステップＳ１４］エッジ検出部１１４は、エッジ検出領域の一端から他端に向かって輝度差を検出することで、エッジ部を検出する。エッジ検出部１１４は、瞳孔のエッジのペア（エッジペア）と、虹彩のエッジのペア（エッジペア）とを検出する。なお、ステップＳ１４の処理の詳細については後述する。
【００８３】
［ステップＳ１５］エッジ検出部１１４は、ステップＳ１４で検出されたエッジペア数に応じて、瞳孔、虹彩および強膜の各輝度を設定する。このステップＳ１５で設定される輝度は、ステップＳ１６の処理で使用されるものである。
【００８４】
ステップＳ１４でエッジペアが２組検出された場合には、瞳孔のエッジと虹彩のエッジが両方とも検出されている。この場合、エッジ検出部１１４は、エッジ検出領域における瞳孔のエッジ間の輝度の平均値を、瞳孔の輝度として設定する。また、エッジ検出部１１４は、エッジ検出領域における瞳孔のエッジと虹彩のエッジとの間の領域の輝度の平均値を、虹彩の輝度として設定する。さらに、エッジ検出部１１４は、エッジ検出領域における虹彩のエッジの外側領域の輝度を、強膜の輝度として設定する。なお、強膜の輝度は、あらかじめ設定された値に設定されてもよい。
【００８５】
一方、ステップＳ１４でエッジペアが１組のみ検出された場合には、虹彩のエッジのみ検出されている。この場合、エッジ検出部１１４は、虹彩の輝度と強膜の輝度を上記と同様の方法で設定する。また、エッジ検出部１１４は、瞳孔の輝度として、設定された虹彩の輝度と同じ値を設定する。あるいは、エッジ検出部１１４は、瞳孔の輝度として、エッジ検出領域における虹彩のエッジ間の領域のうち、中央付近の輝度を設定する。
【００８６】
［ステップＳ１６］瞳孔中心検出部１１５は、眼球領域の輝度に基づいて、瞳孔の中心位置を検出する。その際、瞳孔中心検出部１１５は、ステップＳ１４でのエッジペアの検出結果に基づいて、瞳孔の輪郭の検出結果を重視した処理と、虹彩の輪郭の検出結果を重視した処理とを切り替えて実行する。なお、ステップＳ１６の処理の詳細については後述する。
【００８７】
［ステップＳ１７］視線検出部１１６は、ステップＳ１２で検出された角膜反射像の位置と、ステップＳ１６で検出された瞳孔の中心位置との位置関係に基づいて、ユーザの視線方向と、ユーザの注視位置とを検出する。なお、視線方向と注視位置の一方のみ検出されてもよい。
【００８８】
次に、ステップＳ１４でのエッジペアの検出処理について、複数の処理例を挙げる。
図１１，図１２は、エッジペア検出についての処理例１−１を示すフローチャートである。この図１１，図１２の処理は、図１０のステップＳ１４の処理に対応する。
【００８９】
また、図１１，図１２の処理では、エッジ部についてのエッジ情報が格納される第１スタックと、エッジペアについてのエッジペア情報が格納される第２スタックとが用いられる。第１スタックおよび第２スタックは、例えば、視線検出装置１００のＲＡＭ１０２の記憶領域として実装される。図１１の処理の開始時には、第１スタックおよび第２スタックには情報が格納されていない。
【００９０】
［ステップＳ３１］エッジ検出部１１４は、このステップＳ３１からステップＳ４０のループ端までの処理を、エッジ検出領域の一端から他端までの全体について実行する。
［ステップＳ３２］エッジ検出部１１４は、エッジ検出領域の他端側に向けて輝度差の算出処理を順次実行し、エッジ部を検出すると、次のステップＳ３３の処理を実行する。
【００９１】
［ステップＳ３３］エッジ検出部１１４は、検出されたエッジの位置が、角膜反射像の位置かを判定する。角膜反射像の位置の場合、ステップＳ３４の処理が実行され、角膜反射像の位置でない場合、ステップＳ３６の処理が実行される。
【００９２】
［ステップＳ３４］エッジ検出部１１４は、角膜反射像の前後の輝度差が所定の閾値以上かを判定する。輝度差が閾値以上の場合、エッジ検出部１１４は、角膜反射像の領域にエッジが存在すると判定し、ステップＳ３５の処理を実行する。一方、輝度差が閾値未満の場合、エッジ検出部１１４は、角膜反射像の領域にはエッジが存在しないと判定し、ステップＳ４０の処理が実行される。後者の場合、角膜反射像の領域は、エッジが存在しない平坦部とみなされて、処理が継続される。
【００９３】
［ステップＳ３５］エッジ検出部１１４は、角膜反射像の領域をエッジとみなし、ステップＳ３６の処理を実行する。
［ステップＳ３６］エッジ検出部１１４は、検出されたエッジの輝度変化の方向をチェックする。輝度が上昇する方向に変化した場合、ステップＳ３８の処理が実行され、輝度が低下する方向に変化した場合、ステップＳ３７の処理が実行される。
【００９４】
［ステップＳ３７］エッジの前後で輝度が低下している場合、瞳孔のエッジのうち、進行方向側のエッジの位置に到達していないと推定される。この場合、エッジ検出部１１４は、検出されたエッジについてのエッジ情報を第１スタックに登録する。エッジ情報には、検出されたエッジの位置と、エッジの前後の輝度値とが含まれる。
【００９５】
［ステップＳ３８］エッジの前後で輝度が上昇している場合、瞳孔のエッジのうち、進行方向側のエッジの位置に到達したか、その位置を過ぎていると推定される。この場合、エッジ検出部１１４は、第１スタックに登録されたエッジの中に、検出されたエッジとペア化可能なものがあるかを判定する。
【００９６】
この判定では、エッジ検出部１１４は、第１スタックに登録されたエッジの中から、輝度変化の方向が検出されたエッジについての輝度変化の方向と逆である（すなわち、輝度変化の方向が低下方向である）エッジを抽出する。エッジ検出部１１４は、抽出したエッジのエッジ情報と検出されたエッジのエッジ情報とを比較して、抽出したエッジの中から、次のような条件１〜３のうちの１つ、または２以上の所定数の条件を満たすエッジを、ペア化可能なエッジとして特定する。
【００９７】
（条件１）各エッジの前後の輝度値のうち、高輝度側の輝度値の差が一定値未満であり、かつ、低輝度側の輝度値の差が一定値未満である。
（条件２）抽出されたエッジの前後の輝度差と、検出されたエッジの前後の輝度差との差分が、一定値未満である。
【００９８】
（条件３）瞳孔エッジおよび虹彩エッジにおけるエッジ前後の輝度値として適切な輝度範囲があらかじめ規定され、抽出されたエッジおよび検出されたエッジのそれぞれの前後の輝度値が、瞳孔エッジまたは虹彩エッジについて規定された輝度範囲に含まれている。
【００９９】
エッジ検出部１１４は、ペア化可能なエッジがある場合、ステップＳ３９の処理を実行する。一方、エッジ検出部１１４は、ペア化可能なエッジがない場合、ステップＳ３７の処理を実行する。この場合、ステップＳ３７では、検出されたエッジについてのエッジ情報が第１スタックに登録される。
【０１００】
［ステップＳ３９］エッジ検出部１１４は、検出されたエッジと、ステップＳ３８で特定されたエッジとをエッジペアとし、そのエッジペアについてのエッジペア情報を第２スタックに登録する。エッジペア情報には、各エッジのエッジ情報と、エッジ検出領域において各エッジの間に断片的に存在するエッジのエッジ情報とが含まれる。後者のエッジ情報は、エッジペアとして登録されていないエッジのエッジ情報であり、第１スタックから抽出される。
【０１０１】
［ステップＳ４０］エッジ検出部１１４は、エッジ検出領域の末端までのエッジの探索が終了していない場合には、ステップＳ３１からの処理を再度実行する。一方、エッジ検出部１１４は、エッジ検出領域の末端までのエッジの探索が終了した場合、図１２のステップＳ４１の処理を実行する。
【０１０２】
［ステップＳ４１］エッジ検出部１１４は、第２スタックにエッジペアが登録されているかを判定する。登録されている場合、ステップＳ４３の処理が実行され、登録されていない場合、ステップＳ４２の処理が実行される。
【０１０３】
［ステップＳ４２］エッジ検出部１１４は、検出されたエッジペア数が０である旨を瞳孔中心検出部１１５に通知する。なお、この場合、瞳孔のエッジと虹彩のエッジの両方ともエッジ検出部１１４によって検出されておらず、瞳孔中心検出部１１５が瞳孔の輪郭および虹彩の輪郭を正常に検出できる可能性は低い。このため、瞳孔中心検出部１１５は、検出エラーの発生を表示装置１０４ａなどに出力して、視線検出処理を終了する。
【０１０４】
［ステップＳ４３］エッジ検出部１１４は、第２スタックにエッジペアが２組以上登録されており、かつ、１つのエッジペアに含まれる各エッジの間に、別のエッジペアに含まれる両方のエッジが存在するかを判定する。この条件が満たされる場合、ステップＳ４５の処理が実行され、条件が満たされない場合、ステップＳ４４の処理が実行される。
【０１０５】
［ステップＳ４４］エッジ検出部１１４は、検出されたエッジペア数が１である旨を瞳孔中心検出部１１５に通知する。また、エッジ検出部１１４は、検出された１組のエッジペアのエッジペア情報を、虹彩のエッジについての情報として瞳孔中心検出部１１５に通知する。なお、第２スタックにエッジペア情報が複数組登録されている場合には、エッジ検出部１１４は、エッジ間の距離が最も長いエッジペアのエッジペア情報を選択して通知する。
【０１０６】
上記の各通知を受けた瞳孔中心検出部１１５は、エッジ検出部１１４によって虹彩のエッジは検出されたが、瞳孔のエッジが検出されなかったと判定する。瞳孔中心検出部１１５は、図１０のステップＳ１５において、通知されたエッジペア情報に含まれるエッジ前後の輝度値を基に、その低輝度側の輝度を虹彩の輝度に設定し、高輝度側の輝度を強膜の輝度に設定する。
【０１０７】
［ステップＳ４５］エッジ検出部１１４は、検出されたエッジペア数が２である旨を瞳孔中心検出部１１５に通知する。また、エッジ検出部１１４は、ステップＳ４３の判定において条件を満たした２組のエッジペアを特定する。エッジ検出部１１４は、これらのエッジペアのうち、エッジ間の距離が長いエッジペアのエッジペア情報を、虹彩のエッジの情報として瞳孔中心検出部１１５に通知し、エッジ間の距離が短いエッジペアのエッジペア情報を、瞳孔のエッジの情報として瞳孔中心検出部１１５に通知する。
【０１０８】
上記の各通知を受けた瞳孔中心検出部１１５は、エッジ検出部１１４によって瞳孔のエッジと虹彩のエッジの両方が検出されたと判定する。瞳孔中心検出部１１５は、図１０のステップＳ１５において、瞳孔のエッジの情報として通知されたエッジペア情報に含まれるエッジ前後の輝度値を基に、その低輝度側の輝度を瞳孔の輝度に設定する。また、瞳孔中心検出部１１５は、虹彩のエッジの情報として通知されたエッジペア情報に含まれるエッジ前後の輝度値を基に、その低輝度側の輝度を虹彩の輝度に設定し、高輝度側の輝度を強膜の輝度に設定する。
【０１０９】
以上の処理例１−１では、ステップＳ４５の処理が実行された場合、暗瞳孔状態であると判定され、ステップＳ４４の処理が実行された場合、半明瞳孔状態であると判定される。処理例１−１では、視線検出装置１００は、エッジ検出領域における輝度差の検出によって瞳孔のエッジおよび虹彩のエッジを探索することで、半明瞳孔状態であるか否かを判定することができる。
【０１１０】
これにより、例えば、赤外カメラ１０７ｂとユーザの顔までの距離の推定結果に基づいて判定を行う方法と比較して、判定精度を向上させることができる。その理由は、赤外カメラ１０７ｂとユーザの顔までの距離の推定精度が低いことに加え、虹彩の輝度の個人差に関係なく、半明瞳孔状態であるか否かを判定できるからである。
【０１１１】
虹彩における赤外光の反射率、透過率、吸収率は、主に虹彩に含まれるメラニン量に依存し、メラニン量には個人差がある。このため、虹彩の輝度には個人差がある。このことから、赤外照明１０７ａと赤外カメラ１０７ｂとの距離が同一であっても、瞳孔と虹彩の輝度差や虹彩と強膜の輝度差は、人によって変わる。上記の処理例１−１によれば、瞳孔と虹彩の輝度差や虹彩と強膜の輝度差に個人差があっても、それに関係なく、半明瞳孔状態であるか否かを判定することができる。
【０１１２】
次に、図１３，図１４は、エッジペア検出についての処理例１−２を示すフローチャートである。この図１３，図１４の処理は、図１０のステップＳ１４の処理に対応する。
この処理例１−２では、エッジ検出領域上に角膜反射像が存在する場合、角膜反射像と検出された他のエッジとの位置関係に基づいて、角膜反射像の領域をエッジとみなすか否かを決定する点で、処理例１−１とは異なる。処理例１−２では、まず、図１３に示すように、図１１に示した処理のうちステップＳ３３〜Ｓ３５の処理が、ステップＳ３３ａの処理に置き換えられる。
【０１１３】
［ステップＳ３３ａ］エッジ検出部１１４は、検出されたエッジの位置が、角膜反射像の位置かを判定する。角膜反射像の位置の場合、ステップＳ４０の処理が実行される。この場合、角膜反射像の位置をエッジとみなすかの判定は、図１４の処理において行われる。一方、角膜反射像の位置でない場合、ステップＳ３６の処理が実行される。
【０１１４】
さらに、図１３に示す処理の実行後に、図１４に示す次のような処理が実行される。
［ステップＳ５１］エッジ検出部１１４は、第２スタックにエッジペアが登録されているかを判定する。登録されている場合、ステップＳ５６の処理が実行され、登録されていない場合、ステップＳ５２の処理が実行される。
【０１１５】
［ステップＳ５２］エッジ検出部１１４は、エッジ検出領域上に角膜反射像が存在する場合、その角膜反射像の位置をエッジとみなしたときに、そのエッジとペア化することが可能な他のエッジがあるかを判定する。
【０１１６】
例えば、虹彩エッジにおけるエッジ前後の輝度値として適切な輝度範囲と、虹彩エッジ間の距離として適切な距離範囲とが、あらかじめ規定されているものとする。エッジ検出部１１４は、第１スタックに登録されたエッジの中から、エッジ前後の輝度値が、規定された輝度範囲に含まれているエッジを抽出する。エッジ検出部１１４はさらに、抽出されたエッジと角膜反射像との距離が、規定された距離範囲に含まれているかを判定する。含まれている場合、エッジ検出部１１４は、角膜反射像の位置に虹彩エッジが存在すると判定する。この場合、角膜反射像の位置をエッジとみなしたときに、そのエッジと、抽出されたエッジとをペア化することが可能であると判定される。
【０１１７】
ペア化可能なエッジがあると判定された場合、ステップＳ５４の処理が実行され、ペア化可能なエッジがないと判定された場合、ステップＳ５３の処理が実行される。なお、エッジ検出領域上に角膜反射像が存在しない場合には、無条件でステップＳ５３の処理が実行される。
【０１１８】
［ステップＳ５３］エッジ検出部１１４は、図１２のステップＳ４２と同様に、検出されたエッジペア数が０である旨を瞳孔中心検出部１１５に通知する。
［ステップＳ５４］エッジ検出部１１４は、角膜反射像の位置をエッジとみなし、このエッジについての情報と、ステップＳ５２でペア化可能として抽出されたエッジのエッジ情報とを含むエッジペア情報を、第２スタックに登録する。
【０１１９】
［ステップＳ５５］図１２のステップＳ４４と同様の処理が実行される。すなわち、エッジ検出部１１４は、検出されたエッジペア数が１である旨を瞳孔中心検出部１１５に通知する。また、エッジ検出部１１４は、検出された１組のエッジペアのエッジペア情報を、虹彩のエッジについての情報として瞳孔中心検出部１１５に通知する。
【０１２０】
［ステップＳ５６］エッジ検出部１１４は、第２スタックにエッジペアが２組以上登録されており、かつ、１つのエッジペアに含まれる各エッジの間に、別のエッジペアに含まれる両方のエッジが存在するかを判定する。この条件が満たされる場合、ステップＳ６０の処理が実行され、条件が満たされない場合、ステップＳ５７の処理が実行される。
【０１２１】
［ステップＳ５７］エッジ検出部１１４は、エッジ検出領域上に角膜反射像が存在する場合、その角膜反射像の位置をエッジとみなしたときに、そのエッジとペア化することが可能な他のエッジがあるかを判定する。
【０１２２】
例えば、エッジ検出部１１４は、第２スタックに登録された１つのエッジペアに含まれる各エッジの間に、角膜反射像と、第１スタックに登録されているがペア化されていないエッジ（以下、「内側エッジ」と呼ぶ）とが含まれている場合、次のような処理を実行する。エッジ検出部１１４は、エッジペアに含まれるエッジのうち、内側エッジに近い一方のエッジと、内側エッジとの距離（第１の距離）を算出する。また、エッジ検出部１１４は、エッジペアに含まれる他方のエッジと角膜反射像との距離（第２の距離）を算出する。
【０１２３】
エッジ検出部１１４は、第１の距離と第２の距離とが所定の閾値以下であり、かつ、内側エッジおよび角膜反射像のそれぞれの前後の輝度値のうち、高輝度側の輝度値の差が一定値未満であり、かつ、低輝度側の輝度値の差が一定値未満である場合に、角膜反射像の位置に瞳孔エッジが存在すると判定する。この場合、角膜反射像の位置をエッジとみなしたときに、そのエッジと内側エッジとをペア化することが可能であると判定される。
【０１２４】
また、例えば、エッジ検出部１１４は、第２スタックに登録された１つのエッジペアに含まれる各エッジ間の領域を挟んで、一方の側に角膜反射像が存在し、他方の側に第１スタックに登録されているがペア化されていないエッジ（以下、「外側エッジ」と呼ぶ）が存在する場合、次のような処理を実行する。エッジ検出部１１４は、エッジペアに含まれるエッジのうち、外側エッジに近い一方のエッジと、外側エッジとの距離（第３の距離）を算出する。また、エッジ検出部１１４は、エッジペアに含まれる他方のエッジと角膜反射像との距離（第４の距離）を算出する。
【０１２５】
エッジ検出部１１４は、第３の距離と第４の距離とが所定の閾値以下であり、かつ、外側エッジおよび角膜反射像のそれぞれの前後の輝度値のうち、高輝度側の輝度値の差が一定値未満であり、かつ、低輝度側の輝度値の差が一定値未満である場合に、角膜反射像の位置に虹彩エッジが存在すると判定する。この場合、角膜反射像の位置をエッジとみなしたときに、そのエッジと外側エッジとをペア化することが可能であると判定される。
【０１２６】
ペア化可能なエッジがあると判定された場合、ステップＳ５８の処理が実行され、ペア化可能なエッジがないと判定された場合、ステップＳ５５の処理が実行される。なお、エッジ検出領域上に角膜反射像が存在しない場合には、無条件でステップＳ５５の処理が実行される。
【０１２７】
［ステップＳ５８］エッジ検出部１１４は、角膜反射像の位置をエッジとみなし、このエッジについての情報と、ステップＳ５７でペア化可能として抽出されたエッジのエッジ情報とを含むエッジペア情報を、第２スタックに登録する。
【０１２８】
［ステップＳ５９］この状態では、第２スタックにエッジペアが２組以上登録されている。エッジ検出部１１４は、第２スタックに登録されたエッジペアのうち、１つのエッジペアに含まれる各エッジの間に、別のエッジペアに含まれる両方のエッジが存在するかを判定する。この条件が満たされる場合、ステップＳ６０の処理が実行され、条件が満たされない場合、ステップＳ５５の処理が実行される。
【０１２９】
［ステップＳ６０］エッジ検出部１１４は、図１２のステップＳ４５と同様に、検出されたエッジペア数が２である旨を瞳孔中心検出部１１５に通知する。また、エッジ検出部１１４は、ステップＳ５６またはステップＳ５９の判定において条件を満たした２組のエッジペアを特定する。エッジ検出部１１４は、これらのエッジペアのうち、エッジ間の距離が長いエッジペアのエッジペア情報を、虹彩のエッジの情報として瞳孔中心検出部１１５に通知し、エッジ間の距離が短いエッジペアのエッジペア情報を、瞳孔のエッジの情報として瞳孔中心検出部１１５に通知する。
【０１３０】
以上の処理例１−２によれば、検出されたエッジと角膜反射像との位置関係に基づいて、角膜反射像をエッジとみなすか否かが判定されることで、処理例１−１と比較して、角膜反射像と瞳孔エッジまたは虹彩エッジとが重なった場合でも、重なった部分に該当エッジが存在することを精度よく判別することができる。その結果、半明瞳孔状態が発生したか否かの判定精度を向上させることができる。
【０１３１】
なお、処理例１−１，１−２では、眼球領域において虹彩の両側に強膜が現れていることを利用して、虹彩エッジが検出されている。しかし、眼球が横方向を向いている場合には、虹彩を挟んだ強膜の領域のうち一方だけが、眼球領域に現れている場合がある。もしエッジペアが１組だけ検出されている場合、眼球が横方向に向いている場合には、検出されたエッジペアは瞳孔エッジである可能性もある。このように、エッジペアが１組だけ検出された場合に、そのエッジペアが虹彩エッジか瞳孔エッジかわからないことがあり得る。
【０１３２】
これに対して、エッジ検出部１１４は、エッジペアが１組だけ検出されている場合に、図１０のステップＳ１５において、次のような方法で瞳孔、虹彩および強膜の各輝度を設定してもよい。
【０１３３】
エッジ検出部１１４は、ペア化されたエッジをそれぞれ含むエッジ線（輪郭）を眼球領域から検出する。エッジ検出部１１４は、検出したエッジ線の内部領域を、当該内部領域におけるエッジ線近傍の輝度によって塗りつぶす。
【０１３４】
エッジ検出部１１４は、塗りつぶした領域が円形になっていれば、その領域が瞳孔であり、選択したエッジが瞳孔エッジであると判定できる。この場合、エッジ検出部１１４は、選択したエッジの低輝度側の輝度を瞳孔の輝度に、高輝度側の輝度を虹彩の輝度に設定する。また、エッジ検出部１１４は、エッジ検出領域を瞳孔エッジから瞳孔の外側に走査し、輝度が所定値以上高くなった位置を虹彩エッジと判定できる。この場合、判定された虹彩エッジの外側の輝度が、強膜の輝度に設定される。
【０１３５】
一方、塗りつぶされた領域が円形以外（例えば、右側または左側が凸状で、円の上下が瞼に隠れている形状）の場合、半明瞳孔状態であって、その領域が虹彩である可能性が高い。この場合、エッジ検出部１１４は、エッジ線の内部領域の輝度を虹彩の輝度に、外部領域の輝度を強膜の輝度に設定する。また、瞳孔の輝度は、虹彩の輝度と同じ値に設定される。
【０１３６】
次に、図１０のステップＳ１６での瞳孔の中心位置の検出処理について、複数の処理例を挙げる。
図１５は、瞳孔の中心位置検出処理についての処理例２−１を示すフローチャートである。この図１５の処理は、図１０のステップＳ１６の処理に対応する。
【０１３７】
［ステップＳ７１］瞳孔中心検出部１１５は、図１０のステップＳ１５でエッジ検出部１１４から通知された瞳孔、虹彩、強膜の各輝度に基づいて、瞳孔−虹彩間の輝度差Ｄｐｉと、虹彩−強膜間の輝度差Ｄｉｓを算出する。
【０１３８】
［ステップＳ７２］瞳孔中心検出部１１５は、輝度差Ｄｐｉ，Ｄｉｓに基づいて、瞳孔の輪郭を精度よく検出できる状態か否か、すなわち、暗瞳孔状態であるか否かを判定する。例えば、瞳孔中心検出部１１５は、Ｄｐｉ＞Ｄｉｓ−Ａという式を満たす場合に、瞳孔の輪郭を精度よく検出できる状態であると判定する。なお、Ａは、所定のバイアス値であり、０より大きい値が設定される。
【０１３９】
瞳孔の輪郭を精度よく検出できる状態である場合、ステップＳ７３の処理が実行され、そうでない場合、ステップＳ７４の処理が実行される。
このステップＳ７２では、エッジ検出部１１４によって瞳孔のエッジが検出されていない場合には、輝度差Ｄｐｉは０となり、瞳孔の輪郭を精度よく検出できる状態でないと判定される。また、エッジ検出部１１４によって瞳孔のエッジが検出された場合でも、虹彩−強膜間の輝度差Ｄｉｓより瞳孔−虹彩間の輝度差Ｄｐｉの方が十分大きくない場合には、瞳孔の輪郭を精度よく検出できる状態でないと判定される。
【０１４０】
［ステップＳ７３］瞳孔中心検出部１１５は、瞳孔の輪郭検出用のテンプレートを用いて、眼球領域から瞳孔の輪郭を検出する。瞳孔中心検出部１１５は、検出された瞳孔の輪郭に基づいて、瞳孔の中心位置を検出する。
【０１４１】
［ステップＳ７４］瞳孔中心検出部１１５は、虹彩の輪郭検出用のテンプレートを用いて、眼球領域から虹彩の輪郭を検出する。瞳孔中心検出部１１５は、検出された虹彩の輪郭に基づいて、瞳孔の中心位置を検出する。
【０１４２】
以上の処理例２−１では、エッジ検出部１１４の検出結果に基づく輝度差Ｄｐｉ，Ｄｉｓに応じて、瞳孔の輪郭に基づいて瞳孔の中心位置を検出する処理と、虹彩の輪郭に基づいて瞳孔の中心位置を検出する処理とが切り替えられる。
【０１４３】
なお、ステップＳ７２では、例えば、エッジ検出部１１４によって瞳孔のエッジが検出された場合、ステップＳ７３の処理を実行し、検出されていない場合、ステップＳ７４の処理を実行するようにしてもよい。
【０１４４】
図１６は、瞳孔の中心位置検出処理についての処理例２−２を示すフローチャートである。この図１６の処理は、図１０のステップＳ１６の処理に対応する。
［ステップＳ８１］瞳孔中心検出部１１５は、虹彩の輪郭検出用のテンプレートを用いて、眼球領域から虹彩の輪郭を検出する。瞳孔中心検出部１１５は、検出された虹彩の輪郭に基づいて、瞳孔の中心位置を検出する。
【０１４５】
［ステップＳ８２］瞳孔中心検出部１１５は、瞳孔の輪郭検出用のテンプレートを用いて、眼球領域から瞳孔の輪郭を検出する。瞳孔中心検出部１１５は、検出された瞳孔の輪郭に基づいて、瞳孔の中心位置を検出する。
【０１４６】
［ステップＳ８３］瞳孔中心検出部１１５は、図１０のステップＳ１５でエッジ検出部１１４から通知された瞳孔、虹彩、強膜の各輝度に基づいて、瞳孔−虹彩間の輝度差Ｄｐｉと、虹彩−強膜間の輝度差Ｄｉｓを算出する。
【０１４７】
［ステップＳ８４］瞳孔中心検出部１１５は、ステップＳ８１，Ｓ８２のそれぞれの検出結果についての尤度を算出する。例えば、瞳孔中心検出部１１５は、ステップＳ８１，Ｓ８２で虹彩、瞳孔の輪郭が検出された際のテンプレートとのマッチング評価値や、輪郭が検出された際に使用されたテンプレートにあらかじめ付与された尤度に基づいて、各検出結果についての尤度を算出する。なお、テンプレートとのマッチング評価値は、例えば、テンプレートとの一致度や、検出された輪郭の内部の平均輝度とあらかじめ決められた輝度との差分などに基づいて算出される。
【０１４８】
さらに、瞳孔中心検出部１１５は、それぞれの尤度に対して、輝度差Ｄｐｉ，Ｄｉｓに応じた重み付けを行う。この際、瞳孔中心検出部１１５は、例えば、輝度差Ｄｉｓより輝度差Ｄｐｉの方が大きいほど、ステップＳ８２での検出結果についての尤度に対する重みを大きくする。なお、この判定で用いられる輝度差Ｄｉｓと輝度差Ｄｐｉとの比は、瞳孔のエッジが検出されたかを連続的な評価値として示しており、この評価値はすなわち、瞳孔の輪郭をどの程度の精度で検出できるかを示す。
【０１４９】
［ステップＳ８５］瞳孔中心検出部１１５は、ステップＳ８１，Ｓ８２の各検出結果のうち、尤度が大きい方を最終的な検出結果として出力する。なお、このステップＳ８５では、各検出結果を尤度とともに出力してもよい。
【０１５０】
以上の処理例２−２では、エッジ検出部１１４の検出結果に基づく輝度差Ｄｐｉ，Ｄｉｓに応じて、瞳孔の輪郭に基づく瞳孔の中心位置の検出結果と、虹彩の輪郭に基づく瞳孔の中心位置の検出結果のそれぞれの尤度に対して重みが与えられる。
【０１５１】
次に、瞳孔の中心位置検出処理についての処理例２−３について説明する。
まず、図１７は、テンプレートと尤度との関係の例を示す図である。瞳孔の輪郭検出用のテンプレートには、テンプレートに含まれる円の半径ごとにあらかじめ尤度が対応づけられている。図１７のグラフ２８１に示す関数Ｒｐｕｐｉｌの曲線は、瞳孔の輪郭検出用のテンプレートに含まれる円の半径と、尤度との関係を示す。例えば、眼球領域の画像といずれかのテンプレートとが類似すると判定されて瞳孔の輪郭が検出されたとき、使用されたテンプレートに対応づけられた尤度は、その輪郭の検出結果の信頼度を示す。
【０１５２】
また、虹彩の輪郭検出用のテンプレートにも同様に、テンプレートに含まれる円の半径ごとにあらかじめ尤度が対応づけられている。図１７のグラフ２８１に示す関数Ｒｉｒｉｓの曲線は、虹彩の輪郭検出用のテンプレートに含まれる円の半径と、尤度との関係を示す。虹彩より瞳孔の方が半径が小さいことから、グラフ２８１に示すように、瞳孔の輪郭検出用のテンプレートの方が、円の半径が小さい領域における尤度が高く設定されている。
【０１５３】
瞳孔中心検出部１１５は、例えば、エッジ検出部１１４の検出結果に基づく輝度差Ｄｐｉ，Ｄｉｓから算出される関数ｆ（Ｗ）にしたがって、関数Ｒｐｕｐｉｌおよび関数Ｒｉｒｉｓに対して重み付けを行う。図１７のグラフ２８２は、関数ｆ（Ｗ）による重み付けが行われた後の関数Ｒｐｕｐｉｌおよび関数Ｒｉｒｉｓの各曲線を示す。関数ｆ（Ｗ）は、例えば、輝度差Ｄｉｓより輝度差Ｄｐｉの方が大きいほど、関数Ｒｐｕｐｉｌへの重みを大きくするとともに、関数Ｒｉｒｉｓへの重みを小さくする。グラフ２８２は、エッジ検出部１１４により瞳孔エッジが検出されず、輝度差Ｄｉｓより輝度差Ｄｐｉの方が小さい場合の例であり、関数Ｒｐｕｐｉｌの最大出力より関数Ｒｉｒｉｓの最大出力の方が大きくなっている。この場合、瞳孔の輪郭に基づく瞳孔の中心位置の検出結果より、虹彩の輪郭に基づく瞳孔の中心位置の検出結果の方が、尤度が大きくなることが多くなる。
【０１５４】
また、瞳孔中心検出部１１５は、重み付けが行われた後の関数Ｒｐｕｐｉｌおよび関数Ｒｉｒｉｓに基づいて、輪郭検出で使用するテンプレートを制限してもよい。例えば、瞳孔中心検出部１１５は、重み付けが行われた後の関数Ｒｐｕｐｉｌおよび関数Ｒｉｒｉｓの各出力と、所定の閾値Ｔｈとを比較する。瞳孔中心検出部１１５は、関数Ｒｐｕｐｉｌに基づき、瞳孔の輪郭検出用のテンプレートのうち、尤度が閾値Ｔｈより大きいテンプレートだけを使用して瞳孔の輪郭を検出する。また、瞳孔中心検出部１１５は、関数Ｒｉｒｉｓに基づき、虹彩の輪郭検出用のテンプレートのうち、尤度が閾値Ｔｈより大きいテンプレートだけを使用して虹彩の輪郭を検出する。
【０１５５】
このような処理により、エッジ検出部１１４によって瞳孔のエッジが検出されている場合には、瞳孔の輪郭検出用のテンプレートの方が虹彩の輪郭検出用のテンプレートより相対的に多く使用されて輪郭検出が行われる。一方、エッジ検出部１１４によって瞳孔のエッジが検出されていない場合には、虹彩の輪郭検出用のテンプレートの方が瞳孔の輪郭検出用のテンプレートより相対的に多く使用されて輪郭検出が行われる。グラフ２８２の例では、関数Ｒｐｕｐｉｌの最大出力は閾値Ｔｈ以下であるため、実質的に虹彩の輪郭検出だけが行われ、瞳孔の輪郭検出は行われなくなる。
【０１５６】
図１８は、瞳孔の中心位置検出処理についての処理例２−３を示すフローチャートである。この図１８の処理は、図１０のステップＳ１６の処理に対応する。
この図１８では、重み付けが行われた後の関数Ｒｐｕｐｉｌおよび関数Ｒｉｒｉｓに基づいて、輪郭検出で使用されるテンプレートが制限される場合について示す。
【０１５７】
［ステップＳ９１］瞳孔中心検出部１１５は、虹彩の輪郭検出用の各テンプレートにあらかじめ対応づけられた尤度に対して、エッジ検出部１１４によるエッジ検出結果に応じた重み付けを行う。例えば、瞳孔中心検出部１１５は、輝度差Ｄｉｓより輝度差Ｄｐｉの方が大きいほど、重みを小さくする。
【０１５８】
［ステップＳ９２］瞳孔中心検出部１１５は、虹彩の輪郭検出用のテンプレートの中から、ステップＳ９１で重み付けが行われた後の尤度が閾値Ｔｈより大きいテンプレートを、輪郭検出で使用するテンプレートとして決定する。
【０１５９】
［ステップＳ９３］瞳孔中心検出部１１５は、ステップＳ９２で決定されたテンプレートを用いて、眼球領域から虹彩の輪郭を検出する。瞳孔中心検出部１１５は、検出された虹彩の輪郭に基づいて、瞳孔の中心位置を検出する。
【０１６０】
［ステップＳ９４］瞳孔中心検出部１１５は、瞳孔の輪郭検出用の各テンプレートにあらかじめ対応づけられた尤度に対して、エッジ検出部１１４によるエッジ検出結果に応じた重み付けを行う。例えば、瞳孔中心検出部１１５は、輝度差Ｄｉｓより輝度差Ｄｐｉの方が大きいほど、重みを大きくする。
【０１６１】
［ステップＳ９５］瞳孔中心検出部１１５は、瞳孔の輪郭検出用のテンプレートの中から、ステップＳ９４で重み付けが行われた後の尤度が閾値Ｔｈより大きいテンプレートを、輪郭検出で使用するテンプレートとして決定する。
【０１６２】
［ステップＳ９６］瞳孔中心検出部１１５は、ステップＳ９５で決定されたテンプレートを用いて、眼球領域から瞳孔の輪郭を検出する。瞳孔中心検出部１１５は、検出された瞳孔の輪郭に基づいて、瞳孔の中心位置を検出する。
【０１６３】
［ステップＳ９７］瞳孔中心検出部１１５は、ステップＳ９３，Ｓ９６のそれぞれの検出結果についての尤度を算出する。例えば、瞳孔中心検出部１１５は、ステップＳ９３，Ｓ９６で虹彩、瞳孔の輪郭が検出された際のテンプレートとのマッチング評価値や、輪郭が検出された際に使用されたテンプレートにあらかじめ付与された尤度に基づいて、各検出結果についての尤度を算出する。テンプレートに付与された尤度としては、ステップＳ９１，Ｓ９４において重み付けされた尤度が用いられる。
【０１６４】
瞳孔中心検出部１１５は、ステップＳ９３，Ｓ９６の各検出結果のうち、尤度が大きい方を最終的な検出結果として出力する。なお、このステップＳ９７では、各検出結果を尤度とともに出力してもよい。
【０１６５】
以上の図１８の処理によれば、テンプレートに対応づけられた尤度が、エッジ検出部１１４の検出結果に応じて増減される。そして、輪郭検出の際に使用されるテンプレートが、尤度の高いテンプレートに限定されるので、テンプレートと画像とのマッチング回数が減少する。これにより、半明瞳孔状態が発生した場合でも、輪郭検出精度を維持しながら、検出処理負荷を軽減することができる。
【０１６６】
なお、上記の処理例２−３では、テンプレートを用いて瞳孔および虹彩の輪郭を検出する例を示したが、他の例として、ハフ変換による円検出処理によって瞳孔および虹彩の輪郭を検出する方法を適用することも可能である。この場合、円検出処理で検出対象とする円の直径ごとに、尤度が対応づけられる。そして、その尤度に対して、上記のようにエッジ検出部１１４によるエッジ検出結果に応じた重み付けが行われればよい。
【０１６７】
また、他の例として、瞳孔の輪郭検出と虹彩の輪郭検出のそれぞれの処理において、暗瞳孔状態に対応する画像特徴量と半明瞳孔状態に対応する画像特徴量とが用いられてもよい。各画像特徴量は、例えば、暗瞳孔状態での撮像画像、半明瞳孔状態での撮像画像から学習されて生成される。このような例では、画像特徴量ごとに尤度が対応づけられ、エッジ検出部１１４によるエッジ検出結果に応じて、尤度に対する重み付けが行われてもよい。
【０１６８】
なお、上記の各実施の形態に示した装置（視線検出システム１に含まれる装置、視線検出装置１００）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１６９】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１７０】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【符号の説明】
【０１７１】
１  視線検出システム
１ａ  境界検出部
１ｂ  中心位置検出部
１ｃ  視線検出部
１０  眼領域
１１  瞳孔
１１ａ，１１ｂ  境界
１２  虹彩
１３  検出領域
【図１】
0006536324.tif 000002
【図２】
0006536324.tif 000003
【図３】
0006536324.tif 000004
【図４】
0006536324.tif 000005
【図５】
0006536324.tif 000006
【図６】
0006536324.tif 000007
【図７】
0006536324.tif 000008
【図８】
0006536324.tif 000009
【図９】
0006536324.tif 000010
【図１０】
0006536324.tif 000011
【図１１】
0006536324.tif 000012
【図１２】
0006536324.tif 000013
【図１３】
0006536324.tif 000014
【図１４】
0006536324.tif 000015
【図１５】
0006536324.tif 000016
【図１６】
0006536324.tif 000017
【図１７】
0006536324.tif 000018
【図１８】
0006536324.tif 000019