Code Monkey home page Code Monkey logo

gaze-io-system's Introduction

GIOS - Gaze-IO-System

Goal

This software aims to enable desktop navigation and application control using user's eye gaze as an input using only the onboard webcam and in variable lighting conditions. To accomplish this, the software utilizes various algorithms at different stages of the process. We are aiming to develop efficient accurate eye detection and 2D gaze estimation algorithms. Initially, we started out with analyzing existing algorithms in the domain and presently, have shifted to developing custom time efficient algorithms.

The 2D gaze estimation software will work as a single application emulating an input device that will interact with and control the desktop environment by performing basic tasks, like navigation, and application manipulation. Initially, the system will be targeted towards Linux based distros.

Dependencies

The project has the following dependencies for building:

  • OpenGL
  • OpenMP (implemented by GCC 4.7 and higher)
  • OpenCV compiled using OpenGL, OpenMP, and Gtk (requires libgtkglext). Also, OpenCL is preferable but not necessary.
  • GNUplot

The project also uses X11 API, and hence will only run on distros that utilise X11 display servers.

A script that configures and installs OpenCV is included in the repo.

Structure

The software is divided into the following modules:

  • facedetect contains wrapper functions for calls to OpenCV's Haar cascade filter
  • featuredetect implements an algorithm for high accuracy eye detection
  • gazeestimate implmenents the logic for mapping eye gaze movements to an absolute co-ordinate
  • emulatedriver contains the input driver emulation code that uses udev and kernel API

The other modules contain supporting code:

  • gui contains a GUI implementation for debugging
  • guipointer implements a debugging GUI that maps the pointer to the X11 desktop
  • support (self-explanatory)

The program runs in three main threads:

  1. Main Program Logic - processes the images and generates co-ordinates using OpenCV
  2. Debugging GUI - uses HighGUI from OpenCV
  3. Pointer GUI - using OpenGL

OpenMP will also be incorporated in the main program logic to increase parallelization of the program code and responsiveness. It will generate more threads based on number of cores available.

Progress

The software is being developed at a brisk pace. We have developed and tested an algorithm for eye detection, and have since moved to developing our own custom algorithm in it's place as we were not satisfied with its performance. It is currently being developed. We have also implemented an initial function for mapping the eye position to an intermediate vector. The final stage of mapping this interemediate vector to a position vector on screen is being developed. Lastly, input driver emulation will be implmented once the previous modules have stabilised.

We have completed the GUI for debugging and mapping the pointer on screen for demonstration purposes.

Building and Executing

Git clone or download this repository.

Create a directory under the root directory named bin. Then, run make. If you encounter an error stating any .o file is not found, run make again.

To run the software, from the project root directory, run ./gios

Authors

Asheesh Ranjan, Pranav Jetley

gaze-io-system's People

Contributors

asheeshr avatar osank avatar pranavj24 avatar varun6325 avatar vasu014 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

gaze-io-system's Issues

template windows starting from index 1 rather than 0

  1. featuredetect.cpp->eyes_close_detect_helper() -> move counter++ to the end of its scope.
  2. gui.cpp->plotting function-> start indices from 0
  3. gazeestimate.cpp->gaze_energy_helper-> i loop should start from 0 rather than 1

Find other changes affected by the above changes

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.