説明

瞳孔検出に基づくポインティング装置及び方法

【課題】瞳孔座標検出によるポインタ位置制御において、視点とポインタ位置とのずれを解消すること。
【解決手段】一定時間の閉眼によりトリガーされ、特定時間の間、操作者の瞳孔座標を検出する。この間の瞳孔の移動範囲を画面上のポインタの移動範囲と対応づけてゲインを設定する。次に、画面端部において瞳孔位置から求めたカーソル位置が画面外に相当する場合であってもカーソルの移動を画面内に留めることにより零点を設定する。これにより操作者の注目点である顔の正面あるいは視点に対してカーソル(ポインタ)を表示できる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、入力装置としてのマウスに代替できる、瞳孔検出に基づくポインティング装置及び方法に関する。
【背景技術】
【0002】
これまでに視点(ユーザの視線方向)によるポインティングが種々提案されている。
その一例としてコンピュータのモニタ画面上の視点(モニタ画面と操作者の視線との交点)にカーソルを提示する方法がある(特許文献1参照)。この方法は、ビデオカメラを用いて、瞳孔の中心だけでなくビデオカメラの近くに設置した光源の角膜反射光を検出し、カメラ画像中の瞳孔の中心と角膜反射の中心の相対位置から視点を検出する。
【0003】
次に頭部の動きによるポインティングシステムの例を示す。
非特許文献1に記載された技術(Eagle eyeと名づけられている)は、パーソナル・コンピュータのモニタの横にビデオカメラを設置し、顔の画像を撮影しながら、画像処理により、予め指定する顔の一部をテンプレートマッチングにより追尾し、その動きに応じて、モニタ画面上のカーソルを動かす方式である。追尾対象としては、鼻の先、あごの先、黒眼などを試している。しかし、テンプレートを更新しても、急減な周囲の明るさの変化などに対応しにくい可能性があり、また、追尾すべき対象が徐々にずれていくなどの問題も発生しやすい。
【特許文献1】特開平11−056782号公報
【非特許文献1】"The Camera Mouse:Visual Tracking of Body Features to Provide Computer Access for People With Severe Disabilities", (Margrit Betke, James Gips, and Peter Fleming), IEEE Transactions on Neural Systems and Rehabilitation Engineering, Vol.10, No. 1, March 2002
【発明の開示】
【発明が解決しようとする課題】
【0004】
本発明者は、視野の広い1台のカメラで、フレーム内の2個の瞳孔のそれぞれの位置を検出して、操作者が頭部運動を行うときに画像内を移動する瞳孔の移動に応じて、カーソル(ポインタ)を動かす手法を先の出願(特願2003−419110号,特願2004−365646号)で提案した。この方法では、左右の瞳孔を区別して、片目を瞬間的に閉じた場合はマウスのクリック、また、片目を閉じた状態で頭部を動かした場合は、もう片方の瞳孔移動によってカーソルを動かし、それによりドラッグをすることを可能にした。この手法を実現するためには、瞳孔を検出しやすくする必要があった。
そのために、カメラ(1)の開口(2)に近い光源(3)と遠い光源(4)をビデオのフィールドに同期させて交互に点灯させ(図1)、そのとき得られる明瞳孔画像(図2−a)と暗瞳孔画像(図2−b)を実時間で差分を行い、背景部をおよそ相殺させ、瞳孔部を浮き立たせた後に瞳孔を検出した(図2−c)。光源の配置例としてLED(発光ダイオード;5)を用いたものを図3に示している。近い光源(3)をカメラ開口(2)即ちレンズの周囲に同心円状に配置したこの例では、遠い光源(4)を、近い光源(3)の外周に同心円状に配置することも考えられる。
【0005】
この瞳孔検出法は、カメラの開口に近い光源のみを設けて明瞳孔画像を得て瞳孔を画像処理により検出する方法や、カメラの開口から遠くの光源のみを設けて暗瞳孔画像を得て画像処理により瞳孔を検出する方法に比較して、周囲の明るさなどに影響を受けにくく、格段に瞳孔が検出しやすい。さらに、画像が単純なため、画像処理量が大きく軽減できることなどにおいて有利である。
さらにこの瞳孔検出法では、操作者が視力矯正用の眼鏡やサングラスをしている場合にも、眼鏡反射の輝度は画像中において飽和するくらいに明るく他の部分と区別しやすいため、眼鏡反射の部分の輝度を下げてから画像差分をすることにより、眼鏡反射を画像処理の段階で除去することができる。しかし、眼鏡反射像が瞳孔に完全にかぶさってしまったときには、眼鏡反射により瞳孔がかき消されてしまうため、画像処理の段階で瞳孔を検出するのは不可能である。
このような場合にも、光源の前に偏光フィルターを設置し、カメラの開口の前に前述の偏光フィルターとは偏光方向を垂直にした偏光フィルターを設置することによって、眼鏡反射をある程度除去できる。また、角度を変えて複数のカメラを設けることにより、少なくともどれか1台のカメラにおいて、眼鏡反射像と瞳孔とが重ならない画像を得ることができる。
【0006】
瞳孔の移動を検知し移動量情報を作成するに当り、(1)瞳孔の位置をカーソル位置とする(絶対量による制御と名づける)、(2)瞳孔の単位時間あたりの移動量を、カーソルの現在位置からの単位時間あたりの移動量とする(相対量による制御と名づける)、(3)瞳孔の原点からのずれに比例して、カーソルの単位時間あたりの移動量を生成する(積分量による制御と名づける)、の3つが考えられる。
上記(1)は、旧来のジョイスティックに対応し、レバーの変位量に見合った量で、カーソル位置が決定される(絶対位置の制御)。上記(2)は現在のマウスやトラックボールに対応し、回転量に見合った量で、カーソルが移動する(相対位置の制御)。上記(3)は、現在のノート型コンピュータに見られるスティック状のコントローラに対応し、レバーの傾きが存在する間、カーソルは移動しつづける(積分による位置決定)。カーソルキーによるカーソルコントロールも、上記(3)に相当すると言えよう。
【0007】
さらに用途によっては(4)位置情報の微分によりカーソルを移動させることも考えられる。実際の利用にあたっては、不感帯を設けたり、移動が大きいときには加速機能として多目の移動量を作成することもあるため、これらの混合となるものである。
瞳孔の移動を検知し移動量情報を作成する場合には、マウス・インタフェースを用いて他のシステムと接続するのか、ジョイスティック・インタフェースあるいは他のスティック・インタフェースを用いるのかによって、出力信号に対する考慮が必要であり、多種多様の変換形態があることが理解されよう。
【0008】
接続インタフェースは、制御手段をPCIスロットに挿入する場合にはPCIバス・インタフェースによるものとし、外部アダプタとする場合にはUSBインタフェースによるものが好ましい。
さらには、コンピュータそのものを制御手段として用いることも可能であり、その場合には、光源の照射(点滅)制御部分を分離して外部に設けることも考えられる。
所望により制御手段の制御機能を分割し、ソフトウエアで実行する部分、ハードウエアで実行する部分、コンピュータ自体で実行する部分、PCIボードで実行する部分など、適宜機能分散することが可能であることは、当業者であれば理解できよう。
【0009】
瞳孔検出によりマウス代替とするには、左右の押下ボタンとの対応づけも重要である。
顔画像から検出される瞳孔の検出状態は、(a)両目が開いており、両瞳孔とも検出されている状態(右瞳孔検出、左瞳孔検出)、(b)右目のみが開いており、右瞳孔のみが検出されているとき(右瞳孔検出、左瞳孔非検出)、(c)左目のみが開いており、左瞳孔のみが検出されているとき、(右瞳孔非検出、左瞳孔検出)、(d)両目とも閉じており、両瞳孔とも検出されないとき(右瞳孔非検出、左瞳孔非検出)の4通りである。
汎用の2ボタンマウス信号から出力される情報は、マウスボタン情報(右ボタンのDOWN(押した状態)・UP(離した状態)と左ボタンのDOWN・UP)とカーソル移動情報(水平方向、垂直方向)である。
例えば、片目を1度閉じてから開けばクリック、また、片目を閉じながら頭部を動かせば、ドラッグが開始され、その後に閉じていた目を開けば、ドラッグが終了する。また、片目を閉じてから開く動作を2回繰り返せばダブルクリックにもなる。
そのために、右目の開閉と左目の開閉を、汎用2ボタンマウスの右ボタンのUP,DOWNと左ボタンのUP,DOWNに対応させる処理を行うものとする。この対応づけは左右入れ換えることも可能である。
ただし、瞬目(まばたき)により両目が閉じる場合は、それは操作者の意図ではないために例外的に扱う。通常、汎用マウスの両ボタンとも押している状態は利用されないので、両目が閉じている場合は、両ボタンとも逆にUPになっている状態とみなす。ただし、瞳孔移動量は零であるとする。これにより、両目が閉じられている場合は、マウスを何も操作していない状態(手を放している状態)に相当させることになる。このような状態は、両目が閉じている場合だけでなく、顔がカメラに映っていない場合も同様の扱いとする。
【0010】
(1)瞬きを行う場合、両瞳孔が非検出となるが、右と左の眼を閉じる際に、個人によって1〜2フレーム程ずれがある場合がある。これは、瞬き後の眼を開くときも同様である。このような場合、単に、両瞳孔の検出状態変化を汎用マウスの左右のボタンに対応させると、ちょうど左右のボタンを、少しだけ時間をずらして押したのと同じ状況となり、汎用のマウスでこれが起こると多くのアプリケーションソフトウェアは操作者の意図とは異なった動作をすることになる。
(2)また、速く頭が動くと、それに伴って瞳孔も速く動く、その際に瞳孔の画像がボケてピーク輝度値が低下するなどして、結果的に瞳孔が検出できないことがある。これは、両目を開いているとき(カーソルを単に動かしているとき)において、両瞳孔に関して、もしくは、片方の瞳孔に関してありうる。その場合、瞳孔の検出状態が変化したと判断すると、操作者の意図とは異なったボタン情報を出力してしまう。
上の(1)と(2)のような問題を防ぐために、次のような対処を行う。
現在の画像フレームから得られた瞳孔の検出状態(検出、非検出)が、前のフレームから別の状態に変化しても、変化後に同じ状態が数フレーム(例えば、3フレーム、100ms) 以上連続して続いたときに、はじめて変化後の瞳孔状態に一致するボタン情報を出力するものとする。
以下、この明細書において、このような構成によるカーソル制御装置(ポインティング装置)を「瞳孔マウス」と略記する。
【0011】
このような瞳孔マウスは、両手が使用できない環境下においてマウスの代替装置としてコンピュータ作業を可能にしたり、両手が使用できない身体障害者がコンピュータを使用する場合に有用である。
瞳孔マウスの場合、もし大きな頭部の動きによりカーソルを移動させることを想定して、ゲイン(カメラ画像中の瞳孔移動量に対するモニタ画面上のカーソル移動量)を決定すると、頭部を動かさず眼球が回転するだけの場合には、カーソルの移動量が極端に小さい。そのため、目の動きだけでカーソルを広い範囲を思いのままに動かすのは不可能である。したがって、目の動きだけでカーソルをモニタ画面全体に動かすためには、ゲインをかなり大きく設定する必要がある。この場合には、頭部の動きがほんの少しあるだけで、カーソルは意に沿わずコンピュータのモニタ画面の端まで移動してしまい、やはり思いのままの操作は難しい。
【0012】
しかし、ALS患者(萎縮性側索硬化症)は、病気の進行に伴って徐々に頭部も動きにくくなり、最終的には眼球しか動かなくなる。ALS患者の末期のように、目しか動かない患者の場合は、頭部の動きは基本的に無いため、ゲインを大きくしてもほとんど問題がない可能性がある。それでもなお、患者の頭部の位置を変えるたびにカーソルが不適当な位置(見ているところからずれたところに提示される)に現れるなどの現象が起こると、装置は非常に使いにくいものとなる。
この発明は、「瞳孔マウス」において、頭部運動が可能な身体障害者から頭部運動がまったくできない身体障害者まで幅広く、コンピュータの操作者としてカーソル制御ができるゲイン設定方法及び装置を提案する。
【0013】
基本的に、瞳孔マウスは、光源により顔全体を照らし、顔を撮影するビデオカメラによって捉えた画像から瞳孔を検出し、頭部の動きによって画像内を移動する瞳孔位置変化(瞳孔移動量)をコンピュータなどのモニタ画面上のカーソル移動に対応させる装置または方法である。
瞳孔マウスでは、カメラの撮影拡大率が小さくとも(顔全体が十分に入る画角で撮影)、瞳孔中心を精度良く検出でき、しかも瞳孔の有無を正しく検出できる画像処理が基盤に存在しており、頭部の動きや目の動きに応じて生ずる瞳孔の移動を精密に捉えることができる。瞳孔マウスにおいては、画像中の瞳孔移動をモニタ画面中のカーソル移動に対応付けた。さらに、左右の目のウインクをそれぞれ、マウスの左右のボタンの押下状態に対応付けることにより、クリックやドラッグの動作をさせることができる。
しかし、頭部の運動を用いることなく目の動きによって瞳孔マウスを使用するためには、視点の位置にカーソルを提示することが望ましく、カメラ画像中の瞳孔位置とコンピュータのモニタ画面上のカーソル位置の対応付けのための較正を行なう必要がある。そうでなければ、網膜上の視覚分解能の低い部分でカーソルが希望の位置に移動したかを判断しなければならなくなり、それは事実上困難である。
したがって、一般の視点検出によるポインティング装置のように、視点位置に一致するようにカーソルを提示する必要がある。その場合に、従来の視点検出の場合のように複数の注視点を順次提示しそれを見させて較正をしても、何らかの要因で頭部が移動した場合は、再び同様の較正をする必要がある。したがって、較正を容易にする必要がある。
【発明を実施するための最良の形態】
【0014】
《本発明の概念》
(1)本方式では、顔全体が十分に映る範囲で、1個もしくは2個の瞳孔を検出する。
(2)ただし、カメラから瞳孔までの距離はほぼ固定、もしくは、実時間で計測する方法を伴っているためカメラの拡大率が分り、頭部がカメラに対し前後に動いても、ゲイン(カーソル移動量/瞳孔移動量)の補正ができるものとする。
(3)頭部を大きく動かせる操作者、もしくは、疾病の度合いにおいては、目だけの動きによる瞳孔の動きより、頭部の動きのほうが大きいため、前記ゲインを小さくし、主に頭部の動きによりカーソル移動を行なう。
(4)頭部がまったく動かない操作者、もしくは、そのような疾病の度合いにおいては、ゲインを大きくし、目の動きだけで十分に大きいカーソル移動を得るようにする。
(5)頭部が少しだけ動き、目が普通に動く操作者の場合は、基本的には素早い視線の移動によりカーソルを素早く動かすが、目標の位置からのずれについては若干の頭部の移動により生ずる瞳孔移動によって補正する。
(6)前記ゲインは、ユーザが自由なタイミングで、短時間に簡単に頭部や視点移動を行なうだけで自動的に調整できるものとする。
(7)使用しやすくするために、頭部が動く場合はカーソルは顔の正面、目しか動かない場合は視点位置にカーソルを提示するものとし、それらの位置からずれた場合は、希望の位置をポインティングするまえにコンピュータ画面の端に顔を向けるか、目をむければ、ずれが補正される。
(8)使用者が眼鏡を使用している場合、瞳孔検出に必要な光源によって眼鏡反射が生じる。このような場合、カメラと光源をコンピュータ画面から離して設置することにより、前記(7)を満たすように操作している限り、カメラ画像中において、眼鏡反射像が瞳孔像に重なることなく瞳孔が検出できるため、瞳孔位置が使用できる。
(9)得られた瞳孔の座標位置をカーソル表示座標に対応させる関係を持たせることが好ましいが、画面端部においてゲインを増加させてもよい。
【0015】
図4にシステム全体の構成を示す。
カメラ(11)は、近赤外線に感度を持つ汎用のCCDビデオカメラであり、カメラ(11)の開口部(光の通る部分)の近くに1つの光源(12)、そして、カメラの開口部から離れたところにもう一つの光源(13)を設ける。カメラ(11)、光源(12)及び光源(13)は制御装置(14)に接続される。制御装置(14)はモニタ画面(16)を有すコンピュータ(15)に接続されている。制御装置(14)内に較正手段(19)及び瞳孔検出判定手段(20)が備えられている。
操作者(17:ユーザ)に対し、カメラ近傍の光源(12)と離れた光源(13)とを交互に発光させて、その瞳孔からの反射画像をカメラ(11)で撮像する。光源(12)による画像と、光源(13)による画像との差分を制御装置(14)で演算し、得られた瞳孔位置の変化をUSBインタフェースにより、コンピュータ(15)に転送する。
コンピュータ(15)においては、制御装置(14)からの信号をポインティングデバイスの一種であるマウスと同等であるものと見なして、モニタ(16)画面上に表示されたカーソル(18)の位置を制御する。
また、制御装置(14)は片目のみを閉じる動作を検出し、左右ボタンの押下に相当する信号を発生する。
【実施例1】
【0016】
次に本方式の手法の詳細について述べる。
まず、カメラから瞳孔までの距離が固定であれば、その距離が不明でも、カーソルを快適に動作させるゲインを得る方法について述べる。 今、頭部は回転するだけで、頭部の中心は移動しないものとする。すなわち、首を支えとして、頭部の重心の移動は無いように頭部を回転させるものとする。したがって、カメラから瞳孔までの距離は変化しないものと仮定する。
≪自動ゲイン調整の概念≫
今、瞳孔マウスにおいて、左右(水平方向)の頭部回転によってカーソルを移動する場合を想定する。今、図5(a)のようにちょうど顔がモニタ画面の中央に向いているとする(なお、理解を容易にするために、カメラはモニタ画面の中央に設置してあるとする)。瞳孔マウスは、カメラ画像中の瞳孔の移動をモニタ画面上のカーソル移動に対応させるため、特別な操作等をしなければ、この図が示すように顔の正面にカーソルが提示されるとは限らない(この例においては、顔の正面よりも右にカーソルが提示されている)。
このような場合、頭部を反時計回り(左)に回転させても(図示していない)、頭部を大きく回転させてもカーソルが画面の左端まで移動しない場合がある。その理由は、ある臨界角度を超えると、顔をそれ以上回転させても、カメラ画像中の瞳孔は移動しなくなったり、瞳孔自体が検出できなくなるからである。また、正面から顔がずれると顔の回転角度に対し瞳孔移動が減少するから、画面端部においてゲインを増加させることが好ましい。
【0017】
さて、今、頭部を時計回り(右)に回転させると、カーソルもモニタ画面上を右に移動し、画面の右端に行きつくと、それ以上頭部を右に回転させても、通常のマウスカーソルのように、そのままその位置に提示されたまま(図5(b))になる。その後、図1(c)のように頭部の方向とカーソルの方向が一致するまで頭部を回転させるとする。その後、図1(d)のように、頭部を左に回転させるとする。
もし、そのときのゲインが適度な値に設定されているとすると、同図のように頭部が左に回転するのに伴ってカーソルも左に移動し、しかも、ほぼ、顔の向きに一致した方向(顔の正面)にカーソルが常に現れるようになる。そのような状況は、図5(e)のように、モニタ画面の左端に頭部が向くまで続けられる。このように、ゲインが適度な値に選ばれていれば、頭部の方向に一致した位置にカーソルを提示させることが可能である。
【0018】
それに対して、図6(a)−(e)では、ゲインが図5の例よりも大きい場合を示す。はじめ、図5(a)と同様に、頭部が画面の中央に向いているときに、カーソルが正面より右にあるとする。このような状態から、右に頭部を回転させると、ゲインが大きいため、少しの頭部の右回転によりカーソルは画面の右端に達する(図6(b))。その後、さらに右に頭部を回転させ、カーソルは画面に右端に存在し続け、頭部の方向が画面の右端に一致するまで動かすと、頭部方向とカーソル方向は一致する(図6(c))。
その後、さらに左に頭部を回転させると、ゲインが大きいため、少しの頭部の回転により、カーソルは大きく移動し(図6(d))、ついにはカーソルが左端に達して、それ以上頭部が動いてもカーソルは移動しなくなり(図6(e),図6(f))、そのまま同じ場所に居続ける。
このようにゲインが大きいときには、小さな頭部の回転でも、カーソルを大きく動作させることができ、特定の用途においては有効であるが、一般には、図5の場合のようにいつも頭部の方向(顔の正面)にカーソルが提示されるようにしたようが使用しやすい。そこで、頭部の回転した分だけカーソルが移動する適当なゲインに調整する方法について、次に述べる。
【0019】
≪ゲインの調整法≫
操作者がモニタ画面の右端に顔を向けてから左端に顔を向ける(左端が先で右端が後でもよい)。この際にカメラ画像中を移動する瞳孔中心座標の移動量をIxとする。モニタ画面の右端から左端までの画素数をWxとしたとき、kx=Wx/ Ixとして係数kxを求める。
同様のことは、次に述べるように、画面の縦方向にも当てはまる。操作者がモニタ画面の上端に顔を向けてから下端に顔を向ける。この際にカメラ画像中を移動する瞳孔中心座標の移動量をIyとする。モニタ画面の上端から下端までの画素数をWyとしたとき、ky=Wy/Iyとして係数kyを求める。
ゲインkx,kyを求めれば、カーソルが常に顔の正面に位置するようにできる。上述の説明では、kxとkyを独立に求めたが、図7のように図の右下隅と左下隅に顔を向けるか、あるいは、左上隅と右下隅に顔を向ければ、kxとkyを同時に求めることができる。
IxとIyの実際の求め方としては、たとえば2.5秒間の間(瞳孔座標範囲取得時間)、顔の正面がパソコン画面の上下左右端に来るように自由に頭を回転させてもらい、その間の瞳孔座標の存在範囲から、上述のIxとIyを求める。具体的には、上記取得時間内における瞳孔のx座標Pxの最大値と最小値をPxmax,Pxminとしたときに、Ix=Pxmax−PxminとしてIxを求める。同様に、Iy=Pymax−Pyminとして求める。
【0020】
≪位置の補正法≫
瞳孔マウスは、カメラ画像中の瞳孔の位置を、モニタ画面上のカーソル位置に対応させているわけではないため、瞳孔の誤検出があったり、瞬き中など瞳孔が検出されていない間に頭部が動くと、その間、フレーム間の瞳孔移動量ΔPx=0,ΔPy=0となるため、カーソル移動もΔCx=0,ΔCy=0となる。したがって、例えば、基本的にカーソルが常に顔の正面に位置するようにゲインが調整されていても、頭部回転中に少なくとも一時的にカーソルが移動しなくなり、カーソル位置が顔の正面からずれてしまい、カーソル操作がしにくくなる。
このようなときは、図5の説明で述べたように、顔の正面に対してカーソルが右上、右下、左上、左下のどちらの方向に存在するかを操作者が判断し、該当する方向の隅に顔を向けることにより、頭部の方向とカーソルの方向が一致する。その後は前述のように顔の正面にカーソルが提示されるようになる。図8の例の場合には、顔の正面から右上の領域に存在するので、顔の正面の右上の隅に向ければよい。
ただし、横方向の顔の向きとカーソルの位置がずれていても、水平位置がずれていないときは水平位置だけ図9に示したように、そのまま横方向に頭部を回転させればよい。そのときに、縦方向の顔の向きの変動が同時に生じてもかまわない。
その他に、例えば、両目を一定時間(たとえば、1秒以上閉じたら)カーソルを基本的に中央に戻し、その後、目を開いたと認識したら(2つの瞳孔が検出したら)、それから、例えば1秒間は瞳孔が動いてもカーソルを動かさないでおき、ユーザとしては顔をカーソルの方向に向ける(後述する視線の場合は、カーソルを見る)。1秒経ったら、それ以降は、通常通り瞳孔移動に対応させてカーソルを動かす、などがある。
しかし、この位置の補正を頻繁に行なわなければならないとしたら、面倒である。そこで、次に、瞳孔マウスにおいて、瞳孔が一時的にうまく検出できないときがある場合に、顔の正面からカーソルがずれるのを防ぐ方法について述べる。
【実施例2】
【0021】
≪顔の正面からカーソルがずれるのを防ぐ方法≫
瞳孔検出判定手段(20)は、両瞳孔非検出または、どちらか一方の瞳孔が非検出になった場合に、瞳孔が最後に検出されたフレームにおける瞳孔座標をメモリに保存しておき、再度瞳孔が検出されたときの瞳孔座標と保存した座標との差分値をカーソルの移動量に加えることによりカーソル位置を補正する。この方法によって、瞬き中に止まっていたカーソルが、瞬き後に眼を開けた瞬間にカーソルがステップ状に移動し、その後は、通常に頭の回転に合わせてカーソル移動する。
その他に、例えば、両目を一定時間(たとえば、1秒以上閉じたら)カーソルを基本的に中央に戻し、その後、目を開いたと認識したら(2つの瞳孔が検出されたら)、それから、例えば1秒間は瞳孔が動いてもカーソルを動かさないでおき、ユーザとしては顔をカーソルの方向に向ける(後述する視線の場合は、カーソルを見る)。1秒経った時点から通常にカーソルを動かす、などの方法がある。
【実施例3】
【0022】
≪頭部や目の振動によるカーソル振動を防ぐ方法(デッドゾーンを設ける)≫
頭部や目は常に細かく振動しているため、瞳孔を動かす気がなくとも振動している。瞳孔が振動すればカーソルも振動し、前述のように、ポインティングが正確にはできない。
そこで、次のように一種のデッドゾーンを設けて、振動を防ぐこととする。
基本的に、瞳孔の移動量とカーソルの移動量との関係を線形として与えれば、カーソルを見ながら頭部を回転させたとき、顔のほぼ正面にカーソルが位置するようになる。したがって、デッドゾーンを設けたときは、図10に表すような関係が適当である。ただし、ここでは、水平方向の関係のみを示した。
図10に示した関係を式に表すと、次式のように表せる。
|ΔPxi| >Thxのとき ΔCxi=kx(|ΔPxi | −Thx) (ΔPxi/|ΔPxi |) (1)
|ΔPxi| ≦Thxのとき ΔCxi=0
ここで、ΔPxi はi番目のフレームにおける瞳孔位置Pxiとi−1番目のフレームにおけるPxi-1との差(フレーム間の瞳孔移動量)であり、ΔPxi=Pxi−Pxi-1で表される。また、kx,kyは、前述したゲインに相当する。
式(1)の関係を用いることで、デッドゾーンであるThxを越えない小さな瞳孔移動のときは、カーソルはまったく動かず、デッドゾーンを超えると、瞳孔移動量にほぼ比例してカーソルが移動する。
ただし、この関係を用いるだけだと、カーソルをゆっくり動かすために意図的にゆっくりと一方向に頭部を動かした場合、意に反してカーソルがまったく動かないことがある。この問題を軽減するために、|ΔPxi| ≦Thxのときは、最後に|ΔPxi| >Thxの条件を満たしたフレーム(これをj番目のフレームとする)からの現在のフレーム(i番目)までの瞳孔移動量ΔPx=Pxi−Pxjを求め、これを式(1)のΔPxiに置き換えてΔCxiを決定する。
垂直方向に関しても、同様に表すことができ、水平方向と垂直方向は独立して働く。
このようにすることによって、基本的に瞳孔の非常にゆっくりな移動に対してはカーソル移動はないが、そのような場合でも移動の積分値が所定の量を超えたとき積分値に対応した分だけカーソル移動が起こる。
≪頭部や目の振動によるカーソル振動を防ぐ方法(移動平均法)≫
デッドゾーンを設け、特にカーソルを停止させようとしたときのカーソルのばらつきをなくす方法について上述した。しかし、デッドゾーンをなくし(式(1)においてThx=0とおく)、ΔPxi,ΔPyi もしくは ΔCxi,ΔCyiに移動平均を施こしてもよい(たとえば、5ポイント移動平均の採用。ただし、カメラはNTSC方式、30フレーム/秒(60フィールド/秒)とする)。これにより、カーソル移動は頭部の回転速度に比べて遅くなるが、カーソル移動は滑らかになり、頭部を停止させたときのカーソルのばらつきは減る。
【0023】
≪頭部の向きを眼球の向きに置き換え、ほぼ視点位置にカーソルを提示する≫
今、図11のように、頭部を眼球に置き換え、頭部の回転を眼球の回転に置き換えても、これまでに述べたことがほぼ同様に言える。違う点は、頭部は滑らかに回転するのに対して、眼球は、その先に滑らかに移動する対象部が無い限りは、滑らかには運動せず、ステップ状に移動するという点である。したがって、視点移動に頼る場合は、カーソルはほぼステップ状に移動する(ステップが終了すると、《頭部や目の振動によるカーソル振動を防ぐ方法》の項で述べたように、カーソルは停止する)。
この場合、頭部の回転による瞳孔の移動を、眼球の回転による瞳孔の移動に置き換え、顔の正面(頭部の方向)を視線方向と考えてよい。頭部移動の場合と同様に、カメラから瞳孔までの距離は任意に選べるが不変であると仮定する(距離が変わった場合は、ゲイン調整をしなおせばよい)。
画面端部においては、眼球の回転による瞳孔座標の変化が小さいので、視点とカーソル位置との間に微妙な差が生じる。これを解決するためには、画面端部においてゲインをやや高くすることが有用である。
【0024】
瞳孔位置は、眼球が回転しなくとも、頭部の移動により大きく変化する。しかし、末期のALS患者の場合、頭部は基本的に動くことはないので、頭部移動をここでは考えないことにする。一般に頭部が移動しないと眼球回転中心も移動しない。今、図11のように、眼球回転中心を中心にして眼球が回転すると、カメラの画像中で瞳孔は移動する。その水平方向への移動をΔPxiとし、それに対応するカーソルの移動をΔCxiとし、同様に垂直方向への移動をそれぞれΔPyi,ΔCyiとするとこれまで述べてきた頭部の移動によるカーソル制御と同様に扱うことができる。したがってモニタ画面の4隅や4端に頭部を向ける代わりに視線を向ける(単に見る)ことで、ゲインkx,kyの調整や、位置のずれの補正が同様にできる。
この場合、ゲイン調整が正しくでき、位置のずれもなければ、基本的には操作者が見ているところにカーソルが提示できる。
ただし、眼球の回転だけでカーソルを移動させる場合は、頭部を回転させる場合に比較して、カメラ画像の中で瞳孔はほんのわずかしか動かないため、ゲインkx,kyは大きく設定しなければならない。一般に、ΔPyの分解能はカメラの分解能や画像処理法などに依存する。瞳孔マウスの場合は、顔全体が十分に写るように、低い拡大率で撮影していることもあり、画像処理によって検出される瞳孔座標の分解能も必ずしも高くない。
そのため、瞳孔移動信号ΔPxi,ΔPyiに移動平均を施す。移動平均により、モニタ上の視点の動きに対するカーソルの移動は、緩やかな動きになり遅れるが、基本的に、ほぼ視点に一致した位置にカーソルが出現する。カーソルが希望の位置に完全に一致しないときは、位置が一致する箇所へ視線を移してずれを補正することも容易である。
実験から求めた値としては、(Wx,Wy)=(1280,1024)で、水平画角が14°35′で垂直画角が10°58′のカメラを用いて、カメラから50cmのところに頭部を固定したときの使用者の顔画像を320×240画素の分解能で取り込んだとき、デッドゾーン(Thx,Thy) =(0.05,0.05),ゲイン(kx,ky)=(80,150)、移動平均幅はx方向、y方向ともに10ポイントとしたときに(カメラは30フレーム/秒;NTSC方式)、カーソルの移動は視点の動きによりもずっと遅くなったが、瞳孔のみの検出でカーソルはおよそ視点位置に移動した。ただし、ここではデッドゾーン,ゲインなどは経験的に与えた。
なお、移動平均を施すか否かは操作者の好みにもよるので、オンオフの設定を可能とすることが好ましい。
【0025】
≪デッドゾーンの自動調整法≫
次にデッドゾーンの適当な大きさについて述べる。そもそも、デッドゾーンは瞳孔の不随意の移動によりカーソルが移動を防ぐためである。よって、操作者毎に異なる不随意の瞳孔移動の量に応じて決定するのが妥当である。しかし、ここで述べている瞳孔移動とはビデオカメラ画像中の移動であるから、顔を撮影する際の拡大率に影響を受ける。したがって、カメラから顔までの距離に依存する。しかし、ゲイン調整の説明のときに仮定したように、カメラから顔までの距離は変化しないものと仮定する。特に、頭部が動かない操作者などでは、カメラと顔までの距離はほぼ固定されていると考えてよいため、この仮定は妥当である。
デッドゾーンは、次のように自動決定できる。操作者に数秒の間、頭部も眼球も動かさないでもらう。つまり、ディスプレイ上の適当な1点を注視しながら、頭部の動きを止めてもらう。その間に、ΔPxiとΔPyiを連続計測し、その間の|ΔPxi|,|ΔPyi|の最大値もしくは標準偏差など適当な値をデッドゾーンとして与える。これにより、その操作者とカメラからの距離に応じた適当なデッドゾーンが与えられ、カーソルが不随意な瞳孔移動によってチラつかず、しかも、細かな随意のカーソル移動が可能となる。
発明者の提案する画像処理(特願2004−170506号)により求まる|ΔPxi|のヒストグラムを作成した結果を図12に示す。発生頻度は双峰形の分布になっており、最初(左)の山の終端(右端)をFxとし、2つ目の山(右)の始端(左端)をSxとして、次式によりデッドゾーンを決定した。
Thx =(Sx+2・Fx)/3 (2)
【0026】
≪デッドゾーンとゲインの調整処理を実行する場合≫
デッドゾーンとゲイン調整をユーザが手を使用せずに行なうためには、何らかのきっかけを装置に対して与えることが必要である。そのきっかけとしては、一度両目を閉じ、閉じている時間が一定時間(例えば、2秒)を超えたら、これらの処理が開始するようにする。再度目を開いてから一定時間(たとえば、2秒間)の間に、まず、操作者はディスプレイ上の1点を注視しながら頭部を静止する。その時点で装置はブザーなどを鳴らし、デッドゾーンが自動決定され、つぎにゲイン調整処理に進むことを操作者が知る。
さらに次の例えば3秒間にゲイン調整のために、モニタ画面の上下左右端のほうに顔の正面が向くように頭部を動かすことによってゲイン調整を行なう。一度、これらの調整処理が実行されたら、再度、両瞳孔が検出されない状態が上記時間以上経たない限り、デッドゾーンとゲインは一定を保つものとする。なお、これらの調整の開始合図は、必ずしも両目の閉じている時間が長いときに行なうというだけでなく、両目を意識的に繰り返して2度、3度閉じた場合や、右目だけを閉じて開いたあとに左目を閉じて開いた場合など、幅広くあり、限定するものではない。
実験から求めた値としては、(Wx,Wy)=(1280,1024)で、水平画角が14°35′で垂直画角が10°58′のカメラを用いて、カメラから50cmのところに座った使用者の顔画像を320×240画素の分解能で取り込んだとき、デッドゾーンは (Thx,Thy)=(0.38,0.30)であり、(kx,ky)=(29,44)であった。
【0027】
≪瞳孔が大きく動いているとき瞳孔検出を失敗した場合や無意識に片目を閉じた場合の補償法≫
頭部が大きく素早く動くとき、それに伴って瞳孔が大きく素早く移動するため、瞳孔が検出できないことがある。このような場合には、特別な処理をしなければ、検出できなかったほうの目が閉じられたと判断され、クリックやドラッグがなされたと判断されてしまい、誤動作につながる。また、カーソルを動かすために頭部を回転している最中に、無意識のうちに片目だけ閉じたりすることがあるが、この場合も同様である。
しかし、幸いなことに、通常のマウスの場合を想定すると、マウスを動かしながらクリックをすることはない。そこで、瞳孔検出判定手段(20)を設け、瞳孔が非検出となったときには、その直前の瞳孔移動のスピード(ΔPxi,ΔPyi)を計算し、それが所定の値より大きいときは、瞳孔が非検出であっても、ボタン押し(クリック操作)信号を出さないようにする。前述の《顔の正面からカーソルがずれるのを防ぐ方法》の項で述べた方法を併用すれば、再度、瞳孔が検出されたときは、視点位置にカーソルが再度現れる(図13参照)。
ここで、頭部の回転の制御が自由にできる使用者の場合は、上記の所定の値は、デッドゾーン(Thx,Thy)と同じ値でも良いし、クリックやドラッグのため、片目を閉じる際に、頭部が動いてしまう使用者の場合には、デッドゾーンの数倍の値を与えたほうが良い。
このような方法は、ユーザがカメラの前から席をはずす場合にも有効である。席をはずす場合には、一般に瞳孔が急激に動き、その直後に瞳孔が検出できなくなる。このようには、カーソルがモニタ画面の端まで移動し、その状態のままクリックがなされることになり、コンピュータの誤動作に通ずるが、それを防ぐことができる。
【0028】
≪頭部もある程度動き、目も動かすことができる操作者や、それに相当する使用環境における使用法≫
中程度の病気進行状況にあるALS患者は、目は動くが、頭部動きが鈍くなってくる。そのような場合には、頭部回転と眼球回転の両方を利用して、ゲイン調整の実行を行なえばよい。また、カーソル移動においても、もし、視点を動かしてカーソルが希望の位置に一致しなかった場合は、もう一度視点を動かしてもよいし、頭部を少し回転させてずれを補正することもできる。
【0029】
《光源位置に対する配慮》
ビデオカメラの近くに設置した光源の角膜反射光を検出し、カメラ画像中の瞳孔の中心と角膜反射の中心の相対位置から視点を検出する従来技術(特許文献1参照)においては、瞳孔と角膜反射の両方がカメラに写る条件下でなければ、モニタ画面上の視点は検出できない。角膜反射は、カメラの光軸に対する視線方向の角度が大きいとき、角膜の領域から角膜反射が出てしまい、写らなくなる。したがって、実際にモニタとカメラを設置する場合、モニタの端のできるだけ近い位置にカメラを設定することが望ましい。しかし、モニタの近く、たとえば、図14のように、モニタのすぐ下にカメラを設置した場合、眼鏡をしてユーザが少しでも顔を下に向けると、眼鏡のレンズの表面での反射像がカメラに写り、それが瞳孔や角膜反射に重なり、視線は検出しにくくなるという問題がある。
発明者は、これまでに、同様のシステムにおいて、頭部の動き、特に回転に合わせてカメラ画像中を移動する瞳孔のみを捕らえて、瞳孔の位置のフレーム間の変動をカーソルの移動に対応させるポインティングシステム(瞳孔マウス)について出願している。その方法によれば、図15のようにモニタから角度にして離した位置にカメラを設置することにより、ユーザがカメラのほうに顔を向けなければ眼鏡反射は写らず、瞳孔検出の邪魔にならないという大きな利点がある。しかも、瞳孔は角膜反射とは異なり、カメラの光軸から大きくずれたところにユーザの視線が向いていても、また頭部が大きく回転しても容易に検出できるという利点がある。
【産業上の利用可能性】
【0030】
1.視点とカーソル位置の関係づけを行なう較正法が容易に素早くできるため、何らかの理由で頭部位置が基準位置(元の位置)からずれても、再度簡単に較正が自分の意思でできるため、便利である。カーソルを顔の正面のパソコン画面上に提示することができるため、瞳孔検出のためのカメラと光源をパソコン画面から少し離れたところに設置することにより、パソコン画面上に顔を向けている限り、眼鏡反射が光源の瞳孔と重ならないため瞳孔検出ができ、眼鏡を使用したユーザも問題なく使用できる。
2.頭部を自由に回転させることができる操作者から目しか動かない操作者まで、同一の装置およびアルゴリズムで対応できる。
3.瞳孔の検出に不備があっても、カーソル移動に与える悪影響は一時的であり、再度、瞳孔が検出された際には、本来のカーソル位置にもどる。
【図面の簡単な説明】
【0031】
【図1】カメラにおける光源の配置例を示す図
【図2】明瞳孔画像と暗瞳孔画像との差分による瞳孔検出の例を示す図。(a)は明瞳孔画像、(b)は暗瞳孔画像、(c)は差分画像を示している。
【図3】カメラにおける光源の別の配置例を示す図
【図4】システム全体の構成図
【図5】ゲインが適度な場合において、画面端部で位置合わせがなされる例を示す図
【図6】ゲインが過大であり、画面端部での位置合わせが困難な例を示す図
【図7】ゲインを合わせる場合の頭部移動を示す図
【図8】ゲイン調整後の位置あわせを示す図
【図9】顔の向きとカーソル位置を画面端部で一致させる例を示す図
【図10】瞳孔移動量とカーソル移動量との関係に不感帯を設けた例を示す図
【図11】視線の移動による瞳孔移動を示す図
【図12】静止時と操作時における移動量(ΔPxi)の分散を示す図
【図13】マウス移動中に瞳孔検出ができなくなった例を示す図
【図14】光源からの光が眼鏡により反射してカメラへ入射する例を示す図
【図15】光源とカメラの位置をずらして眼鏡反射を避けた例を示す図
【符号の説明】
【0032】
1 カメラ
2 カメラ開口(レンズ)
3 カメラ開口に近い光源
4 カメラ開口から遠い光源
5 LED(発光ダイオード)
11 カメラ
12 カメラ開口に近い光源
13 カメラ開口から遠い光源
14 制御装置
16 モニタ
18 ポインタ(カーソル)
19 較正手段
20 瞳孔検出判定手段

【特許請求の範囲】
【請求項1】
コンピュータを操作する者の顔画像を捉えるカメラと、カメラ画像中の瞳孔座標を検出する手段と、検出した瞳孔座標の変位を利用してコンピュータのモニタ画面上のポインタを移動させる手段と、瞳孔座標とポインタ座標との対応関係における較正を行う手段とからなる瞳孔検出に基づくポインティング装置。
【請求項2】
前記較正を行う手段は、操作する者のモニタ画面上の上下左右端の注視を検出し、当該注視点に対応する瞳孔座標から前記対応関係のゲインを設定する機能を有することを特徴とする請求項1記載の瞳孔検出に基づくポインティング装置。
【請求項3】
前記較正を行う手段は、トリガによりポインタを画面原点に復帰させ、該原点を注視する操作者の瞳孔座標とポインタ座標から前記対応関係の零点を設定する機能を有することを特徴とする請求項1記載の瞳孔検出に基づくポインティング装置。
【請求項4】
前記較正を行う手段は、瞳孔座標とポインタ座標との対応関係において設けられたデッドゾーンの大きさを設定する機能を有することを特徴とする請求項1記載の瞳孔検出に基づくポインティング装置。
【請求項5】
さらに瞳孔検出判定手段を備え、該瞳孔検出判定手段は瞳孔の存在から不存在への移行を検出すると、ポインタ位置におけるクリック操作信号を発生するとともに、瞳孔が不存在になる直前の瞳孔移動の速度が一定値を超える場合には、前記クリック操作信号の発生を抑制するものであることを特徴とする請求項1記載の瞳孔検出に基づくポインティング装置。
【請求項6】
さらに瞳孔検出判定手段を備え、該瞳孔検出判定手段は瞳孔の不存在から存在への移行を検出すると、新たに検出した瞳孔位置に対応するポインタ位置に対応する位置にまでポインタを移動させる信号を発生するものであることを特徴とする請求項1記載の瞳孔検出に基づくポインティング装置。
【請求項7】
コンピュータを操作する者の顔画像をカメラで捉えるステップと、カメラ画像中の瞳孔座標を検出するステップと、検出した瞳孔座標の変位を利用してコンピュータのモニタ画面上のポインタを移動させるステップと、瞳孔座標とポインタ座標との対応関係における較正を行うステップとからなる瞳孔検出に基づくポインティング方法。
【請求項8】
前記較正を行うステップは、操作する者のモニタ画面上の上下左右端の注視を検出し、当該注視点に対応する瞳孔座標から前記対応関係のゲインを設定する機能を有することを特徴とする請求項7記載の瞳孔検出に基づくポインティング方法。
【請求項9】
前記較正を行うステップは、トリガによりポインタを画面原点に復帰させ、該原点を注視する操作者の瞳孔座標とポインタ座標から前記対応関係の零点を設定する機能を有することを特徴とする請求項7記載の瞳孔検出に基づくポインティング方法。
【請求項10】
前記較正を行うステップは、瞳孔座標とポインタ座標との対応関係において設けられたデッドゾーンの大きさを設定する機能を有することを特徴とする請求項7記載の瞳孔検出に基づくポインティング方法。
【請求項11】
さらに瞳孔検出判定ステップを備え、該瞳孔検出判定ステップは瞳孔の存在から不存在への移行を検出すると、ポインタ位置におけるクリック操作信号を発生するとともに、瞳孔移動の速度が一定値を超える場合には、前記クリック操作信号の発生を抑制するものであることを特徴とする請求項7記載の瞳孔検出に基づくポインティング方法。
【請求項12】
さらに瞳孔検出判定ステップを備え、該瞳孔検出判定ステップは瞳孔の不存在から存在への移行を検出すると、新たに検出した瞳孔位置に対応するポインタ位置に対応する位置にまでポインタを移動させる信号を発生するものであることを特徴とする請求項7記載の瞳孔検出に基づくポインティング方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2006−309291(P2006−309291A)
【公開日】平成18年11月9日(2006.11.9)
【国際特許分類】
【出願番号】特願2005−127386(P2005−127386)
【出願日】平成17年4月26日(2005.4.26)
【出願人】(304023318)国立大学法人静岡大学 (416)
【Fターム(参考)】