FOVI Retinal Transform

Real-time WebGL implementation of cortical magnification from Blauch, Alvarez & Konkle (Harvard, 2026). Move your mouse to shift gaze. Drag an image onto the canvas.

Drop an image here, or choose a web page below

Sampling Mode: What This Demo Does (and Doesn't Do)

FOVI the paper and this demo use the same cortical magnification equation, but apply it differently. Understanding the difference is key to understanding what Scrutinizer adds.

FOVI (Paper) Resamples the image onto a log-polar grid. Pixels near fixation are densely sampled; peripheral pixels are sparse. The output is a smaller, spatially rearranged image fed to a DNN that learns to decode it.
Spatial rearrangement · For machine vision
This Demo Keeps every pixel at its original screen position. Each pixel samples the source at a higher MIP level (blurrier) based on eccentricity via textureLod(). Same blur math, no spatial rearrangement — a visualization of FOVI's resolution function.
Blur in place · Visualization only
Scrutinizer Also renders in place, but uses Difference-of-Gaussians band decomposition to selectively filter spatial frequencies. Plus LGN saliency gating, V1 crowding distortion, and Oklab desaturation. The full perceptual stack, not just magnification.
Frequency-selective · Top-down perceptual model

The sampling grid overlay (toggle above) shows FOVI's log-polar sampling pattern — note how dot density tracks cortical magnification. But this demo computes blur at every screen pixel, not just at sample points. See the blog post for why CMF alone produces periphery that's too sharp, and Color Search for a proposed evaluation of peripheral color decay.

Citation: Blauch, N. M., Alvarez, G. A., & Konkle, T. (2026). FOVI: A biologically-inspired foveated interface for deep vision models. arXiv:2602.03766.
Source: github.com/nblauch/fovi (PyTorch) · Vision Science Primer · WebGL implementation by Andy Edmonds
Paper published Feb 3, 2026. This real-time implementation built Feb 28, 2026 with Claude Code.