(57)【要約】【課題】操作者の注視位置とカーソル位置との誤差を容易に補正可能なポインティングデバイスを提供する。 【解決手段】視線検出装置２は、撮像デバイス１で取得される操作者の目の画像情報を用いて、ディスプレー４の画面上で操作者が注視している位置への視線を検出し、その検出結果からディスプレー４の画面上で入力可能な位置を示すカーソル６の座標情報を算出する。そして、視線検出装置２は、算出された座標情報に基づいてディスプレー４の画面上に表示されたカーソル６の位置と操作者が注視している位置７との誤差に基づく操作者の動きを検出する。そうすると、視線検出装置２は、その検出した操作者の動きに基づいて、撮像デバイス１で取得される操作者の特徴的な画像情報を動かし、誤差を補正する。【選択図】図１
2009064395.tif 000002
【特許請求の範囲】
【請求項１】
撮像デバイスで取得される操作者の目の画像情報を用いて、ディスプレー画面上で操作者が注視している位置への視線を検出し、その検出結果から前記ディスプレー画面上で入力可能な位置を示すカーソルの座標情報を算出する視線検出手段と、
前記視線検出手段により得られた座標情報に基づいて前記ディスプレー画面上に表示されたカーソル位置と前記操作者が注視している位置との誤差に基づく前記操作者の動きを検出する動き検出手段と、
前記動き検出手段によって検出された前記操作者の動きに基づいて、前記誤差を補正する誤差補正手段とを備えるポインティングデバイス。
【請求項２】
前記動き検出手段は、前記操作者の特徴的な画像情報の動きを前記誤差に基づく前記操作者の動きとして検出する、請求項１に記載のポインティングデバイス。
【請求項３】
前記動き検出手段は、前記操作者の瞳孔の動きまたは前記操作者の視線方向の変化を前記誤差に基づく前記操作者の動きとして検出する、請求項２に記載のポインティングデバイス。
【請求項４】
操作者の注視位置とカーソル位置との誤差の補正をコンピュータに実行させるためのプログラムであって、
視線検出手段が、撮像デバイスで取得される操作者の目の画像情報を用いて、ディスプレー画面上で操作者が注視している位置への視線を検出し、その検出結果から前記ディスプレー画面上で入力可能な位置を示すカーソルの座標情報を算出する第１のステップと、
動き検出手段が、前記第１のステップにおいて得られた座標情報に基づいて前記ディスプレー画面上に表示されたカーソル位置と前記操作者が注視している位置との誤差に基づく前記操作者の動きを検出する第２のステップと、
誤差補正手段が、前記第２のステップにおいて検出された前記操作者の動きに基づいて、前記誤差を補正する第３のステップとをコンピュータに実行させるためのプログラム。
【請求項５】
前記第２のステップにおいて、前記動き検出手段は、前記操作者の特徴的な画像情報の動きを前記誤差に基づく前記操作者の動きとして検出する、請求項４に記載のコンピュータに実行させるためのプログラム。
【請求項６】
前記第２のステップにおいて、前記動き検出手段は、前記操作者の瞳孔の動きまたは前記操作者の視線方向の変化を前記誤差に基づく前記操作者の動きとして検出する、請求項５に記載のコンピュータに実行させるためのプログラム。
【請求項７】
請求項４から請求項６のいずれか１項に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、操作者の視線に基づきコンピュータ等のディスプレー画面上のカーソルを操作することを目的とする視線入力によるポインティングデバイス、コンピュータに実行させるためのプログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体に関し、特に、操作者が注視している位置とカーソルの位置との誤差を補正するポインティングデバイス、操作者の注視位置とカーソルの位置との誤差の補正をコンピュータに実行させるためのプログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体に関するものである。 
【背景技術】
【０００２】
操作者の視線を算出する手法及び装置は、主にコンピュータ等のポインティングデバイスへの応用として既に様々の提案がなされている（例えば特許文献１，２参照）。従来の技術では、まず、操作者からある程度離れた位置にカメラ等の撮像デバイスを配置して目や頭部を含めた領域の画像を取得する。その後、取得された画像から瞳孔領域を検出して瞳孔中心位置情報などから視線方向（ベクトル）を算出する。
【０００３】
視線方向を算出するために必要な基準点を取得するのに、専用眼鏡をかけたり、専用シールを顔に張るなど、既知の標的を身に付ける手法や、プルキニエ像と言われる操作者の角膜表面上の近赤外線投光器からの反射光を利用する手法などが提案されている。
【０００４】
他にも頭部画像における目、鼻、口などの配置から顔面の傾きを求め視線方向を算出する方法もある（非特許文献１）。 
【０００５】
視線の起点も取得画像から視線方向と共に算出する。一般的には瞳孔中心位置や角膜曲率中心位置などの算出結果が用いられる。
【０００６】
そして、視線は、視線の起点から視線方向に伸ばした直線として算出される。
【０００７】
また、装置系や操作者の位置関係や操作者自身の変更があるごとに、操作開始時にキャリブレーションをとることで、視線検出装置とディスプレーの座標系の歪みや誤差の補正や視線の算出精度を向上させることが出来る。 
【０００８】
この視線検出技術では、一般的なポインティングデバイスのように手動による操作を必要としないので、肢体不自由者がコンピュータなどを用いてコミュニケーションを行う場合有効である。また、健常者の使用についても、視線でのカーソル操作と手動によるキーボード等の入力を組み合わせることで、より快適かつ感覚的な入力を可能とする。 
【特許文献１】特開平１１−２７５５号公報
【特許文献２】特開２００３−７９５７７号公報
【特許文献３】特開２０００−８９９０５号公報
【非特許文献１】松本吉央，“顔情報のリアルタイム計測技術とその応用”，システム／制御／情報：システム制御情報学会誌，Ｖｏｌ．４５，Ｎｏ．９，ｐｐ．５１７−５２２，２００１．
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、従来の技術による視線算出では、算出精度に限界がある。算出精度を決める要因として、視線算出アルゴリズムの種類、撮像デバイスの分解能や演算装置の演算精度等の装置系の精度、操作者の頭部と装置系との位置関係、操作時の操作者の動き、および操作者の角膜や瞳孔等の身体的個人差等が挙げられる。 
【００１０】
算出精度を向上させる従来の方法としては、キャリブレーションを詳細に行う、装置系の演算精度を上げる、装置系のセンサの種類を増やす、操作者の身体的情報を予めアルゴリズムに反映させる、演算装置と頭部との位置関係を固定するために頭部を動かないように固定して使用したり装置を眼鏡にしてかける等が挙げられる。 
【００１１】
しかしながら、予測外の外乱による影響も存在するので、どんなに工夫を加えても算出精度には限界がある。従って、このような視線入力によるポインティングデバイスを操作者が使用した場合、視線を目標位置に向けてもカーソルと目標位置には誤差を生じる。また、このような解決手段では、操作者に負担を強いたり、装置系が大規模になりコストが高くなる問題がある。 
【００１２】
視線検出装置の根本的な問題は、視線の先の目標位置を決めているのが操作者であるので、目標位置とカーソル位置との間の誤差を視認することが操作者にしかできないということである。そして、従来の手法では、操作者が視認した誤差を使用中に装置系へ伝えることができない。ゆえに、使用中にその誤差を補正することができないのである。
【００１３】
そこで、この発明は、かかる問題を解決するためになされたものであり、その目的は、操作者の注視位置とカーソル位置との誤差を容易に補正可能なポインティングデバイスを提供することである。
【００１４】
また、この発明の別の目的は、操作者の注視位置とカーソル位置との誤差の補正をコンピュータに実行させるためのプログラムを提供することである。
【００１５】
さらに、この発明の別の目的は、操作者の注視位置とカーソル位置との誤差の補正をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体を提供することである。
【課題を解決するための手段】
【００１６】
この発明によれば、ポインティングデバイスは、視線検出手段と、動き検出手段と、誤差補正手段とを備える。視線検出手段は、撮像デバイスで取得される操作者の目の画像情報を用いて、ディスプレー画面上で操作者が注視している位置への視線を検出し、その検出結果からディスプレー画面上で入力可能な位置を示すカーソルの座標情報を算出する。動き検出手段は、視線検出手段により得られた座標情報に基づいてディスプレー画面上に表示されたカーソル位置と操作者が注視している位置との誤差に基づく操作者の動きを検出する。誤差補正手段は、動き検出手段によって検出された操作者の動きに基づいて、誤差を補正する。
【００１７】
好ましくは、動き検出手段は、操作者の特徴的な画像情報の動きを誤差に基づく操作者の動きとして検出する。
【００１８】
好ましくは、動き検出手段は、操作者の瞳孔の動きまたは操作者の視線方向の変化を誤差に基づく操作者の動きとして検出する。
【００１９】
この発明によれば、コンピュータに実行させるためのプログラムは、操作者の注視位置とカーソル位置との誤差の補正をコンピュータに実行させるためのプログラムであって、視線検出手段が、撮像デバイスで取得される操作者の目の画像情報を用いて、ディスプレー画面上で操作者が注視している位置への視線を検出し、その検出結果からディスプレー画面上で入力可能な位置を示すカーソルの座標情報を算出する第１のステップと、動き検出手段が、第１のステップにおいて得られた座標情報に基づいてディスプレー画面上に表示されたカーソル位置と操作者が注視している位置との誤差に基づく操作者の動きを検出する第２のステップと、誤差補正手段が、第２のステップにおいて検出された操作者の動きに基づいて、誤差を補正する第３のステップとをコンピュータに実行させるためのプログラムである。
【００２０】
好ましくは、第２のステップにおいて、動き検出手段は、操作者の特徴的な画像情報の動きを誤差に基づく操作者の動きとして検出する。
【００２１】
好ましくは、第２のステップにおいて、動き検出手段は、操作者の瞳孔の動きまたは操作者の視線方向の変化を誤差に基づく操作者の動きとして検出する。
【００２２】
さらに、この発明によれば、記録媒体は、請求項４から請求項６のいずれか１項に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【発明の効果】
【００２３】
頭部位置による使用中の補正ができるので、視線算出の精度が多少悪くてもカーソル位置を目標位置に合わせることができる。すなわち、厳密な使用前のキャリブレーション、高度な視線算出アルゴリズム、センサ類の精度向上、多種のセンサ類の使用などへの要求が軽減される。したがって、開発コストを低く抑えることが可能になる。 
【００２４】
また、従来の視線算出手法は、演算装置と頭部との位置関係が固定されたほうが精度が良くなる傾向にあったため、頭部を固定したり、装置を眼鏡にして装着したりするなど、操作者に負担を強いる構成であった。しかし、本発明では、逆に頭部を動かすことにより誤差補正を行うので、操作者への拘束感を軽減できる。 
【発明を実施するための最良の形態】
【００２５】
本発明の実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。
【００２６】
図１は、この発明の実施の形態によるポインティングデバイスの構成を示す概略図である。また、図２は、頭部移動によるカーソル位置の補正を行う前の取得画像（左）とディスプレー画面（右）を示す図である。さらに、図３は、頭部移動によるカーソル位置の補正を行った後の取得画像（左）とディスプレー画面（右）を示す図である。
【００２７】
図１を参照して、この発明の実施の形態によるポインティングデバイス１００は、カメラ等からなる撮像デバイス１と、視線検出装置２と、コンピュータ３と、ディスプレー４とを備える。そして、ポインティングデバイス１００は、後述するように、操作者が頭部５を動かすことでディスプレー４上のカーソル６を操作者の視線の先の目標位置７に合わせることができる。 
【００２８】
撮像デバイス１は、操作者の目や頭部を含む画像を撮影し、その撮影した画像を視線検出装置２へ出力する。視線検出装置２は、撮影された取得画像８を撮像デバイス１から受け、その受けた取得画像８に基づいて、操作者の視線方向を公知の方法により計算する。
【００２９】
例えば、角膜反射法を用いた場合、球体として近似される角膜の中心点である角膜曲率中心位置（３次元空間座標）と瞳孔中心位置（３次元空間座標）とを結ぶベクトルが視線方向として計算され、角膜曲率中心位置と瞳孔中心位置とを結ぶ直線が視線として計算される。この場合の視線の起点は、角膜曲率中心となる。
【００３０】
空間座標での角膜曲率中心と瞳孔中心の計算方法を以下に説明する。まず、撮像デバイス１のすぐ近くに近赤外線光源を設置することで、角膜表面における近赤外線光源の反射光、いわゆるプルキニエ像が撮像デバイス１によって瞳孔画像と一緒に撮影される。プルキニエ像は、撮像デバイス１のレンズ中心と角膜曲率中心とを結ぶ直線と角膜表面との交点を近似的に表している。したがって、レンズから角膜表面までの距離および角膜曲率半径を把握していれば、角膜曲率中心位置は、撮像されたプルキニエ像の平面座標から計算され得る。同様にして、瞳孔中心位置も、レンズから角膜表面までの距離と撮像された瞳孔中心の平面座標とから計算され得る。
【００３１】
なお、上記においては、角膜反射法を用いて視線を算出する方法について説明したが、この発明においては、これに限らず、顔面の傾きを頭部画像の各種パーツの配置から求める等の別の方法を用いて算出されてもよく、視線の算出方法は、特に、限定されるものではない。
【００３２】
そして、視線検出装置２は、その計算した操作者の視線をディスプレー４上の座標値に変換する。すなわち、この座標値は、視線の方程式と、ディスプレー４上の平面を表す方程式との交点として求められる。ここで、変換された座標値をＡｄとすると、座標値Ａｄは、次式によって表される。
【００３３】
【数１】
2009064395.tif 000003
【００３４】
式（１）において、ａｘは、水平方向の座標値であり、ａｙは、垂直方向の座標値である。 
【００３５】
また、視線検出装置２は、視線算出と同時に補正情報として操作者の目の画像９から瞳孔中心位置１０を取得する。補正情報には、瞳孔中心ではなくても頭部にある特徴的な画像情報なら何でも良い。ただし、瞳孔中心位置は、視線算出の従来の手法において一般的に用いられる情報なので、これを補正情報に利用すれば、新たに補正情報取得のための演算をする必要がなく、計算時間を短縮でき、コストを軽減できる。
【００３６】
撮像デバイス１の取得画像領域における瞳孔中心位置１０の座標値ＢをＢ＝（ｂｘ，ｂｙ）と表す。ここで、ｂｘは、水平方向の座標値であり、ｂｙは、垂直方向の座標値である。そして、視線検出装置２は、座標値Ｂを、ある関数Ｆによりディスプレー４上の座標値として補正情報Ｂｄを次式により算出する。
【００３７】
【数２】
2009064395.tif 000004
【００３８】
式（２）において、ｆは、水平方向の座標値を決める関数であり、ｇは、垂直方向の座標値を決める関数である。
【００３９】
なお、式（２）においては、関数ｆ，ｇの変数は、ｂｘおよびｂｙであると表記されているが、これは、水平方向の座標を補正する場合、垂直方向の座標情報も必要であり、垂直方向の座標を補正する場合、水平方向の座標情報も必要であるからである。補正関数Ｆの最も簡単な例は、ｆ＝α・ｂｘおよびｇ＝β・ｂｙ（α、βは比例定数）の線形関数によって表され得る。
【００４０】
視線検出装置２は、補正情報Ｂｄを算出すると、式（１），（２）より、ディスプレー４上のカーソルの座標値Ｃｄを次式によって求める。
【００４１】
【数３】
2009064395.tif 000005
【００４２】
すなわち、視線検出装置２は、視線算出から求められた座標値Ａｄに取得画像領域における瞳孔中心位置１０から求めた補正情報Ｂｄを加えることによりディスプレー４上のカーソル位置を求める。つまり、補正可能領域は、視線から算出された座標値Ａｄを中心に関数Ｆで規定される範囲に広がる。例えば、取得画像領域内の瞳孔中心位置情報Ｂを単純に線形変換して補正情報Ｂｄとした場合、図２のようにディスプレー４上の補正可能領域１４は、取得画像領域８と相似の関係になる。したがって、式（３）は、矢印１１によって示すように視線を目標位置に向けたまま頭部を動かすことにより、取得画像領域内で瞳孔中心位置が矢印１２のように動き、ディスプレー４上の補正可能領域内をカーソルがそれに連動して矢印１３のように動くことを意味する。
【００４３】
視線検出装置２は、上述した方法によって計算したカーソル座標値Ｃｄをコンピュータ３に送信し、コンピュータ３は、ディスプレー４上にカーソル６を表示する。 
【００４４】
例えば、初期状態として、図２のように瞳孔中心位置１０が取得画像領域８の中心にある場合は、視線算出から求められた座標値とカーソル位置１５は、等しくなり、補正可能領域１４は、その点を中心に広がっている。図２のようにカーソル位置が目標位置７から左下にずれていた場合は、図３のように、操作者は、視線を目標位置７に向けたまま頭を右上に動かす。このとき、操作者の瞳孔中心位置１０も一緒に動く。ここで、撮像デバイス１は、ディスプレー４側から操作者の目の領域を写しているので、瞳孔輪郭位置は、左右反転して左上に動くことになる。また、操作者が視線を目標位置に向けていれば、理想的にはディスプレー中の補正可能領域１４は、動かない。カーソル６は、瞳孔中心位置の動きに連動して、左右反転を考慮した関数Ｆに従い右上に動き、そして、目標位置に近づく。この頭を動かす動作を、操作者がディスプレー４上の目標位置７とカーソル６とを見ながら行うことで誤差が補正され、最終的に図３のように、カーソル位置１５が目標位置７に一致する。 
【００４５】
したがって、視線検出装置２は、操作者が目標位置７とカーソル６の位置との誤差を視認し、その視認に基づいて頭を動かしたことを撮像デバイス１から入力される取得画像８に基づいて検出し、その検出した操作者の頭の動きに基づいて目標位置７とカーソル６の位置との誤差を補正する。
【００４６】
一般的な制御システムでは、目標位置と制御対象の位置との誤差を検知して、その誤差を減らすように制御対象の操作を行うというフィードバック制御を行っている。しかしながら、視線入力によるポインティングデバイスでは、目標位置および目標位置と制御対象であるカーソルの位置の誤差を認知できるのが操作者のみであり、操作中は、操作者自身がその誤差を認知しても装置系に誤差情報を伝えられないため、その誤差を補正することができない。 
【００４７】
したがって、算出精度を向上させるためには、操作者が認知した誤差を装置系に伝える手段が必要になる。この誤差補正に、コンピュータ用のマウスのような手動の補助的なポインティングデバイスを使用することも考えられる（特許文献３参照）。しかし、手動の装置を使用したのでは手を使わないで良いという視線入力によるポインティングデバイスの利点を生かせない。 
【００４８】
そこで、この誤差補正に瞳孔中心位置もしくは操作者の頭部（目、鼻および口等の操作者の特徴的な画像情報）の位置情報を用いることを本発明の特徴とする。すなわち、目標位置と視線計算されたカーソル位置に誤差がある場合、目標位置を見つめながら誤差を埋める方向に頭を動かすことにより、その頭部の動きに連動してカーソル位置を動かし、目標位置に合わせるのである。撮像デバイスの取得画像内における瞳孔中心位置や頭部の移動は、プルキニエ像などの基準となる画像を利用している場合、理想的には視線算出に影響しない。したがって、取得画像内の頭部の動きに関連した瞳孔中心位置などの位置情報は、誤差補正情報として利用可能である。
【００４９】
ポインティングデバイス１００を使用する前に、操作者は、決められた目標位置を注視することで視線検出装置２のキャリブレーションを行う。ポインティングデバイス１００では、補正可能領域内に目標位置があれば、操作者は、カーソルを自分の意思で目標位置に合わせることができる。逆に言えば、補正可能領域内に目標位置がなければ、操作者が頭をどんなに大きく動かそうがカーソルの位置を補正することはできない。したがって、最小の補正可能領域は、使用前のキャリブレーションと装置系の精度に依存する。つまり、装置系の精度が高く使用前のキャリブレーションを厳密に行っていた場合は、視線算出によるカーソル位置と目標位置との誤差が少ないので、補正可能領域を小さく設定できる。この場合は、頭部の移動量を少なく抑えるか、補正情報の精度を上げることができる。ゆえに、キャリブレーションや装置系の精度は高いほうが操作しやすいが、コストや操作者への拘束感の問題がある。この操作性とコスト等のトレードオフに関しては使用目的に合わせて調節すれば良い。
【００５０】
なお、上記においては、視線検出装置２は、瞳孔中心位置または操作者の頭部の位置情報を用いて目標位置７とカーソル６の位置との誤差を補正すると説明したが、この発明においては、これに限らず、視線検出装置２は、操作者の視線方向の変化を検出し、その検出した操作者の視線方向の変化を用いて目標位置７とカーソル６の位置との誤差を補正するようにしてもよい。操作者の瞳孔中心位置が動くと、操作者の視線方向も変化するので、視線検出装置２は、操作者の視線方向の変化を用いて目標位置７とカーソル６の位置との誤差を補正できる。
【００５１】
また、上述した説明では、視線検出装置２によりカーソルの座標値を計算していたが、撮像デバイス１をコンピュータに直接繋ぐことで、コンピュータ上のソフトウエアにより視線検出装置２の機能を実現することもできる。 
【００５２】
図４は、この発明の実施の形態による他のポインティングデバイスの構成を示す概略図である。この発明の実施の形態によるポインティングデバイスは、図４に示すポインティングデバイス１１０であってもよい。図４を参照して、ポインティングデバイス１１０は、撮像デバイス１と、コンピュータ３０とを備える。
【００５３】
撮像デバイス１は、操作者の目や頭部を含む画像を撮影し、その撮影した画像をコンピュータ３０へ出力する。
【００５４】
コンピュータ３０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３３と、インターフェース３４と、ディスプレー３５と、バスＢＳとを含む。
【００５５】
ＣＰＵ３１、ＲＯＭ３２、ＲＡＭ３３、インターフェース３４およびディスプレー３５は、バスＢＳを介して相互に接続される。
【００５６】
ＣＰＵ３１は、インターフェース３４およびバスＢＳを介して撮像デバイス１から取得画像８を取得する。そして、ＣＰＵ３１は、バスＢＳを介してＲＯＭ３２からプログラムを読み出し、その読み出したプログラムを実行して、視線のディスプレー３５上における座標値Ａｄを求め、その座標値Ａｄをカーソル６の位置としてバスＢＳを介してディスプレー３５上に表示するとともに、目標位置７とカーソル６の位置との誤差を補正する。
【００５７】
ＲＯＭ３２は、この発明によるプログラムを記憶する。ＲＡＭ３３は、ＣＰＵ３１のワークメモリとして機能する。
【００５８】
インターフェース３４は、撮像デバイス１に接続され、撮像デバイス１が撮影した画像を撮像デバイス１から受けるとともに、その受けた画像を、バスＢＳを介してＣＰＵ３１へ出力する。
【００５９】
ディスプレー３５は、ＣＰＵ３１からの制御に従って補正前後のカーソル６の位置を表示する。
【００６０】
図５は、この発明の実施の形態によるプログラムを示すフローチャートである。図５を参照して、撮像デバイス１は、ディスプレー上の注視対象を見ている操作者の目や頭部を含む画像情報を取得し（ステップＳ１）、その取得した画像情報をポインティングデバイス１１０へ出力する。ポインティングデバイス１１０のＣＰＵ３１は、撮像デバイス１によって取得された操作者の目や頭部の画像情報８をインターフェース３４およびバスＢＳを介して取得し、ディスプレー３５上で操作者が注視している位置への視線を上述した方法によって算出し、視線のディスプレー３５の座標位置（＝Ａｄ）を算出する（ステップＳ２）。
【００６１】
そして、ポインティングデバイス１１０のＣＰＵ３１は、撮像デバイス１によって取得された操作者の目や頭部の画像情報８をインターフェース３４およびバスＢＳを介して取得し、ステップＳ２と並行して、ディスプレー３５上に表示されるカーソル位置と操作者が注視している位置との誤差に基づく操作者の動きを検出する（ステップＳ３）。
【００６２】
その後、ＣＰＵ３１は、検出された操作者の動きに基づいて、目標位置７とカーソル位置との誤差を補正し（ステップＳ４）、その補正後の座標情報をカーソル６の位置としてディスプレー３５の画面上に表示する（ステップＳ５）。
【００６３】
そして、操作者は、ディスプレー３５の画面上に表示されるカーソル位置と自己が注視している位置とが一致しているかどうかの判断を行なう（ステップＳ６）。操作者は、カーソル位置と注視位置とが一致していない場合、その認識した誤差を補正するように頭部を移動する（ステップＳ７）。
【００６４】
以上の一連の動作を、ステップＳ６において、操作者の注視している位置とカーソル位置とが一致したと操作者が判断するまで行なう。
【００６５】
なお、ＣＰＵ３１は、目標位置７とカーソル６の位置との誤差を補正する場合、図５に示すフローチャートのステップＳ３において、操作者の視線方向の変化をディスプレー３５上のカーソル位置と操作者が注視している位置との誤差に基づく操作者の動きとして検出するようにしてもよい。
【００６６】
このように、ポインティングデバイス１１０は、ポインティングデバイス１００の視線検出装置２をソフトウエアによって実現したものである。
【００６７】
そして、ポインティングデバイス１１０においては、図５に示すステップＳ２を実行するＣＰＵ３１は、「視線検出手段」を構成し、ステップＳ３を実行するＣＰＵ３１は、「動き検出手段」を構成し、ステップＳ４を実行するＣＰＵ３１は、「誤差補正手段」を構成する。
【００６８】
また、ＲＯＭ３２は、図５に示すフローチャートからなるプログラムを記憶するので、プログラムを記録したコンピュータ（ＣＰＵ３１）読み取り可能な記録媒体に相当する。なお、図５に示すフローチャートからなるプログラムは、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）およびＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等の各種の記録媒体に記録されて販売され、ＣＤ等の記録媒体がパーソナルコンピュータ等に装着されると、ＣＰＵ３１によって読み出されて実行されるので、図５に示すフローチャートからなるプログラムを記録したＣＤ等の記録媒体も、プログラムを記録したコンピュータ（ＣＰＵ３１）読み取り可能な記録媒体に相当する。
【００６９】
操作者の目の画像９から視線方向および視線や補正情報を算出するには、瞳孔中心位置１０を求める必要があるが、この発明においては、以下に説明する方法によって瞳孔中心位置１０を求めてもよい。
【００７０】
図６は、図１に示す撮像デバイス１により撮影された瞳孔画像の簡略図である。瞳孔画像とは、図６に示すように瞳孔の全体とその周辺部位である虹彩が撮影された画像を意味する。瞳孔画像は、２５６階調の８ｂｉｔグレイスケール画像（０が黒色、２５５が白色に対応）である。
【００７１】
図６を参照して、瞳孔画像の横幅をＷ、縦幅をＨとし、瞳孔画像の左下を原点（０，０）とするｘｙ座標を定義する。この座標系において、座標（ｉ，ｊ）の画素値をＰ（ｉ，ｊ）とする。 
【００７２】
視線検出装置２は、図６に示す画像から、仮の瞳孔輪郭をエッジ検出手法（例として以下に説明する手法）を用いて求める。
【００７３】
図７は、仮の瞳孔輪郭を検出する方法を説明するための図である。図７を参照して、視線検出装置２は、仮の瞳孔中心を座標（Ｗ／２，Ｈ／２）に設定する。そして、視線検出装置２は、仮の瞳孔中心から、放射線状に延びた直線上に存在する各画素において、注目する画素とそれに隣接する画素との画素値の差を計算する。すなわち、視線検出装置２は、注目する座標を（ｉ，ｊ）とし、その隣接ピクセルを（ｉ'，ｊ'）とし、画素値の差をＤＰとすると、ＤＰ＝｜Ｐ（ｉ，ｊ）−Ｐ（ｉ'，ｊ'）｜を演算して画素値の差を計算する。 
【００７４】
そして、視線検出装置２は、画素値の差ＤＰがあるしきい値ＴＨ１以上である場合、すなわち式（４）を満たすとき、注目している座標（ｉ，ｊ）をエッジ画素、すなわち仮の瞳孔輪郭座標とする。図７では、一例として０度、４５度、９０度の各放射線方向におけるエッジ検出を示しており、図中の×印が検出した仮の瞳孔輪郭位置である。 
【００７５】
【数４】
2009064395.tif 000006
【００７６】
このとき、視線検出装置２は、ある放射線上において、式（４）を満たす画素が存在した場合、その時点で同放射線上におけるエッジ検出を終了し、次の角度におけるエッジ検出を開始する。また、視線検出装置２は、式（４）を満たす画素が存在しなかった場合、その放射線上にはエッジ無しとし、次の角度におけるエッジ検出を開始する。 
【００７７】
上記手法を用いて瞳孔輪郭を検出する場合、放射線方向の数は、瞳孔画像の画像サイズがＷ＝６０、Ｈ＝６０（単位：ピクセル）程度であった場合、０度の角度から始め、３６０度までの３２方向について考えれば良い。ただし、放射線角度方向の数は、３２方向以上あっても問題はなく、むしろより多くの放射線方向においてエッジ検出を実行するのが望ましいが、その数は瞳孔画像の画像サイズに依存する。 
【００７８】
以上の処理により得られた仮の瞳孔輪郭の座標をＣ（ｘｉ，ｙｉ）、ｉ＝１〜Ｎとする。ここでｘｉ，ｙｉは、それぞれｉ番目の仮の瞳孔輪郭のｘ座標及びｙ座標であり、Ｎは、得られた座標の総数である。 
【００７９】
仮の瞳孔輪郭データから、ノイズ成分などの影響で検出されてしまう偽の瞳孔輪郭を除去するため、次に説明する偽の瞳孔輪郭除去を実行する。
【００８０】
図８は、偽の瞳孔輪郭を除去するフローチャートである。図８を参照して、視線検出装置２は、仮の瞳孔輪郭の全データを一つの母集団として定義し、これに対する各瞳孔輪郭のマハラノビス距離を計算し（ステップＳ１１）、得られたマハラノビス距離の平均値を計算する（ステップＳ１２）。
【００８１】
ここで、マハラノビス距離とは、次の計算により求めることができる。まず、視線検出装置２は、瞳孔輪郭データの分散共分散行列ＣＯＶを式（５）により求める。
【００８２】
【数５】
2009064395.tif 000007
【００８３】
次に、視線検出装置２は、式（６）によりＣＯＶの逆行列ＣＯＶ'を求め、式（７）の行列演算により瞳孔輪郭Ｃ（ｘｉ，ｙｉ）のマハラノビス距離ＭＤｉと、平均マハラノビス距離ＭＤ＿ＡＶＥとを計算する。
【００８４】
【数６】
2009064395.tif 000008
【００８５】
【数７】
2009064395.tif 000009
【００８６】
その後、視線検出装置２は、ｉ＝１およびｊ＝１を設定し（ステップＳ１３）、ｉ≦Ｎであるか否かを判定する（ステップＳ１４）。
【００８７】
ステップＳ１４において、ｉ≦Ｎであると判定されたとき、視線検出装置２は、マハラノビス距離ＭＤｉと平均マハラノビス距離ＭＤ＿ＡＶＥとの差ＤＭＤを演算し（ステップＳ１５）、その演算した差ＤＭＤがしきい値ＴＨ２以上であるか否かを判定する（ステップＳ１６）。
【００８８】
そして、ステップＳ１６において、差ＤＭＤがしきい値ＴＨ２以上であると判定されたとき、視線検出装置２は、瞳孔輪郭座標Ｃ（ｘｉ，ｙｉ）を偽の瞳孔輪郭とみなして除去する（ステップＳ１７）。その後、視線検出装置２は、ｉ＝ｉ＋１を設定する（ステップＳ１８）。そして、一連の動作は、ステップＳ１４へ戻る。
【００８９】
一方、ステップＳ１６において、差ＤＭＤがしきい値ＴＨ２以上でないと判定されたとき、視線検出装置２は、瞳孔輪郭座標Ｃ（ｘｉ，ｙｉ）を真の瞳孔輪郭ＣＧ（ｘｊ，ｙｊ）＝Ｃ（ｘｉ，ｙｉ）と設定するとともに、ｉ＝ｉ＋１およびｊ＝ｊ＋１を設定する（ステップＳ１９）。その後、一連の動作は、ステップＳ１４へ戻る。
【００９０】
そして、ステップＳ１４において、ｉ≦Ｎではないと判定されるまで、上述したステップＳ１４〜ステップＳ１９が繰り返し実行される。すなわち、全ての仮の瞳孔輪郭データに対して偽の瞳孔輪郭データか真の瞳孔輪郭データかが判定されるまで、ステップＳ１４〜ステップＳ１９が繰り返し実行される。
【００９１】
そして、ステップＳ１４において、ｉ≦Ｎではないと判定されると、一連の動作は終了する。
【００９２】
図８に示すフローチャートを実行することによって、残ったデータ集合ＣＧ（ｘｊ，ｙｊ）を真の瞳孔輪郭データ集合として得ることができる。
【００９３】
なお、図８に示すフローチャートは、仮の瞳孔輪郭データから偽の瞳孔輪郭データを排除することを目的としているため、上記に挙げたエッジ検出手法とは異なった手法を利用して仮の瞳孔輪郭データを求めた場合でも、瞳孔輪郭が座標データとして与えられるすべての場合に対して対応可能である。
【００９４】
上記においては、視線検出装置２は、マハラノビス距離および平均マハラノビス距離を用いて偽の瞳孔輪郭データを除去すると説明したが、この発明においては、視線検出装置２は、一般的には、次の方法によって偽の瞳孔輪郭データを除去する。
【００９５】
図９は、偽の瞳孔輪郭データを除去する他の方法を説明するためのフローチャートである。一連の動作が開始されると、視線検出装置２は、複数の仮の瞳孔輪郭データを検出し、その検出した複数の仮の瞳孔輪郭データを母集団としたときの複数の仮の瞳孔輪郭データと母集団の重心との複数の距離Ｌ１のばらつきを検出する（ステップＳ２１）。その後、視線検出装置２は、ばらつきの重心と複数の仮の輪郭データとの複数の距離Ｌ２を演算し（ステップＳ２２）、その複数の距離Ｌ２の平均を演算する（ステップＳ２３）。
【００９６】
そして、視線検出装置２は、演算された複数の距離Ｌ２と複数の距離Ｌ２の平均とを用いて、距離Ｌ２が複数の距離Ｌ２の平均から相対的に離れている仮の輪郭データを偽の輪郭データとして複数の仮の輪郭データから除去して真の輪郭データを求める（ステップＳ２４）。これによって、一連の動作は終了する。
【００９７】
なお、ステップＳ２４において、偽の輪郭瞳孔データを除去する具体的な方法は、次の方法からなる。視線検出装置２は、複数の距離Ｌ２の各距離Ｌ２と複数の距離Ｌ２の平均との差を求め、その求めた差がしきい値以上であるとき、その差を有する仮の瞳孔輪郭データを除去し、その求めた差がしきい値よりも小さいとき、その差を有する仮の瞳孔輪郭データを真の瞳孔輪郭データとする。
【００９８】
また、図９に示すフローチャートは、図８に示すフローチャートを一般化したものである。その理由は、次のとおりである。
【００９９】
視線検出装置２がステップＳ２１において複数の距離Ｌ１のばらつきを検出し、ステップＳ２２において複数の距離Ｌ２を演算することは、式（５）を用いて分散共分散行列ＣＯＶを演算し、式（６）および式（７）を用いてマハラノビス距離ＭＤｉを演算することに相当し、視線検出装置２がステップＳ２３において複数の距離Ｌ２の平均を演算することは、式（７）を用いて平均マハラノビス距離ＭＤ＿ＡＶＥを演算することに相当し、視線検出装置２がステップＳ２４において複数の距離Ｌ２と複数の距離Ｌ２の平均とを用いて距離Ｌ２が複数の距離Ｌ２の平均から相対的に離れている仮の瞳孔輪郭データを偽の瞳孔輪郭データとして除去し、真の瞳孔輪郭データを検出することは、マハラノビス距離と平均マハラノビス距離との差がしきい値ＴＨ２以上の仮の瞳孔輪郭データを除去し、マハラノビス距離と平均マハラノビス距離との差がしきい値ＴＨ２よりも小さい仮の瞳孔輪郭データを真の瞳孔輪郭データとすることに相当するからである。
【０１００】
そして、視線検出装置２がステップＳ２１において複数の距離Ｌ１のばらつきを検出し、ステップＳ２２において複数の距離Ｌ２を演算することが、式（５）を用いて分散共分散行列ＣＯＶを演算し、式（６）および式（７）を用いてマハラノビス距離ＭＤｉを演算することに相当するのは、式（５）において演算される分散共分散行列ＣＯＶは、複数の仮の瞳孔輪郭データを母集団としたときの複数の仮の瞳孔輪郭データと母集団の重心との複数の距離Ｌ１のばらつきを表し、式（６）および式（７）を用いて演算されるマハラノビス距離ＭＤｉは、複数の距離Ｌ１のばらつきの重心と複数の仮の瞳孔輪郭データとの複数の距離Ｌ２を表すからである。
【０１０１】
したがって、図９に示すステップＳ２１，Ｓ２２は、図８に示すステップＳ１１に相当し、図９に示すステップＳ２３は、図８に示すステップＳ１２に相当し、図９に示すステップＳ２４は、図８に示すステップＳ１３〜ステップＳ１９に相当する。
【０１０２】
その結果、この発明においては、マハラノビス距離以外の指標を用いて偽の瞳孔輪郭データを除去して真の輪郭瞳孔データを求める視線検出装置が存在しても、その視線検出装置が図９に示すフローチャートに従って偽の瞳孔輪郭データを除去して真の輪郭瞳孔データを求めていれば、その視線検出装置は、この発明による視線検出装置に含まれる。
【０１０３】
上述した図８および図９に示すフローチャートは、マハラノビス距離（＝上述したばらつきの重心と仮の瞳孔輪郭データとの距離）の差が小さい仮の瞳孔輪郭データが母集団に含まれる確率が高くなるという思想を基本とする。そして、この差が小さい仮の瞳孔輪郭データを母集団に含めることを実現するために、マハラノビス距離と平均マハラノビス距離との差がしきい値ＴＨ２以上であるか否かを判定するのである。
【０１０４】
一方、従来、行なわれているマハラノビス距離を用いた判定は、複数の母集団が存在した場合に、マハラノビス距離を用いて判別対象のデータが複数の母集団のうちのどの母集団に含まれるかを判定するものである。具体的には、判別対象のデータと複数の母集団の重心との複数のマハラノビス距離を演算し、その演算した複数のマハラノビス距離のうち、最も小さいマハラノビス距離を有する母集団に判別対象のデータが含まれると判定する。
【０１０５】
しかし、この発明においては、母集団は、１個しか存在せず、複数の仮の瞳孔輪郭データは、母集団の重心からある距離を保って存在しているので、マハラノビス距離が小さい仮の瞳孔輪郭データは、母集団から外れることになる。
【０１０６】
そこで、上述したように、マハラノビス距離（＝上述したばらつきの重心と仮の瞳孔輪郭データとの距離）の差が小さい仮の瞳孔輪郭データが母集団に含まれる確率が高くなるという思想を採用することにしたものである。
【０１０７】
視線検出装置２は、図８または図９に示すフローチャートに従って真の瞳孔輪郭データ集合を求めると、その求めた真の瞳孔輪郭データ集合を用いて上述した方法によって瞳孔中心位置１０を求める。
【０１０８】
なお、この発明においては、ポインティングデバイス１１０のＣＰＵ３１も、図８または図９に示すフローチャートに従って真の瞳孔輪郭データ集合を求め、その求めた真の瞳孔輪郭データ集合を用いて上述した方法によって瞳孔中心位置１０を求める。この場合、ＲＯＭ３２は、図８または図９に示すフローチャートからなるプログラムを記憶している。
【０１０９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【産業上の利用可能性】
【０１１０】
この視線検出技術では、一般的なポインティングデバイスのように手動による操作を必要としないので、肢体不自由者がコンピュータなどを用いてコミュニケーションを行う場合有効である。また、健常者の使用についても、視線でのカーソル操作と手動によるキーボード等の入力を組み合わせることで、より快適かつ感覚的な入力を可能とする。 
【図面の簡単な説明】
【０１１１】
【図１】この発明の実施の形態によるポインティングデバイスの構成を示す概略図である。
【図２】頭部移動によるカーソル位置の補正を行う前の取得画像（左）とディスプレー画面（右）を示す図である。
【図３】頭部移動によるカーソル位置の補正を行った後の取得画像（左）とディスプレー画面（右）を示す図である。
【図４】この発明の実施の形態による他のポインティングデバイスの構成を示す概略図である。
【図５】この発明の実施の形態によるプログラムを示すフローチャートである。
【図６】図１に示す撮像デバイスにより撮影された瞳孔画像の簡略図である。
【図７】仮の瞳孔輪郭を検出する方法を説明するための図である。
【図８】偽の瞳孔輪郭を除去するフローチャートである。
【図９】偽の瞳孔輪郭データを除去する他の方法を説明するためのフローチャートである。
【符号の説明】
【０１１２】
１  撮像デバイス、２  視線検出装置、４  ディスプレー、６  カーソル、７  目標位置。
【図１】
2009064395.tif 000010
【図２】
2009064395.tif 000011
【図３】
2009064395.tif 000012
【図４】
2009064395.tif 000013
【図５】
2009064395.tif 000014
【図６】
2009064395.tif 000015
【図７】
2009064395.tif 000016
【図８】
2009064395.tif 000017
【図９】
2009064395.tif 000018