目線検出ソフトの作成
５年Ａ組 稲益 秀成
指導教員 米田 隆恒
１．要約
本研究では、目線の変化によってコンピュータを操作できるように、コンピュータを操作しているときの利用者の「黒目」の動きから目線を検出し、目線を使った入力装置となるソフトウェアを開発することを目的とする。
今回作成したソフトウェアは、Web カメラで利用者の顔を撮影し、その映像から目線を検出し、目線に合わせてマウスポインタを制御するものである。
キーワード 目、目線、目線検出、Web カメラ、OpenCV、Processing

２．研究の背景と目的

３．研究内容人間は他人の目を見ると、その目線と目まず、コンピュータが利用者の目線を取線の先にあるものから、その人が何を見て得する方法としては、
Web カメラを用いた。

いるのかをおおまかに知ることができる。

Web カメラとは、
Skype や FaceTime など、そこで私は、人間の目は視覚情報を得るだ

インターネットでテレビ電話を楽しむとき

けでなく、自分がどこを見ているかを他人に相手にリアルタイムで送信する、自分のに知らせる役割も持っているのではないか

顔を撮影するカメラのことである。最近のと考えた。

ノートパソコンや一体型デスクトップパソ

今日幅広く普及しているコンピュータやスマートフォンなどが人間の目線を情報とコンには標準で搭載されていることが多く、外付けのものも安価で購入できる。(図１)

して取得できれば、これらの電子機器の使い方が広がるのではないだろうか。例えばコンピュータが利用者の見ているものを検出できれば、そこから利用者の興味のあるものを予測することができるかもしれない。
あるいは、マウスやタッチパネルの代わりに目線をポインティングデバイスとして使うことも考えられる。
これらの理由から、私はコンピュータを通じて利用者の目線を得る方法について考えていくことにした。

図１

Web カメラまた、最近のスマートフォンや、タブレまた、以降のフレームでは前フレームのット端末などには同様な用途のカメラがほ顔の位置と肌の色を用いて顔の追尾処理をぼすべての機種に搭載されている。
（図２）行うので、毎回 OpenCV での顔検出（①〜③）を行わず、④から⑥のみの処理を行う。
なお、OpenCV については次で説明する。
(１)

OpenCV を用いた顔検出

映像から黒目の位置を検出するために、まず映像中の顔の範囲を検出するべきだと考えた。これは、最初に映像全体から黒目
図２

スマートフォン等のインカメラを探す方法を試みたところ、黒目と形状が似通っているものが背景に映り込んでしま

つまり、開発したソフトウェアをインスうと誤認識してしまい、実用的ではないとトールするだけで、新たに専用の装置を追判断したからだ。そこで現在、写真管理ソ加しなくても、Web カメラさえあれば目線フトや SNS の Facebook、その他いろいろ検出が行えるというメリットがある。

な場面で実用化されている顔検出技術を使

プログラミング言語は Processing を使用

った後、その顔の範囲から黒目を探した方した。これは、ソースコードを多少変更すが、背景の影響を受けにくいと考えた。

るだけで、Windows OS、Mac OS X、Linux、

顔検出方法としては、インテル株式会社

さらには Android OS でもソフトウェアをが発表したオープンソースライブラリーで実行することができるため、幅広いデバイある OpenCV を利用したパターン認識を使スで目線検出が行えると考えたからである。

う方法を選んだ。

今回開発したソフトウェアのプログラムの流れは以下の通りである。
①Web カメラから映像を取得する。
②取得した映像に対して OpenCV ライブ
ラリによる顔検出を行う。
③OpenCV の顔検出結果から、映像中の顔の中心の位置、顔の肌の色を計算する。
④顔の位置と肌の色のデータを用いて映像中の顔の範囲を検出する。
⑤顔の範囲内の黒目の位置を検出する。
⑥黒目の位置に合わせてマウスポインタを動かす。

図３

顔検出におけるパターン認識の例（参考文献[５]より引用）

これは、鼻筋の方がその隣の目のある部分の方より手前にあり、光が当たりやすいータを用いて顔の位置を追尾し、顔検出を続ける方法をとった。

ため明るくなる、というような顔の一部分

また、追尾をする処理もできる限り軽くと別の部分との色の違いの特徴をデータベするために、前のフレームの顔の範囲の中ースに持っておき、 (図 3 参照) このデー

心の点の位置からまず上下に色を調べ初回

タをパターンとして映像の左上から 1 ピクに取得した肌の色の色相と比較し、肌の色セルごとにずらしながら、今調べている範でなくなるまで上下に範囲をのばして調べ囲の映像の特徴が、データベース上の顔の続ける。その後上下にのばした範囲から左特徴と一致するかを調べていく方法である。

右に肌の色が続く範囲を調べていくことでこの顔の特徴のデータのひとつひとつで顔の範囲を調べる方法をとった。(図 4 参照)の認識率は低いものだが、２つの部分の色次回フレームではこの処理で計算した新たの違いを調べていくため、シンプルで計算な顔の範囲から中心を計算して、同様の処量が少なくて済む。それらをたくさん用意理を行う。

することで認識率を高めていくことができる。
しかし今回、製作するプログラムは、リアルタイムに目線検出を行える必要がある

肌の色か否かを判断するのに色相を用いたのは、たとえ顔に陰ができても、色相は値の変化が小さいため、光源による影響を受けにくいと考えたからである。

ため、すべての処理が軽いものでなくてはならない。

(３) 黒目の位置の検出

OpenCV による顔検出はシンプルである(2)の方法で検出した顔の範囲から、黒目とは言え、CPU に Corei５を搭載しているの位置と、黒目の中心点の位置を調べる必現在一般的なパソコンでも一枚の FullHD

要がある。

サイズの画像の処理に１秒近くかかるほど黒目を検出する処理としては、黒目にみ処理が重いものである。そこで、この方法

られる、「黒い」「２つ横に並んでいる」の顔検出はプログラムを開始した初回フレ「顔の上半分にある」「隣に白目の白色がームのみにし、以降のフレームでは顔の肌ある」という４つの特徴を利用することにの色の部分を追尾するようにした。この方した。

法により、高精度の顔検出結果をリアルタ

特に、「隣に白目の白色がある」というイムに得ることができると考えたからであ

判定によって、比較的形状が似ている眉毛る。

や鼻の穴などとの誤認識を大幅に減らすことができた。

(２) 初回フレーム以降の顔の範囲の検出
初回フレームでの OpenCV の顔検出結果から顔の中心位置、そして顔の範囲内の色より、肌の色を取得したあと、これらのデプログラムの処理としては、以下のような順で行った。
①

顔の上半分の範囲の中で、白色と黒色が隣り合っている部分を探す。

②

黒色と白色が隣り合う部分が４カ所以上ある横方向の列をさがす。

で黒目の中央が白く反射してしまうときには４カ所より増えてしまうからである。

②を満たす列が続いている範囲を目が④において、黒目の点の計算に重心を用ある範囲とし、その中から黒い部分をさがいたのは、図 5 のように黒目の中央がディす。

スプレイの光で白く反射してしまっても、③④③の結果から二つの黒目の範囲を探し、 黒い部分の重心を計算することで、ある程その黒目の位置を点で表すために黒い部分度反射による誤差を減らすことができるとの重心を計算する。

考えたからである。

① OpenCV による顔認識を行う② 顔認識結果の中心を基準点とする③ 基準点から上下に肌の色の④ 調べた上下の線から左右に範囲を調べる

肌の色の範囲を調べる

図５

黒目が反射している様子(４) マウスポインタの制御
ここまでの処理によって、映像中の顔の範囲の中心、黒目の位置を点で取得できた⑤ 調べた上下の範囲に外接するため、この２つの位置関係からマウスポイ

四角形を顔検出結果とするンタの制御を行った。
マウスポインタの制御を開始する前に、利用者に画面の上下左右の端をみてもらい、②に戻る

そのときの黒目と顔の位置関係を保存する。
そして保存した位置関係と黒目の点と顔の点の位置関係を比較することで、マウスポ

図 4 顔認識の追尾の流れ②において、４カ所としたのは、２つの黒目で白→黒と黒→白となる計４カ所あるはずだからである。
また、４カ所「以上」としたのは、図 5のようにコンピュータのディスプレイの光インタを制御した。
4. 結果
今回、Apple 社製 iMac Mid2011(画面サイズ 21.5 インチ、 CPU corei5 2.7GHz、メモリ 4GB)のモデルで本ソフトウェアを実行した。顔と画面との距離は約 60cm で意識していても、どうしても顔の位置が変ある。

わってしまうのである。

実際に目を動かしてからプログラムがその動きを認識するまでの遅延は約 0.2 秒であった。

6. 課題と展望
今回の研究において、Web カメラで撮影1920×1080 ピクセルのサイズの Web カした映像から目線を検出し、短い遅延でマメラ映像からは、21.5 インチディスプレイウスポインタを制御することに成功した。

を横に約 22 等分、縦に約 11 等分した細か

しかしながら、現在、顔の位置の変化にはさで見ている場所を示すことができた。

対応しておらず、コンピュータを使用する

しかし、まだ顔の位置の変化に対応して上で目線の変化による首の動きの変化が意いないため、利用者の顔の位置が変わって識していても発生してしまうため、正しくしまうと目線検出を続けることはできない。

見ている場所にマウスポインタを移動させまた、顔の範囲の検出において、眼鏡をるのはとても難しい。そのため、まず顔の使用した場合を考慮できていないため、眼位置の変化にソフトウェアが対応する必要鏡を使用した場合は目線検出を行えない。

がある。そのためには顔と画面の位置関係を立体的に把握しなければならない。顔の5. 考察

向きは鼻頭の位置の変化で読み取ることが今回のような方法を使えば Web カメラできると考えている。顔と画面の距離は映の映像から利用者の目線を検出し、おおま像中の顔の大きさの変化でよみとることがかに画面のどのあたりをみているのかを取できると考えている。

得することができると分かった。また、目そして、将来の展望としては、マウスポを動かしてから反応までの遅延は約 0.2 秒

インタにリンクさせることでコンピュータと、実用的な速度で目線検出を行えた。の操作をするだけでなく、マウスやタッチ

現在目線検出デバイスとして存在する、操作の補助としてこの目線検出システムを頭にとりつけ目に近い位置にカメラを設置活用したいと考えている。具体的な例としして目線を検出するタイプの装置に精度はては、文書をよんでいるときに、目線認識劣るが、本研究の方法では、デバイスに標で利用者がどこを読んでいるかを知ること準装備されたもの、あるいは安価に市販さで、自動スクロール、自動ページ送りがでれているものを使用するため、追加費用をきるのではないかと考えている。

かけず手軽に、多くの人が目線検出を行えるというメリットがある。

また、これが完成すると、体の不自由な人でも目線の動きだけでコンピュータを操

しかしながら現在は顔の位置の変化に対作できるようになるだろう。例えば、画面応しておらず、実際に実用化するためにはに「あいうえお…」といったような文字の顔の位置の変化に対応する必要がある。人表を表示しておき、それを一定時間見るこは無意識に目線の変化に応じて首が動いてとでその文字を選択したことにすれば、文しまうため、顔の位置を動かさないように章入力はもちろんだが、その文字を音声で出力することで、体が不自由な人でも会話だきました。また、同研究会のメンバーにすることができるようになる。このようなは研究のサポートをしていただきました。

社会貢献につながると考えられる。

この場を借りてお礼申し上げます。

さらに、別の考え方として、利用者がインターネットブラウザを使っているときに、Web サイトのどこを見ているかがわかると、その利用者が引きつけられた内容がわかり、そこからその利用者の興味がある内容を知り、どのような内容が読んでもらえるかを今まで以上に調べることができるようになるので、うまく使えば、Web サイトの質の向上にも繋がると考えられる。

６．参考文献[1]

Processing Reference「http://processing.org/reference/」[2]

OpenCV ¥ Library「http://ubaa.net/shared/processing/opencv/」[3]

コンピュータビジョンのセカイ - 今

そこにあるミライ「http://news.mynavi.jp/series/computer_vision/008/index.html」[4]

RGB から HSV への変換と復元「http://hooktail.org/computer/index.php?RGB%A4%AB%A4%E9HSV%A4%D8%
A4%CE%CA%D1%B4%B9%A4%C8%C9%FC%B8%B5」[5]OpenCV.jp「http://opencv.jp/」

７．謝辞
今回の研究にあたり、サイエンス研究会
物理班顧問の米田隆恒先生、藤野智美先生には、研究に関する助言や指導をしていた