The Software Module provides custom programming support for physiological, psychophysical and image analysis applications that are important for understanding visual system function. The Software Development Module is unique in providing new software to solve stimulation, acquisition, and analysis problems that have existed for years, but cannot be solved with commercially available software.

The module supports the development of shared software tools (and some computer hardware) that will be of use to many members of the UC Berkeley Vision Science community. Development focuses in a variety of areas, including Eye Monitoring Tools, Display Tools, Neuroimaging Tools, and Psychophysics/Physiology Software Development.

Examples of software development in this module include:

  • Design and implementation of software in Matlab, Python and C language
  • Signal processing algorithms for vision science and neuroscience projects
  • Image Segmentation software to identify bacteria, T-cells and meibomian glands.
  • Psychophysics software in Matlab/Psychtoolbox for experiments related to amblyopia.
  • fMRI Eye Tracker data analysis.
  • Pupil tracking in wavefront sensor.(C++ software).
  • Cardiac, respiratory and ultrasound data analysis.
  • Neural spike and LFP data analysis software.
  • Orientation sensor software in Python/Linux.

Please email for software available, which may need to be adapted for your specific needs.

Example Projects


Psychophysics Software


Software was designed and implemented in Matlab/PsychToolbox to be used in psychophysics experiments related to amblyopia. The goal of the experiment is to measure the observer’s threshold in detecting a low-contrast sine-wave grating (central target) with or without surrounding sine-wave grating (surround stimulus) of different orientations. GUI software was implemented to control the parameters easily at the beginning of each experiment.


Ultrasound Data Analysis Software

Software was designed and implemented in Matlab which processes the ultrasound signal reflected from various parts of the eye of chick and guniea pigs. This program identifies the significant ultrasound peaks using a peak detection algorithm and performs pattern matching across traces using normalized cross-correlation to identify the first peak and gives users the option to move the peaks accurately with a mouse for each trace and outputs average thickness of each region and standard deviation in an output file.


Eye Tracker Data Analysis Software









Software was designed and implemented in Matlab which processes the data files from the eye tracker associated with MR scanner. This program reads the X, Y eye position and detects blink portions and removes the blinks. It also compensates for the low frequency drift caused by the head movement using a high pass filter. It also removes high frequency eye tracking noise using a low pass filter. It performs saccade detection and allows valid saccades to pass through.


Physiology Data Analysis Software

Software designed and implemented in Matlab which reads the cardiac pulse and respiratory data and computes the repetition frequency of the respective data by using a robust maxima/minima detection algorithm in time domain which performs better than Short Term Fourier Transform method.


Eye Tracking Software



Software designed and implemented in Matlab and C/C++, in real-time to track the subject’s eye in Shack-Hartmann Wavefront Sensor setup. This software was tested first with the model eye and then with the real eye. This software combats problems in case of the real eye, such as intensity fluctuations of each centroid (laser beam reflected back from the eye) and variable inter-centroid distance within a given frame by filtering intensity variations, filtering estimated pupil center, cross-correlation method to stabilize centroid jumps in real eye and other methods.




Orientation Sensor and Eye Tracker Data Synchronization Software



Software was designed and implemented in Python to interface with CHR-UM6 Orientation sensor in Linux in real-time and synchronize the sensor data with Eye Link Eye Tracker Data. This software established communication with the sensor in Linux in real-time using serial packet communication protocol. It obtains orientation data (Pitch, Roll and yaw) by programming configuration and command registers in sensor. Then, it calibrates the orientation data by programming the rate gyro. Then it synchronizes this sensor orientation data with Eye Tracker data.


Firewire Audio Device Interface Software

Software was designed and implemented in Matlab to send audio data to one out of 8 dynamically selected loudspeakers connected to a MOTU 828mkII multichannel audio device through Firewire Interface.The first part of this project involved downloading and installing device driver software for the MOTU firewire audio device on a MAC desktop and configuring the software correctly so that the MAC computer could communicate with the MOTU device. The second part of this project involved software implementation in Matlab so that Matlab could communicate with the multichannel MOTU audio device and send audio data to one out of 8 dynamically selected loudspeakers. Given that Matlab does not readily see multichannel audio output ports, suitable Matlab multichannel audio interface software was implemented.


Image Segmentation Software





Software was designed and implemented in Matlab to identify cells and bacteria in an image of cornea obtained from fluorescence microscope. Further implemented Pipeline software for Cell Profiler program to process 3-D image files from Zeiss Laser Scanning Microscope and Olympus Microscope and identify bacteria and cells in the images of cornea.



Akhila Raman
Room 592, Minor Hall
School of Optometry
University of California
Berkeley, CA 94720