EyeTrackerでキャリブレーションしてみる

画面に注視点を表示する必要あり。
もしくは注視点を書いた紙などをセットしておこなう必要あり。
それも無理なら、とりあえずEye Tracker Managerを使ってキャリブレーションする。
(というようなことがドキュメントに書いてあった)

サンプルプログラム

# calibrationする
def myCalibratingEyeTracker(eyetracker):
    #calibrationする
    calibration = tr.ScreenBasedCalibration(eyetracker)
    #calibrationモードに入る
    calibration.enter_calibration_mode()
    print("Entered calibration mode for eye tracker with serial number {0}.".format(eyetracker.serial_number))
    #calibration用のポイントを設定する
    points_to_calibrate = [(0.5, 0.5), (0.1, 0.1), (0.1, 0.9), (0.9, 0.1), (0.9, 0.9)]
    for point in points_to_calibrate:
        print("Show a point on screen at {0}.".format(point))
        # Wait a little for user to focus.
        time.sleep(0.7)
        print("Collecting data at {0}.".format(point))
        #print("  deb: " + calibration.collect_data(point[0], point[1]))
        if calibration.collect_data(point[0], point[1]) != tr.CALIBRATION_STATUS_SUCCESS:
            # Try again if it didn't go well the first time.
            # Not all eye tracker models will fail at this point, but instead fail on ComputeAndApply.
            calibration.collect_data(point[0], point[1])
    
    print("Computing and applying calibration.")
    calibration_result = calibration.compute_and_apply()    
    print("Compute and apply returned {0} and collected at {1} points.".\
        format(calibration_result.status, len(calibration_result.calibration_points)))

    calibration.leave_calibration_mode()
    print("Left calibration mode.\n")

注意点

  • ライセンス登録しないとだめらしいのでライセンス登録しておきましょう。
  • 最後は必ずleave_calibration_mode()しておくこと
  • 注視点(ポイント)をしばらく見つめさせるだけの余裕を持たせること。
    • 短すぎると失敗するらしい(どの程度が良いかは不明。0.7秒が初期値?)