Skip to main content
Skip table of contents

Diagnosing and Disabling Dithering in the Graphics Pipeline

Dithering occurs when a graphics card alters the colour value of a pixel on the display by +/- 1. Dithering exists to improve image quality for commercial displays, but can be a nuisance for vision research. It can also disrupt the one-to-one mapping between pixel value assignment and display output required for some of VPixx’s synchronization tools to work properly.  Unfortunately, dithering is not always easy to detect or disable.

In this guide, we will cover the basics of what dithering is and why it exists. We will provide several methods for detecting dithering using our own tools and those available through MATLAB/Psychtoolbox. Lastly, we will cover how to disable dithering on your experiment computer. 

This guide is not  exhaustive. It is intended to provide a starting point for researchers wishing to troubleshoot problems in their graphics pipeline and the synchronization errors that can arise as a result. We encourage researchers to try the steps below to help identify and correct problems in their own systems. If dithering problems persist, we strongly recommend browsing the Psychtoolbox forums for additional insights into graphics pipeline related issues.

If you are planning to upgrade your current graphics card and are looking for recommendations, please see our dedicated page on graphics cards.

What is dithering?

For the purposes of video, dithering is an intentional oscillation of a pixel’s RGB values across multiple video frames (temporal dithering) and locations on the screen (spatial dithering). This is a process that is applied by your graphics card after the pixel’s value has been set by your experiment software.

Usually, dithering alters the RGB values of a pixel by +/- 1 bit. So, on a given sequence of frames, a gray pixel with the colour value [126, 126, 126] may be temporally dithered to [127, 127, 127] for a frame before reverting back to [126, 126, 126]. 

An example of temporal dithering, slowed down. At a high refresh rate this oscillation in pixel values would be perceived as a single grayscale square with a value between the two levels depicted in alternating frames.

Flickering of pixel values above the flicker fusion frequency is undetectable to the human eye, and viewers will integrate luminance and colour properties across rapid sequences of video frames. By oscillating between two bitwise steps in the display’s colour output, a screen can generate a perceived colour value that is intermediate between the two displayed levels. This is an effective way to simulate a higher bit depth than the screen is physically capable of, and reduce perceptual artefacts like Mach banding.

In addition to temporal dithering, spatial dithering scatters jittered pixel values across the display. Spatially dispersed dithering also takes advantage of the summation properties of human perception to simulate  additional colour or grayscale depth in an image.

An illustration of spatial dithering. Red and blue are the only colors used but, as the red and blue squares are made smaller, the patch appears purple. Image credit to Gutten på Hemsen, CC0, via Wikimedia Commons


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.