ならば

音とかで遊んでいたログ

Webカメラを使った視線プロット

ウェブサイトのユーザビリティテストの方法にはユーザの視線を可視化するものがある。gaze plotと呼ばれる方法はユーザの視線の軌跡を記録し、注視した部分に円を描画する。円内の番号は注視した順番を表し、円の大きさは注視時間の長さを表す。この結果から、ウェブサイトのどの部分がどの順番でどのくらい注目されるのかを知ることができる。

面白そうだったからウェブカメラとオープンソースの視線追跡ソフトで簡易なgaze plot環境を作って遊んだ。対象をウェブサイトに限らずに、いろいろ試した結果一覧。











  • 数独(最初に埋められる数字を見つけるまで)










当然誰もが応用対象として思いつくであろう えろい画像もいくつか試してみた。視線が集中する部位がよく分かった。事前の自覚と一致する。

ITU Gaze Tracker

どこで売ってるのかさえ知らないが、商用の視線追跡システムは高価らしい。一方、研究レベルでは安価な視線追跡システムの提案やプロトタイピングが結構論文になっているらしい。今回使った視線追跡ソフトITU Gaze Trackerはそのひとつの成果で、主にコペンハーゲンIT大学の研究グループによって作られている。ITU Gaze Trackerは家電量販店などで手に入るウェブカメラやビデオカメラをそのまま改造なしに使って、安く簡単に視線追跡システムを構築可能にするソフトを目指している*1

公式の動作環境は、

  • Windows XP SP2
  • .Net Framework 3.5 SP1
  • 赤外線暗視機能付きのウェブカメラかビデオカメラ*2
  • それなりに性能の良いコンピュータ

となっているが、OSはWindows Vista SP2(32bit)でも動作した。あと動作環境には書いてないけど、フォーラムにある通り、「Visual C++ 2005 再頒布可能パッケージ」をインストールする必要があった。
赤外線暗視機能付きのウェブカメラは(日本では?)あまり売ってない。暗視機能のないウェブカメラが手元にあれば、保証はないけど赤外線ライトだけ別に用意すれば大丈夫かもしれない。
自分は元々持ってなかったのでDC-NCR30Uを買った。今回の出費はこれだけ。

300万画素赤外線WEBカメラ DC-NCR30U

300万画素赤外線WEBカメラ DC-NCR30U


ITU Gaze Trackerは片目の瞳孔の動きを追跡して、それをスクリーンの座標に対応付ける。

使い方は簡単。

  1. "Setup"でウェブカメラの解像度や瞳孔の位置・大きさ、キャリブレーションの方法を設定
  2. "Calibrate"でキャリブレーション(瞳孔の動きとスクリーンの座標の対応付け)実行
  3. "Start"で視線追跡開始

"Setup"の設定によって、視線の動きをマウスカーソルに反映したり座標をUDPでストリーム出力したりできる。キャリブレーションを行うときの注意点としては、瞳孔の位置・大きさの設定が不十分だとフリーズしてしまう。"Setup"のときに何度かまばたきしたり視線を動かしたりしても照準線が点滅せずはっきり表示されることを確認して、キャリブレーション中は頭を動かさないようにする必要がある。

今回のgaze plotでは、視線の動きをマウスカーソルに反映する機能を使った。外部アプリケーションとして自作した部分は開始時にスクリーンキャプチャを撮って、その後はマウスカーソルの位置が狭い範囲内に一定時間以上あれば時間の長さに応じた大きさの円をスクリーンキャプチャ上に描くプログラムだけ。

ITU Gaze Trackerを使った印象。

  • 利点:
    • ハードやソフトの作製・改造・修正の必要がなく、視線追跡の環境が本当に簡単に構築できる
    • オープンソース(GPLv3。ただし商用ライセンスも購入可)なので、知識があれば独自に改変できる
  • 欠点:
    • 頭の動きに追随できないので視線追跡中は頭を全く動かせない
    • ウェブカメラを目に近づけたままにする必要があって鬱陶しい

欠点に関して。頭の動きには本当に弱く、ほんの少し動かしただけでもスクリーンの座標との対応関係がずれる。頭の動きを補正する仕組み自体が実装されていないようなので動作としては当然なんだろうけど辛い。
ウェブカメラを目に近づけたままにする方法は、公式サイトには、ウェブカメラを小さな長方形のバルサ材の一端に固定してもう一端を口で噛む、というようなことが書いてある。やってないがこれも多分いろんな意味で辛い。

今回はこうした。

  • 適当な高さの物体の上にタオルを敷いてあごを乗せて頭を動かさないようにする
  • 適当な高さの物体の上にウェブカメラを固定して位置を調整して目の近くに置く

これでも自分の実感とマウスカーソルの位置がほぼ一致するほど精確なキャリブレーションはなかなか達成できなかった。いやむしろこんなに簡単に作れる環境で時々はそのレベルの精確さが達成できることは凄いと思うが。

楽しかった。視線追跡の他の応用も考えてみよう。

*1:San Agustin, J., Skovsgaard, H., Mollenbach, E., Barret, M., Tall, M., Hansen, D. W., and Hansen, J. P.: Evaluation of a low-cost open-source gaze tracker. In Proceedings of the 2010 Symposium on Eye-Tracking Research & Applications, (Austin, Texas, March 22 - 24, 2010)

*2:ビデオカメラは今回使ってない。この後の記述はビデオカメラにはあてはまらない部分がある