Dithering

Work in progress. This note is still being written and incomplete.

Dithering trades spatial resolution for grey-level depth. A device with few output levels approximates an intermediate intensity by mixing the available levels over a small region, which the eye averages at normal viewing distance.

  • Each pixel is divided into sub-pixels, each forced to an available level
  • The count of sub-pixels at the higher level encodes the target intensity
  • A fixed dither matrix sets the order in which sub-pixels switch on, spreading them to avoid visible clumps

Used in newspaper halftoning, laser printing, and exporting photos to a small fixed palette such as GIF.

Worked Example

A bi-level device with output levels 00 and 11. Target intensity v=0.5v = 0.5 across one 2×22 \times 2 block, using the Bayer dither matrix.

D=[0231]D = \begin{bmatrix} 0 & 2 \\ 3 & 1 \end{bmatrix}

Sub-pixel (i,j)(i,j) is set to 11 iff v>Dij+0.54v > \dfrac{D_{ij} + 0.5}{4}.

  • (0,0)(0,0) has threshold 0.1250.125. Since 0.5>0.1250.5 > 0.125, set to 11.
  • (0,1)(0,1) has threshold 0.6250.625. Since 0.5<0.6250.5 < 0.625, set to 00.
  • (1,0)(1,0) has threshold 0.8750.875. Since 0.5<0.8750.5 < 0.875, set to 00.
  • (1,1)(1,1) has threshold 0.3750.375. Since 0.5>0.3750.5 > 0.375, set to 11.

2 of the 4 sub-pixels are on, so the block averages 0.50.5, matching the target. The on sub-pixels form a checkerboard.

Written by September 28, 2026 1 min read
Was this helpful?