⬆️ ⬇️

Custom'a Eye-tracker calibration





Soon there will be a year since we released a product with a custom eye-tracker calibration on board. Unfortunately, for various reasons, everything could not get this article. However, recently there was a funny incident that prompted to finish the job. But first things first. I hope someone will still benefit from our experience, despite the fact that the post turned out to be damp.



In short, the Eye-tracker is a device that allows you to track the direction of the gaze, as well as the position of the eyes and head.



The Eye-tracker 's quite a lot of applications, one of these - is the industry of computer games (a little more ).

')

Often, gaze detection is responsible for secondary (auxiliary), but important actions in games:







In most cases, the standard calibration (it will be about the Tobii Eye Tracker 4C ) is enough for comfortable use of the Eye Track 'Era.





But, unfortunately, for our purposes, the accuracy of the device, achieved by standard calibration is not enough, because, in our project, the look is the main control mechanics.







From the above, a task has been formed: to improve the standard calibration;

conditions : Tobii Eye Tracker 4C device, development language - C # (WPF) .



It seems to be a solution on the surface: if you want more accuracy - add more calibration points, but everything is not so simple.



Tobii AB has quite a lot of tools to work with their devices. Joy knew no bounds when the Tobii Pro SDK was discovered, in which there are all the buns for working with calibration , but as it turned out later, this SDK is not suitable for working specifically with the eye tracker 'a model that we have (although it is strange that The device’s gaze detection was still present when using this SDK ). I had to take the tools easier - Tobii.EyeX.Client .



Empirically, the optimal number of calibration points and their location were identified: a 4x3 matrix with 12 calibration points located (each in the center of the cell).



The following parameters were also found empirically:







Calibration Algorithm (Simple to Madness)



Calibration is performed sequentially, for each cell of the calibration matrix:



  1. if the distance between the current calibration point and the point obtained from the device is less than the maximum permissible deviation , then this point (obtained from the device) is included in the collection for further processing, otherwise the calibration by the current cell is reset to its original state (and everything is new) ;
  2. after the calibration time for one calibration point has been exhausted, we obtain the average value of the displacement over previously collected data.






Upon completion of the calibration, we have a collection of 12 averaged values ​​of the displacements by region (matrix cells).







Use (even easier)



  1. determine which region the point gets from the device;
  2. we shift a point received from the device, on average value of shift in this region.


Thus, it was possible to improve the accuracy of the Tobii Eye Tracker 4C device in a software way (by making an add-on over a standard calibration).



Unfortunately, because of the nondisclosure agreement, I can not specify the name of the software, nor put the source code or screenshots. Fortunately, the algorithm was allowed to share. I hope that someone post will still be useful.



The article provides the simplest description of the main calibration process. In addition, a lot of things happen:





And here is the very event that contributed to the “completion” of the article: by some unthinkable coincidence, my friend ( from the previous post ) had a chance to talk live with the developer from Tobii AB . During the conversation, the developer mentioned the imperfect standard calibration and that our efforts were not in vain.



Source: https://habr.com/ru/post/457784/



All Articles