Percept - Simulating Human Vision

Top: original image of Rembrandt's "Return of the Prodigal Son" (1636).
Bottom: effect of running percept on this image assuming a field of view of 120 x 135 deg and a constant velocity of 50 deg/s.

Percept is a simple computer program that attempts to enable us to visualize the limits of vision in an intuitive manner. The program reads an input image (binary PPM) and processes this to create another image showing the degree of detail actually visible to the human eye, assuming that the image is presented across a certain extent of our eyes' field of view which defaults to the entire visual field.

Essentially, we calculate the highest spatial frequency of each pixel given its eccentricity (degree into the visual periphery) and a constant user-specified velocity (degrees per second). We then blur this pixel using an equivalently-sized Gaussian filter.

The visual acuity model used to evaluate spatial frequency limit is described in [1]. This implementation is pretty simplistic. It only deals with visual acuity (not contrast sensitivity), also it varies based upon eccentricity and velocity only but there are many other factors that affect our sensitivity to spatial detail. The Gaussian filter implementation is pretty unefficient too. That said, the source code is released as Open Source under the GPL.

[1] M. Reddy (1997). "Perceptually Modulated Level of Detail for Virtual Environments". Ph.D. Thesis. University of Edinburgh. View.


Send comments, feedback, or improvements to:
Martin Reddy, <>

Last modified: Sun Feb 4 13:52:52 PST 2001