Modified DBSCAN Algorithm on Fixation Identification
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Modified DBSCAN Algorithm on Oculomotor Fixation Identification


Beibin Li

For any information, please contact: Beibin Li. You can also visit my personal website.

Co-authors: Quan Wang, Erin Barney, Logan Hart, Carla Wall, Katarzyna Chawarska, Irati Saez de Urabain, Timothy J. Smith, Frederick Shic


This algorithm is published in ETRA 2016 ACMSIGGRAPH.

  • Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for third party components of this work must be honored. For all other uses, contact the owner/author(s).
  • 2016 Copyright held by the owner/author(s).
  • ETRA' 16, March 14-17, 2016, Charleston, SC, USA
  • ISBN: 978-1-4503-4125-7/16/03
  • DOI:


The modified DBSCAN (MDBSCAN) algorithm is an oculomotor fixation identification algorithm. It combines the advantages from both dispersion-based and velocity-based algorithms.


This paper modifies the DBSCAN algorithm to identify fixations and saccades. This method combines advantages from dispersion-based algorithms, such as resilience to noise and intuitive fixational structure, and from velocity-based algorithms, such as the ability to deal appropriately with smooth pursuit (SP) movements.


  1. Required tools: g++ (at least version 4.8), make. Windows users can use Visual Studio to import these C++ files.
  2. Use terminal command make all to compile the C++ code
  3. Use terminal command make test1, make test2, or make test3to run sample inputs.
  4. Use this m file to visualize fixations in the dataset. For instance, run visualize_results('1.out') in Matlab terminal to get visualization.

Input format

The input files should be tab/space separated files. It should have three columns. The first column is the x-axis reading, and the second column is the y-axis reading. The last column is teh time.

In the sample inputs, the x and y are in pixel unit, and time is in milisecond unit.

So, we use the threshold 26.7 * 0.5 pixels (0.5 degree) and minPts = 20 in our main.cpp file. You can change these two values based on your need.

The main.cpp file is just a demonstration how to use MDBSCAN algorithms.