(57)【特許請求の範囲】
【請求項１】
コンピュータに、
ユーザの視線を検出する処理と、
前記ユーザの目の高さを検出する処理と、
目の高さに応じた視線のキャリブレーションモデルを用い、前記検出された目の高さに応じて、前記検出された視線をキャリブレーションする処理と、を実行させることを特徴とする視線キャリブレーションプログラム。
【請求項２】
前記視線をキャリブレーションする処理において、基準の目の高さにおける視線のキャリブレーションモデルと、前記検出された目の高さと前記基準の目の高さとの差とを用いて、前記視線をキャリブレーションすることを特徴とする請求項１記載の視線キャリブレーションプログラム。
【請求項３】
前記視線をキャリブレーションする処理において、段階的に複数設けられた基準の目の高さにおけるキャリブレーションモデルから、前記検出された目の高さに応じていずれかを選択し、選択されたキャリブレーションモデルを用いて前記視線をキャリブレーションすることを特徴とする請求項１記載の視線キャリブレーションプログラム。
【請求項４】
前記ユーザの目の高さを検出する際に、カメラが取得した前記ユーザの画像を用いることを特徴とする請求項１〜３のいずれか一項に記載の視線キャリブレーションプログラム。
【請求項５】
前記ユーザの目の高さを検出する処理は、前記ユーザの画像から前記ユーザの顔輪郭を検出する処理と、前記顔輪郭に基づいて前記ユーザの目の高さを検出する処理と、を含むことを特徴とする請求項４記載の視線キャリブレーションプログラム。
【請求項６】
前記視線を検出する処理は、カメラが取得したユーザの画像において、眼球内の基準点からの注目点の相違量を検出する処理であることを特徴とする請求項１〜５のいずれか一項に記載の視線キャリブレーションプログラム。
【請求項７】
前記視線のキャリブレーションモデルは、事前に取得しておいた、所定のユーザの瞳孔の注目点と目視対象に対する視線角度変化量との相関であることを特徴とする請求項１〜６のいずれか一項に記載の視線キャリブレーションプログラム。
【請求項８】
前記コンピュータに、
カメラが取得した前記ユーザの画像における注目点の移動量に基づいて、目視対象と前記ユーザとの距離を取得する処理と、
前記取得された距離を前記視線のキャリブレーションに反映させる処理と、を実行させることを特徴とする請求項１〜７のいずれか一項に記載の視線キャリブレーションプログラム。
【請求項９】
ユーザの視線を検出する視線検出部と、
前記ユーザの目の高さを検出する高さ検出部と、
目の高さに応じた視線のキャリブレーションモデルを用い、前記検出されたユーザの目の高さに応じて、前記検出された視線をキャリブレーションする処理部と、を備えることを特徴とする視線キャリブレーション装置。
【請求項１０】
視線検出部がユーザの視線を検出し、
高さ検出部が前記ユーザの目の高さを検出し、
処理部が、目の高さに応じた視線のキャリブレーションモデルを用い、前記検出されたユーザの目の高さに応じて、前記検出された視線をキャリブレーションする、ことを特徴とする視線キャリブレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、視線キャリブレーションプログラム、視線キャリブレーション装置、および視線キャリブレーション方法に関する。
【背景技術】
【０００２】
視線検出において、コンピュータが検出した視線と、実際の視線との間には、眼球形状の個人差などに起因して、個人ごとの誤差が現れる。そこで、キャリブレーションを行うことで視線を補正する技術が開示されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２８５７１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、個人ごとにキャリブレーションを行う技術は、不特定多数が利用する装置で用いることが困難である。一方、キャリブレーションを行わない場合には、視線検出精度が低下する。
【０００５】
１つの側面では、本発明は、視線検出精度を向上させることができる視線キャリブレーションプログラム、視線キャリブレーション装置、および視線キャリブレーション方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
１つの態様では、視線キャリブレーションプログラムは、コンピュータに、ユーザの視線を検出する処理と、前記ユーザの目の高さを検出する処理と、目の高さに応じた視線のキャリブレーションモデルを用い、前記検出された目の高さに応じて、前記検出された視線をキャリブレーションする処理と、を実行させる。
【発明の効果】
【０００７】
視線検出精度を向上させることができる。
【図面の簡単な説明】
【０００８】
【図１】（ａ）および（ｂ）は視線角度変化を表す図である。
【図２】視線認識装置の概略図である。
【図３】誤差について説明する図である。
【図４】（ａ）および（ｂ）は誤差について例示する図である。
【図５】目視対象が垂直面をなす場合の視線角度変化について説明するための図である。
【図６】目視対象が水平面をなす場合の視線角度変化について説明するための図である。
【図７】目視対象が傾斜する場合の視線角度変化について説明するための図である。
【図８】実施例１に係る視線キャリブレーション装置の構成を表すブロック図である。
【図９】視線キャリブレーション装置の動作の一例を表すフローチャートである。
【図１０】（ａ）はデータベースに格納されている補正係数のテーブルを例示する図であり、（ｂ）は視線キャリブレーションのイメージ図である。
【図１１】変形例１に係る視線キャリブレーションのイメージ図である。
【図１２】変形例２に係るフローチャートの一例である。
【図１３】広角カメラの光軸が、ユーザの平均的な顔位置よりも低い位置から水平方向よりも斜め上方に向いている例である。
【図１４】実施例２に係る視線キャリブレーション装置の構成を表すブロック図である。
【図１５】（ａ）〜（ｄ）は広角画像であり、（ｅ）は顔輪郭の重心位置と、ｙ軸方向の差分と、狭角カメラ３０と顔との距離との対応関係を表すテーブルである。
【図１６】制御部のハードウェア構成を説明するためのブロック図である。
【発明を実施するための形態】
【０００９】
実施例の説明に先立って、撮像装置を備えた視線検出装置の概要について説明する。視線検出装置は、撮像装置を用いて、ユーザの視線方向を非接触で認識する装置である。例えば、図１（ａ）で例示するように、ユーザと正対する方向から照射された赤外ＬＥＤに対してユーザの眼球内（例えば瞳孔または虹彩）に生じる角膜反射像（プルキエニ像）を基準点とする。この基準点と、瞳孔重心などの注目点との相対位置（画素）変化を検出することによって、視線角度変化を算出することができる。例えば、図１（ｂ）の例では、図１（ａ）を基準位置とした場合に視線が下方に向いていることが検出され、その角度を算出することができる。
【００１０】
図２は、視線検出装置２００の概略図である。図２で例示するように、視線検出装置２００は、例えば、広角カメラ２０１および狭角カメラ２０２を備える。広角カメラ２０１は、広角視野を有し、ユーザの顔全体を撮像する。なお、広角カメラ２０１の位置は固定されているため、当該広角視野も固定されている。狭角カメラ２０２は、ズーム機構による狭角視野を有し、顔パーツ（目領域）を撮像する。狭角カメラ２０２は、撮像方向可動式であって、目領域を追従する。なお、目領域とは、少なくとも片方の目を含む、顔の少なくとも一部の領域のことである。
【００１１】
視線検出装置２００では、広角カメラ２０１で顔輪郭位置、顔輪郭重心位置（ｘ，ｙ）などを検出することによって、狭角カメラ２０２が目領域を検出することができる撮像方向を決定する。狭角カメラ２０２をこの撮像方向に動かすことによって、目領域を高画素で撮像できるようになる。それにより、高い視線検出分解能を得ることができる。すなわち、視線検出装置２００では、広角カメラ２０１および狭角カメラ２０２の連動により、視線を検出することができる。視線を検出できれば、目視対象における目視位置を検出することができる。
【００１２】
しかしながら、視線検出装置２００が検出した視線と、実際の視線との間には、誤差が生じることがある。そこで、視線をキャリブレーションすることが考えられる。例えば、図３で例示するように、目視対象の上端ｙ１と下端ｙ２とをユーザが順に目視した場合について検討する。この場合のキャリブレーションは、例えば、瞳孔中の基準点に対する注目点の変化量（画素）と、視線角度変化量（度）との相関を求める作業のことである。この相関関係を、以下、キャリブレーションモデルと称する。視線検出の際に、キャリブレーションモデルに基づいて、ユーザまでの距離も勘案することで、目視する平面における目視位置（ｘ，ｙ）を算出することができる。しかしながら、不特定多数が利用する装置では、個人ごとにキャリブレーションを行う技術を利用することが困難である。一方で、キャリブレーションをしない場合には、誤差が大きくなる。
【００１３】
図４（ａ）および図４（ｂ）は、誤差について例示する図である。まず、図４（ａ）で例示するように、ユーザが目視する平面が垂直面である場合、目視対象の上端ｙ１から下端ｙ２までの目視対象物を目視した場合の視線角度の変化量は、身長差（目の高さ差）に起因して相違する。例えば、背の高いユーザの視線角度の変化量αと、背の低いユーザの視線角度の変化量βとの間には、相違が生じる。特に、図４（ｂ）で例示するように、目視対象が水平面である場合、ｙ１（奥端）からｙ２（手前端）までの同じ距離に対して、目の高さ差に起因する視線角度変化量は、垂直面に対する視線角度変化量よりも大きくなる。そこで、以下の実施例では、視線検出精度を向上させることができる視線キャリブレーション装置、視線キャリブレーション方法、および視線キャリブレーションプログラムについて説明する。
【実施例１】
【００１４】
まず、実施例１に係る視線キャリブレーションの概略について説明する。図５は、目視対象が垂直面をなす場合の視線角度変化について説明するための図である。図５で例示するように、目視対象の高さをｈとする。具体的には、高さｈは、床から目視対象の下端までの距離である。目視対象の垂直方向の幅（視線変化幅）をＨとする。ユーザから目視対象までの距離をＤとする。具体的には、距離Ｄは、ユーザの目の目視対象側の先端から目視対象までの距離である。ユーザの目の高さをＹとする。具体的には、高さＹは、床からユーザの目の目視対象側の先端までの距離である。視線変化幅Ｈに対する、ユーザの視線角度変化量をθとする。視線角度変化量θのうち、水平よりも下側をθ１とし、上側をθ２とする。
【００１５】
視線角度変化量θ１のラジアン値は、下記式（１）で表すことができる。
θ１（ｒａｄ）＝ａｒｃｔａｎ（Ｙ−ｈ）／Ｄ      （１）
上記式（１）の角度値は、下記式（２）で表すことができる。
θ１（ｄｅｇ）＝θ１（ｒａｄ）×１８０／π      （２）
視線角度変化量θ２のラジアン値は、下記式（３）で表すことができる。
θ２（ｒａｄ）＝ａｒｃｔａｎ（ｈ＋Ｈ−Ｙ）／Ｄ      （３）
上記式（３）の角度値は、下記式（４）で表すことができる。
θ２（ｄｅｇ）＝θ２（ｄｅｇ）×１８０／π      （４）
視線角度変化量θは、下記式（５）で表すことができる。
θ＝θ１＋θ２      （５）
【００１６】
一例として、高さｈ＝１００ｃｍ、視線変化幅Ｈ＝１００ｃｍ、距離Ｄ＝２００ｃｍ、高さＹ＝１７０ｃｍであるとする。この場合、θ＝θ１＋θ２＝１９．２９＋８．５３１＝２７．８２度となる。高さＹ＝１５０ｃｍであるとすると、θ＝θ１＋θ２＝１１．３１＋１６．７＝２８．０１度となる。このように、ユーザの身長差に応じて、視線角度変化量θに差異が生じる。
【００１７】
図６は、目視対象が水平面をなす場合の視線角度変化について説明するための図である。図６で例示するように、目視対象の高さをｈとする。具体的には、高さｈは、床から目視対象までの距離である。ユーザから見た目視対象の奥行き方向の幅（視線変化幅）をＨとする。ユーザから目視対象までの距離をＤとする。具体的には、距離Ｄは、水平方向において、ユーザの目の目視対象側の先端から目視対象までの距離である。ユーザの目の高さをＹとする。具体的には、高さＹは、床からユーザの目の目視対象側の先端までの距離である。視線変化幅Ｈに対する、ユーザの視線角度変化量をθとする。鉛直下方から目視対象の奥端までの範囲におけるユーザの視線角度変化量をθ１とする。鉛直下方から目視対象の手前端までの範囲におけるユーザの視線角度変化量をθ２とする。
【００１８】
視線角度変化量θ１のラジアン値は、下記式（６）で表すことができる。
θ１（ｒａｄ）＝ａｒｃｔａｎ（（Ｈ＋Ｄ）／（Ｙ−ｈ））      （６）
上記式（６）の角度値は、下記式（７）で表すことができる。
θ１（ｄｅｇ）＝θ１（ｒａｄ）×１８０／π      （７）
視線角度変化量θ２のラジアン値は、下記式（８）で表すことができる。
θ２（ｒａｄ）＝ａｒｃｔａｎ（Ｄ／（Ｙ−ｈ））      （８）
上記式（８）の角度値は、下記式（９）で表すことができる。
θ２（ｄｅｇ）＝θ２（ｄｅｇ）×１８０／π      （９）
視線角度変化量θは、下記式（１０）で表すことができる。
θ＝θ１−θ２      （１０）
【００１９】
一例として、高さｈ＝７０ｃｍ、視線変化幅Ｈ＝１００ｃｍ、距離Ｄ＝７０ｃｍ、高さＹ＝１７０ｃｍであるとする。この場合、θ＝θ１−θ２＝５９．５３−３４．９９＝２４．５４度となる。高さＹ＝１４０ｃｍであるとすると、θ＝θ１−θ２＝６７．６２−４５＝２２．６２度となる。このように、ユーザの身長差に応じて、視線角度変化量θに差異が生じる。
【００２０】
図７は、目視対象がユーザに対向しつつ水平方向および垂直方向に対して傾斜する場合の視線角度変化について説明するための図である。図７で例示するように、目視対象の高さをｈとする。具体的には、高さｈは、床から目視対象の下端までの距離である。目視対象の奥行き方向の幅（視線変化幅）をＨとする。目視対象が水平面となす角度をθ３とする。水平面に対する目視対象の高低差をｄとする。ユーザから目視対象までの距離をＤとする。具体的には、距離Ｄは、水平方向において、ユーザの目の目視対象側の先端から目視対象の手前端までの距離である。ユーザの目の高さをＹとする。具体的には、高さＹは、床からユーザの目の目視対象側の先端までの距離である。視線変化幅Ｈに対する、ユーザの視線角度変化量をθとする。鉛直下方から目視対象の奥端までの範囲におけるユーザの視線角度変化量をθ１とする。鉛直下方から目視対象の手前端までの範囲におけるユーザの視線角度変化量をθ２とする。
【００２１】
視線角度変化量θ１のラジアン値は、下記式（１１）で表すことができる。
θ１（ｒａｄ）＝ａｒｃｔａｎ（（Ｈ×ｃｏｓθ３）＋Ｄ）／（Ｙ−ｈ−ｄ）      （１１）
上記式（１１）の角度値は、下記式（１２）で表すことができる。
θ１（ｄｅｇ）＝θ１（ｒａｄ）×１８０／π      （１２）
視線角度変化量θ２のラジアン値は、下記式（１３）で表すことができる。
θ２（ｒａｄ）＝ａｒｃｔａｎ（Ｄ／（Ｙ−ｈ））      （１３）
上記式（１３）の角度値は、下記式（１４）で表すことができる。
θ２（ｄｅｇ）＝θ２（ｄｅｇ）×１８０／π      （１４）
視線角度変化量θは、下記式（１５）で表すことができる。
θ＝θ１−θ２      （１５）
図７の場合においても、ユーザの身長差に応じて、視線角度変化量θに差異が生じる。
【００２２】
本実施例においては、ユーザの立ち位置が定められており、図５〜図７で説明した距離Ｄは、既知の固定値であるものとする。この場合において、あらかじめ、基準の目の高さにおける視線の初期キャリブレーションモデルを作成しておく。具体的には、代表者（例えば目の高さ＝１７０ｃｍ）について、瞳孔中の基準点に対する注目点の変化量（画素）と、目視対象に対する視線角度と、との相関関係を初期キャリブレーションモデルとして作成しておく。初期キャリブレーションモデルは、各変化量と各視線角度とを保持するマップやテーブルなどであってもよく、変化量から視線角度を算出するための数式などであってもよい。図５の例では、目視対象の上端から下端までの視線角度変化量（角度）を用いる。図６および図７の例では、目視対象の奥端から手前端までの視線角度変化量（角度）を用いる。
【００２３】
本実施例においては、さらに、視線検出対象のユーザの目の高さと上記代表者の目の高さとの差と、上記初期キャリブレーションモデルとを用いて、視線をキャリブレーションする。例えば、目の高さ差を用いて初期キャリブレーションモデルをキャリブレーションし、得られたキャリブレーションモデルを用いて視線をキャリブレーションする。さらに、得られた視線を用いて、目視対象における目視位置（ｘ，ｙ）を算出する。本実施例によれば、代表者に対する目の高さ差を検出できれば、個人ごとにキャリブレーションモデルを作成しなくてもよい。また、個人ごとにキャリブレーションモデルを作成する場合と比較して、視線検出精度が向上する。以下、具体例について説明する。
【００２４】
図８は、実施例１に係る視線キャリブレーション装置１００の構成を表すブロック図である。図８で例示するように、視線キャリブレーション装置１００は、モニタ１０、広角カメラ２０、狭角カメラ３０、赤外ＬＥＤ４０、制御部５０などを備える。制御部５０は、顔輪郭検出部５１、高さ差算出部５２、狭角カメラ制御部５３、目領域検出部５４、視線換算部５５、目視位置算出部５６、アプリ制御部５７、データベース５８などを備える。
【００２５】
モニタ１０は、ＬＣＤなどの表示装置であり、ユーザの目視対象である。広角カメラ２０は、広角視野を有し、モニタ１０の前に立ち寄るユーザの顔全体を撮像する。なお、広角カメラ２０の位置は固定されているため、当該広角視野も固定されている。広角カメラ２０は、一例として、マイクロビジョン製のＵＳＢカメラ（ＭＣＭ：４３０２）を用いることができる。なお、画素は、一例としてＶＧＡ（６４０×４８０ｐｉｘ）である。レンズ画角は、一例として、Ｖ／Ｈ／Ｄ＝２３／３０／３７．５度である。
【００２６】
狭角カメラ３０は、ズーム機構による狭角視野を有し、広角カメラ２０の視野内にフレームインしたユーザの顔のパーツ（目領域）の画像を取得する。狭角カメラ３０は、撮像方向可動式であって、撮像方向を変更することによって目領域に追従することができる。狭角カメラ３０は、例えば、ＰＴＺ（Ｐａｎ  Ｔｉｌｔ  Ｚｏｏｍ：パンチルトズーム）カメラであり、一例として、ＳＯＮＹ（登録商標）製のＳＮＣ−Ｅｐ５８０を用いることができる。なお、画角は、可変である。Ｆ値は、１．６（ｗｉｄｅ）〜３．５（ｔｅｌｅ）である。赤外ＬＥＤ４０は、赤外光をユーザに対して照射する。
【００２７】
以下、図９のフローチャートを参照しつつ、視線キャリブレーション装置１００の動作について説明する。図９のフローチャートは、視線キャリブレーション装置１００の動作の一例を表す。顔輪郭検出部５１は、広角カメラ２０から広角画像をキャプチャする（ステップＳ１）。次に、顔輪郭検出部５１は、顔輪郭領域を検出する（ステップＳ２）。また、顔輪郭検出部５１は、顔輪郭領域のいずれかの幅（縦または横）を算出し、顔輪郭領域の重心、両目の中心などの注目点を算出する。
【００２８】
次に、高さ差算出部５２は、算出された注目点を用いて、代表モデルの目の高さとユーザの目の高さとの差を算出する（ステップＳ３）。具体的には、距離Ｄが固定値であり、広角カメラ２０の位置も固定されていることから、広角画像における注目点の位置から、ユーザの目の高さを算出することができる。高さ差算出部５２は、この目の高さと、代表モデルの目の高さとの差を求めることで、目の高さ差を算出する。
【００２９】
次に、狭角カメラ制御部５３は、狭角視野内にユーザの顔が所定の大きさで入るように、狭角カメラ３０の角度、倍率などを制御する（ステップＳ４）。それにより、狭角カメラ３０は、ユーザの目の領域を撮像することができる。次に、目領域検出部５４は、狭角カメラ３０から狭角画像をキャプチャする（ステップＳ５）。次に、目領域検出部５４は、狭角画像において、目領域を検出する（ステップＳ６）。具体的には、目領域検出部５４は、両目を含む輪郭枠を目領域として検出する。または、目領域検出部５４は、顔輪郭検出部５１から受け取った座標から、両目を含む輪郭枠を目領域として推定する。
【００３０】
次に、視線換算部５５は、目領域検出部５４が検出した目領域において、目の内部を検出する（ステップＳ７）。次に、視線換算部５５は、瞳孔重心と角膜反射重心との相対変化を算出する（ステップＳ８）。次に、視線換算部５５は、データベース５８に格納されている初期キャリブレーションモデルを参照し、算出された相対変化から視線角度を得る（ステップＳ９）。
【００３１】
次に、視線換算部５５は、得られた視線角度に対して、ステップＳ３で算出された目の高さ差を用いてキャリブレーションを行う（ステップＳ１０）。図１０（ａ）は、データベース５８に格納されている補正係数のテーブルを例示する図であり、図６の目視対象が水平面をなす場合の視線角度変化に対応している。図１０（ａ）で例示するように、代表者の目の高さの場合の補正係数を１とし、目の高さに応じて段階的に補正係数が設定されている。例えば、視線換算部５５は、ステップＳ９で得られた視線角度に対して補正係数を掛け合わせる。図１０（ｂ）は、本実施例に係る視線キャリブレーションのイメージ図である。図１０（ｂ）で例示するように、本実施例においては、初期キャリブレーションモデルと、目の高さ差と、補正係数のテーブルとを用いて、視線をキャリブレーションする。
【００３２】
次に、目視位置算出部５６は、ステップＳ１０で得られた視線角度と、距離Ｄと、ステップＳ３で算出した目の高さから、モニタ１０における目視位置（ｘ，ｙ）を算出する（ステップＳ１１）。アプリ制御部５７は、目視位置算出部５６が算出した目視位置に基づいて、モニタ１０を制御する（ステップＳ１２）。例えば、アプリ制御部５７は、モニタ１０の表示内容を変更する。具体的には、アプリ制御部５７は、モニタ１０において、詳細情報の展開、表示切換、スクロールなどを行う。
【００３３】
本実施例によれば、代表者について予め作成しておいた初期キャリブレーションモデルを用いることによって、個人ごとのキャリブレーションモデルを作成する手間が省ける。さらに、目の高さ差と初期キャリブレーションモデルとを用いて視線をキャリブレーションすることによって、視線検出精度を向上させることができる。その結果、目視対象における目視位置の検出精度を向上させることができる。
【００３４】
（変形例１）
上記例では、図１０（ａ）で例示するようなテーブルを用いたが、補正係数を算出するための数式を用いてもよい。例えば、代表者の目の高さの場合の補正係数が１となり、目の高さ差に応じて補正係数が変化するような数式を用いることができる。例えば、視線換算部５５は、ステップＳ９で得られた視線角度に対して、ステップＳ３で得られた目の高さ差と上記数式とから得られる補正係数を掛け合わせる。図１１は、変形例１に係る視線キャリブレーションのイメージ図である。図１１で例示するように、本変形例においては、初期キャリブレーションモデルと、目の高さ差と、補正係数を算出するための数式とを用いて、視線をキャリブレーションする。変形例１によれば、テーブルなどの容量を削減することができる。
【００３５】
（変形例２）
なお、上記例では、基準の目の高さとして１種類だけ用意したが、段階的に複数設けられた基準の目の高さにおけるキャリブレーションモデルを作成しておいてもよい。図１２は、この場合に実行されるフローチャートを例示する。図９のフローチャートと異なる点は、ステップＳ３、ステップＳ９およびステップＳ１０の代わりに、ステップＳ１３、ステップＳ１９およびステップＳ２０が実行される点である。以下、ステップＳ１３、ステップＳ１９およびステップＳ２０について説明する。
【００３６】
ステップＳ２の実行後、高さ差算出部５２は、算出された注目点を用いて、ユーザの目の高さを算出する（ステップＳ１３）。具体的には、距離Ｄが固定値であり、広角カメラ２０の位置も固定されていることから、広角画像における注目点の位置から、ユーザの目の高さを算出する。
【００３７】
ステップＳ８の実行後、視線換算部５５は、データベース５８に格納されている複数のキャリブレーションモデルから、ステップＳ１３で得られた目の高さに対応するモデルを選択する（ステップＳ１９）。例えば、視線換算部５５は、ステップＳ１３で得られた目の高さに最も近い基準の目の高さのキャリブレーションモデルを選択する。次に、視線換算部５５は、選択したキャリブレーションモデルを用いて、ステップＳ８で算出された相対変化から視線角度を得る（ステップＳ２０）。変形例２によれば、複数のキャリブレーションモデルを用いることができることから、視線検出精度が向上する。
【実施例２】
【００３８】
実施例１では、距離Ｄが固定であることが前提であったが、広角カメラ２０が取得する広角画像を用いて距離Ｄを算出してもよい。広角画像を用いて距離Ｄを算出する場合には、ユーザの狭角カメラ３０に対する前後方向の移動が広角画像に現れることが好ましい。そこで、広角カメラ２０が設置される高さは、ユーザの平均的な顔位置に対してずれていることが好ましい。例えば、広角カメラ２０の光軸は、ユーザの平均的な顔位置よりも高い位置から水平方向よりも斜め下方に向いている、または、ユーザの平均的な顔位置よりも低い位置から水平方向よりも斜め上方（あおり角）に向いていることが好ましい。なお、ユーザの体軸が垂直からずれている場合には、当該体軸に対して斜め上方または斜め下方に向いていることが好ましい。目領域を検出するためには、広角カメラ２０は、ユーザの平均的な顔位置よりも低い位置からユーザに対して斜め上方（あおり角）に向いていることが好ましい。
【００３９】
図１３は、広角カメラ２０の光軸が、ユーザの平均的な顔位置よりも低い位置から水平方向よりも斜め上方に向いている例である。なお、広角カメラ２０の光軸が水平方向よりも斜め上方を向いている場合と斜め下方を向いている場合とで、ユーザの広角カメラ２０に対する前後方向の移動は、広角画像において逆になる。
【００４０】
図１４は、実施例２に係る視線キャリブレーション装置１００ａの構成を表すブロック図である。図１４で例示するように、視線キャリブレーション装置１００ａが視線キャリブレーション装置１００と異なる点は、制御部５０に、さらに距離算出部５９が備わっている点である。
【００４１】
距離算出部５９は、顔輪郭検出部５１が検出する注目点を以前のフレームと（例えばフレームごとに）比較することによって、広角画像における注目点の移動方向および移動量を算出する。例えば、距離算出部５９は、広角画像における注目点の座標（ｘ，ｙ）の変化をフレームごとに検出することによって、広角画像における注目点の移動方向および移動量を算出する。
【００４２】
さらに、距離算出部５９は、顔輪郭検出部５１が検出する輪郭幅および注目点をフレームごとに比較することによって、ユーザの前後方向の移動方向および移動量を算出する。前後方向とは、ユーザが広角カメラ２０に近づく方向および広角カメラ２０から離れる方向である。図１５（ａ）〜図１５（ｄ）は、体軸が鉛直方向を向いていると仮定し、広角カメラ２０の光軸をユーザの平均的な顔位置よりも低い位置から水平方向よりも斜め上方（１０°）に設定した場合の広角画像（静止画像）である。図１５（ａ）〜図１５（ｄ）は、広角カメラ２０と顔との距離が１．５ｍ、２ｍ、２．５ｍ、３ｍである場合の静止画像である。
【００４３】
図１５（ａ）〜図１５（ｄ）で例示するように、ユーザが広角カメラ２０から離れると、顔の位置が下方に移動している。そこで、例えば、顔の輪郭の注目点（重心、両目の中心など）の上下方向（ｙ軸）の変化量と、広角カメラ２０と顔との距離とを対応付けることができる。広角カメラ２０の位置は固定されていることから、広角カメラ２０と顔との距離を用いて距離Ｄを求めることができる。さらに、初期フレームや所定の時点でのフレームにおける距離Ｄをユーザの初期の立ち位置における距離とし、得られた前後方向の移動量を用いて距離Ｄを補正することができる。
【００４４】
なお、顔の輪郭の注目点の上下方向の座標は、上記距離の相対的な変異量として用いることができる一方で、上記距離の絶対量としても用いることができる。例えば、同一人物が何度も使用することを想定した場合、あるいはほぼ近い身長のユーザに対象を絞った場合などにおいては、上記注目点の位置を、上記距離の絶対量に換算することができる。なお、広角カメラ２０が水平方向よりも斜め下方を向いている場合には、ユーザが広角カメラ２０から離れると、顔の位置が上方に移動することになる。
【００４５】
図１５（ｅ）は、広角画像が６４０ピクセル×４８０ピクセルである場合における、顔輪郭の重心位置（ｘ，ｙ）と、ｙ軸方向の差分（ピクセル）と、距離Ｄと、の対応関係を表すテーブルである。このテーブルを予め作成しておけば、顔輪郭の重心位置の変動を検出することによって、距離Ｄを取得することができる。図１５（ｅ）の数値間については、補間等によって取得すればよい。
【００４６】
なお、重心位置がｘ軸方向に移動した場合にｙ軸方向に移動していなければ、広角カメラ２０と顔との距離が同じで、ユーザが横方向に移動していることになる。重心位置がｙ軸方向に移動していても、ユーザがしゃがむ等の場合には距離に変化が無いことになる。そこで、顔輪郭領域の幅の変化量を補助的に検出してもよい。例えば、重心位置がｙ軸方向に移動していても、顔輪郭の幅の変化量が所定量以下であれば、広角カメラ２０と顔との距離が変化していないと判定することもできる。なお、顔輪郭の画素幅だけから、距離を算出することも可能である。しかしながら、顔の大きさの個人差、外乱光等に起因する顔陰影、顔が斜めを向いた場合などの輪郭の境界部の変化、などの不安定な要素が存在することから、顔輪郭の注目点を用いることが好ましい。広角カメラ２０の位置と狭角カメラ３０の位置との関係が予め得られていれば、広角カメラ２０と顔との距離を取得することによって、狭角カメラ３０と顔との距離を算出することができる。
【００４７】
距離Ｄを算出することができれば、ユーザの位置が前後左右方向に移動しても、視線先までの角度がどのように変化するかを特定することができる。したがって、算出された距離Ｄを用いて、視線を補正することができる。この場合、視線検出精度が向上する。
【００４８】
（他の例）
図１６は、制御部５０の他のハードウェア構成を説明するためのブロック図である。図１６を参照して、制御部５０は、ＣＰＵ１０１、ＲＡＭ１０２、記憶装置１０３、インタフェース１０４などを備える。これらの各機器は、バスなどによって接続されている。ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１は、中央演算処理装置である。ＣＰＵ１０１は、１以上のコアを含む。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０２は、ＣＰＵ１０１が実行するプログラム、ＣＰＵ１０１が処理するデータなどを一時的に記憶する揮発性メモリである。記憶装置１０３は、不揮発性記憶装置である。記憶装置１０３として、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリなどのソリッド・ステート・ドライブ（ＳＳＤ）、ハードディスクドライブに駆動されるハードディスクなどを用いることができる。ＣＰＵ１０１が撮像プログラムを実行することによって、視線キャリブレーション装置１００に制御部５０が実現される。
【００４９】
上記各例では、広角カメラ２０および狭角カメラ３０の複数のカメラを用いたが、それに限られない。例えば、高画質カメラを用いることによって、広角カメラ２０および狭角カメラ３０の各機能を１台のカメラで担うことができる。また、上記各例では、広角カメラ２０が取得する広角画像からユーザの目の高さを算出しているが、それに限られない。例えば、Ｋｉｎｅｃｔ等のＴＯＦ（Ｔｉｍｅ  ｏｆ  ｆｌｉｇｈｔ）方式赤外測距センサを設けることにより、顔位置から目の高さを取得してもよい。また、身体や顔を検出する画像処理アルゴリズムを利用できない場合には、背景の壁の模様や観葉植物などの固定的な特徴物が隠されている程度に応じて、身長を推測してもよい。なお、上記各例において、視線換算部５５が視線検出部の一例として機能し、高さ差算出部５２が高さ検出部の一例として機能し、視線換算部５５が視線をキャリブレーションする処理部の一例として機能する。
【００５０】
以上、本発明の実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００５１】
１０  モニタ
２０  広角カメラ
３０  狭角カメラ
４０  赤外ＬＥＤ
５０  制御部
５１  顔輪郭検出部
５２  高さ差算出部
５３  狭角カメラ制御部
５４  目領域検出部
５５  視線換算部
５６  目視位置算出部
５７  アプリ制御部
５８  データベース
１００  視線キャリブレーション装置
【図１】
0006468078.tif 000002
【図２】
0006468078.tif 000003
【図３】
0006468078.tif 000004
【図４】
0006468078.tif 000005
【図５】
0006468078.tif 000006
【図６】
0006468078.tif 000007
【図７】
0006468078.tif 000008
【図８】
0006468078.tif 000009
【図９】
0006468078.tif 000010
【図１０】
0006468078.tif 000011
【図１１】
0006468078.tif 000012
【図１２】
0006468078.tif 000013
【図１３】
0006468078.tif 000014
【図１４】
0006468078.tif 000015
【図１５】
0006468078.tif 000016
【図１６】
0006468078.tif 000017