IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キヤノン株式会社の特許一覧

<>
  • 特許-視線検出装置 図1
  • 特許-視線検出装置 図2
  • 特許-視線検出装置 図3
  • 特許-視線検出装置 図4
  • 特許-視線検出装置 図5
  • 特許-視線検出装置 図6
  • 特許-視線検出装置 図7
  • 特許-視線検出装置 図8
  • 特許-視線検出装置 図9
  • 特許-視線検出装置 図10
  • 特許-視線検出装置 図11
  • 特許-視線検出装置 図12
  • 特許-視線検出装置 図13
  • 特許-視線検出装置 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-13
(45)【発行日】2024-12-23
(54)【発明の名称】視線検出装置
(51)【国際特許分類】
   A61B 3/113 20060101AFI20241216BHJP
   G06T 7/20 20170101ALN20241216BHJP
【FI】
A61B3/113
G06T7/20 300B
【請求項の数】 16
(21)【出願番号】P 2020210018
(22)【出願日】2020-12-18
(65)【公開番号】P2022096819
(43)【公開日】2022-06-30
【審査請求日】2023-12-07
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110002860
【氏名又は名称】弁理士法人秀和特許事務所
(72)【発明者】
【氏名】田中 秀
【審査官】増渕 俊仁
(56)【参考文献】
【文献】特開平07-289517(JP,A)
【文献】特開2017-151565(JP,A)
【文献】特開2004-008323(JP,A)
【文献】米国特許出願公開第2019/0182415(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
A61B 3/00-3/18
(57)【特許請求の範囲】
【請求項1】
表示面を見る眼を撮像した眼画像に基づいて、前記眼の視線を検出する検出手段と、
現在の眼画像と過去の眼画像とに基づいて、前記視線の検出がエラーであるか否かを判定する判定手段と
を有し、
前記検出手段は、前記眼画像から複数の角膜反射像を検出して前記視線を検出し、
前記判定手段は、
前記現在の眼画像から検出された複数の角膜反射像と、前記過去の眼画像から検出された複数の角膜反射像とに基づいて、前記視線の検出がエラーであるか否かを判定し、
前記現在の眼画像から検出された複数の角膜反射像の間隔と、前記過去の眼画像から検出された複数の角膜反射像の間隔との差が閾値よりも大きい場合に、前記視線の検出がエラーであると判定する
ことを特徴とする視線検出装置。
【請求項2】
前記検出手段は、前記眼画像から瞳孔像をさらに検出して前記視線を検出し、
前記判定手段は、
前記現在の眼画像から検出された複数の角膜反射像を代表する位置から、前記現在の眼画像から検出された瞳孔像の位置までの距離と、
前記過去の眼画像から検出された複数の角膜反射像を代表する位置から、前記過去の眼画像から検出された瞳孔像の位置までの距離と
の差が閾値よりも大きい場合に、前記視線の検出がエラーであると判定する
ことを特徴とする請求項に記載の視線検出装置。
【請求項3】
前記判定手段は、前記過去の眼画像として、検出された複数の角膜反射像の数が前記現在の眼画像と略同一であるという条件を少なくとも満たす眼画像を使用する
ことを特徴とする請求項1または2に記載の視線検出装置。
【請求項4】
前記判定手段は、前記過去の眼画像として、検出された複数の角膜反射像の配列が前記現在の眼画像と略同一であるという条件をさらに満たす眼画像を使用する
ことを特徴とする請求項に記載の視線検出装置。
【請求項5】
前記現在の眼画像は、前記眼で見るべき指標が前記表示面に表示されている状態で撮像された眼画像であり、
前記判定手段は、前記過去の眼画像として、前記指標の表示位置が前記現在の眼画像と同じ状態で撮像されたという条件を少なくとも満たす眼画像を使用する
ことを特徴とする請求項1~のいずれか1項に記載の視線検出装置。
【請求項6】
前記指標は、前記視線の検出に使用されるパラメータを得るキャリブレーション作業のための指標である
ことを特徴とする請求項に記載の視線検出装置。
【請求項7】
前記判定手段は、時間の変化に対して、前記眼画像から検出される複数の角膜反射像の間隔が略一定である場合に、前記視線の検出がエラーないと判定する
ことを特徴とする請求項1~6のいずれか1項に記載の視線検出装置。
【請求項8】
前記判定手段は、前記現在の眼画像から検出される複数の角膜反射像の間隔と、前記過去の眼画像から検出される複数の角膜反射像の間隔との差にさらに基づいて、前記視線の検出がエラーであるか否かを判定する
ことを特徴とする請求項1~7のいずれか1項に記載の視線検出装置。
【請求項9】
前記判定手段は、
前記現在の眼画像から検出される複数の角膜反射像を代表する位置から、前記現在の眼画像から検出される瞳孔像の位置までの距離と、
前記過去の眼画像から検出される複数の角膜反射像を代表する位置から、前記過去の眼画像から検出される瞳孔像の位置までの距離と
の差にさらに基づいて、前記視線の検出がエラーであるか否かを判定する
ことを特徴とする請求項1~8のいずれか1項に記載の視線検出装置。
【請求項10】
前記現在の眼画像に基づく前記検出手段の検出結果を用いて、視線補正パラメータを得るためのキャリブレーション制御を行う制御手段
をさらに有し、
前記判定手段によって前記視線の検出がエラーであると判定された場合には、前記制御手段は、前記現在の眼画像に基づく前記検出手段の検出結果を前記キャリブレーション制御に使用しない
ことを特徴とする請求項1~9のいずれか1項に記載の視線検出装置。
【請求項11】
前記判定手段によって前記視線の検出がエラーであると判定された場合に、キャリブレーションが失敗したことをユーザーに通知する通知手段
をさらに有する
ことを特徴とする請求項10に記載の視線検出装置。
【請求項12】
前記現在の眼画像に基づく前記検出手段の検出結果を用いて、視線位置を表示する制御手段
をさらに有する
ことを特徴とする請求項1~11のいずれか1項に記載の視線検出装置。
【請求項13】
前記判定手段によって前記視線の検出がエラーであると判定された場合に、過去の視線位置の検出結果に基づいて現在の視線位置の検出結果を取得する取得手段
をさらに有する
ことを特徴とする請求項1~12のいずれか1項に記載の視線検出装置。
【請求項14】
表示面を見る眼を撮像した眼画像に基づいて、前記眼の視線を検出する検出ステップと、
現在の眼画像と過去の眼画像とに基づいて、前記視線の検出がエラーであるか否かを判定する判定ステップと
を有し、
前記検出ステップでは、前記眼画像から複数の角膜反射像を検出して前記視線を検出し、
前記判定ステップでは、
前記現在の眼画像から検出された複数の角膜反射像と、前記過去の眼画像から検出された複数の角膜反射像とに基づいて、前記視線の検出がエラーであるか否かを判定し、
前記現在の眼画像から検出された複数の角膜反射像の間隔と、前記過去の眼画像から検出された複数の角膜反射像の間隔との差が閾値よりも大きい場合に、前記視線の検出がエラーであると判定する
ことを特徴とする視線検出方法。
【請求項15】
コンピュータを、請求項1~13のいずれか1項に記載の視線検出装置の各手段として機能させるためのプログラム。
【請求項16】
コンピュータを、請求項1~13のいずれか1項に記載の視線検出装置の各手段として機能させるためのプログラムを格納したコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は視線検出装置、及び、当該視線検出装置を有する撮像装置に関する。
【背景技術】
【0002】
近年、カメラの自動化・インテリジェント化が進んでいる。特許文献1では、手動で被写体位置を入力せずとも、ファインダを覗く撮影者の視点(視線位置)の情報に基づいて、撮影者が意図する被写体を認識し、焦点制御を行う技術が提案されている。特許文献2では、撮像した眼画像を用いて視線検出結果の信頼性を判定し、当該信頼性から視線検出の可/不可を判定し、視線検出不可と判定した場合に視線検出不可の原因を推定する技術が提案されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2004-8323号公報
【文献】特開平7-289517号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献2の技術では、視線検出のエラー判定(視線の検出がエラー(失敗)であるか否かの判定;視線が正しく検出されたか否かの判定)に、単一の眼画像を用いている。しかしながら、この方法では、視線の誤検出を、高い精度でエラーと判定することができない。エラー判定の精度が低い場合には、例えば、誤検出された視線に基づく不適切な処理が高い頻度で行われる。検出した視点にアイテムを表示する場合には、実際の視点とは異なる位置(誤検出された視点)にアイテムが頻繁に表示され、アイテムの表示位置がばらつき(アイテムが大きく揺れ動き)、装置の使い勝手が低下してしまう。
【0005】
本発明は、視線検出のエラー判定を高い精度で行うことのできる技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の第1の態様は、表示面を見る眼を撮像した眼画像に基づいて、前記眼の視線を検出する検出手段と、現在の眼画像と過去の眼画像とに基づいて、前記視線の検出がエラーであるか否かを判定する判定手段とを有し、前記検出手段は、前記眼画像から複数の角膜反射像を検出して前記視線を検出し、前記判定手段は、前記現在の眼画像から検出された複数の角膜反射像と、前記過去の眼画像から検出された複数の角膜反射像とに基づいて、前記視線の検出がエラーであるか否かを判定し、前記現在の眼画像から検出された複数の角膜反射像の間隔と、前記過去の眼画像から検出された複数の角膜反射像の間隔との差が閾値よりも大きい場合に、前記視線の検出がエラーであると判定することを特徴とする視線検出装置である。
【0007】
本発明の第2の態様は、表示面を見る眼を撮像した眼画像に基づいて、前記眼の視線を検出する検出ステップと、現在の眼画像と過去の眼画像とに基づいて、前記視線の検出がエラーであるか否かを判定する判定ステップとを有し、前記検出ステップでは、前記眼画像から複数の角膜反射像を検出して前記視線を検出し、前記判定ステップでは、前記現在の眼画像から検出された複数の角膜反射像と、前記過去の眼画像から検出された複数の角膜反射像とに基づいて、前記視線の検出がエラーであるか否かを判定し、前記現在の眼画
像から検出された複数の角膜反射像の間隔と、前記過去の眼画像から検出された複数の角膜反射像の間隔との差が閾値よりも大きい場合に、前記視線の検出がエラーであると判定することを特徴とする視線検出方法である。
【0008】
本発明の第3の態様は、コンピュータを上述した視線検出装置の各手段として機能させるためのプログラムである。本発明の第4の態様は、コンピュータを上述した視線検出装置の各手段として機能させるためのプログラムを格納したコンピュータが読み取り可能な記録媒体である。
【発明の効果】
【0009】
本発明によれば、視線検出のエラー判定を高い精度で行うことができる。
【図面の簡単な説明】
【0010】
図1】実施例1に係るカメラの外観図である。
図2】実施例1に係るカメラの断面図である。
図3】実施例1に係るカメラのブロック図である。
図4】実施例1に係るファインダ内視野を示す図である。
図5】実施例1に係る視線検出方法の原理を説明するための図である。
図6】実施例1に係る眼画像を示す図である。
図7】実施例1に係る視線検出動作のフローチャートである。
図8】実施例1に係る眼画像を示す図である。
図9】実施例1に係る眼画像を示す図である。
図10】実施例1に係るエラー判定動作(第1の方法)のフローチャートである。
図11】実施例1に係る眼画像を示す図である。
図12】実施例1に係るエラー判定動作(第2の方法)のフローチャートである。
図13】実施例1に係るカメラ動作のフローチャートである。
図14】実施例2に係るキャリブレーション動作のフローチャートである。
【発明を実施するための形態】
【0011】
<<実施例1>>
以下、添付の図面を参照して本発明の実施例1について説明する。
【0012】
<構成の説明>
図1(A),1(B)は、実施例1に係るカメラ1(デジタルスチルカメラ;レンズ交換式カメラ)の外観を示す。図1(A)は正面斜視図であり、図1(B)は背面斜視図である。図1(A)に示すように、カメラ1は、撮影レンズユニット1A及びカメラ筐体1Bを有する。カメラ筐体1Bには、ユーザー(撮影者)からの撮影操作を受け付ける操作部材であるレリーズボタン5が配置されている。図1(B)に示すように、カメラ筐体1Bの背面には、カメラ筐体1B内に含まれている後述の表示デバイス10(表示パネル)をユーザーが覗き込むための接眼レンズ12(接眼光学系)が配置されている。なお、接眼光学系には複数枚のレンズが含まれていてもよい。カメラ筐体1Bの背面には、ユーザーからの各種操作を受け付ける操作部材41~43も配置されている。例えば、操作部材41はタッチ操作を受け付けるタッチパネルであり、操作部材42は各方向に押し倒し可能な操作レバーであり、操作部材43は4方向のそれぞれに押し込み可能な4方向キーである。操作部材41(タッチパネル)は、液晶パネル等の表示パネルを備えており、表示パネルで画像を表示する機能を有する。
【0013】
図2は、図1(A)に示したY軸とZ軸が成すYZ平面でカメラ1を切断した断面図であり、カメラ1の大まかな内部構成を示す。
【0014】
撮影レンズユニット1A内には、2枚のレンズ101,102、絞り111、絞り駆動部112、レンズ駆動モーター113、レンズ駆動部材114、フォトカプラー115、パルス板116、マウント接点117、焦点調節回路118等が含まれている。レンズ駆動部材114は駆動ギヤ等からなり、フォトカプラー115は、レンズ駆動部材114に連動するパルス板116の回転を検知して、焦点調節回路118に伝える。焦点調節回路118は、フォトカプラー115からの情報と、カメラ筐体1Bからの情報(レンズ駆動量の情報)とに基づいてレンズ駆動モーター113を駆動し、レンズ101を移動させて合焦位置を変更する。マウント接点117は、撮影レンズユニット1Aとカメラ筐体1Bとのインターフェイスである。なお、簡単のために2枚のレンズ101,102を示したが、実際は2枚より多くのレンズが撮影レンズユニット1A内に含まれている。
【0015】
カメラ筐体1B内には、撮像素子2、CPU3、メモリ部4、表示デバイス10、表示デバイス駆動回路11等が含まれている。撮像素子2は、撮影レンズユニット1Aの予定
結像面に配置されている。CPU3は、マイクロコンピュータの中央処理部であり、カメラ1全体を制御する。メモリ部4は、撮像素子2により撮像された画像等を記憶する。表示デバイス10は、液晶等で構成されており、撮像された画像(被写体像)等を表示デバイス10の表示面に表示する。表示デバイス駆動回路11は、表示デバイス10を駆動する。ユーザーは、接眼レンズ12を通して、表示デバイス10の表示面を見ることができる。
【0016】
カメラ筐体1B内には、光源13a,13b、光分割器15、受光レンズ16、眼用撮像素子17等も含まれている。光源13a,13bは、光の角膜反射による反射像(角膜反射像;プルキニエ像)と瞳孔の関係から視線方向を検出するために従来から一眼レフカメラ等で用いられている光源であり、ユーザーの眼球14を照明するための光源である。具体的には、光源13a,13bは、ユーザーに対して不感の赤外光を発する赤外発光ダイオード等であり、接眼レンズ12の周りに配置されている。照明された眼球14の光学像(眼球像;光源13a,13bから発せられて眼球14で反射した反射光による像)は、接眼レンズ12を透過し、光分割器15で反射される。そして、眼球像は、受光レンズ16によって、CMOS等の光電素子列を2次元的に配した眼用撮像素子17上に結像される。受光レンズ16は、眼球14の瞳孔と眼用撮像素子17を共役な結像関係に位置付けている。後述する所定のアルゴリズムにより、眼用撮像素子17上に結像された眼球像における角膜反射像の位置から、眼球14の視線方向(表示デバイス10の表示面における視点(視線位置))が検出される。
【0017】
図3は、カメラ1内の電気的構成を示すブロック図である。CPU3には、視線検出回路201、測光回路202、自動焦点検出回路203、信号入力回路204、表示デバイス駆動回路11、光源駆動回路205等が接続されている。また、CPU3は、撮影レンズユニット1A内に配置された焦点調節回路118と、撮影レンズユニット1A内の絞り駆動部112に含まれた絞り制御回路206とに、マウント接点117を介して信号を伝達する。CPU3に付随したメモリ部4は、撮像素子2および眼用撮像素子17からの撮像信号の記憶機能と、後述する視線の個人差を補正する視線補正パラメータの記憶機能とを有する。
【0018】
視線検出回路201は、眼用撮像素子17上に眼球像が結像した状態での眼用撮像素子17の出力(眼を撮像した眼画像)をA/D変換し、その結果をCPU3に送信する。CPU3は、後述する所定のアルゴリズムに従って眼画像から視線検出に必要な特徴点を抽出し、特徴点の位置からユーザーの視線(表示デバイス10の表示面における視点)を算出する。
【0019】
測光回路202は、測光センサの役割を兼ねた撮像素子2から得られる信号、具体的には被写界の明るさに対応した輝度信号の増幅、対数圧縮、A/D変換等を行い、その結果を被写界輝度情報としてCPU3に送る。
【0020】
自動焦点検出回路203は、撮像素子2の中に含まれる、位相差検出のために使用される複数の検出素子(複数の画素)からの信号電圧をA/D変換し、CPU3に送る。CPU3は、複数の検出素子の信号から、各焦点検出ポイントに対応する被写体までの距離を演算する。これは撮像面位相差AFとして知られる公知の技術である。実施例1では、一例として、図4(A)のファインダ内視野像(表示デバイス10の表示面)に示した180か所に対応する撮像面上の180か所のそれぞれに、焦点検出ポイントがあるとする。
【0021】
信号入力回路204には、レリーズボタン5の第1ストロークでONし、カメラ1の測光、測距、視線検出動作等を開始するためのスイッチSW1と、レリーズボタン5の第2ストロークでONし、撮影動作を開始するためのスイッチSW2とが接続されている。ス
イッチSW1,SW2からのON信号が信号入力回路204に入力され、CPU3に送信される。
【0022】
図4(A)は、ファインダ内視野を示した図であり、表示デバイス10が動作した状態(画像を表示した状態)を示す。図4(A)に示すように、ファインダ内視野には、焦点検出領域400、180個の測距点指標401、視野マスク402等がある。180個の測距点指標401のそれぞれは、撮像面上における焦点検出ポイントに対応する位置に表示されるように、表示デバイス10に表示されたスルー画像(ライブビュー画像)に重ねて表示される。また、180個の測距点指標401のうち、現在の視点A(推定位置)に対応する測距点指標401は、枠等で強調されて表示される。
【0023】
<視線検出動作の説明>
図5,6(A),6(B),7を用いて、視線検出方法について説明する。図5は、視線検出方法の原理を説明するための図であり、視線検出を行うための光学系の概略図である。図5に示すように、光源13a,13bは受光レンズ16の光軸に対して略対称に配置され、ユーザーの眼球14を照らす。光源13a,13bから発せられて眼球14で反射した光の一部は、受光レンズ16によって、眼用撮像素子17に集光する。図6(A)は、眼用撮像素子17で撮像された眼画像(眼用撮像素子17に投影された眼球像)の概略図であり、図6(B)は眼用撮像素子17におけるCMOSの出力強度を示す図である。図7は、視線検出動作の概略フローチャートを表す。
【0024】
視線検出動作が開始すると、図7のステップS701で、光源13a,13bは、ユーザーの眼球14に向けて赤外光を発する。赤外光によって照明されたユーザーの眼球像は、受光レンズ16を通して眼用撮像素子17上に結像され、眼用撮像素子17により光電変換される。これにより、処理可能な眼画像の電気信号が得られる。
【0025】
ステップS702では、視線検出回路201は、眼用撮像素子17から得られた眼画像(眼画像信号;眼画像の電気信号)をCPU3に送る。
【0026】
ステップS703では、CPU3は、ステップS702で得られた眼画像から、光源13a,13bの角膜反射像Pd,Peと瞳孔中心cに対応する点の座標を求める。
【0027】
光源13a,13bより発せられた赤外光は、ユーザーの眼球14の角膜142を照明する。このとき、角膜142の表面で反射した赤外光の一部により形成される角膜反射像Pd,Peは、受光レンズ16により集光され、眼用撮像素子17上に結像して、眼画像における角膜反射像Pd’,Pe’となる。同様に瞳孔141の端部a,bからの光束も眼用撮像素子17上に結像して、眼画像における瞳孔端像a’,b’となる。
【0028】
図6(B)は、図6(A)の眼画像における領域αの輝度情報(輝度分布)を示す。図6(B)では、眼画像の水平方向をX軸方向、垂直方向をY軸方向とし、X軸方向の輝度分布が示されている。実施例1では、角膜反射像Pd’,Pe’のX軸方向(水平方向)の座標をXd,Xeとし、瞳孔端像a’,b’のX軸方向の座標をXa,Xbとする。図6(B)に示すように、角膜反射像Pd’,Pe’のX座標Xd,Xeでは、極端に高いレベルの輝度が得られる。瞳孔141の領域(瞳孔141からの光束が眼用撮像素子17上に結像して得られる瞳孔像の領域)に相当する、X座標XaからX座標Xbまでの領域では、X座標Xd,Xeを除いて、極端に低いレベルの輝度が得られる。そして、瞳孔141の外側の虹彩143の領域(虹彩143からの光束が結像して得られる、瞳孔像の外側の虹彩像の領域)では、上記2種の輝度の中間の輝度が得られる。具体的には、X座標(X軸方向の座標)がX座標Xaより小さい領域と、X座標がX座標Xbより大きい領域とで、上記2種の輝度の中間の輝度が得られる。
【0029】
図6(B)に示すような輝度分布から、角膜反射像Pd’,Pe’のX座標Xd,Xeと、瞳孔端像a’,b’のX座標Xa,Xbを得ることができる。具体的には、輝度が極端に高い座標を角膜反射像Pd’,Pe’の座標として得ることができ、輝度が極端に低い座標を瞳孔端像a’,b’の座標として得ることができる。また、受光レンズ16の光軸に対する眼球14の光軸の回転角θxが小さい場合には、瞳孔中心cからの光束が眼用撮像素子17上に結像して得られる瞳孔中心像c’(瞳孔像の中心)のX座標Xcは、Xc≒(Xa+Xb)/2と表すことができる。つまり、瞳孔端像a’,b’のX座標Xa,Xbから、瞳孔中心像c’のX座標Xcを算出できる。このようにして、角膜反射像Pd’,Pe’の座標と、瞳孔中心像c’の座標とを見積もることができる。
【0030】
ステップS704では、CPU3は、眼球像の結像倍率βを算出する。結像倍率βは、受光レンズ16に対する眼球14の位置により決まる倍率で、角膜反射像Pd’,Pe’の間隔(Xd-Xe)の関数を用いて求めることができる。
【0031】
ステップS705では、CPU3は、受光レンズ16の光軸に対する眼球14の光軸の回転角を算出する。角膜反射像Pdと角膜反射像Peの中点のX座標と角膜142の曲率中心OのX座標とはほぼ一致する。このため、角膜142の曲率中心Oから瞳孔141の中心cまでの標準的な距離をOcとすると、Z-X平面(Y軸に垂直な平面)内での眼球14の回転角θxは、以下の式1で算出できる。Z-Y平面(X軸に垂直な平面)内での眼球14の回転角θyも、回転角θxの算出方法と同様の方法で算出できる。

β×Oc×SINθx≒{(Xd+Xe)/2}-Xc ・・・(式1)
【0032】
ステップS706では、CPU3は、ステップS705で算出した回転角θx,θyを用いて、表示デバイス10の表示面におけるユーザーの視点(視線が注がれた位置;ユーザーが見ている位置)を求める(推定する)。視点の座標(Hx,Hy)が瞳孔中心cに対応する座標であるとすると、視点の座標(Hx,Hy)は以下の式2,3で算出できる。

Hx=m×(Ax×θx+Bx) ・・・(式2)
Hy=m×(Ay×θy+By) ・・・(式3)
【0033】
式2,3のパラメータmは、カメラ1のファインダ光学系(受光レンズ16等)の構成で定まる定数であり、回転角θx,θyを表示デバイス10の表示面における瞳孔中心cに対応する座標に変換する変換係数である。パラメータmは、予め決定されてメモリ部4に格納されるとする。パラメータAx,Bx,Ay,Byは、視線の個人差を補正する視線補正パラメータであり、後述するキャリブレーション作業を行うことで取得される。パラメータAx,Bx,Ay,Byは、視線検出動作が開始する前にメモリ部4に格納されるとする。
【0034】
ステップS707では、CPU3は、視点の座標(Hx,Hy)をメモリ部4に格納し、視線検出動作を終える。
【0035】
<キャリブレーション作業の説明>
上述した視線検出動作により視点を推定することができるが、人間の眼球の形状の個人差等の要因により、視点を高精度に推定できないことがある。具体的には、視線補正パラメータAx,Ay,Bx,Byをユーザーに適した値に調整しなければ、図4(B)に示
すように、実際の視点Bと推定された視点Cとのずれが生じてしまう。図4(B)では、ユーザーは人物を注視しているが、カメラ1は背景が注視されていると誤って推定しており、適切な焦点検出及び調整ができない状態に陥ってしまっている。
【0036】
そこで、カメラ1が撮像を行う前に、キャリブレーション作業を行い、ユーザーに適した視線補正パラメータを取得し、カメラ1に格納する必要がある。
【0037】
従来より、キャリブレーション作業は、撮像前に図4(C)のような位置の異なる複数の指標を表示デバイス10の表示面に強調表示し、ユーザーにその指標を見てもらうことで行われている。そして、各指標の注視時に視線検出動作を行い、算出された複数の視点(推定位置)と、各指標の座標とから、ユーザーに適した視線補正パラメータを求める技術が、公知の技術として知られている。なお、ユーザーの見るべき位置が示唆されれば、指標の表示方法は特に限定されず、指標であるグラフィックが表示されてもよいし、画像(撮像された画像など)の輝度や色の変更で指標が表示されてもよい。
【0038】
<視線検出のエラーが生じる状態の説明>
上述したように、視線検出動作では、眼画像から角膜反射像と瞳孔像(具体的には、角膜反射像の座標、及び、瞳孔像の中心の座標)が検出され、検出したそれらに基づいて、眼球14の回転角θx,θyが取得される。そして、回転角θx,θyを表示デバイス10の表示面における瞳孔中心cに対応する座標に変換することにより、視点が推定される。
【0039】
そのため、角膜反射像や瞳孔像の誤検出が生じると(角膜反射像や瞳孔像の検出誤差が大きいと)、回転角θx,θyが正しく算出されず、視線検出のエラー(視線検出の失敗;視点の検出誤差の増大;視点の誤検出)が生じる。
【0040】
図8(A),8(B)を用いて、視線検出のエラーが生じる状態の一例を説明する。ユーザーが眼鏡を着用していると、光源13aと光源13bの少なくとも一方(眼球14を照明する光源)の光が、眼鏡の表面で反射して接眼レンズ12を通って眼用撮像素子17に入射し、眼画像にゴーストとして写り込むことがある。図8(A)は、眼用撮像素子17で撮像された眼画像(眼用撮像素子17に投影された眼球像)の概略図であり、図8(B)は眼用撮像素子17におけるCMOSの出力強度を示す図である。図8(A)では、眼鏡によるゴースト801が写り込んでいる。図8(B)に示すように、ゴースト801の出力強度は、角膜反射像の出力強度と同等である。
【0041】
図8(A),8(B)の状態では、ゴースト801の出力強度が角膜反射像の出力強度と同等であるため、ゴースト801が角膜反射像として誤検出されることがある。具体的には、角膜反射像Pd’のX座標Xdまたは角膜反射像Pe’のX座標Xeとして、ゴースト801のX座標Xfが誤検出されることがある。角膜反射像が誤検出された場合には、眼球像の結像倍率βが正しく算出されず、回転角θx,θyの算出誤差が増す。このとき、推定された視点(算出された回転角θx,θyを変換して得られる視点)が表示デバイス10の表示面の外側に位置していれば、視線検出のエラーが生じている(視点の推定精度が低い)と容易に判定できる。しかしながら、推定された視点が表示デバイス10の表示面の内側に位置している場合には、視点が正しく推定されていることがあり、視線検出のエラーが生じているか否か(視点の推定精度)を正しく判定することが難しい。
【0042】
図9(A),9(B)を用いて、視線検出のエラーが生じる状態の一例を説明する。図9(A)は、眼用撮像素子17で撮像された眼画像(眼用撮像素子17に投影された眼球像)の概略図であり、図9(B)は眼用撮像素子17におけるCMOSの出力強度を示す図である。図9(A)では、眼鏡によるゴースト901が写り込んでいる。図9(B)に
示すように、ゴースト901の出力強度は、虹彩像の出力強度と同等である。
【0043】
図9(A),9(B)の状態では、虹彩像の出力強度がゴースト901の出力強度と同等であるため、瞳孔像と虹彩像の境界(瞳孔端像a’,b’のX座標Xa,Xb)を正しく検出できないことがある。X座標Xa,Xbが正しく検出されなかった場合には、瞳孔像の中心の座標(瞳孔中心像c’のX座標Xc)が正しく算出されず、回転角θx,θyの算出誤差が増す。このとき、推定された視点が表示デバイス10の表示面の外側に位置している場合や、X座標Xa,Xbから推定される瞳孔径が想定範囲外(例えば、一般的な成人の瞳孔径の範囲外)である場合には、視線検出のエラーが生じていると容易に判定できる。しかしながら、推定された視点が表示デバイス10の表示面の内側に位置しており、推定される瞳孔径が想定範囲内である場合には、視点が正しく推定されていることがあり、視線検出のエラーが生じているか否かを正しく判定することが難しい。
【0044】
上述のように、視点の推定精度には、角膜反射像の検出誤差と瞳孔像の検出誤差とが大きく影響する。特に、瞳孔像の検出誤差は、角膜反射像や、眼用撮像素子17のノイズなどの影響により、角膜反射像の検出誤差に比べて大きくなりやすい(瞳孔像の検出結果はばらつきやすい)。そのため、瞳孔像の検出誤差が大きいことによる視点の推定精度の悪化が生じやすい(瞳孔像の検出結果のばらつきによる、推定された視点のばらつきが生じやすい)。
【0045】
具体的には、複数の角膜反射像の間隔「Xd-Xe」の算出誤差,複数の角膜反射像の中心位置「(Xd+Xe)/2」の算出誤差、瞳孔像の中心位置「Xc」の算出誤差などが、視点の推定精度に大きく影響する。したがって、複数の角膜反射像の間隔「Xd-Xe」の算出誤差,複数の角膜反射像の中心位置「(Xd+Xe)/2」の算出誤差、瞳孔像の中心位置「Xc」の算出誤差などに基づいて、視線検出のエラーが生じているか否かを判定することができる。
【0046】
なお、ゴーストによって視線検出のエラーが生じる例を説明したが、他の様々な要因に依っても視線検出のエラーは生じ得る。例えば、まぶたやまつ毛により正しく瞳孔を検出できないことによる視線検出のエラーが生じることもある。また、涙に角膜反射像が写ることで角膜反射像を誤検出する視線検出のエラーが生じることもある。ユーザーの周囲の環境光が影響して視線検出のエラーが生じることもある。
【0047】
<第1のエラー判定の説明>
視線検出のエラー判定(視線検出回路201による視線の検出がエラーであるか否かの判定;視線が正しく検出されたか否かの判定)の第1の方法について説明する。上述したように、単一の眼画像に基づいてエラー判定を行うと、検出誤差が極めて大きい場合は別として、エラー判定を高精度に行うことは難しい。そこで、第1の方法では、現在の眼画像と過去の眼画像とに基づいてエラー判定を行う。具体的には、現在の眼画像から検出された複数の角膜反射像と、過去の眼画像から検出された複数の角膜反射像とに基づいて、エラー判定を行う。こうすることで、エラー判定を高精度に行うことができる。過去の眼画像は、現在の眼画像の直前に撮像された眼画像であってもよいし、そうでなくてもよい。過去の眼画像として単一の眼画像が使用されてもよいし、複数の眼画像が使用されてもよい。
【0048】
複数の角膜反射像の間隔「Xd-Xe」は、ファインダ(受光レンズ16等)から角膜までの距離と強い相関がある。カメラ1を用いる場合に、ファインダを覗いている眼球14がZ軸方向(受光レンズ16の光軸に平行な方向)に前後する動作は、通常は行われない。そのため、ファインダを覗いている間は、複数の角膜反射像の間隔「Xd-Xe」は略一定である。
【0049】
そこで、第1の方法では、現在の眼画像から検出された複数の角膜反射像の間隔と、過去の眼画像から検出された複数の角膜反射像の間隔とを比較して、エラー判定を行う。こうすることで、エラー判定を高精度に行うことができる。このエラー判定は、視線検出のエラー判定とも言えるし、複数の角膜反射像の間隔「Xd-Xe」の検出(算出)のエラー判定とも言える。
【0050】
視線検出のエラー判定動作(第1の方法)について、図10のフローチャートを用いて説明する。
【0051】
ステップS1001では、CPU3は、現在の眼画像から複数の角膜反射像が検出できたか否かを判定し、複数の角膜反射像が検出できた場合はステップS1002に処理を進め、複数の角膜反射像が検出できなかった場合はステップS1007に処理を進める。
【0052】
ステップS1007では、CPU3は、現在の視線検出がエラーであると判定する。
【0053】
ステップS1002では、CPU3は、現在の眼画像から検出された複数の角膜反射像の間隔(反射像間隔)を算出し、メモリ部4に格納する。なお、眼球14を照明する光源が3つ以上存在し、3つ以上の角膜反射像が検出される場合には、検出された3つ以上の角膜反射像から得られる複数の反射像間隔の代表値(平均値、最大値、最小値、最頻値、中間値など)を算出すればよい。3つ以上の角膜反射像から得られる全ての反射像間隔を算出してもよいし、一部の反射像間隔を算出してもよい。例えば、2行2列の4つ光源が存在する場合には、行方向に並んだ2つの角膜反射像の間隔のみを算出してもよいし、列方向に並んだ2つの角膜反射像の間隔のみを算出してもよいし、斜め方向に並んだ2つの角膜反射像の間隔のみを算出してもよい。それら3種類の反射像間隔のうちの2種類の反射像間隔を算出してもよい。
【0054】
ステップS1003では、CPU3は、反射像間隔が所定回数(例えば5回や10回など)以上算出されているか否か、つまりステップS1002の処理が所定回数以上行われたている否かを判定する。そして、CPU3は、反射像間隔が所定回数以上算出されている場合はステップS1004に処理を進め、反射像間隔の算出回数が所定回数に達していない場合はエラー判定を行わずにエラー判定動作を終了する。
【0055】
ステップS1004では、CPU3は、過去の眼画像から算出された反射像間隔をメモリ部4から取得する。過去の単一の眼画像から算出された1つの反射像間隔が取得されてもよいが、実施例1では、CPU3は、過去の所定期間において算出された1つ以上の反射像間隔を取得し、取得した1つ以上の反射像間隔の平均値を算出するとする。平均値の代わりに、最大値、最小値、最頻値、中間値などの他の代表値が算出されてもよい。過去の所定期間は、例えば、現在までの5フレーム分の期間や、現在から5フレーム前のタイミングから2フレーム前のタイミングまでの期間などである。
【0056】
ステップS1005では、CPU3は、ステップS1004で取得した反射像間隔(過去の反射像間隔;実施例1では平均値)と、ステップS1002で算出した反射像間隔(現在の反射像間隔)との差分を算出する。
【0057】
ステップS1006では、CPU3は、ステップS1005で算出した差分を所定の閾値と比較し、差分が所定の閾値以上であるか否かを判定する。そして、差分が所定の閾値以上である場合は、CPU3は、ステップS1007に処理を進め、現在の視線検出がエラーであると判定する。差分が所定の閾値未満である場合は、CPU3は、現在の視線検出が成功であると判定して、エラー判定動作を終了する。
【0058】
<第2のエラー判定の説明>
視線検出のエラー判定の第2の方法について説明する。第2の方法でも、現在の眼画像と過去の眼画像とに基づいてエラー判定を行う。具体的には、第2の方法では、現在の眼画像から検出された複数の角膜反射像および瞳孔像と、過去の眼画像から検出された複数の角膜反射像および瞳孔像とに基づいて、エラー判定を行う。こうすることで、エラー判定を高精度に行うことができる。
【0059】
複数の角膜反射像の中心位置「(Xd+Xe)/2」と、瞳孔像の中心位置「Xc」とには強い相関がある。ファインダを覗いているユーザーの頭部の並進移動がなければ、瞳孔像の中心位置「Xc」が移動した際に、複数の角膜反射像の中心位置「(Xd+Xe)/2」も、瞳孔像の中心位置「Xc」と同じ方向に移動する。そして、カメラ1を用いる場合に、ファインダを覗いているユーザーの頭部が連続的に並進移動する動作は、通常は行われない。そのため、複数の角膜反射像の中心位置「(Xd+Xe)/2」と、瞳孔像の中心位置「Xc」との一方のみの移動は、通常は生じない。
【0060】
そこで、第2の方法では、以下の2種類の距離を比較して、エラー判定を行う。こうすることで、エラー判定を高精度に行うことができる。このエラー判定は、視線検出のエラー判定とも言えるし、複数の角膜反射像の中心位置「(Xd+Xe)/2」の検出(算出)のエラー判定や、瞳孔像の中心位置「Xc」の検出(算出)のエラー判定などとも言える。
・現在の眼画像から検出された複数の角膜反射像を代表する位置(代表位置;例えば中心位置)から、現在の眼画像から検出された瞳孔像の位置(例えば中心位置)までの距離
・過去の眼画像から検出された複数の角膜反射像を代表する位置(代表位置;例えば中心位置)から、前記過去の眼画像から検出された瞳孔像の位置(例えば中心位置)までの距離
【0061】
しかしながら、眼球14を照明する光源が3つ以上存在する場合に、光源と同じ数の角膜反射像が検出できるとも限らず、検出できた角膜反射像の数や配列に依って複数の角膜反射像の代表位置(例えば中心位置)は変化する。
【0062】
図11は、眼用撮像素子17で撮像された眼画像(眼用撮像素子17に投影された眼球像)の概略図である。図11の眼画像は、眼球14を照明する光源が4つ存在する場合の眼画像であり、4つの角膜反射像P1~P4を含んでいる。角膜反射像P1~P4の全てが検出できた場合には、複数の角膜反射像の中心位置として、角膜反射像P1~P4の中心位置Pc1が算出される。一方で、角膜反射像P1,P2が検出できず、角膜反射像P3,P4のみが検出できた場合には、複数の角膜反射像の中心位置として、角膜反射像P1~P4の中心位置Pc1は算出されず、角膜反射像P3,P4の中心位置Pc2が算出される。
【0063】
このように、検出された角膜反射像の数や配列に応じて複数の角膜反射像の代表位置が変化するため、複数の角膜反射像の代表位置のみが大きく変化することがある。そして、検出された複数の角膜反射像の数が現在の眼画像と異なる眼画像を過去の眼画像として使用すると、上述した比較を好適に行えない。そのため、過去の眼画像として、検出された複数の角膜反射像の数が現在の眼画像と略同一であるという条件を少なくとも満たす眼画像を使用することが好ましい。そして、過去の眼画像として、検出された複数の角膜反射像の配列が現在の眼画像と略同一であるという条件をさらに満たす眼画像を使用することがより好ましい。第1の方法でエラー判定を行う場合にも、過去の眼画像として、これらの条件を満たす眼画像を使用することが好ましい。
【0064】
視線検出のエラー判定動作(第2の方法)について、図12のフローチャートを用いて説明する。
【0065】
ステップS1201では、CPU3は、現在の眼画像に基づいて反射中心(複数の角膜反射像の中心位置)と瞳孔中心(瞳孔像の中心位置)が算出できたか否かを判定する。そして、CPU3は、反射中心と瞳孔中心の両方が算出できた場合はステップS1202に処理を進め、反射中心と瞳孔中心の少なくとも一方が算出できなかった場合はステップS1208に処理を進める。
【0066】
ステップS1208では、CPU3は、現在の視線検出がエラーであると判定する。
【0067】
ステップS1202では、CPU3は、角膜反射像の現在の検出状態(現在の眼画像から検出された複数の角膜反射像の数と配列)を判定し、どの光源の角膜反射像が検出できたかを判定する。ゴーストが角膜反射像として誤検出されている可能性はあるが、そのような誤検出は上述した第1の方法でエラーとして判定される。ゴーストが角膜反射像として誤検出され難くなるように、角膜検出像の候補として検出された複数の像の配列やサイズなどを考慮して、角膜反射像を検出してもよい。角膜反射像の候補として、光源よりも多くの像が検出された場合には、光源の数と同じ数の候補の複数の組み合わせから複数の視点を推定してもよい。そして、前回の視点に最も近い視点など、視点らしさが最も高い視点が推定された組み合わせの各候補を角膜反射像として検出してもよい。
【0068】
ステップS1203では、CPU3は、現在の眼画像の反射中心と瞳孔中心の間の距離を算出し、メモリ部4に格納する。
【0069】
ステップS1204では、CPU3は、角膜反射像の検出状態(検出された複数の角膜反射像の数と配列)が現在と略同一の状態で中心間距離(反射中心と瞳孔中心の間の距離)が所定回数(例えば5回や10回など)以上算出されているか否かを判定する。つまり、CPU3は、角膜反射像の検出状態が現在と略同一の状態でステップS1203の処理が所定回数以上行われているか否かを判定する。そして、角膜反射像の検出状態が現在と略同一の状態で中心間距離が所定回数以上算出されている場合には、CPU3は、ステップS1205に処理を進める。角膜反射像の検出状態が現在と略同一の状態での中心間距離の算出回数が所定回数に達していない場合には、CPU3は、エラー判定を行わずにエラー判定動作を終了する。
【0070】
ステップS1205では、CPU3は、角膜反射像の検出状態が現在の眼画像と略同一過去の眼画像から算出された中心間距離をメモリ部4から取得する。実施例1では、CPU3は、角膜反射像の検出状態が現在と略同一の過去の所定期間(所定長の期間)において算出された1つ以上の中心間距離を取得し、取得した1つ以上の中心間距離の平均値を算出するとする。平均値の代わりに、最大値、最小値、最頻値、中間値などの他の代表値が算出されてもよい。過去の単一の眼画像から算出された1つの中心間距離が取得されてもよい。
【0071】
ステップS1206では、CPU3は、ステップS1205で取得した中心間距離(過去の中心間距離;実施例1では平均値)と、ステップS1203で算出した中心間距離(現在の中心間距離)との差分を算出する。
【0072】
ステップS1207では、CPU3は、ステップS1206で算出した差分を所定の閾値と比較し、差分が所定の閾値以上であるか否かを判定する。そして、差分が所定の閾値以上である場合は、CPU3は、ステップS1208に処理を進め、現在の視線検出がエラーであると判定する。差分が所定の閾値未満である場合は、CPU3は、現在の視線検
出が成功であると判定して、エラー判定動作を終了する。
【0073】
<カメラ動作の説明>
カメラ1の動作について、図13のフローチャートを用いて説明する。
【0074】
カメラ1の電源がONされると、ステップS1301で、撮像素子2は、スルー画像の取得を開始し、スルー画像の画像信号をCPU3に送信し、CPU3は、取得したスルー画像を表示デバイス10に表示する。ユーザーは、表示デバイス10に表示されたスルー画像を見ることで、被写体の確認を行う。カメラ1の電源は、カメラ1に対するユーザー操作に応じてON/OFFされる。
【0075】
ステップS1302では、CPU3は、カメラ1の電源をOFFするか否かを判定し、OFFする場合は図13のカメラ動作を終了し、OFFしない場合はステップS1303に処理を進める。
【0076】
ステップS1303では、CPU3は、ステップS1301でスルー画像を視認し始めたユーザーの眼画像の取得を開始し、図7の視線検出動作を行う。視線検出動作により、眼画像における瞳孔像や角膜反射像の座標が検出され、表示デバイス10の表示面における視点の座標が算出される。
【0077】
ステップS1304では、CPU3は、図10,12のエラー判定動作を行う。
【0078】
ステップS1305では、CPU3は、ステップS1304のエラー判定動作の結果に応じて、現在の視線検出がエラーであるか否かを判定する。そして、CPU3は、現在の視線検出がエラーである場合はステップS1306に処理を進め、現在の視線検出がエラーでない(成功である)場合はステップS1307に処理を進める。
【0079】
ステップS1306では、CPU3は、過去の所定期間に算出された複数の視点から現在の視点を予測する。ステップS1306の処理が行われた場合には、現在の視点として、ステップS1303で算出された視点ではなく、ステップS1306で予測された視点が使用されることになる。なお、視点の予測方法は特に限定されない。例えば、過去の視点の移動量や移動方向などに基づいて現在の視点を予測できる。視点が移動している場合には、視点の軌跡が滑らかに延長されるように、現在の視点を予測できる。視点が1点で略止まっている場合には(1点を中心に揺れている場合などでは)、複数の視点の中心位置や平均位置などを、現在の視点として予測できる。
【0080】
ステップS1307では、CPU3は、表示デバイス10の表示面における現在の視点(推定位置)に視線枠(視点を示す枠)が表示されるように、スルー画像における、現在の視点(推定位置)に対応する位置に、視点枠を重ねる。これにより、図4(A)のような表示(スルー画像に視線枠を重ねた表示)が行われ、現在の視点A(推定位置)をユーザーに伝えることができる。視点枠の代わりに、視点を示す点等が表示されてもよい。
【0081】
ステップS1308では、CPU3は所定時間の待機を行う。
【0082】
ステップS1309では、CPU3は、ユーザーによってレリーズボタン5が押されて(半押しされて)スイッチSW1がONとなったか否かを判定する。例えば、ユーザーは、スルー画像に重ねて表示された視点枠(推定された視点を示す枠)の位置での合焦に同意した場合に、レリーズボタン5の半押しを行い、スイッチSW1をONにする。CPU3は、スイッチSW1がONとなった場合はステップS1310に処理を進め、スイッチSW1がONとならなかった場合はステップS1303に処理を戻して視点の再推定を行
う。
【0083】
ステップS1310では、CPU3は、現在の視線枠の位置での測距動作を行い、測距動作が行われたことを、視線枠の色を変える等の強調表示でユーザーに知らせる。
【0084】
ステップS1311では、CPU3は、ステップS1310で得られた測距結果に応じて、撮影レンズユニット1A内のレンズ101を駆動する。これにより、スルー画像に重ねて表示された視点枠の位置での合焦が実現される。
【0085】
ステップS1312では、CPU3は、ユーザーによってレリーズボタン5がさらに押し込まれて(全押しされて)スイッチSW2がONとなったか否かを判定する。例えば、ユーザーは、現在の合焦位置での撮影に同意した場合に、レリーズボタン5の全押しを行い、スイッチSW2をONにする。CPU3は、スイッチSW2がONとなった場合はステップS1313に処理を進め、スイッチSW2がONとならなかった場合はステップS1309に処理を戻す。
【0086】
ステップS1313では、CPU3は、撮影動作を行うことで、撮像素子2によって取得された画像信号を、メモリ部4に格納する。
【0087】
ステップS1314では、CPU3は、ステップS1313でメモリ部4に格納された画像(撮影された画像)を表示デバイス10に所定時間表示し、ステップS1302に処理を戻す。
【0088】
<まとめ>
以上述べたように、実施例1によれば、視線検出のエラー判定に、現在の眼画像だけでなく、過去の眼画像がさらに用いられる。具体的には、眼画像の特徴の時間変化に基づいて、エラー判定が行われる。これにより、視線検出のエラー判定を高い精度で行うことができる。ひいては、検出誤差の大きい視線(視点)を適切に排除でき、ユーザーに視認状態の改善を適切に促すことができ、正確な視線に基づく位置での合焦を実現できる。
【0089】
<<実施例2>>
以下、本発明の実施例2について説明する。なお、以下では、実施例1と同じ点(構成や処理など)についての説明は省略し、実施例1と異なる点について説明する。実施例1ではカメラ動作中にエラー判定を行う例を説明した。実施例2では、眼で見るべき指標が表示デバイス10に表示されている状態でエラー判定を行う例を説明する。指標の用途は特に限定されないが、実施例2では、キャリブレーション作業のための指標を用いる例を説明する。
【0090】
実施例1で述べたように、キャリブレーション作業は、撮像前に位置の異なる複数の指標を表示デバイス10に強調表示し、ユーザーにその指標を見てもらうことで行われる。例えば、図4(C)に示すように、表示デバイス10の表示面の中心、中心よりも上側、中心よりも下側、中心よりも左側、及び、中心よりも右側の5か所に指標が表示される。実施例2では指標が1つずつ表示されるとするが、5つの指標の全てを表示し、5つの指標の間で強調された指標を順次切り替えてもよい。ユーザーは表示された指標(強調された指標)を見ることになる。つまり、キャリブレーション作業では、ユーザーの見るべき位置が指標で指定される。
【0091】
キャリブレーション作業中にも、図7の視線検出動作が行われ、様々な要因で視線検出のエラーが生じる。例えば、図8(A),8(B),9(A),9(B)を用いて説明したように、角膜反射像や瞳孔像の誤検出により、視線検出のエラーが生じる。誤った視線
検出結果(視点)を用いると、誤った視線補正パラメータが決定され、視線が適切に補正されなくなる。キャリブレーション作業中に図10,12のエラー判定動作を行えば、誤った視線検出結果を除外して、適切な視線補正パラメータを決定できる。
【0092】
また、眼画像における瞳孔像や角膜反射像の位置が大きく変わると(つまり、ユーザーの見ている位置(視点)が大きく変わると)、周辺光量落ちによる露光のムラや、レンズの収差などの影響により、瞳孔像や角膜反射像の特徴が大きく変化する。例えば、瞳孔像の形状、瞳孔像の明るさ、角膜反射像の形状、角膜反射像の明るさなどが大きく変化する。複数の角膜反射像の間隔や、複数の角膜反射像の中心位置と瞳孔像の中心位置との間の距離なども大きく変化する。そのため、実際の視点が大きく変わった場合に、視点の変更前に得られた情報をエラー判定に使用すると、視線検出に成功しているにもかかわらず、視線検出がエラーであると誤判定されることがある。従って、視点の変更前に得られた情報は使用しないことが好ましい。キャリブレーション作業中であれば、指標の表示位置の切り替えに応じて視点が大きく変化すると考えられるため、視点の変更前に得られた情報を容易かつ好適に除外して、視線検出のエラー判定を高い精度で行うことができる。例えば、過去の眼画像として、指標の表示位置が現在の眼画像と同じ状態で撮像された眼画像を使用することで、視線検出のエラー判定を高い精度で行うことができる。
【0093】
<キャリブレーション動作>
実施例2に係るキャリブレーション動作について、図14のフローチャートを用いて説明する。キャリブレーション動作は、例えば、キャリブレーション作業の開始を指示するユーザー操作に応じて開始される。
【0094】
ステップS1401では、CPU3は、ユーザーに注視させる指標を表示デバイス10に表示する。
【0095】
ステップS1402では、CPU3は、所定時間の待機を行う。
【0096】
ステップS1403では、CPU3は、ユーザーによってレリーズボタン5が押されて(半押しされて)スイッチSW1がONとなったか否かを判定する。例えば、ユーザーは、指標を注視したことを示すために、レリーズボタン5の半押しを行い、スイッチSW1をONにする。CPU3は、スイッチSW1がONとなった場合はステップS1404に処理を進め、スイッチSW1がONとならなかった場合はステップS1402に処理を戻す。
【0097】
ステップS1404では、CPU3は、図7の視線検出動作を行う。視線検出動作により、眼画像における瞳孔像や角膜反射像の座標が検出され、表示デバイス10の表示面における視点の座標が算出される。
【0098】
ステップS1405では、CPU3は、図10,12のエラー判定動作を行う。
【0099】
ステップS1406では、CPU3は、ステップS1405のエラー判定動作の結果に応じて、現在の視線検出がエラーであるか否かを判定する。そして、CPU3は、現在の視線検出がエラーである場合はステップS1407に処理を進め、現在の視線検出がエラーでない(成功である)場合はステップS1409に処理を進める。
【0100】
ステップS1407では、CPU3は、視線検出動作の実行回数(視線検出のエラー回数)が所定回数以上であるか否かを判定する。そして、CPU3は、視線検出動作の実行回数が所定回数未満である場合はステップS1404に処理を戻し、視線検出動作の実行回数が所定回数以上である場合はステップS1408に処理を進める。視線検出動作の実行回数はCPU3によりカウントされる。
【0101】
ステップS1408では、CPU3は、キャリブレーション(視線補正パラメータの決定)が適切に行えないと判断し、キャリブレーションに失敗した旨をユーザーへ通知する。そして、CPU3は、キャリブレーション動作を終了する。
【0102】
ステップS1409では、CPU3は、視点の検出回数(視点を検出できた回数;視線検出の成功回数)が所定回数以上であるか否かを判定する。そして、CPU3は、視点の検出回数が所定回数未満である場合はステップS1404に処理を戻し、視点の検出回数が所定回数以上である場合はステップS1410に処理を進める。視点の検出回数はCPU3によりカウントされる。
【0103】
ステップS1410では、CPU3は、全ての指標について視線検出(ステップS1401~S1409の処理)が完了したか否かを判定する。そして、CPU3は、視線検出が行われていない指標が残っている場合はステップS1411に処理を進め、全ての指標について視線検出が完了した場合はステップS1413に処理を進める。
【0104】
ステップS1411では、CPU3は、ステップS1401で表示する指標を次の指標に変更する(切り替える)。
【0105】
ステップS1412では、CPU3は、変更前の指標が表示されている状態で撮像された眼画像がエラー判定動作で過去の眼画像として使用されないように、変更前の指標が表示されている状態で得られた情報をリセットする。例えば、CPU3は、複数の角膜反射像の間隔や、複数の角膜反射像の中心位置と瞳孔像の中心位置との間の距離などをリセットする。CPU3は、ステップS1407,S1409の処理ためにカウントした回数(視線検出動作の実行回数と視点の検出回数)もリセットする。そして、CPU3は、ステップS1401に処理を戻す。
【0106】
ステップS1413では、CPU3は、キャリブレーションに成功した旨をユーザーへ通知する。
【0107】
ステップS1414では、CPU3は、指標ごとに検出した視点に基づいて視線補正パラメータを算出し、視線補正パラメータをメモリ部4に格納し、キャリブレーション動作を終了する。
【0108】
<まとめ>
以上述べたように、実施例2によれば、キャリブレーション作業中に視線検出のエラー判定を高い精度で行うことができ、ひいては視線補正パラメータを高い精度で決定することができる。さらに、過去の眼画像として、ユーザーが見るべき指標の表示位置が現在の眼画像と同じ状態で撮像された眼画像が使用される。これにより、実際の視点が大きく変更される前に得られた情報を容易かつ好適に除外して、視線検出のエラー判定をより高い精度で行うことができる。
【0109】
なお、実施例1,2はあくまで一例であり、本発明の要旨の範囲内で実施例1,2の構成を適宜変形したり変更したりすることにより得られる構成も、本発明に含まれる。実施例1,2の構成を適宜組み合わせて得られる構成も、本発明に含まれる。
【0110】
また、カメラのファインダを覗くユーザーの視線を検出する例について説明したが、これに限られない。例えば、VR(仮想現実)等を体感するために頭部に装着されるHMD(ヘッドマウントディスプレイ)において視線検出を行う場合にも、HMDと眼球(HMDを装着したユーザーの眼球)の位置関係は、通常は略一定である。そのため、本発明により、実施例1,2で述べた効果を得ることができる。同様に、AR(拡張現実)グラス等のメガネ型の視線検出装置にも本発明は適用可能である。眼画像を用いて視点を推定する全ての電子機器に対して、本発明は適用可能である。特に、視野を制限する眼窓枠(カメラの接眼窓枠やメガネの枠等)を有する電子機器に対して、本発明は好適に適用可能である(眼窓枠と眼球(眼窓枠内を覗いている眼球)の位置関係が通常は略一定であるため)。
【0111】
以上述べたように、実施例1,2によれば、カメラ、HMD,メガネ型の視線検出装置などにおいて、視線検出のエラー判定に、現在の眼画像だけでなく、過去の眼画像をさらに用いることにより、高精度なエラー判定を実現する視線検出装置を提供できる。
【0112】
<その他の実施例>
本発明は、上述の実施例の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【符号の説明】
【0113】
1:カメラ 3:CPU
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14