ユーザの顔を照明する光源と、前記顔を撮影した画像を生成する撮像部と、前記画像から前記ユーザの少なくとも一方の眼の瞳孔を検出して該瞳孔のサイズを求める瞳孔サイズ検出部と、前記画像から前記光源のプルキンエ像を検出するプルキンエ像検出部と、前記画像上での前記ユーザの瞳孔と当該プルキンエ像の位置関係に基づいて前記ユーザの視線方向を検出する第1視線検出部と、前記画像上の前記瞳孔の重心または前記画像上の前記ユーザの顔向きに基づいて前記ユーザの視線方向を検出する第2視線検出部と、前記瞳孔のサイズが基準値以上である場合、前記第1視線検出部に前記ユーザの視線方向を検出させ、一方、前記瞳孔のサイズが前記基準値未満である場合、前記第2視線検出部に前記ユーザの視線方向を検出させる選択部と、を有する視線検出装置。前記基準値は、前記ユーザが注視対象物の一端から他端まで視線を移動させたときの前記画像上での前記プルキンエ像の移動量に対応する値である、請求項1に記載の視線検出装置。光源により照明されたユーザの顔を撮影した画像を生成し、前記画像から前記ユーザの少なくとも一方の眼の瞳孔を検出して該瞳孔のサイズを求め、前記瞳孔のサイズを基準値と比較し、前記瞳孔のサイズが前記基準値以上である場合、前記画像から前記光源のプルキンエ像を検出し、前記画像上での前記ユーザの瞳孔と当該プルキンエ像の位置関係に基づいて前記ユーザの視線方向を検出し、一方、前記瞳孔のサイズが前記所定の基準値未満である場合、前記画像上の前記瞳孔の重心または前記画像上の前記ユーザの顔向きに基づいて前記ユーザの視線方向を検出する、ことを含む視線検出方法。しかしながら、上記の公知技術では、どのような照明条件下でもプルキンエ像は検出可能であることが前提となっている。しかし、実際の使用環境においては、光源の輝度が環境光の輝度に対して不足していると、視線検出装置は、プルキンエ像を検出できないことがある。このような場合、プルキンエ像に基づいて視線方向を検出する視線検出装置は、ユーザの視線方向を検知することができなくなる。そこで本明細書は、周囲環境の明るさによらずにユーザの視線方向を検出できる視線検出装置を提供することを目的とする。一つの実施形態によれば、視線検出装置が提供される。この視線検出装置は、ユーザの顔を照明する光源と、ユーザの顔を撮影した画像を生成する撮像部と、画像からユーザの少なくとも一方の眼の瞳孔を検出して瞳孔のサイズを求める瞳孔サイズ検出部と、画像から光源のプルキンエ像を検出するプルキンエ像検出部と、画像上でのユーザの瞳孔とプルキンエ像の位置関係に基づいてユーザの視線方向を検出する第1視線検出部と、画像上の瞳孔の重心または画像上のユーザの顔向きに基づいてユーザの視線方向を検出する第2視線検出部と、瞳孔のサイズが基準値以上である場合、第1視線検出部にユーザの視線方向を検出させ、一方、瞳孔のサイズがその基準値未満である場合、第2視線検出部にユーザの視線方向を検出させる選択部とを有する。本発明の目的及び利点は、請求項において特に指摘されたエレメント及び組み合わせにより実現され、かつ達成される。上記の一般的な記述及び下記の詳細な記述の何れも、例示的かつ説明的なものであり、請求項のように、本発明を限定するものではないことを理解されたい。本明細書に開示された視線検出装置は、周囲環境の明るさによらずにユーザの視線方向を検出できる。以下、図を参照しつつ、一つの実施形態による、視線検出装置について説明する。上述したように、ユーザの周囲の環境が明るい場合には、ユーザの眼を含む顔の少なくとも一部を撮影した画像上でプルキンエ像を識別することが困難になる場合がある。また一般に、ユーザの周囲の環境が明るいと、瞳孔が小さくなる。そして瞳孔が小さくなると、ユーザの視線方向によっては、プルキンエ像が瞳孔と重ならなくなり、さらにプルキンエ像の検出が困難となることがある。そこでこの視線検出装置は、ユーザの眼を含む顔の少なくとも一部を撮影した画像を解析することで瞳孔のサイズを求める。そしてこの視線検出装置は、瞳孔のサイズが一定の基準値よりも小さい場合、プルキンエ像を利用しない方法によって視線方向を検出し、一方、瞳孔のサイズがその基準値以上である場合、プルキンエ像と瞳孔の相対的な位置の差に基づいて視線方向を検出する。本実施形態による視線検出装置は、ユーザの視線方向を利用する様々な装置に実装される。例えば、視線検出装置は、携帯端末または車載運転支援装置に実装される。視線検出装置が携帯端末に実装される場合、例えば、携帯端末は、視線検出装置から受け取ったユーザの視線方向に関する情報に基づいて、携帯端末が有するディスプレイ上でユーザが注視する位置を特定し、その位置に表示されたアイコンに応じた処理を実行する。また、視線検出装置が車載運転支援装置に実装される場合、例えば、その運転支援装置は、視線検出装置から受け取ったユーザの視線方向に関する情報に基づいて、ユーザの視線方向が車両前方の所定範囲から外れているか否か判定する。そして、車両が前進している間の一定期間に渡ってユーザの視線方向がその所定範囲から外れていれば、運転支援装置は、ユーザが余所見していると判定し、スピーカなどを通じてユーザに警報音を発する。図1は、一つの実施形態による視線検出装置のハードウェア構成図である。視線検出装置1は、光源2と、カメラ3と、インターフェース部4と、メモリ5と、制御部6とを有する。なお、図1は、視線検出装置1が有する構成要素を説明するための図であり、視線検出装置1の各構成要素の実際の配置を表した図ではないことに留意されたい。例えば、視線検出装置1が有する各構成要素は、一つの筺体内に収容されていてもよく、一部の構成要素が他の構成要素とは別個に配置されてもよい。例えば、視線検出装置1が車載運転支援装置に実装される場合、光源2は、インスツルメントパネルまたは車室内前方の天井付近においてユーザへ向けて光を発するように取り付けられる。またカメラ3も、例えば、インスツルメントパネルまたは車室内前方の天井付近に、ユーザの方を向けて取り付けられる。そして光源2及びカメラ3は、信号線を介して、インターフェース部4、メモリ5及び制御部6が実装され、インスツルメントパネルの裏側に配置された回路基板と接続されてもよい。あるいは、視線検出装置1が携帯端末に組み込まれる場合、光源2及びカメラ3は、携帯端末の筺体内に、例えば、ディスプレイの上端近傍に配置される。光源2は、ユーザの顔、特に眼及びその周囲を照明する。そのため、光源2は、例えば、少なくとも一つの赤外発光ダイオードと、制御部6からの制御信号に応じて、赤外発光ダイオードに図示しない電源からの電力を供給する駆動回路とを有する。そして光源2は、制御部6から光源を点灯させる制御信号を受信している間、照明光を発する。なお、視線検出装置1が有する光源2の数は、1個に限られず、複数個であってもよい。カメラ3は、撮像部の一例であり、ユーザの顔が写った画像を生成する。そのために、カメラ3は、光源2の光に感度を持つ2次元状に配列された固体撮像素子を有するイメージセンサと、そのイメージセンサ上にユーザの顔の像を結像する撮像光学系を有する。カメラ3は、虹彩による反射像及び光源2以外の光源からの光の角膜反射像が検出されることを抑制するために、イメージセンサと撮像光学系の間に、可視光カットフィルタをさらに有してもよい。またカメラ3は、画像上で、ユーザの角膜に光源2の像が写るように、例えば、光源2と近接して配置される。また、画像が光源2のプルキンエ像を識別できる程度の解像度を有するように、カメラ3のイメージセンサの画素数は、例えば、100万、200万、あるいは400万とすることができる。またイメージセンサにより生成される画像はカラー画像であり、画素ごとに赤色、緑色及び青色の3色の成分を持つ。各色成分は、例えば、0~255の何れかの値をとり、色成分値が大きいほど、その色の輝度が高い。あるいは、イメージセンサにより生成される画像は、光の強度が強いほど各画素の輝度が高くなるモノクロ画像であってもよい。カメラ3は、視線検出処理が実行されている間、制御部6から通知された所定の露出条件に従って、一定周期でユーザの顔を撮影することにより、ユーザの顔が写った画像を生成する。カメラ3は、画像を生成する度に、その画像を制御部6へ出力する。インターフェース部4は、視線検出装置1を、他の機器、例えば、視線検出装置1が実装された装置と接続するためのインターフェース回路を有する。例えば、視線検出装置1が車載運転支援装置に実装されている場合、インターフェース部4は、例えば、コントロールエリアネットワークに準じた通信回線を介して信号を送信または受信するための回路を有する。そしてインターフェース部4は、例えば、制御部6から受け取った、ユーザの視線方向に関する情報を、CANを介して視線検出装置1と接続されている車載運転支援装置の制御基板へ送信する。メモリ5は、例えば、読み書き可能な不揮発性の半導体メモリを有する。そしてメモリ5は、制御部6上で実行される視線検出処理のプログラムを記憶する。またメモリ5は、例えば、プルキンエ像の重心に対する瞳孔重心の相対的な位置とユーザの視線方向との関係を表す視線方向参照テーブルなど、ユーザの視線方向を検出するために利用される各種のデータを記憶する。制御部6は、一つまたは複数のプロセッサ及びその周辺回路を有し、視線検出装置1の各部と信号線を通じて接続されている。そして制御部6は、視線検出装置1の各部へ信号線を通じて制御信号を送信することで視線検出装置1の各部を制御する。制御部6は、ユーザの視線方向の情報を用いるアプリケーションが、視線検出装置1が実装されている装置で実行されている間、視線検出処理を実行する。また制御部6は、視線検出装置1の起動時、あるいは上記のようなアプリケーションの起動時など、特定のタイミングにおいてキャリブレーション処理を実行する。図2は、制御部6の機能ブロック図である。制御部6は、光源制御部11と、カメラ制御部12と、顔検出部13と、瞳孔サイズ検出部14と、視線検出方法選択部15と、プルキンエ像検出部16と、第1視線検出部17と、第2視線検出部18と、キャリブレーション部19とを有する。制御部6が有するこれらの各部は、制御部6が有するプロセッサ上で実行されるコンピュータプログラムにより実現される機能モジュールである。また制御部6が有するこれらの各部は、それぞれ制御部6が有するプロセッサとは別個の回路として形成されてもよい。あるいは、制御部6が有するこれらの各部は、その各部に対応する回路が集積された一つの集積回路として視線検出装置1に実装されてもよい。光源制御部11は、光源2を点灯または消灯させる。光源制御部11は、例えば、視線検出処理またはキャリブレーション処理の実行中、光源2を点灯させる。また光源制御部11は、光源2が複数含まれる場合、同時に2個以上の光源が点灯するように各光源へ制御信号を送信してもよい。同時に複数の光源が点灯すると、プルキンエ像にも点灯している複数の光源の像が含まれるので、視線検出装置1は、画像上での輝点の配置パターンが、実際に点灯している光源の配置パターンと一致するか否か調べることができる。そのため、視線検出装置1は、室内灯または太陽など、他の光源の像と視線検出装置1が有する光源の像とを識別し易くなる。カメラ制御部12は、視線検出処理またはキャリブレーション処理の実行中において、カメラ3が撮影するタイミング及び露出条件を制御する。カメラ制御部12は、光源制御部11から光源2が点灯したことを通知されると、露出条件をカメラ3に通知する。なお、露出条件には、例えば、シャッタ速度及びF値が含まれる。またカメラ制御部12は、視線検出処理が開始されると、カメラ3へ撮影を開始させることを指示する制御信号を送信する。一方、カメラ制御部12は、カメラ3から画像を受け取る度に、その画像を一旦メモリ5に記憶させる。顔検出部13は、視線検出処理またはキャリブレーション処理の実行中において、制御部6がカメラ3から画像を受け取る度に、その画像上でユーザの顔が写っている領域を検出する。本実施形態では、撮影時において、ユーザの顔は光源2からの赤外光で照明されており、赤外光に対する肌の反射率は比較的高い例えば、肌の反射率は近赤外の波長域で数10ので、画像上で顔の肌の部分が写っている画素の輝度は高い。一方、画像上で髪の毛またはユーザの背後の領域は赤外光に対する反射率が低いかまたは光源から遠いため、髪の毛またはユーザの背後の領域が写っている画素の輝度は、相対的に低くなる。そこで、顔検出部13は、画像の各画素の値がRGB表色系により表されているカラー画像である場合、各画素の値をYUV表色系により表される値に変換する。そして顔検出部13は、各画素の輝度成分Y成分の値が所定の閾値以上の画素を、顔が写っている可能性がある顔領域候補画素として抽出する。なお、画像の各画素の値が輝度を表すモノクロ画像である場合、顔検出部13は、各画素の値を所定の閾値と比較する。所定の閾値は、例えば、画像上の輝度成分の最大値に08を乗じた値に設定される。また、画像上でユーザの顔が占める領域は比較的大きく、かつ、画像上で顔が占める領域の大きさもある程度推定される。そこで顔検出部13は、顔領域候補画素に対してラベリング処理を行って、互いに隣接している顔領域候補画素の集合を顔候補領域とする。そして顔検出部13は、顔候補領域の大きさがユーザの顔の大きさに相当する基準範囲に含まれているか否か判定する。顔候補領域の大きさがユーザの顔の大きさに相当する基準範囲に含まれていれば、顔検出部13はその顔候補領域をユーザの顔が写っている顔領域と判定する。なお、顔候補領域の大きさは、例えば、顔候補領域の水平方向の最大幅の画素数で表される。この場合、基準範囲は、例えば、画像の水平方向画素数の14以上~23以下に設定される。あるいは、顔候補領域の大きさは、例えば、顔候補領域に含まれる画素数で表されてもよい。この場合、基準範囲は、例えば、画像全体の画素数の116以上~49以下に設定される。顔検出部13は、顔候補領域の大きさだけでなく、顔候補領域の形状も、顔候補領域を顔領域と判定するための判定条件に加えてもよい。人の顔は、一般に略楕円形状を有している。そこで顔検出部13は、例えば、顔候補領域の大きさが上記の基準範囲に含まれ、かつ、顔候補領域の円形度が、一般的な顔の輪郭に相当する所定の閾値以上である場合に顔候補領域を顔領域としてもよい。なお顔検出部13は、顔候補領域の輪郭上に位置する画素の合計を顔候補領域の周囲長として求め、顔候補領域内の総画素数に4πを乗じた値を周囲長の2乗で除することにより円形度を算出できる。あるいは、顔検出部13は、顔候補領域の輪郭上の各画素の座標を楕円方程式に当てはめて最小二乗法を適用することにより、顔候補領域を楕円近似してもよい。そして顔検出部13は、その楕円の長軸と短軸の比が一般的な顔の長軸と短軸の比の範囲に含まれる場合に、顔候補領域を顔領域としてもよい。なお、顔検出部13は、楕円近似により顔候補領域の形状を評価する場合、画像の各画素の輝度成分に対して近傍画素間演算を行ってエッジに相当するエッジ画素を検出してもよい。この場合、顔検出部13は、エッジ画素を例えばラベリング処理を用いて連結し、一定の長さ以上に連結されたエッジ画素を顔候補領域の輪郭とする。なお、顔検出部13は、画像上に写っている顔の領域を検出する他の様々な方法の何れかに従って顔領域を検出してもよい。例えば、顔検出部13は、顔候補領域と一般的な顔の形状に相当するテンプレートとの間でテンプレートマッチングを行って、顔候補領域とテンプレートとの一致度を算出し、その一致度が所定値以上である場合に、顔候補領域を顔領域と判定してもよい。顔検出部13は、顔領域を抽出できると、顔領域を表す情報を生成する。例えば、顔領域を表す情報は、画像と同一のサイズを有し、かつ顔領域内の画素と顔領域外の画素とが異なる画素値を持つ2値画像とすることができる。そして顔検出部13は、顔領域を表す情報を瞳孔サイズ検出部14、プルキンエ像検出部16及び第2視線検出部18へ渡す。図3aは周囲の環境が明るい状態でユーザの顔を撮影したときの画像上の眼及びその周囲の領域の模式図である。この場合、画像300では、ユーザの周囲が明るいために、瞳孔に相当する領域以下、瞳孔領域と呼ぶ301が小さくなっている。また瞳孔領域301の輝度は、その周囲の虹彩の部分302の輝度と比べて非常に小さいので、画像上の瞳孔領域301を識別することは比較的容易である。しかし、光源2の輝度が環境光に対して十分でないために、画像300上でプルキンエ像は識別できない。さらに、画像300では、瞳孔領域301が小さいため、仮に画像上に光源2のプルキンエ像が写っていたとしても、プルキンエ像が瞳孔領域301の外の虹彩領域に位置する可能性がある。そして虹彩領域は瞳孔領域よりも明るいので、虹彩領域内に位置するプルキンエ像の検出精度は、瞳孔領域内に位置するプルキンエ像の検出精度よりも低下する。一方、図3bは、周囲の環境が暗い状態でユーザの顔を撮影したときの画像上の眼及びその周囲の領域の模式図である。この場合、画像310では、ユーザの周囲が暗いために、瞳孔領域311は、図3aに示された瞳孔領域301よりも大きくなっている。また、瞳孔領域311内のプルキンエ像312とその周囲との間の輝度差も大きい。そのため、画像310からプルキンエ像312を検出することは容易である。このように、画像上での瞳孔のサイズは、ユーザの視線方向の検出にプルキンエ像が利用できるか否かを判断するために有用な情報となることが分かる。そこで、瞳孔サイズ検出部14は、顔領域からユーザの少なくとも一方の眼の瞳孔を検出し、その瞳孔のサイズを、視線検出方法を切り替えるための参照情報として求める。瞳孔サイズ検出部14は、まず、顔領域内で眼に相当する領域を検出する。眼に相当する画素の輝度は、眼の周囲に相当する画素の輝度と大きく異なる。そこで瞳孔サイズ検出部14は、顔領域内の各画素に対して、例えば、Sobelフィルタを用いて垂直方向の近傍画素間差分演算を行って垂直方向に輝度が変化するエッジ画素を検出する。そして瞳孔サイズ検出部14は、例えば、エッジ画素が略水平方向に眼の大きさに相当する所定数以上連結された2本のエッジ線で囲まれた領域を眼の領域とする。あるいは、瞳孔サイズ検出部14は、画像上の眼の像を表すテンプレートと、顔領域とのテンプレートマッチングにより、顔領域内でテンプレートに最も一致する領域を検出し、その検出した領域を眼の領域としてもよい。眼の領域が検出されると、瞳孔サイズ検出部14は、眼の領域内で瞳孔領域を検出する。本実施形態では、瞳孔サイズ検出部14は、瞳孔に相当するテンプレートと眼の領域との間でテンプレートマッチングを行い、眼の領域内でテンプレートとの一致度が最も高くなる領域を検出する。そして瞳孔サイズ検出部14は、一致度の最高値が所定の一致度閾値よりも高い場合、その検出した領域に瞳孔が写っていると判定する。なお、テンプレートは、瞳孔の大きさに応じて複数準備されてもよい。この場合、瞳孔サイズ検出部14は、各テンプレートと眼の領域とのテンプレートマッチングをそれぞれ実行し、一致度の最高値を求める。そして一致度の最高値が一致度閾値よりも高い場合、瞳孔サイズ検出部14は、一致度の最高値に対応するテンプレートと重なった領域に瞳孔が写っていると判定する。なお、一致度は、例えば、テンプレートとそのテンプレートと重なった領域との正規化相互相関値として算出される。また一致度閾値は、例えば、07または08に設定される。また瞳孔が写っている領域の輝度は、その周囲の領域の輝度よりも低く、瞳孔は略円形である。そこで瞳孔サイズ検出部14は、眼の領域内で、同心円状に半径の異なる2本のリングを設定する。そして瞳孔サイズ検出部14は、外側のリングに相当する画素の輝度の平均値から内側の画素の輝度の平均値を引いた差分値が所定の閾値よりも大きい場合、その内側のリングで囲まれた領域を瞳孔領域としてもよい。また瞳孔サイズ検出部14は、内側のリングで囲まれた領域の平均輝度値が所定の閾値以下であることを、瞳孔領域として検出する条件に加えてもよい。この場合、所定の閾値は、例えば、眼の領域内の最大輝度値と最小輝度値の差の10~20を、最小輝度値に加えた値に設定される。また瞳孔サイズ検出部14は、画像上で瞳孔領域を検出する他の様々な方法の何れかを用いて、瞳孔領域を検出してもよい。瞳孔サイズ検出部14は、瞳孔領域の検出に成功した場合、瞳孔のサイズを求める。本実施形態では、瞳孔サイズ検出部14は、瞳孔径を瞳孔のサイズとして求める。そのために、瞳孔サイズ検出部14は、瞳孔領域に含まれる各画素の水平方向座標値の平均値及び垂直方向座標値の平均値を、瞳孔領域の重心の座標として算出する。そして瞳孔サイズ検出部14は、瞳孔領域の重心を通る所定の方向の直線に沿って瞳孔領域の一端から他端までの画素数を求め、その画素数を瞳孔径とする。所定の方向は、例えば、任意の方向とすることができるが、ユーザが目を細めている状態でユーザの顔が撮影された画像についても瞳孔径を正確に求めるために、所定の方向は、画像上で両方の目を通る直線と略平行な方向であることが好ましい。瞳孔サイズ検出部14は、何れか一方の眼について求めた瞳孔径を視線検出方法選択部15へ通知する。また瞳孔サイズ検出部14は、両方の眼について瞳孔径を求めてもよい。この場合、瞳孔サイズ検出部14は、両方の眼の瞳孔径の平均値、あるいは大きい方の瞳孔径を視線検出方法選択部15へ通知する。また瞳孔サイズ検出部14は、画像上での瞳孔領域を表す情報を第1視線検出部17及び第2視線検出部18へ渡す。視線検出方法選択部15は、選択部の一例であり、画像上の瞳孔径に基づいて使用する視線検出方法を選択する。本実施形態では、視線検出方法選択部15は、瞳孔径を所定の基準値と比較する。そして瞳孔径が所定の基準値以上であれば、視線検出方法選択部15は、プルキンエ像を用いた視線検出方法を選択する。一方、瞳孔径が所定の基準値未満であれば、視線検出方法選択部15は、プルキンエ像を用いない視線検出方法を選択する。所定の基準値は、ユーザの注視対象物のサイズと、その注視対象物からユーザまでの想定距離から規定される視線の最大画角においてもプルキンエ像の少なくとも一部が瞳孔内に収まるときの瞳孔径とすることができる。なお、注視対象物は、例えば、ユーザが操作しようとする装置のディスプレイの表示画面である。例えば、光源2として発光ダイオードが用いられ、注視対象物が35インチ液晶ディスプレイ垂直方向の長さが約77mmであり、光源及びディスプレイからユーザの眼までの距離が300mmであったとする。そしてカメラ3として、132インチ水平方向473mm、垂直方向352mmで約200万画素のイメージセンサと、最大画角58°の結像光学系が用いられるとする。この場合、ユーザがディスプレイの上端から下端まで視線を動かすと、画像上で瞳孔の重心は約13ピクセル移動する。そのため、基準値は、ユーザがディスプレイ上のどの点を注視しても、プルキンエ像の重心が瞳孔領域内に含まれるように、瞳孔重心の移動量13ピクセルに若干のオフセット値を加えた値とすることが好ましい。また基準値は、ユーザがディスプレイ上のどの点を注視しても、プルキンエ像全体が瞳孔領域内に含まれるように設定されてもよい。この例では、プルキンエ像の直径は、画像上で約7ピクセルであるので、基準値は、瞳孔重心の移動量13ピクセルにプルキンエ像の直径7ピクセルと、若干のオフセット値とを加えた値とすることが好ましい。このように基準値を設定することにより、視線検出方法選択部15は、プルキンエ像を用いた視線検出方法が利用可能か否かを適切に判定できる。視線検出方法選択部15は、瞳孔径が所定の基準値以上であれば、プルキンエ像検出16にプルキンエ像の検出を行わせ、かつ第1視線検出部17に、プルキンエ像を用いた視線検出処理を実行させる。一方、視線検出方法選択部15は、瞳孔径が所定の基準値未満であれば、第2視線検出部18に、プルキンエ像を用いない視線検出処理を実行させる。プルキンエ像検出部16は、視線検出処理またはキャリブレーション処理の実行中において、画像上のユーザの眼が写っている領域内で光源2のプルキンエ像を検出する。光源2のプルキンエ像が写っている領域の輝度は、その周囲の領域の輝度よりも高い。また、光源2のプルキンエ像が写っている領域の形状は、各光源の発光面の形状と略一致する。そこでプルキンエ像検出部16は、眼の領域内で、光源の発光面の輪郭形状と略一致する形状を持ち、かつ、大きさが異なるとともに中心が一致する2本のリングを設定する。そしてプルキンエ像検出部16は、内側のリングに相当する画素の輝度の平均値である内部輝度平均値から外側の画素の輝度の平均値を引いた差分値が所定の差分閾値よりも大きく、かつ内側輝度平均値が所定の輝度閾値よりも高い領域を検出する。そしてプルキンエ像検出部16は、その検出された領域内の内側のリングで囲まれた領域を光源2のプルキンエ像とする。なお、差分閾値は、例えば、眼の領域内の近傍画素間の差分値の平均値とすることができる。また所定の輝度閾値は、例えば、眼の領域内での輝度値の最高値の80とすることができる。なお、プルキンエ像検出部16は、画像上で光源のプルキンエ像が写っている領域を検出する他の様々な方法の何れかを用いて、光源のプルキンエ像が写っている領域を検出してもよい。プルキンエ像検出部16は、光源2のプルキンエ像の検出に成功した場合、光源に含まれる各画素の水平方向座標値の平均値及び垂直方向座標値の平均値を、プルキンエ像の重心の座標として算出する。プルキンエ像検出部16は、キャリブレーション処理の実行時の場合、プルキンエ像の重心及び瞳孔重心をキャリブレーション部19へ通知する。一方、プルキンエ像検出部16は、視線検出処理の実行時には、プルキンエ像の重心及び瞳孔重心を第1視線検出部17へ通知する。第1視線検出部17は、視線検出処理の実行中において、プルキンエ像の重心及び瞳孔重心に基づいて、ユーザの視線方向を検出する。角膜の表面は略球形であるため、視線方向によらず、光源のプルキンエ像の位置はほぼ一定となる。一方、瞳孔重心は、ユーザの視線方向に応じて移動する。そのため、第1視線検出部17は、プルキンエ像の重心を基準とする瞳孔重心の相対的な位置を求めることにより、ユーザの視線方向を検出できる。本実施形態では、第1視線検出部17は、光源のプルキンエ像の重心を基準とする瞳孔重心の相対的な位置を、例えば、瞳孔重心の水平方向座標及び垂直方向座標からプルキンエ像の重心の水平方向座標及び垂直方向座標を減算することにより求める。そして第1視線検出部17は、瞳孔重心の相対的な位置とユーザの視線方向との関係を表す視線方向参照テーブルを参照することにより、ユーザの視線方向を決定する。第1視線検出部17は、ユーザの視線方向を、インターフェース部4を介して出力する。図4は、視線方向参照テーブルの一例を示す図である。視線方向参照テーブル400の左側の列の各欄には、光源のプルキンエ像の重心を基準とする瞳孔重心の相対的な位置の座標が表される。また視線方向参照テーブル400の右側の列の各欄には、同じ行の瞳孔重心の相対的な位置の座標に対応する視線方向が表される。なお、瞳孔重心の相対的な位置の座標は、画像上の画素単位で表される。一方、視線方向は、所定方向、例えば、ユーザの視線方向がカメラ3の光軸と平行な方向を基準方向とし、基準方向と視線方向とがなす水平方向の角度と垂直方向の角度の組で表される。例えば、行401には、瞳孔重心の相対的な位置の座標に対する視線方向がであることが示されている。また、行402には、瞳孔重心の相対的な位置の座標に対する視線方向がであることが示されている。第2視線検出部18は、プルキンエ像を用いない方法によりユーザの視線方向を検出する。本実施形態では、第2視線検出部18は、画像上でのユーザの顔の特徴的な部位の位置を基準とした、瞳孔重心の相対的な位置に基づいてユーザの視線方向を検出する。例えば、第2視線検出部18は、鼻尖点または目頭といった、眼との相対的な位置関係の変動が小さい特徴的な部位の画像上での座標を求める。そのために、第2視線検出部18は、例えば、顔領域とそれら特徴的な部位の一般的な形状に相当するテンプレートとの間で相対的な位置を変えつつテンプレートマッチングを行って、顔領域とテンプレートとの一致度を算出する。そして第2視線検出部18は、顔領域内の特定位置で一致度が所定値以上である場合に、その特定位置にテンプレートに相当する部位が写っていると判定する。第2視線検出部18は、その特徴的な部位の座標から、キャリブレーション処理の実行時にカメラ3により取得された基準画像から求められ、かつメモリ5に記憶されているその特徴的な部位の基準位置の座標を引くことにより位置補正量を求める。そして第2視線検出部18は、瞳孔サイズ検出部14により求められた瞳孔重心の座標値にその位置補正量を減じて、位置補正量に相当する、現画像上の瞳孔重心の位置と基準画像上の瞳孔重心の位置の差を打ち消すことで、補正後の瞳孔重心の座標を求める。第2視線検出部18は、キャリブレーション処理の実行時に更新され、かつメモリ5に記憶されている瞳孔-視線方向参照テーブルを参照することにより、補正後の瞳孔重心位置に対応するユーザの視線方向を決定する。第2視線検出部18は、ユーザの視線方向を、インターフェース部4を介して出力する。キャリブレーション部19は、キャリブレーション処理を実行することにより視線方向参照テーブル及び瞳孔-視線方向参照テーブルを更新する。キャリブレーション部19は、例えば、制御部6から視線検出装置1が起動したことを示す信号を受信したときに、キャリブレーション処理を実行する。キャリブレーション処理が開始されると、キャリブレーション部19は、例えば、視線検出装置1が実装された装置のディスプレイなどのユーザインターフェースを介して、ユーザに、所定の基準位置を見ることを指示するメッセージを報知する。基準位置は、例えば、視線検出装置1が実装された装置のディスプレイの中心、あるいはカメラ3の設置位置などとすることができる。またキャリブレーションの実行中、ユーザは、その基準位置を注視するものとする。キャリブレーション部19は、ユーザが基準位置を注視しているときに撮影された画像から検出された、瞳孔重心の座標及びプルキンエ像の重心の座標を、それぞれ、瞳孔サイズ検出部14及びプルキンエ像検出部16から受け取る。そしてキャリブレーション部19は、プルキンエ像の重心を基準とする瞳孔重心の相対的な位置を、基準位置に対応する視線方向に対応させるよう、視線方向参照テーブルを更新する。同様に、キャリブレーション部19は、ユーザが他の基準位置を注視しているときに撮影された画像から求められたプルキンエ像の重心を基準とする瞳孔重心の相対的な位置を、その基準位置に対応する視線方向と対応づけるよう視線方向参照テーブルを更新する。さらに、キャリブレーション部19は、その他の視線方向に対するプルキンエ像の重心を基準とする瞳孔重心の相対的な位置を、既に求められている視線方向に対応する瞳孔重心の相対的な位置を用いて例えば線形補間することにより決定する。キャリブレーション部19は、更新された視線方向参照テーブルをメモリ5に保存する。またキャリブレーション部19は、瞳孔-視線方向参照テーブルを更新するために、ユーザが基準位置を注視しているときに撮影された画像から、第2視線検出部18と同様の処理を行って、顔の特徴的な部位の座標を求める。そしてキャリブレーション部19は、その顔の特徴的な部位の座標を基準位置座標としてメモリ5に保存する。またキャリブレーション部19は、ユーザが各基準位置を注視しているときに撮影された画像から検出された瞳孔重心の座標を、その基準位置に対応する視線方向と対応づけるよう瞳孔-視線方向参照テーブルを更新する。さらに、キャリブレーション部19は、その他の視線方向に対する瞳孔重心の座標を、既に求められている視線方向に対応する瞳孔重心の座標を用いて例えば線形補間することにより決定する。キャリブレーション部19は、更新された瞳孔-視線方向参照テーブルをメモリ5に保存する。図5は、制御部6により制御される視線検出処理の動作フローチャートである。制御部6のカメラ制御部12は、カメラ3からユーザの顔を撮影した画像を取得するステップS101。そしてカメラ制御部12は、画像をメモリ5に一時的に記憶させる。また、そして制御部6の顔検出部13は、画像上で顔が写っている顔領域を抽出するステップS102。顔検出部13は、顔領域の抽出に成功したか否か判定するステップS103。顔領域の抽出に失敗した場合ステップS103-No、ユーザはカメラ3の方を向いていない可能性がある。そのため、制御部6は、視線検出処理を終了する。その後制御部6は、キャリブレーション処理を実行してもよい。あるいは、制御部6は、ステップS101以降の処理を再度実行してもよい。この場合には、カメラ制御部12は、前回の撮影時の露出条件と異なる露出条件でユーザの顔を撮影するようにカメラ3に制御信号を送信してもよい。一方、顔検出部13が顔領域の抽出に成功した場合ステップS103-Yes、顔検出部13は、顔領域を表す情報を制御部6の瞳孔サイズ検出部14、プルキンエ像検出部16及び第2視線検出部18へ渡す。瞳孔サイズ検出部14は、顔領域内で瞳孔領域を検出し、その瞳孔領域に基づいて瞳孔径及び瞳孔重心を求めるステップS104。瞳孔サイズ検出部14は、瞳孔径を視線検出方法選択部15へ通知する。また瞳孔サイズ検出部14は、画像上での瞳孔領域を表す情報を第1視線検出部17及び第2視線検出部18へ渡す。視線検出方法選択部15は、瞳孔径が所定の基準値以上か否か判定するステップS105。瞳孔径が所定の基準値以上であればステップS105-Yes、視線検出方法選択部15は、プルキンエ像を用いた視線検出処理を選択する。そしてプルキンエ像検出部16は、画像上の顔領域に対してプルキンエ像を検出するステップS106。そしてプルキンエ像検出部16は、プルキンエ像の重心を第1視線検出部17へ渡す。第1視線検出部17は、視線方向参照テーブルを参照することにより、プルキンエ像の重心と瞳孔重心の相対的な位置関係に対応するユーザの視線方向を決定するステップS107。一方、ステップS105において瞳孔径が所定の基準値未満であればステップS105-No、視線検出方法選択部15は、プルキンエ像を用いない視線検出処理を選択する。そして第2視線検出部18は、顔領域内で特徴的な部位の座標を求め、その座標からその特徴的な部位の基準位置の座標を引くことにより位置補正量を求めるステップS108。第2視線検出部18は、瞳孔サイズ検出部14により求められた瞳孔重心の座標値にその位置補正量を減じることで、補正後の瞳孔重心の座標を求めるステップS109。そして第2視線検出部18は、瞳孔-視線方向参照テーブルを参照することにより、補正後の瞳孔重心位置に対応するユーザの視線方向を決定するステップS110。ステップS107またはS110の後、制御部6は、視線方向を表す情報をインターフェース部4を介して視線検出装置1が実装された装置へ出力するステップS111。その後、制御部6は、視線検出処理を終了する。以上に説明してきたように、視線検出装置がプルキンエ像を識別することが容易となるような、ユーザの周囲の環境が比較的暗い場合には、瞳孔径は大きくなる。そして瞳孔径が大きければ、画像上でプルキンエ像が瞳孔領域から外れる可能性が低下する。そこでこの視線検出装置は、ユーザの顔を撮影した画像から検出したユーザの瞳孔の径に基づいて、プルキンエ像を用いる視線検出処理とプルキンエ像を用いない視線検出処理のうちの何れか一方を選択する。そのため、この視線検出装置は、プルキンエ像が瞳孔領域内で検出可能な場合にプルキンエ像を用いる視線検出処理を選択できる。従ってこの視線検出装置は、周囲環境の明るさによらず、ユーザの視線方向を検出できる。なお、本発明は上記の実施形態に限定されるものではない。例えば、瞳孔サイズ検出部は、瞳孔のサイズとして、瞳孔径を算出する代わりに、瞳孔領域に含まれる画素数を求めてもよい。この場合、視線検出方法選択部は、所定の基準値として、ユーザの注視対象物のサイズとその注視対象物からユーザまでの想定距離から規定される視線の最大画角においてもプルキンエ像の少なくとも一部が瞳孔内に収まるときの瞳孔領域の画素数を用いることができる。また、ユーザは、注視しようとする物の方へ顔を向けることが多い。そこで第2視線検出部は、画像から顔の特徴的な部位を抽出することでユーザの顔向きを検出し、その顔向きをユーザの視線方向と推定してもよい。この場合、第2視線検出部は、例えば、顔領域内で眼、鼻の穴、口などの特徴的な部位を検出する。そのために、例えば、第2視線検出部は、顔領域と一般的なそれらの部位の形状に相当するテンプレートとの間で相対的な位置を変えつつテンプレートマッチングを行って、顔領域とテンプレートとの一致度を算出する。そして第2視線検出部は、顔領域内の特定位置で一致度が所定値以上である場合に、その特定位置にテンプレートに相当する部位が写っていると判定する。第2視線検出部は、部位の位置情報に基づいて顔の中心線を求める。例えば、第2視線検出部は、左右の鼻の穴の重心を結ぶ線の第1の中点を求める。また第2視線検出部は、左右の眼の重心を結ぶ線の第2の中点を求める。そして第2視線検出部は、第1の中点と第2の中点を結ぶ線を顔中心線とする。第2視線検出部は顔中心線の左右の顔領域の画素数の比率、あるいは、顔中心線上の所定の点から顔領域の左右の端点までの最大距離の比率を求める。そして第2視線検出部は、その比率と、顔の向きとの関係を表す顔向き参照テーブルを参照することにより、ユーザの顔の向きを決定する。なお、その比率と顔の向きとの関係は、予め実験により決定され、その関係を表す顔向き参照テーブルは、予めメモリに記憶される。第2視線検出部は、例えば、カメラに対して正対しているときの顔の向きを0°とし、カメラから見て右側を向いているときに正の値、左側を向いているときに負の値を持つ、顔の向きを表す水平方向の角度値を作成する。同様に、第2視線検出部は、カメラに対して正対しているときの顔の向きを0°とし、カメラから見て上側を向いているときに正の値、下側を向いているときに負の値を持つ、顔の向きを表す垂直方向の角度値を作成する。そして第2視線検出部は、その水平方向の角度値と垂直方向の角度値の組み合わせを、ユーザの視線方向を表す情報としてインターフェース部を介して出力する。他の変形例では、顔検出部は、最新の画像上での顔領域を決定するために、過去に検出された顔領域の位置及び顔向きを参照してもよい。例えば、顔検出部は、ブロックマッチングなどの動き検出処理を利用して、過去の画像で検出された顔領域などと最も一致する最新の画像上の領域を求め、その領域を顔領域としてもよい。あるいは、顔検出部は、様々なトラッキング技術の何れかを利用して、最新の画像上で抽出された顔候補領域中、過去に検出された顔領域の位置から最も確からしい顔候補領域を求めて、その顔候補領域を顔領域としてもよい。さらに、視線検出装置が実装された装置が、ジャイロなどの角速度を検出するセンサを搭載している場合、第2視線検出部は、そのセンサから角速度に関する情報を取得して、顔向きの判定に利用してもよい。例えば、第2視線検出部は、過去に顔向きを検出したときから最新の画像が得られたときまでの装置の回転角を、角速度に関する情報に基づいて求め、その回転角だけ顔向きが変化したと判定してもよい。さらに他の変形例によれば、カメラは、顔領域及び顔の特徴的な部位の検出に用いる画像と瞳孔及びプルキンエ像の検出に用いる画像とを別個に生成してもよい。例えば、太陽光が直接ユーザの顔に当たるような場合、顔の照度分布は大きく広がることがある。例えば、顔の肌は、比較的光の反射率が高いので、顔の肌部分は明るくなる。そのため、カメラは、比較的少ない露光量でユーザの顔を撮影することにより、顔領域及び顔の特徴的な部位の検出に用いる画像を生成できる。一方、瞳孔領域は他の部分の影になり、比較的暗くなることがある。そのため、顔領域の検出に用いる画像上では、瞳孔領域及びその周囲におけるコントラストが非常に小さくなり、視線検出装置が瞳孔領域を検出することが困難となることがある。そこでカメラは、比較的多い露光量、例えば、顔領域などの検出に用いる画像の生成時の露光量の2~8倍の露光量でユーザの顔を撮影することにより、瞳孔及びプルキンエ像の検出に用いる画像を生成する。またスポットライト状の強い光がユーザの眼に当たっている場合など、瞳孔サイズ検出部が、画像上で少なくとも一方の眼の瞳孔領域を検出できないことがある。このような場合、瞳孔の位置とプルキンエ像の位置の差に基づく視線検出方法は、ユーザの視線方向を正確に検出できない可能性がある。そこで視線検出方法選択部は、瞳孔サイズ検出部が、画像上で少なくとも一方の眼の瞳孔領域を検出できない場合、顔向きに基づく視線検出方法を選択してもよい。また、ユーザがカメラに対して大きく顔を傾けており、かつユーザがその顔を傾けた方向を見ている場合、プルキンエ像が瞳孔領域から外れることがある。このような場合、瞳孔の位置とプルキンエ像の位置の差に基づく視線検出方法は、ユーザの視線方向を正確に検出できない可能性がある。そこで視線検出方法選択部は、顔の特徴的な部位に基づいてユーザの顔向きを判定し、その顔向きが所定値以上カメラに対して傾いている場合には、顔向きに基づく視線検出方法を選択するようにしてもよい。この場合、視線検出方法選択部は、上記の変形例による第2視線検出部の顔向き判定処理と同様の処理を行ってユーザの顔向きを判定すればよい。また、上記の実施形態及び変形例による制御部の各部の機能を実現するコンピュータプログラムは、半導体メモリ、磁気記録媒体または光記録媒体といった、コンピュータ読取可能な可搬性の記録媒体に記録された形で提供されてもよい。ここに挙げられた全ての例及び特定の用語は、読者が、本発明及び当該技術の促進に対する本発明者により寄与された概念を理解することを助ける、教示的な目的において意図されたものであり、本発明の優位性及び劣等性を示すことに関する、本明細書の如何なる例の構成、そのような特定の挙げられた例及び条件に限定しないように解釈されるべきものである。本発明の実施形態は詳細に説明されているが、本発明の精神及び範囲から外れることなく、様々な変更、置換及び修正をこれに加えることが可能であることを理解されたい。以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。付記1ユーザの顔を照明する光源と、前記顔を撮影した画像を生成する撮像部と、前記画像から前記ユーザの少なくとも一方の眼の瞳孔を検出して該瞳孔のサイズを求める瞳孔サイズ検出部と、前記画像から前記光源のプルキンエ像を検出するプルキンエ像検出部と、前記画像上での前記ユーザの瞳孔と当該プルキンエ像の位置関係に基づいて前記ユーザの視線方向を検出する第1視線検出部と、前記画像上の前記瞳孔の重心または前記画像上の前記ユーザの顔向きに基づいて前記ユーザの視線方向を検出する第2視線検出部と、前記瞳孔のサイズが基準値以上である場合、前記第1視線検出部に前記ユーザの視線方向を検出させ、一方、前記瞳孔のサイズが前記基準値未満である場合、前記第2視線検出部に前記ユーザの視線方向を検出させる選択部と、を有する視線検出装置。付記2前記基準値は、前記ユーザが注視対象物の一端から他端まで視線を移動させたときの前記画像上での前記プルキンエ像の移動量に対応する値である、付記1に記載の視線検出装置。付記3前記ユーザの顔を撮影した基準画像上での当該顔の特徴的な部位の基準位置及び当該基準画像における前記ユーザの瞳孔の重心の位置と前記ユーザの視線方向とを対応付けた参照テーブルを記憶する記憶部をさらに有し、前記第2視線検出部は、前記画像から前記顔の前記部位の位置を検出し、当該部位の位置と前記基準位置との差を求め、前記画像上での前記瞳孔の重心の位置を補正して当該差を打ち消すとともに、前記参照テーブルを参照することにより、補正後の瞳孔の重心の位置に対応する前記ユーザの視線方向を検出する、付記1または2に記載の視線検出装置。付記4光源により照明されたユーザの顔を撮影した画像を生成し、前記画像から前記ユーザの少なくとも一方の眼の瞳孔を検出して該瞳孔のサイズを求め、前記瞳孔のサイズを基準値と比較し、前記瞳孔のサイズが前記基準値以上である場合、前記画像から前記光源のプルキンエ像を検出し、前記画像上での前記ユーザの瞳孔と当該プルキンエ像の位置関係に基づいて前記ユーザの視線方向を検出し、一方、前記瞳孔のサイズが前記所定の基準値未満である場合、前記画像上の前記瞳孔の重心または前記画像上の前記ユーザの顔向きに基づいて前記ユーザの視線方向を検出する、ことを含む視線検出方法。付記5光源により照明されたユーザの顔を撮影した画像から当該ユーザの少なくとも一方の眼の瞳孔を検出して該瞳孔のサイズを求め、前記瞳孔のサイズを所定の基準値と比較し、前記瞳孔のサイズが前記所定の基準値以上である場合、前記画像から前記光源のプルキンエ像を検出し、前記画像上での前記ユーザの瞳孔と当該プルキンエ像の位置関係に基づいて前記ユーザの視線方向を検出し、一方、前記瞳孔のサイズが前記所定の基準値未満である場合、前記画像上の前記瞳孔の重心または前記画像上の前記ユーザの顔向きに基づいて前記ユーザの視線方向を検出する、ことをコンピュータに実行させる視線検出用コンピュータプログラム。